Sistemas Operacionais

Get Started. It's Free
or sign up with your email address
Sistemas Operacionais by Mind Map: Sistemas Operacionais

1. Multiprogramação

1.1. Execução, em paralelo, de múltiplos programas na mesma máquina. Cada instância de um programa em execução denomina-se um processo

1.1.1. Programa

1.1.1.1. Programa é uma sequência de instruções, passivo, não altera seu próprio estado;

1.1.2. Processo

1.1.2.1. Um processo pode ser definido como “um programa em execução”. Ele é ativo e altera seu estado à medida que executa um programa. Vários processos podem executar o mesmo programa ao mesmo tempo.

1.1.2.2. Ciclos de Vida do Processo

1.1.2.2.1. Criação

1.1.2.2.2. Execução

1.1.2.2.3. Término

1.1.2.3. Estados

1.1.2.3.1. São estados de um processo: 1º- Criação 2º- Apto 3º- Executando 4º- Bloqueado 5º- Criação

1.1.2.4. Mecanismo de Interrupções

1.1.2.4.1. O mecanismo de interrupções permite que o hardware "chame a atenção" da CPU quando há algo a ser feito. Ou seja, é requerido que a CPU pare momentaneamente o que está fazendo para atender ao pedido.

1.1.2.4.2. A ocorrência de interrupção dispara uma sequência de atendimento: 1º - Processador verifica se o tipo de interrupção sinalizado está habilitado; 2º - Caso não, interrupção é ignorada; Caso sim, o conteúdo dos registradores é salvo na pilha, o endereço da rotina responsável pelo tratamento daquele tipo de interrupção é obtido e a execução é desviada para esse endereço. 3º - Sequência executada pelo hardware, comandada pela unidade de controle do processador.

1.2. Exigências e Proteções

1.2.1. Proteção do Processador

1.2.1.1. Modos de operação do processador: - Modo usuário: Algumas instruções não podem ser executadas (instruções privilegiadas). - Modo supervisor: Não existem restrições, isto é, qualquer instrução pode ser executada

1.2.2. Proteção de Periféricos

1.2.2.1. Para proteger periféricos, instruções de E/S são privilegiadas; Se processo usuário tentar acessar diretamente um periférico, ocorre uma interrupção que aciona o SO; Para processo usuário realizar operação de E/S, precisa de uma chamada de sistema.

1.2.3. Proteção de Memória

1.2.3.1. Mecanismo de proteção baseado em interrupções: - Processo usuário deve sempre executar com as interrupções habilitadas; - Operação ilegal pode ser detectada; - Instrução que desabilita interrupções é privilegiada. - Para implementar proteção de memória, SO necessita de auxílio da arquitetura (registradores de limite).

1.2.4. Proteção do Temporizador

1.2.4.1. Temporizador é um relógio de tempo real, implementado pelo hardware, que gera interrupções de tempos em tempos. - Interrupções do temporizador ativam o SO; - Todos os processos têm chance de executar; - Controle do temporizador feito por instruções privilegiadas.

2. Gerenciamento do Processador

2.1. Bloco Descritor de Processo

2.1.1. É uma pequena área de memória, localizada no núcleo do S.O. que armazena as informações referentes a um processo. É nada mais do que a representação de um processo no sistema operacional;

2.1.2. Informações armazenadas: - Prioridade; - Localização e tamanho na memória principal; - Identificação de arquivos abertos; - Informações de contabilidade (tempo CPU, espaço de memória); - Estado do processo (apto, executando, bloqueado); - Contexto de execução; - Apontadores para encadeamento dos próprios descritores de processos.

2.2. Troca de Contextos

2.2.1. Para que o sistema operacional possa interromper um processo e retomar ele mais tarde, ele usa a PCB (Process Control Block) para guardar todas as informações que a CPU estava usando naquele momento e possa consultá-la mais tarde para que retome exatamente no ponto em que foi interrompido anteriormente.

2.2.1.1. Existem três motivos em potencial para realizar uma troca de contexto: - Multitarefas - Interrupção de Hardware - Troca do modo usuário para modo núcleo

2.3. Threads

