Interrupção e execução: Durante a execução de um programa, alguns eventos inesperados podem ocorrer, ocasionando um desvio forçado no seu fluxo de execução.
Operações de E/S: Nos primeiros sistemas computacionais, a comunicação entre o processador e os periféricos era controlada por um conjunto de instruções especiais, denominadas instruções de entrada/saída, executadas pelo próprio processador. Essas instruções continham detalhes específicos de cada periférico.
Buffering: Utilização de uma área da memória principal denominada buffer, para transferência de dados entre dispositivos de E/S e a memória principal.
Spooling: Utiliza uma área em disco como um grande buffer. Dados podem ser lidos ou gravados em disco enquanto programas são executados.
Reentrância: Capacidade de um código ser compartilhado por diversos usuários.
Capítulo 5: Processos e Contextos
Contexto de hardware: Armazena o conteúdo dos registradores da CPU. Constitui-se do conteúdo de registradores. A troca de um processo por outro na CPU, pelo sistema operacional, é denominada mudança de contexto.
Contexto de software: São especificadas características e limites dos recursos que podem ser alocados pelo processo, como o número máximo de arquivos abertos simultaneamente, prioridade, etc.
Espaço de endereçamento: Área da memória pertencente ao processo onde as instruções e os dados do programa são armazenados para execução.
Bloco de Controle do Processo (PCB): O sistema operacional mantém todas as informações sobre o contexto de hardware e software, e o espaço de endereçamento de cada processo. É a estrutura onde o SO guarda todas as informações do processo, contendo sua identificação, prioridade, estado corrente, recursos alocados por ele e informações sobre o programa em execução.
CPU-bound: O processo passa a maior parte do tempo no estado de execução; realiza poucas operações de I/O.
I/O-bound: O processo passa a maior parte do tempo no estado de espera. Encontrado em aplicações comerciais com bastante leitura, processamento e gravação.
Estados do Processo:
Execução (Running): Está sendo processado pela CPU.
Pronto (Ready): Está pronto quando tem condições lógicas de executar e apenas aguarda para ser executado.
Espera (Wait): Aguarda por algum evento externo ou algum recurso para prosseguir seu processamento; não tem condições lógicas de executar.
Processo foreground: Permite comunicação direta do usuário com o processo durante o processamento.
Processo background: Não existe comunicação com o usuário durante o processamento.
Sinais: Mecanismos que permitem notificar os processos de eventos gerados pelo S.O. ou por outros processos.
Capítulo 7: Concorrência e Sincronização
Concorrente: Aplicação estruturada para que partes diferentes do código do programa possam executar concorrentemente.
Exclusão mútua: Impedir que dois ou mais processos acessem o mesmo recurso simultaneamente.
Starvation: Um processo nunca consegue executar sua região crítica e, consequentemente, acessar o recurso compartilhado.
Espera ocupada: Toda vez que um processo não consegue entrar em sua região crítica, por já existir outro processo acessando o recurso, o processo permanece em looping até que lhe seja permitido o acesso.
Sincronização condicional: O acesso ao recurso compartilhado exige sincronização de processos vinculada a uma condição de acesso.
Semáforo: Variável inteira, não negativa, que só pode ser manipulada por instruções down e up.
Monitores: Mecanismo de sincronização de alto nível que torna mais simples o desenvolvimento de aplicações concorrentes.
Deadlock: Situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que nunca ocorrerá.
Capítulo 8: Escalonamento de Processos
Política de escalonamento: Composta por critérios estabelecidos para determinar qual processo em estado de pronto será escolhido para fazer uso do processador.
Escalonador: Rotina do sistema que tem como principal função implementar os critérios da política de escalonamento.
Dispatcher: Responsável pela troca dos processos após o escalonador determinar qual processo deve 'rodar'.
Tempo de processador (Tempo de UCP): Tempo que o processo leva no estado de execução durante seu processamento.
Tempo de espera: Tempo total que um processo permanece na fila de pronto.
Tempo turnaround: Tempo que o processo leva desde sua criação até o término.
Tempo de resposta: Tempo decorrido entre uma requisição ao sistema e o instante em que a resposta é exibida.
Escalonamento preemptivo: O S.O. pode interromper um processo em execução e passá-lo para o estado de pronto.
Escalonamento não preemptivo: Quando o processo está em execução, nenhum evento pode ocasionar a perda do uso do processador.
Escalonamento FIFO: O processo que chegar primeiro ao estado de pronto é o selecionado para execução.
Escalonamento circular: Projetado especialmente para sistemas de tempo compartilhado. Quando um processo passa para o estado de execução, existe um tempo limite para uso contínuo do processador, denominado fatia de tempo.
Escalonamento SJF: Seleciona o processo que tiver o menor tempo de processador ainda por executar.
Escalonamento por prioridades: Baseado em um valor associado a cada processo com prioridade de execução.
Escalonamento adaptativo: O S.O. identifica o comportamento dos processos e adapta as políticas automaticamente.
Capítulo 4: Chamadas de Sistema
System Call: Porta de entrada para o acesso ao núcleo de algum serviço do sistema; é realizada uma chamada a uma de suas rotinas através de uma system call.
Capítulo 6: Threads
Thread: Fluxo de controle sequencial isolado dentro de um programa; permite que um programa possa executar várias tarefas diferentes ao mesmo tempo.
Monothread: Sequência de instruções composta por desvios, repetições e chamadas a procedimentos e funções. Um processo suporta apenas um programa no seu espaço de endereçamento.
Multithread: Um thread de execução pode compartilhar seu espaço de endereçamento com inúmeros threads.
Capítulo 9: Gerência de Memória
Funções da gerência de memória: Maximizar o número de processos na memória, permitir a execução de programas maiores que a memória física, etc.
Fragmentação interna: Ocorre em espaços livres e contínuos na memória principal que são pré-alocados para os processos.
Fragmentação externa: Espaços livres e contínuos, porém tão pequenos que não possibilitam a alocação de programas por processos.
Swapping: O sistema escolhe um processo residente, que é transferido da memória principal para a memória secundária.
Capítulo 10: Memória Virtual
Mapeamento: Traduzir um endereço localizado no espaço virtual para um associado no espaço real.
Thrashing: Excessiva transferência de páginas/segmentos entre a memória principal e a memória secundária.
Página virtual: Conjunto de endereços virtuais que faz parte do espaço de endereçamento.
Página real: Conjunto de endereços reais localizado na memória principal, sempre associada a uma página virtual.
Bit de validade: Indica se a página ou segmento se encontra na memória principal.
Page Fault: Quando um processo faz referência a uma página que não se encontra mapeada.