Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

<p>AULA 1 - Arquitetura do SO</p><p>⇒ Conceito e Estrutura dos Sistemas Operacionais</p><p>- Conceito: Intermediário entre o usuário e o hardware de um computador.</p><p>- Alocador de recursos</p><p>- Programa de controle</p><p>- O único programa executando todo o tempo em um computador é o kernel (núcleo).</p><p>Todo o resto é um programa de sistemas (vendido com o sistema operacional) ou</p><p>um programa aplicativo.</p><p>- Sistemas operacionais organizados em camadas.</p><p>- Utilitários e linguagem de comandos (shell) para se comunicar com o computador.</p><p>⇒ Classificações</p><p>→ Quanto à capacidade de execução de tarefas</p><p>- Sistemas monotarefa</p><p>- Sistemas multitarefa: são capazes de suportar mais de um programa na</p><p>memória.</p><p>→ Quanto à quantidade de usuários que o sistema consegue suportar</p><p>- Sistemas monousuários</p><p>- Sistemas multiusuários</p><p>→ Quanto à arquitetura</p><p>- Monolítico: coleção de procedimentos que podem interagir livremente entre</p><p>si.</p><p>- Microkernel: é uma arquitetura cujas funcionalidades são quase todas</p><p>executadas fora do núcleo, já que este fornece recursos mínimos</p><p>necessários ao funcionamento do sistema, e as outras funcionalidades são</p><p>oferecidas através de programas servidores, que se localizam no “espaço de</p><p>usuário”.</p><p>⇒ Modos de Acesso</p><p>- Modo Usuário: o processador não tem acesso às rotinas do núcleo e somente a</p><p>algumas instruções que não afetam a integridade do computador.</p><p>- Modo Kernel: Acesso e execução de todas as instruções do núcleo (instruções</p><p>privilegiadas) pelo processador.</p><p>● A cada solicitação de execução de uma instrução privilegiada, o hardware</p><p>verifica o conteúdo desse registrador. Se ele estiver indicando modo kernel,</p><p>as instruções são executadas normalmente. Caso contrário, as instruções</p><p>não serão executadas.</p><p>⇒ Serviços de um Sistema Operacional</p><p>- User Interface (UI), Command Line Interface (CLI), Graphic User Interface (GUI),</p><p>Batch (em lote)</p><p>- Execução de Programas, Operações de E/S, Manipulação de Sistemas de Arquivos</p><p>- Comunicações: Processos podem trocar informações no mesmo computador ou</p><p>entre computadores conectados em rede via memória compartilhada ou através</p><p>sistema de troca de mensagens (pacotes movidos pelo SO).</p><p>- Detecção de Erro: Facilidades de depuração (debugging) podem aumentar a</p><p>eficiência com que usuários e programadores usam o sistema.</p><p>- Alocação de Recursos, Contabilização (Accounting), Proteção e Segurança.</p><p>⇒ Chamadas de Sistemas (system calls)</p><p>- Rotinas dos sistemas operacionais = compõem o kernel e são instruções</p><p>privilegiadas</p><p>- Rotinas só podem ser executadas em modo supervisor e o mecanismo que controla</p><p>isso, através dos modos de acesso.</p><p>AULA 2 - Processos, Threads e Gerência do Processador</p><p>⇒ Processos (= programa em execução)</p><p>→ Processos – Estados de um Processo</p><p>- Criação: Execução de uma chamada de sistema para criação de processo,</p><p>realizada por algum processo em execução.</p><p>- Extinção: Término (involuntário) ou término com erro fatal (involuntário) por</p><p>erro causado por algum erro no programa (bug), como por divisão por zero,</p><p>referência à memória inexistente ou execução de uma instrução ilegal.</p><p>- New, running, waiting, ready, terminated</p><p>- Diagrama (foto)</p><p>→ Process Control Block (PCB)</p><p>- Espaço de endereçamento: para que o processo possa ler e escrever.</p><p>- Contexto de hardware: valores nos registradores.</p><p>- Contexto de software: atributos em geral, como lista de arquivos abertos e</p><p>variáveis.</p><p>● PID (Process IDentification)</p><p>● Owner (quem solicitou a criação do processo)</p><p>● Quotas (de recursos que o processo pode utilizar)</p><p>● Privilégios</p><p>→ Estados do software</p><p>- Executando</p><p>- Pronto: processo reúne todas as condições para entrar em execução.</p><p>- Espera ou bloqueado (com pendências)</p><p>→ Mudanças de Estado</p><p>- De executando para bloqueado</p><p>- De executando para pronto</p><p>- De pronto para executando</p><p>- De bloqueado para pronto</p><p>→ Threads (= processos leves): unidades ou blocos básicos contendo fluxo de</p><p>instruções independentes em um mesmo processo</p><p>- Podem ser executadas em paralelo, uma vez que não apresentam</p><p>dependências entre si.</p><p>- Um processo pode conter várias threads que compartilham todos os seus</p><p>recursos.</p><p>→ Escalonamento de processos: Gerenciamento da fila de processos que</p><p>disputam o tempo do processador.</p><p>- Preempção: tipo de interrupção causada exclusivamente para da vez a outro</p><p>processo. Os algoritmos podem ser preemptivos (FIFO e SJF) ou não,</p><p>quando o processo que está com o processador fica com ele até terminar</p><p>todas as suas instruções.</p><p>- Tipos e escalonamento</p><p>● FIFO (First In First Out)</p><p>● SJF (Shortest Job First)</p><p>● Round Robin (circular)</p><p>● Escalonamento por prioridades</p><p>● Escalonamento por múltiplas filas</p><p>→ Parâmetros</p><p>- Justiça: todo processo deve ser atendido em algum momento.</p><p>- Taxa de utilização da CPU</p><p>- Tempo de resposta</p><p>- Turnaround time: tempo entre o momento de criação e o de encerramento.</p><p>- Throughput: quantidade de processos que são concluídos em uma</p><p>quantidade específica de tempo.</p><p>AULA 3 - Gerenciamento de Memória</p><p>→ Aspectos Principais</p><p>- Controle de ocupação: registrar os endereços das posições de memória</p><p>livres e ocupadas.</p><p>- Alocação de memória: reservar uma faixa de endereços de memória para o</p><p>processo que acabou de ser criado.</p><p>• Alocação de memória contígua (modelo clássico): usada nos sistemas</p><p>monoprogramáveis (ou monotarefa), a memória principal tem uma parte</p><p>destinada ao próprio sistema operacional e o restante é reservado ao</p><p>programa de usuário.</p><p>• Overlay: programas são divididos em módulos que possam ser carregados</p><p>e executados de forma independente na memória.</p><p>• Alocação Particionada:</p><p>- Na dinâmica, permite-se que os programas utilizem apenas o espaço</p><p>necessário para sua execução.</p><p>- Na estática, o tamanho das partições é fixo e isso pode também</p><p>causar algum desperdício de memória quando as partes em que os</p><p>programas são divididos não ocupam as respectivas partições</p><p>totalmente, causando a fragmentação da memória. A solução para</p><p>esse problema é a utilização da alocação particionada com relocação,</p><p>em que periodicamente os programas são movimentados na memória</p><p>para liberar espaços livres.</p><p>- Proteção de memória: o sistema operacional garantindo que um processo</p><p>não invadirá o espaço do outro.</p><p>- Swapping: permuta entre conteúdos da memória principal e da memória</p><p>secundária, garantindo que todos os programas serão atendidos e que isso</p><p>ocorrerá no momento em que for necessário.</p><p>● Swap out = memória principal -> memória secundária</p><p>● Swap in = memória secundária -> memória principal</p><p>→ Memória Virtual: utiliza as memórias principal e secundária combinadas de</p><p>forma que, para o usuário, há a sensação de que a memória disponível é muito</p><p>maior do que a memória principal.</p><p>- Paginação</p><p>● Páginas: Os espaços de endereçamento virtual e real são divididos</p><p>em pedaços do mesmo tamanho, as páginas.</p><p>● Tabela de Páginas: Armazena todas as informações sobre cada</p><p>página do respectivo processo e cada processo possui sua própria</p><p>tabela.</p><p>● Frames/molduras: Quando um programa é executado, suas páginas</p><p>são transferidas por demanda para frames (molduras) na memória</p><p>principal.</p><p>● Endereço Virtual: formado pelo número da página a que ele pertence</p><p>mais um deslocamento.</p><p>● Endereço Físico: calculado a partir do endereço do frame onde a</p><p>página se encontra mais o deslocamento.</p><p>● Endereço do Frame: encontrado na tabela de páginas.</p><p>● Políticas de substituição de páginas: FIFO, LFU, LRU</p><p>● Controle de quais páginas estão carregadas na memória principal e</p><p>quais não estão carregadas: Na tabela de páginas, um bit de validade</p><p>para cada página, indicando se ela está (1) ou não está (0) carregada</p><p>na memória.</p><p>● Determinação se a página sofreu ou não alteração em seu conteúdo</p><p>na memória principal: Usa-se o dirty bit, que é atualizado para 1 se a</p><p>página sofreu alterações e permanece 0 se ela não tiver sofrido</p><p>alterações.</p><p>- Segmentação: O espaço de endereçamento virtual é dividido em blocos de</p><p>tamanhos diferentes, de acordo com a estrutura dos programas e há a</p><p>possibilidade de que os segmentos variem de tamanho para suportar</p><p>estruturas de dados dinâmicas. Mesmas técnicas de</p><p>mapeamento de</p><p>endereços virtuais.</p><p>AULA 4 - Sincronização entre processos</p><p>- Sincronização e Comunicação de Processo:</p><p>● A comunicação entre processos pode ser realizada através de variáveis</p><p>compartilhadas na memória principal ou diretamente pelo envio de</p><p>mensagens.</p><p>● Buffer para permitir a grava��ão.</p><p>● Sincronização de processos (rigorosamente nessa ordem para evitar a</p><p>passagem de informações erradas): processo gravador produz uma</p><p>informação -> processo leitor lê.</p><p>● Instrução de soma desmembrada em instruções de máquina.</p><p>- Exclusão mútua: solução em condições de corrida para impedir que mais de um</p><p>processo leia e escreva em uma variável compartilhada ao mesmo tempo.</p><p>● Regiões críticas (RC): seções de programa onde são efetuados acessos a</p><p>recursos partilhados por dois ou mais processos. A exclusão mútua garante</p><p>que um processo não terá acesso a essa região enquanto outro estiver</p><p>utilizando.</p><p>● Semáforo</p><p>○ Função associada a recurso compartilhado para atribuir o valor de 1,</p><p>quando este está sendo utilizado e 0, quando não está.</p><p>○ Variável inteira e não negativa</p><p>○ Só podem ser executadas duas instruções: UP (protocolo de saída) e</p><p>DOWN (protocolo de entrada). A primeira delas incrementa em uma</p><p>unidade o semáforo e a segunda o decrementa em uma unidade</p><p>(quando é preciso usar um recurso compartilhado).</p><p>○ DOWN no semáforo: Se este estiver valendo 1, ele é decrementado</p><p>para 0 e o processo pode entrar em sua região crítica. Se ele estiver</p><p>valendo 0, o processo que executou o DOWN fica impedido de utilizar</p><p>o recurso e entra em estado de espera, aguardando sua liberação.</p><p>○ Ao terminar de utilizar um recurso, o processo executa a instrução UP</p><p>(protocolo de saída) e o sistema operacional seleciona um dos</p><p>processos que está com um DOWN pendente na fila e este pode</p><p>utilizar o recurso.</p><p>- Troca de mensagens</p><p>● Dispensa a existência de variáveis compartilhadas.</p><p>● Comunicação entre processos e execução dos comandos SEND e</p><p>RECEIVE.</p><p>● Comunicação direta (entre 2 processos): endereçamento explícito do emissor</p><p>e do receptor.</p><p>● Comunicação indireta: utilização de área compartilhada (mailbox/port).</p><p>○ Características (ex: tamanho) são definidas no momento de sua</p><p>criação.</p><p>○ Parâmetros de endereçamento não se referem mais a processos e,</p><p>sim, a mailboxes.</p><p>- Deadlock</p><p>● Tráfego somente em uma direção.</p><p>● Cada seção da ponte pode ser vista como um recurso.</p><p>● Procedimentos possíveis: preempta recurso e desfaz operação (rollback) ou</p><p>starvation (abandono).</p><p>● A maioria dos SOs não os previne ou trata. É solucionado através da</p><p>execução de algoritmos de “escolha da vítima”, que sacrificam um dos</p><p>processos envolvidos no deadlock para os outros prosseguirem.</p><p>● Deadlock pode ocorrer se quatro condições são satisfeitas simultaneamente.</p><p>● Exclusão Mútua: somente um processo de cada vez pode usar um</p><p>recurso.</p><p>● Posse e Espera: um processo que está usando pelo menos um</p><p>recurso e esperando para usar outros recursos que estão sendo</p><p>usados por outros processos.</p><p>● Inexistência de preempção: um recurso voluntariamente pelo</p><p>processo ao qual está alocado depois que o processo terminar de</p><p>usá-lo.</p><p>● Espera circular: deve existir um conjunto {P0, P1, …, P0} de processos</p><p>em espera, tal que Pn-1 esteja esperando por um recurso alocado a Pn,</p><p>e P0 esteja esperando por um recurso alocado a P0.</p><p>AULA 5 - Gerência de dispositivos de entrada e saída</p><p>- Arquitetura em camadas da gerência de dispositivos (foto)</p><p>● Realizada em um sistema de camadas no qual os níveis mais baixos se</p><p>aproximam do hardware e os níveis mais altos se aproximam da interface</p><p>com o usuário, transformando essas complexas operações em algo mais</p><p>transparente ao usuário.</p><p>● (Device) drivers: interfaces entre o subsistema de E/S e cada um dos</p><p>dispositivos através de suas controladoras</p><p>○ Funcionamento: recebimento de comandos de camadas superiores e</p><p>transformação em comandos específicos do dispositivo controlado. O</p><p>processador não precisa enviar comandos específicos.</p><p>● Controladoras: componentes de hardware com registradores e memória</p><p>próprios).</p><p>- Controladoras e Drivers (foto)</p><p>- Sistemas de Arquivos (foto): Os sistemas de arquivos como eles são</p><p>armazenados e como podem ser salvos ou recuperados. Os arquivos criados e</p><p>mantidos no sistema de armazenamento do computador precisam estar organizados</p><p>de forma que sejam encontrados e acessados sempre que necessário de forma</p><p>rápida e segura.</p><p>● Arquivo: Reunião de informações relacionadas, identificadas por um nome e</p><p>alguns atributos.</p><p>● Métodos de Acesso</p><p>○ Sequencial</p><p>○ Direto</p><p>● Organização dos arquivos (geralmente por estrutura de diretórios)</p><p>- Gerência de ocupação no disco</p><p>● Bitmap: Cada bit dessa tabela está associado a um bloco da memória de</p><p>forma que, se o bit vale 0, o respectivo bloco está vazio e disponível. Caso</p><p>contrário (bit = 1), o espaço está ocupado.</p><p>● Lista encadeada: Cada nó indica se o espaço está ocupado (P), vazio (H),</p><p>seu endereço inicial (starts) e tamanho (length).</p><p>● Alocação do espaço em disco</p><p>○ Alocação contígua: O endereço é o do primeiro bloco usado (start</p><p>block) e a tabela de alocação também registra a quantidade de blocos</p><p>usada (length).</p><p>○ Alocação encadeada: Os “pedaços” dos arquivos são organizados</p><p>como um conjunto de blocos ligados logicamente.</p><p>○ Alocação indexada: Os ponteiros para todos os blocos dos arquivos</p><p>ficam em uma tabela chamada bloco de índice.</p>

Mais conteúdos dessa disciplina