Conceitos Fundamentais de Sistemas Operacionais
Deadlock
Ocorre quando dois ou mais processos bloqueiam uns aos outros permanentemente, pois cada um detém um recurso que o outro processo necessita. As quatro condições necessárias para a sua ocorrência são:
- Exclusão Mútua: Pelo menos um recurso deve ser mantido em modo não compartilhável, ou seja, apenas um processo pode usar o recurso de cada vez.
- Posse e Espera: Um processo, que já detém pelo menos um recurso, solicita novos recursos que estão alocados a outros processos e não libera os que já possui.
- Não Preempção: Um recurso não pode ser retirado de um processo que o detém; ele deve ser liberado voluntariamente pelo próprio processo.
- Espera Circular: Existe um conjunto de processos em espera, onde cada processo aguarda por um recurso que está sendo utilizado pelo próximo processo na cadeia.
Gerenciamento de Memória
Memória Principal
É onde o processador executa as instruções. É aconselhável que a memória seja suficiente para alocar todos os processos em execução.
Swapping
Técnica que permite que um processo seja temporariamente movido da memória principal para a memória secundária (disco), para que a memória principal possa ser utilizada por outros processos.
Swap In e Swap Out
São as operações da técnica de swapping: swap in é o ato de trazer um processo da memória secundária para a principal, e swap out é o ato de levar um processo da memória principal para a secundária.
Fragmentação da Memória
É um problema que ocorre quando os espaços de memória livres não são contíguos, dificultando a alocação de novos processos, mesmo que o total de memória livre seja suficiente.
Fragmentação Externa
Ocorre quando existem espaços de memória livres, mas são tão pequenos e não contíguos que não podem ser utilizados para alocar um novo processo.
Fragmentação Interna
Ocorre quando um processo é alocado em um bloco de memória maior do que o necessário, resultando em um desperdício de espaço dentro do próprio bloco alocado.
Alocação de Memória
Alocação Estática
O endereço de memória para um processo é definido no momento da compilação.
Alocação Dinâmica
O endereço de memória para um processo é definido durante a sua execução.
Alocação Contínua Simples
Consiste em organizar a memória principal em duas partes: uma para o sistema operacional e outra para os processos do usuário.
Desvantagens:
- Não permite a utilização eficiente do processador e da memória.
- Se um processo não utilizasse todo o espaço alocado, o restante se tornaria um espaço desperdiçado.
- Se um processo fosse maior que o espaço de memória disponível, ele não poderia ser executado.
Alocação Particionada Fixa
A memória é dividida em partições de tamanho fixo, e cada processo é alocado em uma partição que seja grande o suficiente para contê-lo.
Técnicas de Otimização
Overlay
Técnica que permite que um processo seja maior que a quantidade de memória alocada para ele, dividindo-o em módulos (overlays) que são carregados conforme a necessidade.
Cache
É uma memória menor e mais rápida que armazena cópias de dados de locais de memória principal usados com frequência, a fim de acelerar o acesso a esses dados.
Paginação
Técnica de gerenciamento de memória que permite que o espaço de endereçamento físico de um processo não seja contíguo. A memória é dividida em blocos de tamanho fixo chamados frames (quadros), e a memória lógica é dividida em blocos do mesmo tamanho chamados pages (páginas).
Gerenciamento de Entrada/Saída (I/O)
Devido à sua complexidade, o gerenciamento de I/O (Entrada/Saída) é frequentemente dividido em camadas, dependendo da existência de um controlador.
System Calls (Chamadas de Sistema) ou APIs
As operações de I/O são iniciadas através de system calls. Elas podem ser de dois tipos:
- Síncronas: O processo fica bloqueado até que a operação de I/O seja concluída.
- Assíncronas: O processo continua suas atividades enquanto aguarda um sinal de que a operação de I/O foi concluída.
Subsistemas de I/O
Componente do sistema operacional responsável por gerenciar os dispositivos de I/O, prover uma interface padronizada para os drivers e oferecer proteção no acesso aos dispositivos.
Componentes de I/O
Drivers
Software responsável por traduzir os comandos genéricos de I/O do sistema operacional em comandos específicos que o controlador de um dispositivo entende.
Controladores
Hardware que recebe as informações do driver e opera diretamente o dispositivo. É responsável por ações como a transferência de dados e o uso de interrupções (IRQs).
Métodos de Acesso a Arquivos
Acesso Sequencial
Os dados de um arquivo são processados em ordem, um registro após o outro. Novos registros são geralmente gravados no final do arquivo.
Acesso Indexado
Utiliza um índice para encontrar e acessar registros diretamente em um arquivo, sem a necessidade de ler o arquivo desde o início.