Buscar

Introdução Sistemas Operacionais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Sistemas Operacionais
Sistemas Operacionais, além de extremamente complexos e importantes, coordenam (permitem trabalho simultâneo entre usuários) e padronizam serviços (simplificam programação e uso). São compostos por: memória (principal e secundária), processos, E/S e proteção. É tido como um programa governo que controla a interação entre usuários e hardware e entre os próprios usuários. Seu hardware não corresponde de fato a interface utilizada pelo usuário e permite executar um mesmo programa em vários ambientes diferentes. Realiza o acesso à recursos de modo a garantir seu total uso e a proteger usuários uns dos outros. 
Ao longo do tempo, os SOs foram fortemente modificados. Na primeira fase, correspondiam a programação com cartões perfuradas e chaves de painel. Como a presença do usuário tinha que acontecer a todo momento, a máquina esperava pelo homem/cartões e vice versa. Depois veio o conceito de multiprogramação, em que vários programas são carregados na memória ao mesmo tempo, com uma utilização mais eficiente da máquina. Mas passou a ser muito complicado e ainda necessitar do computador esperar pelo usuário (escalonamento e quase todos os componentes). Com a introdução do conceito de interatividade, base dos SOs modernos, usuários passam a acessar a CPU diretamente conectados a terminais on-line. Escalonamento e proteção passam a ser críticos, mas a falta de disciplinas dos programadores torna-se um problema. Depois, com sistemas paralelos distribuídos , entra a questão de menos de um usuário por sistema, multiprocessadores e a importância do acesso a rede (acesso aos recursos). E por fim, os sistemas modernos são enormes e complexos, com milhares de linhas de códigos e diferentes tipos de usuários. Nunca estão completamente sem erros e seu comportamento é difícil de prever. Sistemas Operacionais são compostos por Gerência de Processos, Comunicação entre Processos, Gerencia de memória, Sistemas de Arquivos, de E/S e Sistemas de Proteção.
Resumindo, um sistema operacional é uma coleção de programas para gerenciar as funções do processador, o input, o output, o armazenamento e o controle dos dispositivos. O sistema operacional tem todos os comandos básicos que os aplicativos vão usar, em vez de ter todas estas funções re-escritas para cada aplicativo.
Gerência de Processos 
A ideia de executar vários programas ao mesmo tempo, vem da razão de tudo acontecer num mesmo momento no sistemas. Entradas e saídas, ações de múltiplos usuários, passagem de tempo, etc. Além disso, permite que vários usuários utilizem a máquina ao mesmo tempo e permitem que tarefas sejam executadas mais rapidamente, utilizando multiprocessadores. A execução de um programa mais os dados usados por ele são conhecidos como Processos. Um processo é um fluxo de controle sequencial e seu espaço de endereçamento. Processos são executados sequencialmente e podem 
interagir com registradores, memória usada e arquivos. Programas e processos são diferentes: programas são códigos e processos são as execuções dos mesmos. O mesmo programa executado por dois usuários gera dois processos e um programa pode chamar vários processos. Processos são divididos em fluxo de controle (parte ativa) e espaço de endereçamento (parte passiva). Um THREAD consiste no fluxo de controle. É mais eficiente utilizar vários threads no mesmo espaço de enderaçamento, pois os processos utilizam dados compartilhados e espaço de endereçamentos são muito caros. 
Um processo é uma tarefa com um único thread.
Uma tarefa pode conter vários threads.
Não há proteção entre threads de uma mesma tarefa!
Um thread pertence a uma única tarefa. 
Tarefas contém espaço de memória virtual e ambiente (arquivos, nomes, etc) enquanto threads possuem registradores (incluindo PC) e pilha de execução (Stack). Threads de uma mesma tarefa acessam uma mesma memória e uma pilha de um thread pode ser acessadas por diferentes threads. Em SOs simples, em que um usuário realiza uma tarefa de cada vez, são combinados uma tarefa e um thread. No núcleo de SO, que coordena as atividades, são combinados uma tarefa e vários threads. No Unix original ou diversos usuários com um programa cada, são combinados várias tarefas e um thread por tarefa. No caso mais comum, são combinados várias tarefas e vários threads por tarefa. 
A execução de threads ao longo do tempo, é controlada por um programa conhecido como Escalonador. Threads são então representados por um PCB que contém estado do processo, número do processo, registradores, prioridade de execução, etc. Escalonadores de processo utilizam alguns critérios de escalonamento, como a taxa de utilização da CPU (tempo que ele esta sendo ocupada), throughput (número de processos terminados), turnaround (tempo entre entrada e execução do software), tempo de resposta (tempo entre chegada e início da execução) e tempo de espera (soma dos tempos de estados pronto).
Processos são interrompidos e retomados a todo tempo, para que o sistema operacional possa fazer esse tipo de ação, é necessária a troca de contexto. 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. Troca de contexto ocorre com grande frequencia, é necessário para a proteção e é caro (muda todo o espaço de endereçamento).
Um thread pode ser encontrado em três diferentes estados: Running, Ready e Blocked. Políticas de escalonamento são usadas para escolher um thread que encontra-se no estado de Ready.
Escalonamento ocorre sempre que muda um processo que está sendo executado. Escalonamento controla o compartilhamento de recursos, permite a utilização simultânea de vários usuários e permitem que processos bloqueados não pare a CPU.
Políticas:
Preemptivas X não preemptivas
FIFO
SJF
Round-robin (único sem problema de starvation)
Prioridades
Filas múltiplas
Métodos de Avaliação:
Analíticos (conjunto fixos de processos)
Teoria de filas (métodos estatísticos)
Simulação (implementação de modelo)
Verificação automática (grafo - resultado garantido)
Comunicação/sincronização de processos
Com grande frequência, os processos precisam se comunicar uns com os outros, pois muitas vezes, eles compartilham ou trocam dados entre si. Essa comunicação precisa ocorrer sem interrupções, pois este tipo de falha limita o desempenho e aumenta a complexidade. Problemas de sincronização são causados por falta de comunicação. Por exemplo, Race Conditions. A parte do programa que gera essa condição é conhecida como região crítica. Para evitar Race Conditions, podemos utilizar a exclusão mútua, em que assegura-se que outros processos sejam impedidos de usar uma variável ou um arquivo compartilhado que já estiver em uso por outro processo. Existem várias maneiras de se obter exclusão mútua, mas a maioria envolve locking (evita que alguém faça algo em determinado momento). 
Três regras são utilizadas para que o locking funcione: Trancar antes de utilizar, Destrancar quando terminar (só se você que trancou) , esperar se estiver trancado.
Exclusão mútua deve permitir apenas um processo em uma seção critica. Processos podem ‘dormir’ apenas fora da seção crítica. As propriedades desejáveis são justiça, eficiência e simplicidade.

Continue navegando