Buscar

Notes SO 7, 8 & 15/06

Prévia do material em texto

AULA DE SO - 07/06/2018 
● Todo programa é uma sequência finita de instruções. 
● O programa é uma entidade passiva em relação ao SO, porque o estado de um 
programa não se altera ao longo do tempo. Ou seja, aquele código depois de 
instalado (naquela versão) ficará do mesmo jeito. 
● Ele fica armazenado em ​disco​, pra depois você executar esse programa. 
● Processo = abstração que representa um programa em execução. 
● Todo computador é uma máquina de Von Neumann. 
● Para meu computador executar um programa, as instruções tem que estar 
armazenadas na memória, de modo que ele busque, decodifique e execute 
● O processo é uma instanciação daquele programa na memória. 
● Bloco de controle de processo: cheio de atributos, justamente para o SO poder 
controlar quais recursos estão sendo alocados para aquele processo. 
● Processo fica armazenado na RAM, assim como todos os outros processos. E os 
outros que ficam na memória ficam armazenados numa estrutura chamada de 
TABELA DE PROCESSOS. 
● Pode-se encontrar mais de um processo instanciando um programa. 
● O processo, do ponto de vista do SO, leva segmento de código (assembly e tal), 
conjunto de recursos de hardware. 
● O maior processo que existe é o sistema operacional (o kernel), ele começa a 
ocupar memória, a partir do ponto que o SO ocupou uma determinada quantidade 
de memória, ele começa a alocar os processos básicos do SO e depois aparece pra 
você. 
● Os registradores de dados ficam no banco de processadores, e alguns deles são 
para controle de execução do processador. 
● A Unidade de Controle é para ordenar a execução de instruções 
● São dois registradores: o de instrução e o contador de programa, esse 
especificamente é importante: o program counter. o PC é importante para determinar 
o ponto para voltar a ler a memória. 
● a cpu executa a instrução uma a uma, ela vai lendo a memória como uma fita. 
● Espaço de endereçamento demarca o início e o fim da memória 
● Tem cinco estados: 
● Estrutura de um PCB 
● Identificação do Processo (Process Identifier = PID) 
● Prioridade de processo 
● Localização na memória principal: 
● UMA MATRIZ GIGANTESCA DE FLIP FLOPS JK 
 
 
Latch D 
● Cada linha da sua memória armazena 8k. 
● O PCB loteia uma determinada quantidade de memória pra ele só pra armazenar 
instruções. 
● Identificação de Arquivos Abordos. 
● Estado do Processo. 
● Contexto de Execução. 
○ conteúdo dos registradores. 
● Pilha de Execução. 
● Tempo de CPU 
● Meap (Área de memória disponível para execução). 
● Dados não inicializados 
● Dados inicializados 
 
 
O processo só vai executar o programa que ele representa quando ele ganha um 
processador 
 
. 
Dispatcher 
Scheduler, quando um processo vai ser executado, ele fica um tempo fixo (tempo de CPU), 
que se chama quantum.. 
 
O escalonador tem um algoritmo que mexe com isso aí acima. 
 
Só se admitem dois estados para o processo: executando e em espera 
 
A memória RAM é uma matriz 
 
O nome dado ao intervalo/fatia de tempo do instante inicial ao instante final é time slice. 
 
O dispatcher vai tirar uma foto do processador, atualizar o BCP, e então colocar um 
processo em espera e o outro em execução. 
 
Diferença entre quantum e time slice: 
quantum = constante, é sempre igual 
time slice = fatiamento do tempo 
 
Quando o processo se iguala ao quantum, acabou o tempo de CPU. Um processo pode 
durar menos que esse tempo (2 nanossegundos). 
 
PCBs ficam armazenados dentro da tabela de processos, a fila de processos é meramente 
uma lista com o PID do processo. 
 
Quando tem chamada de sistema, o processo vai para o modo kernel. o SO começa a fazer 
instruções de controle para que o HD e a memória façam um processo de transferência de 
dados entre os dois. Enquanto isso o processo fica ​bloqueado. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
prova de ed: 
 
1 questão pra uma prova de 1h30, valendo 7 pontos. 
1 item pra cadastrar 
1 item pra excluir - chave de busca (matrícula): 
 
int matricula; 
cin >> matricula; 
for(int i = 0; i < totalAlunos; i++){ 
if(alunos[i].matricula == matricula){ 
for(int j = i+1; j < totalAlunos; j++){ 
alunos[j - 1] = alunos[j]; 
} 
totalAlunos--; 
break; 
} 
 
 
1 item pra pesquisar 
1 item pra listar 
1 item pra alterar 
 
pq posso afirmar que registro é uma estrutura de dados 
 
prova de so: 
 
 
 
 
código para achar elementos repetidos: 
 
int numeros[20]; 
int total elementos = 0; 
while( totalelementos < 20){ 
int numero; 
cin >> numero; 
bool encontrado = false; 
for (int i=0; i < totalelementos; i++){ 
if (numero == numeros[i]){ 
encontrado == true; 
break; 
} 
} 
if (!encontrado){ 
numeros [totalelementos] = numero; 
totalelementos++; 
}else{ 
cout << “Numero repetido informe outro!”; 
} 
} 
 
UM VETOR JÁ É UM PONTEIRO 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fui troslada 
 
 
 
 
 
 
 
 
merda

Continue navegando