Buscar

Revisão Sistemas OperacionaisAV3.docx

Prévia do material em texto

Revisão Sistemas Operacionais AV2
SO: conjunto de programas responsável pelo gerenciamento de recurso de hardware, segurança de acesso, utilização de interface com os usuários.
Objetivo do sistema operacional:
Esconder a complexidade do hardware = o SO apresenta recursos para serem acessados sem que haja necessidade de conhecimento técnico
Portabilidade dos softwares tornando independente do hardware = é a forma padronizada de comunicação com hardware, independente de fabricante ou modelo
Gerenciamento do uso dos recursos do equipamento = O SO gerencia qual processo vai utilizar tal recurso existente, evitando problema na disputa por recurso.
Driver: Software que oferece ao sistema a capacidade de se comunicar com um determinado dispositivo e é executado no mesmo nível de privilégio do SO.
Semáforos: Um semáforo é uma estrutura de dados que consiste em um número inteiro e em uma fila que armazena descritores de tarefas.A estrutura de dados é uma fila, funcionando em regime de FIFO = O primeiro a chegar é o primeiro a ser servido
Kernel: conjunto de rotinas que oferecem serviços aos usuários e às aplicações.
Existem três maneiras distintas de os usuários se comunicarem com o
kernel.
 	Rotinas, utilitários, linguagem de comandos.
Funções principais do kernel
Gerência de memória;
Gerência do sistema de arquivo;
Gerência de dispositivos de E/S;
Modo de acesso Usuário x kernel:
Para conseguir ter privilégios superiores, o SO utiliza um recurso existente em diversos processadores conhecido como modo de acesso.
Em geral, os processadores possuem dois modos de acessos: modo usuário e modo kernel.
Quando o processador trabalha no modo usuário, só é permitido o acesso a parte do conjunto de instruções. As instruções permitidas são chamadas de instruções não-privilegiadas.
Além disso, diversos outros mecanismos de proteção e restrição de acesso entram em funcionamento.
No modo kernel, todo o conjunto de instruções pode ser executado. As instruções que só podem ser executadas neste modo são conhecidas por instruções privilegiadas.
Esta separação de instruções privilegiadas e não-privilegiadas pode ser vista como sendo privilegiadas as instruções que colocam em risco o funcionamento do SO e não-privilegiadas são as instruções inofensivas, isto é, as que não oferecem risco ao SO.
Processos
Estrutura: o conjunto necessário de informações para que o SO implemente a concorrência de programas.
Um processo é formado por três partes conhecidas como contexto de hardware(armazena o conteúdo dos registradores da CPU ex: Registrador PC e registrador status.), contexto de software(limites e características que podem ser alocado pelo processo PID) e espaço de endereçamento(espaço da memória referente ao processo), que juntos mantêm todas as informações necessárias à execução de um programa
Estado de Processso: Os processos passam por diferentes estados ao longo do seu
processamento, em função de eventos gerados pelo sistema operacional ou pelo próprio processo.
Existem 3 diferentes estados
Execução: Está no processo de execução quando está sendo processado pela CPU.
Pronto: Está no processo de pronto quando aguarda para ser executado
Espera: Quando aguarda por algum evento externo ou recurso para prosseguir seu processamento.
THREADS: Fluxos de execução distintos dentro de um mesmo processo:
Vantagens: capacidade de resposta, compartilhamento de recurso, economia e escalabilidade
Quais são e como funcionam os modos de threads:
Threads em modo usuário (TMU) são implementados pela aplicação e
não pelo sistema operacional utilizando uma biblioteca de rotina que cria e elimina threads.
Threads em modo kernel (TMK): são implementados diretamente pelo
núcleo do sistema operacional, através de chamadas a rotinas do
sistema que oferece todas as funções de gerenciamento e
sincronização.
A arquitetura de threads em modo híbrido combina as vantagens de
threads implementados em modo usuário (TMU) e modo kernel (TMK).
Região crítica: É uma área de código de um algoritmo que acessa um recurso compartilhado que não pode estar em concorrência por mais de uma linha de execução. O objetivo é tornar a operação sobre o recurso compartilhado atômica. Uma região crítica geralmente termina num tempo específico, e uma linha de execução ou processo só precisa esperar um tempo específico para entrá-la. Algum mecanismo de sincronização é necessário para implementar a entrada e a saída duma região crítica para assegurar o uso exclusivo, como por exemplo um semáforo.
O acesso concorrente pode ser evitado ao controlar cuidadosamente quais variáveis são modificadas dentro e fora a região crítica. Uma região crítica é geralmente usada quando um programa multitarefa deve atualizar diversas variáveis relacionadas sem que outra linha de execução faça modificações conflitantes nos dados. Numa situação relacionada, uma região crítica também pode ser usada para assegurar que um recurso compartilhado como uma impressora seja acessado por somente um processo a cada vez.
A definição da região crítica é importante para a implementação de exclusão mútua, usada para evitar condições de corrida.
Multiprogramáveis(Multitarefa) e monoprogramáveis(Monotarefa):
Mono: todos os recursos pc ficam dedicados a um único programa/usuário até conclusão da execução, só é capaz de controlar um programa por vez
Multi: os recursos são alocados de modo dinâmico entre o número de programa ativos de acordo com o nível de prioridade, gerencia o acesso concorrente aos seus diversos recursos de forma ordenada e protegida.
Nos sistemas monoprogramáveis há um evidente desperdício dos recursos do processador, visto que este permanecia ocioso enquanto a entrada de dados era efetuada, por exemplo. 
a memória principal também é subutilizada nos sistemas monoprogramáveis, uma vez que apenas um programa por vez será carregado, deixando grandes áreas livres. 
Nos sistemas multiprogramáveis, vários programas podem estar na memória, concorrendo pelo acesso ao processador. 
Escalonador: O escalonador é a parte do código responsável pelo escalonamento e está entre o estado de pronto e execução do processo.
Escalonamento: é responsável pelo escalonamento, que determina a ordem e critérios com que os processos serão executados.
O número de processos executados em um determinado intervalo de tempo é determinado throughput
Não preemptivos 
FCFS - Primeiro que chega é o primeiro a ser executado
FIFO - O primeiro a chegar é o primeiro a ser servido - ordem de chegada.
SJF - O que tem menor tempo de execução é o selecionado para executar primeiro, porém é difícil saber exatamente quanto tempo vai durar o processo.
Preemptivos
Escalonamento por prioridade: cada processo é associada uma prioridade e a cpu é alocada para o processo com mais alta prioridade e processos com prioridades iguais são escalados segundo o FCFS. problema starvation.
Escalonamento Circular ou Round Robin: Os processos entram na fila de pronto na ordem FIFO sendo que cada processo ganha um tempo limite para execução(timeslice), após esse tempo ele é interrompido e colocado no final da fila de pronto esse mecanismo é chamado de preempção por tempo.
FIla circular virtual - Cria uma fila auxilia e fica usando como backup até um certo tempo.
Escalonamento por múltiplas filas sem realimentação : Implementa diversas filas de processos em estado de pronto uma para cada prioridade sem mudança de fila.
(ou seja duas filas de processos com prioridade de fila e escalonamentos diferentes e não há mudança de fila)
Múltiplas filas com realimentação: Identifica o comportamento de cada processo e pode ajustar a prioridade do processo entre as filas, (ou seja os processos podem ser mudado de prioridade ou de filas).
Gerenciamento de memória:
Paginação: Divide o espaço de endereçamento de processo em páginas(tiras de códigos), e a memória principal em molduras(frames) do mesmotamanho das páginas. 
(ou seja partir o código em pedaços e colocar em partições de memórias)
Mapeamento: Encontrar na memória principal onde está fisicamente a página de endereçamento.(ou seja tradução do endereço lógico em endereço físico)
Segmentação: Faz a divisão do código de forma lógica e em tamanhos variados
Segmentação com paginação: aproveita da segmentação o respeito a estrutura lógica e aproveita da paginação que são pedaços do mesmo tamanho.
Espaço de memória: - - CONTAS --
Alocação particionada dinâmica: 
	best-fit: alocar o job buscando deixar fragmentos livres menores.
	first-fit: procura alocar o job na primeira partição onde ele couber
	worst-fit: procurar alocar o job na maior partição disponível onde ele couber.
