Baixe o app para aproveitar ainda mais
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
Compartilhar