2.3.1. Processos podem ser divididos em “pedaços” para que eles não deixem de responder por algum motivo externo, como isso poderia atrapalhar a sua execução, ou para agilizar a programação e execução. Quando programas são divididos em threads, podemos ter partes do processo rodando em paralelo, pois as threads também são escalonáveis e todas as threads dentro de um processo compartilham o mesmo espaço de endereçamento.

2.3.1.1. Vantagens:

2.3.1.1.1. - As bibliotecas de usuário podem escalonar seus threads para otimizar o desempenho; - A sincronização é realizada fora do núcleo, e isso evita chaveamento de contexto; - É mais portável; - Threads são mais fáceis de serem criadas e destruídas do que um processo;

2.3.1.2. Desvantagens

2.3.1.2.1. - O núcleo considera o processo multithread como um único thread de controle; - Isso pode fazer com que o desempenho fique abaixo do ideal se um thread requisitar uma operação E/S; - Não pode ser escalonado para executar em múltiplos processadores ao mesmo tempo;

2.4. Na multiprogramação, os múltiplos processos são interrompidos e continuados constantemente. Como vários processos disputam o processador o tempo todo, há uma necessidade de controlar esta disputa, para que ocorra de forma "justa".

2.4.1. Escalonamento

2.4.1.1. Para que a CPU não fique muito tempo sem executar tarefa alguma, os sistemas operacionais utilizam técnicas para escalonar os processos que estão em execução na máquina. Essa "organização" deve ser executada quando da mudança de contexto (troca de processo), ao passo que ela escolhe o processo que será executado pela CPU, sendo o escalonamento realizado com o auxílio do hardware.

2.4.1.1.1. escalonador a curto prazo

2.4.1.1.2. escalonador a médio prazo

2.4.1.1.3. escalonador a longo prazo

2.4.1.2. São utilizados algoritmos de escalonamento para determinar qual processo será executado em determinado momento e por quanto tempo.

2.4.1.2.1. Algoritmos de Escalonamento

3. Gerenciamento de Memória

3.1. - Controla as partes da memória que estão sendo utilizadas - Objetiva eficiência no uso da memória - Libera espaços na memória de processos finalizados e aloca espaço aos que serão executados - Realiza Swap entre memória principal e secundária

3.1.1. Tipos de memórias

3.1.1.1. As memórias em um computador são separadas em uma hierarquia, com o intuito de aliar tamanho, velocidade, não volatilidade e baixo custo, tudo em um sistema.

3.1.1.1.1. Memória Cache

3.1.1.1.2. Memória Principal

3.1.1.1.3. Memória Secundária

3.1.2. Unidade de Gerência de memória (MMU)

3.1.2.1. Realiza o **mapeamento entre endereços lógicos e físicos** da memória virtual e RAM, respectivamente. Processos chamam apenas endereços lógicos, que vão de 0 até o tamanho do processo, e estão conectados com um endereço físico na memória principal.

3.1.3. Técnicas de gerenciamento de memória

3.1.3.1. Único processo

3.1.3.1.1. Partição simples

3.1.3.2. Múltiplos processos simultâneos

3.1.3.2.1. Partição Fixa

3.1.3.2.2. Partição variável

3.1.3.2.3. Paginação

3.1.4. SWAP

3.1.4.1. Responsável pelo chaveamento de processos entre a memória principal e o disco. Realiza o processo de Swap-out para retirar o processo da memória principal e o colocar na memória secundária. Já o Swap-in serve para passar o processo do disco de volta para a memória principal.

4. Memória Virtual

4.1. É a técnica de gerência de memória (pelo SO) que permite a execução de programas que não são completamente carregados para a memória física.

4.1.1. A importância da MV

4.1.1.1. A memória virtual é importante porque, assim que o SO percebe que a memória RAM está sem espaço, ele passa a executar os programas nela. Ou seja, a memória virtual pode ser considerada uma reserva da memória RAM.

4.1.2. Desvantagem da MV

4.1.2.1. Sempre que um programa usa toda a capacidade da memória RAM, o SO passa a usar a memória virtual. Ou seja, ela funciona como um escape para que o usuário possa continuar realizando suas atividades no computador. Entretanto, ao ser utilizada, o sistema fica consideravelmente mais lento.

4.1.2.2. Isso porque a principal diferença entre a memória RAM e a memória virtual é a velocidade de acesso às informações. Ou seja, acessar informações gravadas na memória virtual é mais demorado do que na memória RAM.