Sistema de arquivos: Conjunto de estrutura lógicas e rotinas que permite ao sistema controlar o acesso ao disco.
Acesso Sequencial: tipo de acesso de arquivos sequencial era na ordem em que foram gravados, e a gravação só podia ser feita no final do arquivo (fita magnética)
Acesso Direto: leitura/gravação de um registro diretamente na sua posição.
Acesso Indexado(chave): o arquivo deve possuir uma área de índice onde existam ponteiros para os diversos registros
Estrutura de diretórios: É como o sistema organiza logicamente os diversos arquivos contidos em um disco.
Estrutura em árvore: cada usuário pode criar diversos níveis de diretórios, também chamados subdiretórios
Desfragmentação: rotinas que reorganizem todos os arquivos no disco de maneira que só exista um único segmento de blocos livres.
Fragmentação Interna:
A fragmentação interna é a perda de espaço dentro de uma área de tamanho fixo. Numa memória secundária, ela ocorre quando um arquivo ou fragmento de arquivo não ocupa completamente o espaço da unidade de alocação destinado a ele, causando desperdício de espaço. Cada unidade de alocação não pode comportar fragmentos de arquivos diferentes. Na memória principal, o esquema de particionamento pode ser dinâmico ou fixo. No particionamento dinâmico, cada processo submetido à execução recebe o tamanho necessário para se comportar por completo na memória. Assim, a memória principal é subdividida em segmentos de tamanho variado. No particionamento fixo, a memória é subdividida em blocos de tamanho fixo (iguais ou não) chamados em páginas, blocos ou frames.
Fragmentação Externa: 
A fragmentação externa ocorre no particionamento dinâmico. Este tipo de fragmentação começa a acontecer quando os programas forem terminando e deixando espaços cada vez menores na memória, não permitindo o ingresso de novos programas. Para contornar o problema, há algoritmos que movem os segmentos para próximos uns dos outros (compactação), deixando espaço de memória contíguo, não-fragmentado disponível. Há também algoritmos de escolha de espaços vazios para alocar processos como o 
first-fit(primeiro que couber)
best-fit(melhor que couber) 
worst-fit(pior que couber).

Continue navegando