Bits de Referência

2 respostas
D

Olá, sou novo aqui e gostaria de pedir uma ajuda, talvez não esteja no lugar certo do fórum, não sei. Tenho um trabalho a fazer sobre implementação de bits de referência, tenho o código inicial (em C) e pode ser feito em java, porém não sei como continuar, poderiam dar uma ajuda? Obrigado

#include <stdio.h>
#include <stdlib.h>


#define MAX_P 32 /* Número máximo de páginas */ #define MAX_Q 16 /* Nú&#7743;ero máximo de quadros */ #define MAX_T 16 /* Valor máximo do tamanho do histórico em bits */ #define MAX_I 200 /* Valor máximo do intervalo de atualização do histórico */ #define MAX_N 100 /* Número máximo de acessos a páginas */


typedef struct {

int valido;
int quadro;
int t_carga;
int bit_ref;
int hist[MAX_T];
int val_br_hist;

} PAGINA;


int main()

{

int p, q, t, i, n, a[MAX_N];
PAGINA tab_pagina[MAX_P];
int quadros[MAX_Q]; /* Controla quadros livres */
int j,k,l,pagina,atualizacao,q_livre,menor,falhas;

while (1) {

/* LEITURA */

scanf("%d%d%d%d%d",&p,&q,&t,&i,&n);

   if (p==0 || q==0 || t==0 || i==0 || n==0)
   break;

      if (p<0 || p>MAX_P || q<0 || q>MAX_P || t<0 || t>MAX_T || i<0 || i>MAX_I      
         || n<0 || n>MAX_N)
      exit(5);

         for (j=0;j<n;++j) {
             scanf("%d",&(a[j]));

               if (a[j]<0 || a[j]>=p)
         exit(5);

}

/* IMPLEMENTAÇÃO */


/* Inicialização da Tabela de Páginas */


    for (j=0;j<p;++j) {
         tab_pagina[j].valido = 0;
         tab_pagina[j].bit_ref = 0;
    
      for (k=0;k<t;++k)
         tab_pagina[j].hist[k]=0;

}


/* ... */

/* SAÍDA */

        printf("%d\n",falhas);

            for (j=0;j<p;++j) {
               if (tab_pagina[j].valido)
                  printf("%d",tab_pagina[j].quadro);
              else
                  printf("-");


              printf(" %d ",tab_pagina[j].bit_ref);
                  for (k=t-1;k>=0;--k)
                    printf("%d",tab_pagina[j].hist[k]);
                    printf("\n");
}

          printf("\n");
}
return 0;
}

2 Respostas

ViniGodoy

Tópico movido para o fórum de Outras Linguagens.

Seu código está completamente sem indentação. Poderia corrigir isso e posta-lo novamente?

Além disso, você pode dizer o que você pretende com esse código? Parece que você queria iniciar um algoritmo para paginação de memória, seria isso?

D

Olá Vini, obrigado pela atenção, o código inicial foi passado pelo professor. O programa é realmente para paginação de memória, vou tentar passar a idéia do professor, espero que não complique.

P = Página
V = válido (0 ou 1)
Q = Quadro
R= Bit de referencia
Hist = Histórico
TC = Tempo de Carga

Exemplo:
6 3 4 5 21
0 1 2 1 0 1 0 1 0 1 3 0 3 0 3 3 4 3 4 5 1

Tabela de Páginas Inicial

|P|V|Q|R|HIST|TC|
|0|0|-|0|0000| -|
|1|0|-|0|0000| -|
|2|0|-|0|0000| -|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

Acesso e carregamento da página 0 (no quadro 0)

|P|V|Q|R|HIST|TC|
|0|1|0|1|0000| 0| <- A página 0 foi carregada no primeiro
|1|0|-|0|0000| -| quadro (0), foi marcada como válida (V),
|2|0|-|0|0000| -| o seu bit de referência ® foi ligado e
|3|0|-|0|0000| -| o histórico inicial foi definido
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

Acesso e carregamento da página 1 (no quadro 1)

|P|V|Q|R|HIST|TC|
|0|1|0|1|0000| 0|
|1|1|1|1|0000| 1|
|2|0|-|0|0000| -|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

Acesso e carregamento da página 2 (no quadro 2)

|P|V|Q|R|HIST|TC|
|0|1|0|1|0000| 0|
|1|1|1|1|0000| 1|
|2|1|2|1|0000| 2|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

Acesso às página 1 e 0 (A tabela de páginas permanece igual)

SHIFT (Inserção dos bits de referência no histórico, pela esquerda descartando o bit menos significativo. O bit de referência é zerado.)