4.2. Implementação de Memória Virtual

4.2.1. Necessário: - Gerenciar áreas livres e ocupadas na memória; - Determinar políticas para alocação de memória física; - Substituir páginas/segmentos em memória; - Controlar o compartilhamento e a proteção de memória.

4.2.2. Princípio da localidade de Referência

4.2.2.1. A hierarquia de memória é baseada no princípio da localidade de referência, para a qual os programas têm alta probabilidade de acessar uma parte relativamente pequena do espaço de endereço, em qualquer instante de tempo. As memórias cache exploram esse princípio, tornando os acessos a dados e instruções mais rápidos.

4.2.3. Paginação sob demanda

4.2.3.1. As páginas são carregadas apenas quando são referenciadas. O programa começa sua execução com nenhuma de suas páginas carregadas na memória RAM. Assim que falta de páginas acontecem, o sistema operacional copia as páginas necessárias para a memória.

4.2.4. Algoritmos de troca de página

4.2.4.1. algoritmos de troca de página decidem que páginas da memória serão gravadas no disco quando uma nova página precisa ser alocada. A paginação ocorre quando uma falha de página acontece e uma página livre não pode ser usada para satisfazer a alocação, geralmente porque não há páginas suficientes para ta

4.2.4.2. Algoritmos Globais

4.2.4.2.1. - First In – First Out (FIFO); - Least Recently Used (LRU); - Algoritmo de segunda chance.

4.2.4.3. Algoritmos Locais

4.2.4.3.1. - Algoritmo ótimo; - Modelo de working set; - Frequência de falta de páginas.

5. Gerenciamento de Entrada/Saída

5.1. O controle da entrada e saída é uma das funções principais de um sistema operacional. Para promover o compartilhamento seguro do uso dos recursos, contudo, não é permitido aos processos o acesso direto aos dispositivos de entrada e saída. Assim, cabe ao SO oferecer serviços (chamadas de sistema) que permitam ler e escrever dados.

5.1.1. Dispositivos de E/E podem ser agrupados basicamente em duas categorias: dispositivos de caractere e dispositivos de bloco.

5.1.1.1. Dispositivos de blocos

5.1.1.1.1. Armazena informação em blocos de tamanho fixo, cada um com seu próprio endereço. Cada bloco pode ser lido ou escrito independentemente de todos os outros.

5.1.1.2. Dispositivos de caracteres

5.1.1.2.1. Envia ou recebe um fluxo de caracteres, sem considerar qualquer estrutura de blocos. Não é endereçável e não dispõe de qualquer operação de posicionamento

5.1.2. Controladores de Dispositivos

5.1.2.1. As unidades de e/s constituem de um componente eletrônico e um mecânico. O elemento eletrônico é chamado de controlador de dispositivo ou adaptador. Nos computadores pessoais, o controlador de dispositivo aparece em forma de uma placa de circuito impresso.

5.1.2.2. Objetivo:

5.1.2.2.1. O trabalho do controlador de dispositivo é converter fluxo de bits em bloco de bytes, além de corrigir erros. O bloco de bytes é formado dentro do controlador. Após converter em blocos de bytes, é somado e checado, se o bloco estiver com a soma correta e sem erros ele é copiado para a memória principal.

5.1.3. Entrada e Saída Mapeada na Memória

5.1.3.1. Cada controlador de dispositivo tem seus registradores. Esses registradores são usados para comunicar com a CPU. Por meio da escrita nesses registradores do controlador de dispositivo, o S.O pode comandar o dispositivo para aceitar, executar, desligar. A partir da escrita nesses registradores, o S.O pode saber o estado de um dispositivo, se ele está apto a receber um novo comando, etc. Além dos registradores, os dispositivos têm buffers, no qual o S.O lê e escreve.

5.1.3.1.1. Comunicação com os Registradores e os Buffers

5.1.4. Objetivos do SW de E/S

5.1.4.1. Independência do dispositivo:

5.1.4.1.1. Propõe que deveria ser possível escrever programas aptos a acessar qualquer dispositivo. Relacionado a isso, está a nomeação uniforme. O nome de um arquivo ou dispositivo deve ser uma cadeia de caracteres ou números inteiros independentes do dispositivo. Tratamento de erros. Os erros deveriam ser tratados e mais perto possível do HW.