|P|V|Q|R|HIST|TC|
|0|1|0|0|1000| 0|
|1|1|1|0|1000| 1|
|2|1|2|0|1000| 2|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

Acesso às páginas 1, 0, 1, 0 e 1

|P|V|Q|R|HIST|TC|
|0|1|0|1|1000| 0|
|1|1|1|1|1000| 1|
|2|1|2|0|1000| 2|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

SHIFT

|P|V|Q|R|HIST|TC|
|0|1|0|0|1100| 0|
|1|1|1|0|1100| 1|
|2|1|2|0|0100| 2|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

Acesso à página 3, será feita uma substituição de página

|P|V|Q|R|HIST|TC|
|0|1|0|0|1100| 0| -> corresponde ao valor 12
|1|1|1|0|1100| 1| -> corresponde ao valor 12
|2|1|2|0|0100| 2| -> corresponde ao valor 4 (o algoritmo do
|3|0|-|0|0000| -| histórico dos bits de referência
|4|0|-|0|0000| -| substitui a página com o menor valor
|5|0|-|0|0000| -| formado por R+HIST)

Carregamento da página 3 (no lugar da página 2, ou seja, no quadro 2)

|P|V|Q|R|HIST|TC|
|0|1|0|0|1100| 0|
|1|1|1|0|1100| 1|
|2|0|-|0|0100| -|
|3|1|2|1|0000|10|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

Acesso às páginas 0, 3, 0 e 3

|P|V|Q|R|HIST|TC|
|0|1|0|1|1100| 0|
|1|1|1|0|1100| 1|
|2|0|-|0|0100| -|
|3|1|2|1|0000|10|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

SHIFT

|P|V|Q|R|HIST|TC|
|0|1|0|0|1110| 0|
|1|1|1|0|0110| 1|
|2|0|-|0|0010| -|
|3|1|2|0|1000|10|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

Acesso à página 3

|P|V|Q|R|HIST|TC|
|0|1|0|0|1110| 0| -> 14
|1|1|1|0|0110| 1| -> 6
|2|0|-|0|0010| -|
|3|1|2|1|1000|10| -> 24
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|

Acesso e carregamento da página 4 (no lugar da página 1, ou seja, no quadro 1)

|P|V|Q|R|HIST|TC|
|0|1|0|0|1110| 0|
|1|0|-|0|0110| -|
|2|0|-|0|0010| -|
|3|1|2|1|1000|10|
|4|1|1|1|0000|16|
|5|0|-|0|0000| -|

Acesso às páginas 3 e 4

|P|V|Q|R|HIST|TC|
|0|1|0|0|1110| 0| -> 14
|1|0|-|0|0110| -|
|2|0|-|0|0010| -|
|3|1|2|1|1000|10| -> 24
|4|1|1|1|0000|16| -> 16
|5|0|-|0|0000| -|

Acesso e carregamento da página 5 (no lugar da página 0, ou seja, no quadro 0)

|P|V|Q|R|HIST|TC|
|0|0|-|0|1110| -|
|1|0|-|0|0110| -|
|2|0|-|0|0010| -|
|3|1|2|1|1000|10|
|4|1|1|1|0000|16|
|5|1|0|1|0000|19|

SHIFT

|P|V|Q|R|HIST|TC|
|0|0|-|0|0111| -|
|1|0|-|0|0011| -|
|2|0|-|0|0001| -|
|3|1|2|0|1100|10| -> 12
|4|1|1|0|1000|16| -> 8
|5|1|0|0|1000|19| -> 8

Acesso e carregamento da página 1. Há empate nos menores valores de
R+HIST (páginas 4 e 5 tem o mesmo valor). Utiliza-se a ordem de
carregamento, ou seja, o tempo de carga (TC) como critério de desempate.
Neste caso, a página 1 entra no lugar da página 4, que tem o menor tempo de carga (ou seja, o tempo de carga mais antigo). A página 1 ocupa o quadro 1.

|P|V|Q|R|HIST|TC|
|0|0|-|0|0111| -|
|1|1|1|1|0011|20|
|2|0|-|0|0001| -|
|3|1|2|0|1100|10|
|4|0|-|0|1000| -|
|5|1|0|0|1000|19|

Resposta esperada:

  • Número de falhas de página = 7
  • Páginas na memmória (em ordem crescente de quadro) = {5, 1, 3}

Formato:
7
5 1 3

Criado 4 de junho de 2012
Ultima resposta 5 de jun. de 2012
Respostas 2
Participantes 2