5.1.4.2. Orientada a Interrupções:

5.1.4.2.1. Quando a impressora imprime um caractere e está preparado para aceitar o próximo caractere, ela gera uma interrupção. Esta interrupção da impressora é executada. Se não existem mais caracteres para imprimir, o tratador de interrupções executa alguma ação para desbloquear o usuário solicitante. Ou, ele envia o caractere seguinte, confirma a interrupção e retorna para o processo que parou E/S usando DMA.

5.1.4.3. Camadas de Softwares de E/S

5.1.4.3.1. SW de E/S no nível do usuário

5.1.4.3.2. SW do SO independente de dispositivo

5.1.4.3.3. Drivers do Dispositivo

5.1.4.3.4. Tratadores de Interrupção

6. Gerência de Arquivos

6.1. Sistema de gerência de arquivos surgiu com 3 macro-objetivos: Armazenamento e leitura de **grande quantidade de dados;** **Armazenamento persistente,** ou seja, quando os arquivos não são perdidos após o desligamento do sistema; E armazenamento que suporta o **acesso de múltiplos processos** simultaneamente.

6.1.1. Tipos de arquivos

6.1.1.1. Árvores

6.1.1.1.1. Organização feita em formado de árvore.

6.1.1.2. Sequência de bytes

6.1.1.2.1. Forma mais simples de organização de arquivos. O sistema não impõe nenhuma estrutura lógica para os dados. Quem define a organização é a própria aplicação.

6.1.1.3. Sequência de registros

6.1.1.3.1. Também organizado de forma sequencial, e pode ser classificada por seus registros, que podem possuir tamanho fixo ou variável.

6.1.2. Acesso aos arquivos

6.1.2.1. Sequêncial

6.1.2.1.1. Gravação de registros ocorre **apenas no final do arquivo.** A leitura se dá desde o início da sequência, o tornando muito lendo. Era utilizado quando o meio de guardar dados era a fita magnética.

6.1.2.2. Direto

6.1.2.2.1. Acesso direto foi o sucessor do acesso sequencial, vindo com os discos magnéticos. Neste método, é permitida a gravação e leitura de um registro **diretamente na sua posição,** através do número atrelado ao registro.

6.1.2.3. **Indexado**

6.1.2.3.1. É o método mais sofisticado e mais recente de acesso a arquivos. Nele existe um **bloco de índice, que é acessado e possui ponteiros para todos os blocos de arquivos** e instruções que fazem parte daquele arquivo. O tamanho dos blocos é delimitado pela estratégia de gerenciamento, onde blocos pequenos tem menos perda por fragmentação interna, porém exigem mais custo de gerência, enquanto os blocos grandes se comportam de maneira inversa

6.1.3. Tipos de diretórios

6.1.3.1. Nível único

6.1.3.1.1. É composto de um diretório raiz apenas, e todos abaixo dele estão no mesmo nível. Arquivos de **diferentes usuários compartilham o mesmo espaço** nessa abordagem.

6.1.3.2. Dois níveis

6.1.3.2.1. Além do diretório raiz, que existe no primeiro nível, nessa abordagem existe um diretório de usuário no segundo nível. Arquivos de **diferentes usuários não compartilham o mesmo diretório**.

6.1.3.3. Hierárquicos

6.1.3.3.1. Segue a linha dos modelos anteriores, porém sem uma limitação níveis abaixo dos diretórios de usuários. Podem ser criados subdiretórios, formando uma sistema hierárquico.

6.1.3.4. Nomes de Caminho

6.1.3.4.1. Sistema baseado em caminhos (path), não necessariamente precisa estar atrelado a um diretório de usuário acima. É o modelo utilizado pelo sistema unix, e na maioria dos sistemas operacionais hoje em dia.

6.1.4. Gerenciamento do espaço em disco

6.1.4.1. O processo de criação e leitura de arquivos exige que o sistema operacional tenha **controle das áreas da memória secundária que estão livres e que estão ocupadas.** Esse processo de monitoramento é realizado através de uma tabela ou lista que armazena informações acerca dos arquivos e utilização dos espaços dentro do disco.

6.1.4.1.1. Mapa de bits

6.1.4.1.2. Lista de endereços