SlideShare uma empresa Scribd logo
1 de 70
Baixar para ler offline
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

SISTEMAS
OPERACIONAIS

1
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

PROGRAMA DE DISCIPLINA

ESCOLA OFERTANTE:
CURSO: TÉCNICO EM INFORMÁTICA
SEMESTRE:

ANO: 2013

DISCIPLINA: SISTEMAS OPERACIONAIS

C/H ANUAL: 85h/a

MÓDULO: I

C/H SEMANAL: 5h/a

I – Objetivos
A disciplina Sistemas Operacionais tem por objetivo fornecer ao aluno uma visão detalhada dos
principais mecanismos envolvidos na concepção de um sistema operacional moderno.
Compreendendo sua importância, conhecendo as metodologias utilizadas para controle e
aproveitamento dos recursos do computador; conhecendo os principais componentes de um sistema
operacional e dos mecanismos e técnicas usadas para desenvolvê-los.
Apresentar aos estudantes os conceitos e princípios básicos dos sistemas operacionais de
computadores digitais, observando os sistemas operacionais como gerente dos recursos
computacional e como elemento de interface entre programas de aplicação e os recursos da
máquina.
II – Conteúdo
VISÃO GERAL
Introdução
2. Definição de Sistemas Operacionais
3. História dos Sistemas Operacionais
4 Classificação dos Sistemas Operacionais
5 Funcionalidades
6 Estruturas do Sistema Operaciona
7 Chamadas de Sistemas
8 Arquiteturas de Sistemas Operacionais
GERENCIAMENTO DE PROCESSOS
1 Introdução ao modelo de processos
2 Estados de um Processo
3 Threads
4 Comunicação Interprocessos.
5 Seções Críticas
6 Deadlocks : Impasse entre Processos
2
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

7 Gerenciador de processos
8 Escalonamento de processos
9 Escalonamentos Não-Preemptivos
10 Escalonamentos Preemptivos
GERENCIAMENTO DE ENTRADA E SAÍDA
1 Introdução
2. Princípios de Hardware de E/S
Controladoras de Dispositivos
3 Princípios de Software de E/S
GERENCIAMENTO DE MEMÓRIA
1 Introdução
2. Gerenciamento Básico de Memória
3. Gerencia de Memória para Multiprogramação
3 Memória Virtual
GERENCIA DE ARQUIVOS
1. Introdução aos Sistemas de Arquivos
2 Tipos de Arquivos
3 Atributos
3 Operações
4 Implementação de Arquivos
5 Diretórios
III - Metodologia
- Aulas expositivas e dialogadas,
- Aulas práticas com Simulação e Demonstração utilizando o Simulador de Sistema Operacional
SOsim 2.0,
- Apresentação de seminários e Discussão dirigida,
-Atividades e exercícios propostos no material.

IV - Avaliação
- A avaliação dos discentes será realizada perante os resultados diagnósticos aplicados ao longo
do módulo e dividida conforme as formas formativas e somativas de verificação de aprendizagem.
Os instrumentos de avaliação formal (provas e/ou trabalhos) compõem o valor máximo de 5
(cinco) pontos e terão um complemento de 5 (cinco) pontos considerando aspectos qualitativos
como: participação nas discussões sobre tópicos da disciplina, a resolução de exercícios, a
execução de trabalhos de pesquisa, assiduidade, realização de trabalhos práticos.
.
V – Bibliografia
TANEMBAUM,A.S. Sistemas Operacionais Modernos .2ª edição . São Paulo,Ed.Prentice
Hall,2003
LEÃO,Erico Meneses : Sistemas Operacionais .Universidade Aberta do Brasil
OLSEN .Diogo Roberto .Sistemas Operacionais/ LAUREANO.Marcos Aurélio.-Curitiba: Editora
do Livro Técnico .2010
Maziero, Carlos Alberto. Sistemas Operacionais Conceitos Básicos .2011
Machado, Francis B. Arquitetura de Sistemas Operacionais.Ed. LTC
Abraham Silberschatz .Sistemas Operacionais: Conceitos e Aplicações.Ed. Campus
3
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Tanenbaum , A.S. Sistemas Operacionais Modernos .Ed. Campus
A evolução dos sistemas operacionais-Traduzido e adaptado por Raimundo G Nóbrega Filho o
texto Operating Systems: Design And Implementation,Andrew S. Tanenbaum - Editora Prentice
Hall
http://www.inf.ufes.br/~zegonc/material/Sistemas%20Operacionais/Introducao.pdf
http://www.afms.com.br/sistemas_operacionais.html
www.docstoc.com/.../Lista-de-Exercícios-respondida---Grupo-Educacion
Simulador de Ensino para Sistemas Operacionais
http://www.training.com.br/sosim/http://www.ppgia.pucpr.br/_maziero
http://www.inf.unioeste.br/~marcio/SO/Aula9SistemadeArquivos.pdf
http://docente.lages.ifsc.edu.br/juliano.goncalves/MaterialDidatico/Sistemas%20Operacionais/Exer
c%C3%ADcios%20Revis%C3%A3o%20ProvaI.pdf
http://dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:filesystem.pdf
http://www.cafw.ufsm.br/~roberto/?page_id=26
http://www.metropoledigital.ufrn.br/aulas/disciplinas/sist_operacional

4
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

SUMÁRIO
VISÃO GERAL ..................................................................................................................................... 6

1 Introdução ....................................................................................................................... 6
2. Definição de Sistemas Operacionais ............................................................................... 7
3. História dos Sistemas Operacionais ................................................................................ 8
4 Classificação dos Sistemas Operacionais ....................................................................... 12
5 Funcionalidades ............................................................................................................. 17
6 Estruturas do Sistema Operacional................................................................................. 18
7 Chamadas de Sistemas ................................................................................................... 19
8 Arquiteturas de Sistemas Operacionais .......................................................................... 19
GERENCIAMENTO DE PROCESSOS .....................................................................................................24

1 Introdução ao modelo de processos................................................................................ 24
2 Estados de um Processo ................................................................................................. 26
3 Threads ......................................................................................................................... 27
4 Comunicação Interprocessos.......................................................................................... 28
5 Seções Críticas .............................................................................................................. 30
6 Deadlocks : Impasse entre Processos ............................................................................. 30
Gerenciador de Processos ................................................................................................. 34
8 Escalonamento de Processos.......................................................................................... 34
9 Escalonamentos Não-Preemptivos ................................................................................. 35
10 Escalonamentos Preemptivos ....................................................................................... 36
II ATIVIDADE PRÁTICA .......................................................................................................................41
GERENCIAMENTO DE ENTRADA E SAÍDA ...........................................................................................43

1 Introdução ..................................................................................................................... 43
2. Princípios de Hardware de E/S...................................................................................... 43
Controladoras de Dispositivos .......................................................................................... 44
3 Princípios de Software de E/S ........................................................................................ 45
GERENCIAMENTO DE MEMÓRIA ...............................................................................................49

1 Introdução ..................................................................................................................... 49
2. Gerenciamento Básico de Memória .............................................................................. 50
3. Gerencia de Memória para Multiprogramação .............................................................. 51
Memória Virtual ............................................................................................................... 55
GERENCIA DE ARQUIVOS...................................................................................................................59

1. Introdução aos Sistemas de Arquivos............................................................................ 59
2 Tipos de Arquivos ......................................................................................................... 61
3 Atributos ....................................................................................................................... 61
3 Operações...................................................................................................................... 62
4 Implementação de Arquivos .......................................................................................... 63
5 Diretórios ...................................................................................................................... 67
REFERENCIAS BIBLIOGRÁFICAS ..........................................................................................................70

5
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

VISÃO GERAL

1 Introdução
O Sistema Operacional é um software que habilita as aplicações e interagem
com o hardware de um computador, suas aplicações gerenciam todos os recursos do
sistema (memória,processador,discos,impressoras e outros dispositivos ) de forma
organizada e otimizada.(Livro Técnico ,Sistemas Operacionais . pág.09)
Os sistemas Operacionais podem ser encontrados em dispositivos que vão de
telefones celulares e automóveis e de computadores pessoais a computadores de grande
porte
O software, de um modo geral, é utilizado para solucionar os problemas do
usuário, enquanto que o hardware do computador é o dispositivo físico capaz de
executar esses softwares. Esses softwares, responsáveis por realizar as atividades dos
usuários, comumente são chamados de programas aplicativos.

Como pode ser visto na Figura , levando em consideração que temos uma
camada intermediária, o SO entre os programas aplicativos e o hardware em si, o
usuário não necessita conhecer toda a complexidade de implementação do hardware do
Sistema Computacional para, assim, poder utilizá-lo.
O Sistema Operacional, de fato, opera como uma interface entre o usuário e o
dispositivo físico em si, no qual o usuário, quando necessita acessá-lo, faz essa
solicitação diretamente ao Sistema Operacional.
6
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

O sistema operacional é uma estrutura de software ampla, muitas vezes
complexa que incorpora aspectos de baixo nível (como drives de dispositivos e gerência
de memória física) e de alto nível (como programas utilitários e a própria interface
gráfica).
Podemos concluir que os objetivos básicos de um sistema operacional podem
ser sintetizados em duas palavras-chave: “abstração” e “gerência”, cujos principais
aspectos são detalhados a seguir.

2. Definição de Sistemas Operacionais
Segundo Tanenbaum, podemos definir um Sistema Operacional levando em
consideração dois pontos de vistas:



O Sistema Operacional como uma Máquina estendida;
O Sistema Operacional como gerenciador de recursos.

O Sistema Operacional como uma Máquina estendida
Acessar os recursos de hardware de um sistema de computação pode ser uma
tarefa complexa, devido às características específicas de cada dispositivo físico e a
complexidade de suas interfaces.
O usuário (que pode ser um programador ou um usuário final), comumente,
não está interessado em saber os detalhes funcionais dos dispositivos. Como exemplo, o
usuário não quer saber o que é preciso, em nível de hardware, para que seja lida uma
determinada informação um disco rígido (tarefa bem complexa, que exige o
conhecimento de registradores, motores, cilindros e outros dispositivos físicos). O
usuário deseja ter uma interface mais palpável e mais simples de lidar. No caso dos
discos, por exemplo, uma abstração típica seria que o disco contenha um conjunto de
nomes de arquivos. A partir desses nomes, é possível realizar as operações básicas
(abrir, ler, escrever e fechar), sem se importar qual a velocidade e estado atual do motor,
por exemplo.
Assim, o Sistema Operacional aparece como o programa que esconde do
usuário a complexidade do hardware e apresenta uma visão fácil e simples para as
operações sobre os dispositivos. Essa visão é equivalente a uma máquina estendida ou
máquina virtual, mais fácil de lidar.
O Sistema Operacional como gerenciador de recursos
Por outro lado, o Sistema Computacional é composto de uma série de recursos,
no qual podemos enumerar: processadores, memórias, discos, mouses, teclados,
impressoras, placas de rede e uma infinidade de dispositivos em geral. Dessa forma, o
Sistema Operacional aparece como sendo o responsável por organizar e alocar de forma
ordenada todos esses recursos disponíveis.
Essa tarefa, em uma primeira vista, pode parecer simples. Porém, quando se
tem vários programas disputando os recursos,que são limitados, é necessário utilizar
técnicas de alocação dos dispositivos, a fim de se evitar inconsistências e, até mesmo,
situações que resultem numa parada do sistema de uma forma geral.Então cabe ao
7
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

sistema operacional definir políticas para gerenciar o uso dos recursos de hardware
pelos aplicativos, e resolver eventuais disputas e conflitos.
Assim, um sistema operacional visa abstrair o acesso e gerenciar os recursos de
hardware, provendo aos aplicativos um ambiente de execução abstrato, no qual o acesso
aos recursos se faz através de interfaces simples, independentes das características e
detalhes de baixo nível, e no qual os conflitos no uso do hardware são minimizados.
Objetivos de um Sistema Operacional
 Tornar a utilização do computador eficiente e conveniente, a fim de ter
um ganho de produtividade e, dessa forma, utilizar o Sistema Computacional para
agilizar as atividades do dia-a-dia;

Garantir a integridade e segurança dos dados armazenados e processados
pelos programas e dos recursos físicos disponíveis.
3. História dos Sistemas Operacionais
Os Sistemas Operacionais, ao longo dos anos, vêm se desenvolvendo e
ganhando novas características, sendo necessário partimos ao seu histórico para que
possamos compreender como se deu essa evolução. Partindo do pressuposto que a
história dos Sistemas Operacionais sempre esteve intimamente vinculado à história das
arquiteturas de computadores, iremos fazer um breve resumo dos principais eventos
relacionados à evolução dos Sistemas Operacionais.( ERICO MENESES
LEÃO,SISTEMAS OPERACIONAIS )
Início

Máquina Analítica de Babage

O primeiro computador digital, de fato, foi projetado por volta da década de
1820 pelo matemático Charles Babbage e intitulada como motor analítico. Esta
máquina, por se tratar de um equipamento puramente mecânico e a tecnologia da época
não permitir a construção de engrenagens de alta precisão o qual Babbage necessitava,
nunca funcionou adequadamente. Assim, o motor analítico de Babbage não possuía
Sistema Operacional.
8
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Primeira Geração (1945-1955)

Mark I

ENIAC

Impulsionado pela Segunda Guerra Mundial, surgiram os grandes
computadores digitais, formados por milhares de válvulas e que ocupavam salas
inteiras. Estes computadores, desenvolvidos por Howard Aiken e John Von Neumann,
eram extremamente lentos.
Para trabalhar nesta máquina era necessário o conhecimento do funcionamento
do seu hardware, onde a programação era feita através de linguagem de máquina,
freqüentemente ligando painéis de conectores com fios para o controle das funções
básicas.
Nessa época, ainda não existia o conceito de Sistema Operacional. Por esse
fato, esta geração ficou conhecida como a geração das válvulas e painéis de conectores.

Segunda Geração (1956-1965)
Em 1952, a Bell Laboratories inventou o Transístor que passou a ser um
componente básico na construção de computadores e que lhes garantia algumas
vantagens como menor aquecimento, maior poder de cálculo, mais fiável e rápido,
menor consumo de energia para além de não precisar de tempo para aquecer. Os
cálculos passaram a ser medidos de segundos para microssegundos. O primeiro
computador a transístores é o TRADIC, da Bell Laboratories e apareceu em 1955,
possuía 800 transístores cada um em seu próprio recipiente. Outro modelo dessa época
era o IBM 1401, com uma capacidade memória base de 4.096 bytes operando em ciclos
de memória de 12 microssegundos. O tamanho dos computadores era ainda bastante
grande e a instalação de um destes IBM 1401 ocupava uma sala. Em 1958 apareceu o
IBM TX-0, tinha um monitor de vídeo de alta qualidade, alem de ser rápido e
relativamente pequeno. O PDP-1 virou mania no MIT pois os alunos utilizavam o
computador para jogar Rato-no-Labirinto e Spacewar com o auxílio de uma caneta
óptica e um joystick. O elevado preço desta máquina restringia a sua utilização a
aplicações estratégicas do governo, grandes empresas e universidades.
9
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Primeiro transistor

Terceira Geração (1966-1970)

Circuitos integrados

A terceira geração é conhecida com geração dos circuitos integrados (CI’s) e
da multiprogramação, diminuindo consideravelmente o preço do computador,
possibilitando assim sua aquisição por empresas. Esta época se caracteriza pelo grande
aumento do poder de processamento e, também, a diminuição dos equipamentos.
Nesta época, a IBM lançou o System/360, que era uma série de computadores
pequena, poderosa e, sobre tudo, compatível. O 360 foi projetado para manipular
cálculos tanto científicos como comerciais, ou seja, em uma única família de máquinas
era possível satisfazer as necessidades de praticamente todos os clientes.
Porém, para atender todas as aplicações e periféricos disponíveis por essa
família de máquinas, a IBM teve que desenvolver um Sistema Operacional (OS/360)
10
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

extremamente grande e complexo, posto que as aplicações disponíveis, comumente,
eram contraditórias. Este Sistema Operacional consistia de milhões de linhas de
linguagem assembler escrita por milhares de programadores e muitos bugs, que exigiam
versões e mais versões a fim de corrigi-los.
Apesar de todos os problemas, o OS/360 e os Sistemas Operacionais
semelhantes atenderam a maioria dos seus clientes razoavelmente bem. Além disso, eles
lançaram várias técnicas utilizadas até hoje, como exemplo a multiprogramação. A
multiprogramação consistia em dividir a memória em várias partições a fim de permitir
que várias tarefas sejam carregadas em cada partição. Enquanto uma tarefa esperava
alguma operação de Entrada ou Saída, outra tarefa poderia usar o processador (CPU).
Outro recurso disponível nos Sistemas Operacionais da terceira geração era a
capacidade de ler Jobs (tarefas) de cartões para o disco. Assim, sempre que um job
acabava sua execução, o Sistema Operacional podia carregar um novo job do disco para
a partição e executá-lo. Esta técnica é conhecida como spooling.
Entretanto, os Sistemas Operacionais ainda eram basicamente sistemas em lote
e que não exigiam comunicação com o usuário. Assim, muitos programadores sentiam
falta das máquinas de primeira geração, que eram disponibilizadas por completa para
eles e, assim, podiam depurar seus programas. Assim, a multiprogramação evoluiu
preocupada em oferecer aos usuários tempos de respostas razoáveis e uma interface
cada vez mais amigável. Para tal, cada programa na memória utilizaria o processador
em pequenos intervalos de tempo. Esse sistema de divisão de tempo ficou conhecido
como compartilhamento de Tempo (time-sharing).
A terceira geração também é marcada pelo surgimento do Sistema Operacional
UNIX, escrito em linguagem de programação de alto nível, que se tornou popular no
mundo acadêmico, entre órgãos do governo e entre muitas empresas.
Quarta Geração (1980-1990)

Computador Pessoal

11
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

De fato, a década de 1980 é caracterizada pelo surgimento dos computadores
pessoais. Os computadores pessoais se tornaram possíveis devido ao advento de novas
tecnologias, impulsionados pelo avanço da indústria de hardware, com a introdução de
novos circuitos integrados. Os computadores pessoais permitiram que as pessoas
pudessem ter seu próprio computador.
Os equipamentos desta geração se tornaram cada vez menores, mais velozes e,
principalmente, mais baratos. Esses novos equipamentos, com alta disponibilidade de
poder de computação, especialmente a computação altamente interativa, normalmente
com excelentes gráficos, levaram ao crescimento de uma importante indústria, a
indústria de softwares para computadores pessoais.
Dois Sistemas Operacionais inicialmente dominaram o cenário dos
computadores pessoais: o MS-DOS (Microsoft) e o UNIX. O MS-DOS foi amplamente
utilizado no IBM PC e em computadores com a tecnologia Intel. Esse Sistema
Operacional evolui para o sistema conhecido como Windows.
Outra evolução que surgiu nesta geração foi o crescimento de redes de
computadores pessoais executando Sistemas Operacionais de rede e Sistemas
Operacionais distribuídos. Em um Sistema Operacional de rede, os usuários podem
conectar-se a máquinas remotas e copiar arquivos de uma máquina para a outra.
Quinta Geração (Dias atuais)
Em 1993, Surge o primeiro processador Pentium dotado de memórias de 108
pinos, ou DIMM. Depois vem o Pentium II, o Pentium III e mais recentemente o
Pentium 4 (sem contar os modelos similares da concorrente AMD). Nesse meio tempo
iam surgindo o slot AGP de 64 bits, memórias com mais pinos e maior velocidade,
HD´s cada vez mais rápidos e com maior capacidade, etc. Basicamente são os
computadores modernos. Ampliou-se drasticamente a capacidade de processamento de
dados, armazenamento e taxas de transferência. Também é nessa época que os
processos de miniaturização são iniciados, diminuindo o tamanho e aumentando a
velocidade dos agora "populares" PC´s. O conceito de processamento está a ir para os
processadores paralelos, ou seja, a execução de muitas operações em simultâneo. Na
realidade, as maiores novidades desta época são os novos processadores, cada vez mais
velozes.
A informática evolui cada vez mais rapidamente e as velocidades de
processamento dobram em períodos cada vez mais curtos. Para se ter uma noção disso,
basta observar que entre os modelos de computador mais antigos, os espaçamentos entre
uma novidade e outra eram de dezenas de anos, sendo que hoje não chega a durar um
mês. Isso leva-nos a concluir que o avanço científico e do poder de cálculo avança de
maneira que não se encontra paralelo da história humana, fazendo baixar os custos e
tornando acessíveis os computadores às pessoas de baixa renda.
4 Classificação dos Sistemas Operacionais
Os Sistemas Operacionais evoluíram juntamente com a evolução do hardware
e das aplicações por ele suportada. Muitos termos inicialmente introduzidos para definir
conceitos e técnicas foram substituídos por outros.
12
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Abordaremos neste tópico, os diversos tipos de Sistemas Operacionais
classificados quanto ao seu tipo de processamento, apontando suas principais
características.

Classificação dos Sistemas Operacionais

Sistemas Monoprogramáveis ou Monotarefas
Os Sistemas monoprogramáveis ou monotarefas são caracterizados por alocar
o Sistema Computacional disponível exclusivamente para um único programa, ou seja,
um programa tem todos os dispositivos, incluindo periféricos, memória e processador
disponível durante todo o tempo em que ele está ativo, mesmo se não estiver usando.
Os primeiros sistemas operacionais eram tipicamente voltados para a execução
de um único programa. Os sistemas monoprogramáveis estão tipicamente relacionados
ao surgimento dos primeiros computadores na década de 1960 e se caracterizam por
permitir que todos os recursos do sistema fiquem exclusivamente dedicados a uma única
tarefa, como ilustrado na Figura abaixo.

Sistemas Mono Programáveis

13
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Era muito clara a desvantagem deste tipo de sistema, no que diz respeito à
limitação de tarefas (uma de cada vez), o que provocava um grande desperdício de
recursos de hardware.
Sistemas Multiprogramáveis ou Multitarefa
Constituindo-se uma evolução dos sistemas monoprogramáveis, neste tipo de
sistema os recursos computacionais são compartilhados entre os diversos usuários e
aplicações: enquanto um programa espera por um evento, outros programas podem estar
processando neste mesmo intervalo de tempo. Neste caso, podemos observar o
compartilhamento da memória e do processador. O sistema operacional se incumbe de
gerenciar o acesso concorrente aos seus diversos recursos, como processador, memória
e periféricos, de forma ordenada e protegida, entre os diversos programas.
As vantagens do uso deste tipo de sistema são a redução do tempo de resposta
das aplicações, além dos custos reduzidos devido ao compartilhamento dos recursos do
sistema entre as diferentes aplicações. Apesar de mais eficientes que os
monoprogramáveis, os sistemas multiprogramáveis são de implementação muito mais
complexa.

Sistemas Multiprogramáveis

Os sistemas multiprogramáveis podem ser classificados pelo número de usuários
que interagem com o sistema e pela forma com que suas aplicações são gerenciadas.
Quanto ao número de usuários que interagem com o Sistema, podem ser
classificados a seguir:
 Sistemas monousuários: Apenas um usuário interage com o sistema,
podendo realizar várias atividades ao mesmo tempo, como edição de texto, impressão e
acesso a Internet, por exemplo.
 Sistemas multiusuários: Sistema Operacional que possibilita vários
usuários simultâneos. Esse sistema deve suportar a identificação de cada recurso, tais
como arquivos, processos, ou conexões de redes e impor regras de controles de acesso
14
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

para impedir o uso desses recursos por usuários não identificados. Os principais
sistemas operacionais como Linux, Windows são considerados multiusuários.
De acordo com a forma com que suas aplicações são gerenciadas, podem ser
divididos em: sistemas batch, de tempo compartilhado e de tempo real, de acordo com
a figura abaixo.
Sistemas
Multiprogramáveis/
Multitarefa

Sistemas BATCH
ou
Lote

Sistemas de
Tempo Compartilhado

Sistemas de
Tempo Real

.
 Sistemas Batch : Neste tipo de sistemas todos os programas são
colocados em uma fila para execução do processador .Este recebe um programa após o
outro (em seqüência). Atualmente o termo batch é utilizado para definir um conjunto de
comandos que rodam sem interferência do usuário.
Estes sistemas, se bem projetados, podem ser bastante eficientes devido à
melhor utilização do processador, mas podem oferecer tempos de resposta bastante
longos. Atualmente, os sistemas operacionais simulam este tipo de processamento, não
havendo sistemas dedicados a este tipo de execução.
 Sistemas de Tempo Compartilhado: Também chamados sistemas de
time-sharing, permitem que diversos programas sejam executados a partir da divisão de
tempo do processador em pequenos intervalos, denominados fatia de tempo (ou timeslice). Caso a fatia de tempo não seja suficiente para a conclusão do programa, este é
interrompido pelo sistema operacional e substituído no processador por outro, enquanto
aguarda nova fatia de tempo. Neste tipo de processamento, cada usuário tem a
impressão de que a máquina está dedicada ao seu programa, como se ele fosse o único
usuário a se utilizar do sistema.
Geralmente permitem interação do usuário com a aplicação através de
terminais compostos por monitor, teclado e mouse. Estes sistemas possuem uma
linguagem de controle que permite ao usuário interagir com o sistema operacional
através de comandos. Assim, é possível verificar arquivos armazenados em disco ou
cancelar execução de programas. Normalmente, o sistema responde em apenas alguns
segundos à maioria destes comandos, o que se levou a chamá-los também de sistemas
on-line.
A maioria das aplicações comerciais atualmente é processada em ambiente de
tempo compartilhado, que oferece tempos baixos de respostas a seus usuários e menores
custos, em função do alto grau de compartilhamento dos diversos recursos do sistema.
15
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

 Sistemas de Tempo Real: Este tipo de sistema é implementado de forma
bastante semelhante ao de tempo compartilhado. O que caracteriza a diferença entre eles
é o tempo exigido no processamento das aplicações.
Enquanto nos sistemas de tempo compartilhado o tempo de processamento
pode variar sem comprometer as aplicações em execução, nos sistemas de tempo real os
tempos de execução devem estar dentro de limites rígidos, que devem ser obedecidos,
caso contrário poderão ocorrer problemas irreparáveis.
No sistema de tempo real não existe a idéia de fatia de tempo como nos
sistemas de tempo compartilhado. Um programa ocupa o processador o tempo que for
necessário ou até que apareça um outro com um nível de prioridade maior. Esta
prioridade de execução é definida pela própria aplicação e não pelo sistema operacional,
como nos sistemas de tempo compartilhado.
Estes sistemas são utilizados em aplicações de controle de processos, como
monitoramento de refinarias de petróleo, controle de tráfego aéreo, de usinas, ou em
qualquer aplicação onde o tempo de processamento é fator fundamental.
Sistemas Multiprocessadores
Os sistemas com múltiplos processadores caracterizam-se por possuir duas ou
mais CPUs interligadas e trabalhando em conjunto. Esta característica traz com
principal vantagem permitir que vários programas sejam executados ao mesmo tempo
ou que um mesmo programa seja subdividido em várias partes para serem executadas
simultaneamente em mais de um processador, de fato. Os conceitos aplicados ao projeto
de sistemas com múltiplos processadores incorporam os mesmos princípios básicos e
benefícios apresentados na multiprogramação, além de outras características e
vantagens específicas como escalabilidade, disponibilidade e balanceamento de carga.

Escalabilidade: É a capacidade de ampliar o poder computacional do
sistema apenas adicionando novos processadores.

Disponibilidade: É a capacidade de manter o sistema em operação
mesmo em casos de falhas.

Balanceamento de carga: É a possibilidade de distribuir o
processamento entre os diversos processadores da configuração a partir da carga de
trabalho de cada processador, melhorando, assim, o desempenho do sistema como um
todo.
Esta técnica permitiu a criação de sistemas computacionais voltados para
processamento científico, prospecção de petróleo, simulações, processamento de
imagens e CAD.
Um fator chave no desenvolvimento dos sistemas multiprocessador é a forma
de comunicação entre as CPUs e o grau de compartilhamento da memória e dos
dispositivos de E/S. Em função destes fatores, podemos classificar os sistemas
multiprocessador de acordo com a figura a seguir:

16
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Na figura podemos perceber a divisão dos sistemas multiprocessador em duas
categorias iniciais: sistemas fortemente acoplados e fracamente acoplados. A grande
diferença entre estas duas categorias é que nos sistemas fortemente acoplados existe
apenas uma memória a ser compartilhada pelos processadores do conjunto, enquanto
que nos fracamente acoplados cada sistema tem sua própria memória individual. A taxa
de transferência entre processadores e memória em sistemas fortemente acoplados é
muito maior que nos fracamente acoplados.
Nos sistemas fortemente acoplados a memória principal e os dispositivos de
E/S são gerenciados por um único sistema operacional. Quando todos os processadores
na arquitetura são iguais, diz-se que o sistema é simétrico. No entanto, quando os
processadores são diferentes, dá-se à arquitetura a denominação assimétrica.
Nos sistemas fracamente acoplados, como os processadores estão em
arquiteturas diferentes, somente interligados por cabos de interconexão, cada CPU
constitui uma máquina independente, com memória própria, dispositivos de E/S e
sistemas operacionais independentes.
Nesta subdivisão, temos como exemplo as redes e os sistemas distribuídos.
Rede: A característica deste sistema é possibilitar o compartilhamento de
recursos e disponibilizá-lo para uso.
Distribuídos: Os recursos de cada máquina estão disponíveis globalmente de
forma transparente para o usuário. Do ponto de vista das aplicações é como se não
houvesse um conjunto de vários computadores, mas apenas um único sistema
centralizado. Portanto o usuário desconhece qual o computador que atendeu a sua
solicitação. Infelizmente, estes sistemas operacionais não são uma realidade no
mercado.
Outros exemplos de sistemas distribuídos são os clusters, são formados por um
conjunto de computadores convencionais ,os quais são ligados em rede e comunicam-se
por meio do sistemas, trabalhando como se fossem uma única máquina de grande porte .
5 Funcionalidades
Para cumprir seus objetivos de abstração e gerência, o sistema operacional
deve atuar em várias frentes. Cada um dos recursos do sistema possui suas
particularidades, o que impõe exigências específicas para gerenciar e abstrair os
17
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

mesmos. Sob esta perspectiva, as principais funcionalidades implementadas por um
sistema operacional típico são:
 Gerência do Processador: Visa distribuir a capacidade de
processamento (uso de CPU) de forma justa. Deve-se lembrar que algumas aplicações
demandam mais processamentos que outras (navegador de internet versus
processamento de vídeo , por exemplo )

Gerência de Memória: Tem como objetivo fornecer a cada aplicação
um espaço próprio de memória, independente e isolada das demais aplicações

 Gerência de Dispositivos: A função da gerência de dispositivos
(também conhecida como gerência de entrada/saída) é implementar a interação com
cada dispositivo por meio de drivers e criar modelos abstratos que permitam agrupar
vários dispositivos distintos sob a mesma interface de acesso.
 Gerência de Arquivos: Esta funcionalidade é construída sobre a
gerência de dispositivos e visa criar arquivos e diretórios, definindo sua interface de
acesso e as regras para seu uso. É importante observar que os conceitos abstratos de
arquivo e diretório são tão importantes e difundidos que muitos sistemas operacionais os
usam para permitir o acesso a recursos que nada tem a ver com armazenamento.
 Gerência de Proteção: Políticas de acesso e uso do sistema operacional.
Permite a definição de usuários ,grupos de usuários e registros de recursos por usuários.
 Interface Gráfica: A interação com usuário se faz necessário, assim a
maioria dos sistemas apresentam telas, nas quais se pode informar ao sistema
operacional qual a operação que ele deverá fazer.
 Suporte de Rede: A comunicação em rede é, atualmente, essencial ao
mundo dos computadores. Assim, o gerenciamento dessas comunicações se faz
necessário e é realizado sob a abstração do sistema operacional sobre os dispositivos
físicos, como placas de redes ou modem.
6 Estruturas do Sistema Operacional
O sistema operacional é formado por um conjunto de rotinas que oferecem
serviços essenciais aos usuários, às suas aplicações, e também ao próprio sistema. A
esse conjunto de rotinas dá-se o nome de núcleo do sistema ou kernel.
É fundamental não se confundir o núcleo do sistema com aplicações, utilitários
ou o interpretador de comandos, que acompanham o sistema operacional. As aplicações
são utilizadas pelos usuários de maneira transparente, escondendo todos os detalhes da
interação com o sistema. Os utilitários, como os compiladores, editores de texto e
interpretadores de comandos permitem aos usuários, desenvolvedores e administradores
de sistema uma interação amigável com o sistema.
Existe uma grande dificuldade em compreender a estrutura e o funcionamento
do sistema operacional, pois ele não é executado como uma aplicação tipicamente
seqüencial, com início, meio e fim. Os procedimentos do sistema são executados
concorrentemente sem uma ordem específica ou predefinida, com base em eventos
18
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

dissociados do tempo. Muitos desses eventos estão relacionados ao hardware e a tarefas
internas do próprio sistema operacional.

7 Chamadas de Sistemas
Uma grande preocupação no projeto de sistemas operacionais se refere à
implementação de mecanismos de proteção ao núcleo do sistema e também o controle
de acesso aos serviços oferecidos pelo sistema. Caso uma aplicação que tenha acesso ao
núcleo realize alguma operação que altere sua integridade, todo o sistema poderá ficar
comprometido e inoperante.
As chamadas de sistemas (system calls) constituem a interface entre um
programa do usuário e o Sistema Operacional. Elas podem ser entendidas como uma
porta de entrada para acesso ao núcleo do sistema, que contém suas funções. Sempre
que o usuário necessitar de algum serviço, é realizada uma chamada a uma de suas
rotinas através de uma system call.
Através dos parâmetros fornecidos na system call, a solicitação é processada e
uma resposta é enviada à aplicação juntamente com um estado de conclusão indicando o
sucesso ou não da operação. Para cada serviço disponível existe um system call
associada, e cada sistema operacional possui seu próprio conjunto de chamadas, com
nomes, parâmetros e formas de ativação específica. Isto explica por que uma aplicação
desenvolvida utilizando serviços de um determinado sistema operacional não pode ser
diretamente portada para outro sistema.
8 Arquiteturas de Sistemas Operacionais
Em função de sua arquitetura os sistemas operacionais podem ser classificados
em:


Núcleo monolítico ou monobloco: É um núcleo que implementa uma
interface de alto nível, para possibilitar chamadas de sistemas específicas para gestão de
processos , concorrência e gestão de memória por parte de módulos dedicados ,que são
executados com privilégios especiais .Exemplos Windows e Linux.
19
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

 Micronúcleo ou Microkernel : É um termo usado para caracterizar o
sistema cujas funcionalidades saíram do núcleo e foram para servidores ,que se
comunicam com um núcleo mínimo possível do “espaço do sistema”(nesse, local o
programa tem acesso a todas as instruções e a todo o hardware ) e deixando o máximo
de recursos rodando no “espaço do usuário” (nesse espaço, o software sofre algumas
restrições , não podendo acessar alguns hardware e não tendo acesso a todas as
instruções )

Visão Geral de uma arquitetura micro-núcleo

 Máquina Virtual: É uma arquitetura que permite que um sistema
operacional suporte aplicações de outro sistema (Linux executando sobre Windows, por
exemplo)m ou mesmo outro sistema operacional completo. Possibilita que sobre um
mesmo hardware possam ser executados dois ou mais sistemas operacionais. Exemplo
VMware , VirtualBox.

20
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

EXERCICIOS
1. Como seria utilizar um computador sem um sistema operacional? Quais são suas
duas principais funções?
2. Defina Sistemas Operacionais, procurando abordar os dois pontos de vista

segundo Tanembaum.
3. Explique o conceito de máquina virtual. Qual a grande vantagem em utilizar este
conceito?
4. Defina o conceito de uma máquina de níveis ou camadas.
5. Quais os tipos de sistemas operacionais existentes?
6. Por que dizemos que existe uma subutilização de recursos em sistemas
monoprogamáveis?
7. Qual a grande diferença entre sistemas monoprogramáveis e sistemas
multiprogramáveis?
8. Quais as vantagens dos sistemas multiprogramáveis?
9. Um sistema monousuário pode ser um sistema multiprogramável? Dê um
exemplo.
10. Quais são os tipos de sistemas multiprogramáveis?
11. O que caracteriza o processamento batch? Quais aplicações podem ser
processadas neste tipo de ambiente?
12. Os primeiros Sistemas Operacionais eram Monotarefas, já os atuais são
Multitarefa. De acordo com os tipos de Sistemas Operacionais identifique-os na
figura abaixo e explique seu funcionamento e suas principais características.

a.

21
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

13. Como funcionam os sistemas de tempo compartilhado? Quais as vantagens em
utilizá-los?
14. Qual a principal diferença entre sistemas de tempo compartilhado e tempo real?
Quais aplicações são indicadas para sistemas de tempo real?
15. O que são sistemas com múltiplos processadores e quais as vantagens em utilizálos?
16. Qual a diferença entre sistemas fortemente acoplados e fracamente acoplados?
17. O que é um sistema fracamente acoplado? Qual a diferença entre sistemas
operacionais de rede e sistemas operacionais distribuídos?
18. Cite as principais funcionalidades de um projeto de Sistema Operacional.
19. O que é uma system call e qual sua importância para a segurança do sistema?
Como as system calls são utilizadas por um programa?

20. O que é o núcleo do sistema e quais são suas principais funções?
21. Como o kernel do sistema operacional pode ser protegido pelo mecanismo de
modos de acesso?

22. Explique as três arquiteturas do kernel de um Sistema Operacional.

22
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

ATIVIDADE COMPLEMENTAR

1) Faça uma pesquisa e tente identificar os principais sistemas operacionais em
uso. Classifique-os de acordo com sua arquitetura (monolítico, micronúcleo, ou máquina
virtual) e tipo (rede, distribuído, multiusuário, etc.)

LEITURA COMPLEMENTAR
Existem diversos documentários sobre a história
dos computadores. Pois bem, caso queira
conhecer um pouco mais sobre a história recente
do computador pessoal, existe um filme
chamado “O Triunfo dos Nerds”, que conta a
história da do surgimento da Microsot e da
Apple, ou seja, o inicío da computação pessoal.
Uma verdadeira aula de história!
Fonte da figura:
http://macmagazine.uol.com.br/wpcontent/uploads/2008/10/12-triunfosilicio2.jpg.
Acesso em: 11 de Maio de 2010.
Também existe um pequeno e informativo vídeo
sobre a história dos computadores no Museu do
Telefone no Rio de Janeiro. Você pode assisti-lo
através do link a seguir:
<http://midiaseducacao.blogspot.com/2009/06/hist
oria-do-computador-em-minutos.html>.

23
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

GERENCIAMENTO DE PROCESSOS

1 introdução ao modelo de processos
Os primeiros Sistemas Operacionais eram caracterizados por apenas um
programa poder ser executado de cada vez. Os computadores mais modernos são
constituídos de Sistemas Operacionais com capacidade de executar várias tarefas ao
mesmo tempo.
De fato, o processador pode ser alternado de um programa para o outro,
executando cada um por um determinado tempo (comumente em milissegundos). Em
outras palavras, para um determinado intervalo de tempo, vários programas utilizam
uma fatia desse tempo para realizar suas atividades, passando, assim, para o usuário a
falsa impressão de que todos eles estão sendo executados ao mesmo tempo.
Essa falsa impressão passada ao usuário de que vários programas estão sendo
executados ao mesmo tempo é comumente conhecido por pseudoparalelismo. Para que
isso seja possível é necessário um monitoramento das múltiplas atividades entre os
vários programas, que se trata de uma tarefa difícil e bastante complexa.
Segundo Tanenbaum, os projetistas de Sistemas Operacionais desenvolveram
um modelo que torna o paralelismo mais fácil de tratar, conhecido como modelo de
processos, assunto desta unidade.
Conceito de Processos
Um processo pode ser entendido inicialmente como um programa em
execução, que tem suas informações mantidas pelo sistema operacional.
Num sistema multiusuário, cada usuário tem a impressão de possuir o
processador e todos os demais recursos reservados exclusivamente para si, mas isto não
é verdade. Todos os recursos estão sendo compartilhados, inclusive a CPU. Neste caso,
o processador executa o processo do usuário por um intervalo de tempo e, no instante
seguinte, poderá estar processando outro programa, do mesmo ou de outro usuário.
Para que a troca de processos possa ser feita sem problemas, é necessário que
todas as informações do programa que está sendo interrompido sejam guardadas, para
que ele possa retornar à CPU exatamente do ponto em que parou não lhe faltando
nenhuma informação vital à sua continuação. Todas as informações necessárias à
execução de um programa fazem parte do processo.
Um processo também pode ser definido como o ambiente onde o programa é
executado. Este ambiente, além das informações sobre a execução, possui também a
quantidade de recursos do sistema que o programa pode utilizar como espaço de
endereçamento, tempo do processador e área em disco.
Para que o Sistema Operacional gerencie os processos, primeiro ele deve ser
capaz de: (1) criá-los, (2) reservar memória e (3) colocar os processos numa fila de
espera para uso do processador. O próprio Sistema Operacional é um conjunto de vários
processos que também compartilham a CPU para serem executados.
24
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Por exemplo, quando você executa o programa Internet Explorer do sistema
operacional Windows para navegar na Internet, na verdade, você está solicitando a
criação do iexplorer.exe (processo do programa Internet Explorer) ao explorer.exe
(processo genérico do sistema responsável por fornecer comandos básicos e gerenciar o
ambiente gráfico padrão do Windows). A Figura 2 mostra a tela de um computador que
está executando o Process Explorer, um programa de gerenciamento de processos que
na sua tela inicial mostra todos os processos que estão executando em seu computador e
a relação entre eles (por exemplo, se um processo é pai de um outro), observe como o
processo iexplorer.exe está situado entre os processos filhos do explorer.exe.

Para você apenas visualizar quais processos estão sendo executado, o Windows
possui o gerenciador de tarefas do sistema. Uma forma de acessá-lo é pressionando os
botões Ctrl, Alt e Del, simultaneamente e escolher a opção “Iniciar Gerenciador de
Tarefas”,ou clicar com o botão direito do mouse na barra de tarefas do meu iniciar aba
“Iniciar gerenciador de Processos”. Assim, você terá acesso a essa importante
ferramenta do sistema e poderá utilizá-las não só para visualizar os processos, mas
também, caso ocorra algum problema com um processo específico, você poderá
encerrá-lo.

25
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

DICA !
Para visualizar a árvore de processos no Windows, existe o
programa Process Explorer que traz muito mais informações que o
gerenciador de tarefas do Windows. Além de apresentar a estrutura
de processos, indicando o parentesco entre eles, informa dados
referente a cada processo, como a quantidade de memória utilizada
por cada um. Vale a pena conferir, ele é um software gratuito
disponível no seguinte link para download:
<http://www.baixaki.com.br/download/process-explorer.htm>

2 Estados de um Processo
Os vários processos criados competem entre si pela atenção do processador a
cada instante, cabendo ao gerenciador de processos do Sistema Operacional estabelecer
uma ordem
Em diferentes momentos, um processo pode está utilizando-se do processador,
ou simplesmente aguardando, além disso, existem situações onde o processo, mesmo
tendo o processador disponível, fica impossibilitado de prosseguir a execução, pois
geralmente está aguardando por alguma entrada. Então, para que não exista desperdício
no uso do processador, processos que estejam aguardando algum dado externo ficam
bloqueados, deixando aos demais processos disputarem o uso do processador. Dessa
forma, podemos dizer que os processos podem está em três estados, que seriam:

Executando: um processo está no estado executando quando ele, de fato,
está sendo processado pela CPU. Em sistemas monoprocessados (único processador),
somente um processo por vez pode estar de posse da CPU em um dado instante. Os
processos se alternam na utilização do processador.

Pronto: um processo está no estado de pronto quando ele possui todas as
condições necessárias para a sua execução, porém, não está de posse do processador.
Em geral, existem vários processos no sistema prontos para serem executados e o
Sistema Operacional é responsável por, dessa lista de processos, selecionar qual utilizar
o processador em um determinado instante de tempo.

Bloqueado: um processo está no estado de bloqueado quando ele
aguarda por algum evento externo ou por algum recurso do sistema indisponível no
momento. Por exemplo, se um processo necessita de uma informação de algum
dispositivo de E/S, enquanto essa informação não se torna disponível, o processo entra
no estado de bloqueado.
Os três estados de um processo em um Sistema Operacional tornam possível
algumas transições, como ser observado na Figura abaixo.
.
26
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS


A transição 1 (Executando - Bloqueado) ocorre quando um processo que
estava utilizando o processador precisou de algum evento externo (operação de
Entrada/Saída, por exemplo), não podendo continuar executando, passando, assim, para
o estado de bloqueado.

A transição 2 (Bloqueado - Pronto) ocorre quando o evento externo, no
qual o processo bloqueado aguardava, acontece. Nesse caso, o processo passa para o
estado de pronto e volta para a fila para poder concorrer novamente ao processador. Se
não existir nenhum processo na fila de prontos, naturalmente, o processo desbloqueado
utilizar a CPU.

Já as transições 3 (Pronto - Executando) e 4 (Executando -Pronto) são
realizados pelo escalonador de processos. Comumente, existem vários processos
prontos e esperando para serem executados. Cabe então ao Sistema Operacional
(escalonador) escolher, entre os processos prontos, qual utilizará o processador e poderá
executar suas atividades. O Sistema Operacional (dependendo da política do
escalonador) pode, também, retirar o processador de um determinado processo e
disponibilizá-lo para outro processo.
3 Threads
Atualmente, vários programas precisam executar várias tarefas ao mesmo
tempo, por exemplo, um sistema de segurança de um prédio precisa receber imagens de
várias câmeras, gravá-las em um disco e ainda exibi-las em uma tela para que possam
ser monitoradas.
Para que um único processo possa realizar mais que uma tarefa ao mesmo
tempo , Há as Threads.
Threads são fluxos de execução (linha de controle) que rodam dentro de um
processo, ou seja, uma Thread pode ser vista como um fluxo de execução de uma
tarefa. Em processos tradicionais, há uma única linha de controle e um único contador
de programa. Porém, alguns Sistemas Operacionais fornecem suporte para múltiplas
linhas de controle dentro de um processo (sistemas multithread).
27
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Ter múltiplas linhas de controle ou threads executando em paralelo em um
processo equivale a ter múltiplos processos executando em paralelo em um único
computador. Um exemplo tradicional do uso de múltiplas thread seria um navegador
web, no qual pode ter uma thread para exigir imagens ou texto enquanto outro thread
recupera dados de uma rede.
É importante destacar que as threads existem no interior de um processo e
compartilham entre elas os recursos do processo, como o espaço de endereçamento
(código e dados).
4 Comunicação Interprocessos.
Em um Sistema Operacional, freqüentemente, os processos podem precisar
trocar informações entre eles ou podem solicitar a utilização de um mesmo recurso
simultaneamente, como arquivos,registros, dispositivos de E/S e memória. O
compartilhamento de recursos entre vários processos pode causar situações indesejáveis
e, dependendo do caso, gerar o comprometimento da aplicação.
O Sistema Operacional tem a função de gerenciar e sincronizar processos
concorrentes, com o objetivo de manter o bom funcionamento do sistema
Condições de Corrida
Podemos definir uma condição de corrida quando dois ou mais processos
podem compartilhar algum espaço de memória compartilhado no qual, o resultado da
informação deste espaço de armazenamento depende de quem executa. Um exemplo
típico de condição de corrida, apontado por vários autores, é o spool de impressão.
Quando um processo deseja imprimir alguma informação, ele insere o nome de
arquivo em um espaço denominado diretório de spooler. Existe outro processo, o
servidor de impressão, que verifica periodicamente se há qualquer arquivo a ser
impresso e, caso haja, ele os imprime e remove a informação do diretório.
Consideremos a seguinte situação: o diretório de spooler contém um número de
entradas numeradas e um processo, quando deseja imprimir alguma informação,
consulta uma variável (entrada) a fim de saber em qual posição inserir o nome de
arquivo no diretório.
O diretório de impressão está ilustrado na Figura abaixo.

Diretório de spooler (impressão)

28
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Podemos imaginar agora a seguinte situação: um processo A lê a variável
entrada e armazena o valor dela (valor 0) em uma variável local. Porém, o tempo de
execução do processo A termina e o Sistema Operacional o retira do processador,
disponibilizando-o a um outro processo B. O processo B, por sua vez, também deseja
imprimir um arquivo, acessa a área do diretório de impressão, verifica o valor da
variável entrada (valor 0), armazena este valor em uma variável local e, por fim, insere
o nome de seu arquivo a ser impresso na posição 0 do diretório de impressão, mudando
o valor da variável entrada para 1.
A Figura abaixo visualiza esta situação atual.

Situação do Diretório de impressão após inserção do nome de arquivo do processo B

Por fim, o processo A retoma o processador, iniciando novamente de onde
parou. Ao examinar em sua variável local o valor da variável entrada (esta informação
ele guardou em sua tabela, momento em que ele parou a execução), o processo observa
o valor 0 e escreve seu nome de arquivo nessa posição, apagando o nome de arquivo do
processo B. Em seguida, incrementa o valor da variável entrada para 1.
A Figura abaixo mostra a nova situação do servidor de impressão.

Situação do Diretório de impressão após inserção do nome de arquivo do processo A

29
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Internamente, o servidor de impressão continua consistente, porém o arquivo
do processo B jamais será impresso. Caracterizamos este tipo de situação como uma
condição de corrida.
5 Seções Críticas
Para se evitar uma condição de corrida é preciso definir métodos que proíba
que mais de um processo acesse uma determinada área de memória compartilhada ao
mesmo tempo. Esses métodos são conhecidos como exclusão mútua. Um processo,
durante seu tempo de execução, pode realizar uma série de computações internas que
não geram condições de corrida ou pode estar acessando memória compartilhada, que
levam à condição de corrida.
A parte do programa no qual o processo acessa memória compartilhada é
chamada seção crítica ou região crítica. Dessa forma, a solução para se evitar uma
condição de corrida seria organizar os problemas de tal forma que nenhum de dois ou
mais processos estivessem em suas regiões críticas ao mesmo tempo.
Para se ter uma boa solução de exclusão mútua, precisamos evitar algumas
situações indesejáveis, como:

Nenhum processo que esteja fora de sua região crítica pode bloquear a
execução de outro processo;

Nenhum processo deve esperar indefinidamente para poder entrar em sua
região crítica.
6 Deadlocks : Impasse entre Processos
O Sistema Computacional está repleto de recursos, que podem ser utilizados
pelos processos. Comumente, a quantidade de recursos disponíveis é muito menor que a
quantidade de processos solicitando esse recurso. Dependendo do recurso, este fato
pode gerar uma situação de bloqueio eterno do processo.
Podemos, assim, definir que um conjunto de processos está em deadlock ou
impasse quando cada um desses processos está bloqueado esperando um evento que só
pode ser gerado por outro processo desse conjunto. Como todos os processos estão
bloqueados, nenhum deles poderá gerar um evento e, naturalmente, todos continuarão
nessa situação.
Um bom exemplo apontado por Tanenbaum trata-se de dois processos
querendo ler dados de um CD e imprimindo em uma impressora.
Suponha que o processo A solicite a impressora, que é disponibilizada. De
forma análoga, o processo B solicita o CD-ROM,que lhe é disponibilizado. Agora o
processo A solicita o CD-ROM, enquanto que o processo B solicita a impressora. Como
ambos os recursos já estão alocados, o processo A e B serão bloqueados.
Nessa situação eles continuarão indefinidamente, pois nenhum processo terá
como se finalizar e, por fim, liberar o recurso já alocado. Esses processos geram um
deadlock.
É importante destacar, que os impasses podem ser gerados tanto por recursos
de hardware quanto por recursos de software. Um recurso de software seria um impasse
gerado no acesso a registros sendo assim, trataremos o termo recurso de uma forma
geral.
30
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Os recursos podem ser divididos em dois tipos:

Recursos preemptíveis: trata-se de recursos que podem ser retirados de
um determinado processo sem gerar problema algum. Por exemplo, a memória.

Recursos não-preemptíveis: trata-se de recursos que não podem ser
retirados de um determinado processo sem causar problemas. Por exemplo, é inviável
retirar a impressora de um determinado processo que começou a imprimir sua saída.
Condições para um Impasse.
Coffman demonstrou em 1971 que existe quatro condições para que haja um
impasse:

Condição de exclusão mútua: Somente um processo de cada vez pode
acessar um recurso. Caso contrário, o recurso estará disponível.

Condição de posse e espera: Um processo deve estar de posse de um
recurso e solicitando novos recursos.

Condição de não preempção: Os recursos concedidos aos processos não
podem ser retirados deles.

Condição de espera circular: Deve haver uma cadeia circular de dois ou
mais processos, cada um dos quais está esperando um recurso já segurado pelo próximo
membro da cadeia e, assim por diante.

Métodos de Lidar com Deadlocks
Existem várias formas de lidar com deadlocks. Em geral, temos quatro
métodos:

Ignorar completamente o problema.

Detectar e recuperar uma situação de deadlock.

Prevenir um deadlock através da negação das quatros condições de
Coffman.

Impedimento de um deadlock através de uma alocação dinâmica
cuidadosa de recursos.

Por incrível que pareça, a estratégia mais usada nos
sistemas operacionais é a de ignorar os problemas de deadlock, pois os
possíveis tratamentos desse tipo de situação podem acarretar em perdas de
desempenho do sistema, comprometendo a execução dos processos.

Assim, é mais comum que os próprios softwares procurem
evitar situações de deadlock na lógica em seus códigos e, no caso de
ocorrer alguma situação de impasse, é preferível encerrar a execução de
um processo ou até reiniciar o computador em casos mais extremos.

DICA !
O SOsim 2.0 (Simulador de Sistema Operacional) é um software
educacional que permite simular situações de gerencias de um sistema
Operacional .
31
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

EXERCICIO
1.

Defina processos.

2.
Por que o conceito de processo é tão importante no projeto de sistemas
multiprogramáveis?
3.
Descrevas os estados que um processo pode ocupar em um sistema
baseado no modelo de processos.

4.
Comente as possíveis transições que podem ocorrer entre os estados de
um processo.
5.

O que são Threads. Caracterize os sistemas multithreads.

6.

O que são condições de corrida?

7.

O que é uma região crítica e exclusão mútua?

8.

Cite as condições para se ter uma boa solução que evite condições de

9.

Descreva de forma sucinta o método de exclusão mútua ativa

10.

Defina deadlock .

corrida.

11.
Quais as condições segundo Coffman para que aconteça um impasse
entre processos?

32
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

ATIVIDADE COMPLEMENTAR

1.
Diversos exemplos na literatura de sistemas operacionais procuram
demonstrar situações de deadlock. São exemplos simples, como o clássico exemplo dos
cinco filósofos jantando. Procure na internet dados sobre esse exemplo e apresente.

ATIVIDADE PRÁTICA
1. Criação de Processos
a) Práticas de simulação
· Execute o simulador SOsim e identifique as quatro janelas que são abertas na
inicialização.
· Crie um processo: janela Gerência de Processos / Criar – janela Criação de
Processos /
Criar.
b) Análise Prática
· Na janela Gerência de Processos, observe algumas informações sobre o
contexto de
software do processo como prioridade, estado do processo e tempo de
processador.
· Na janela Gerência de Processador, observe o processo transacionando entre
estados.
· Na janela Gerência de Processador, movimente a barra de Clock de UCP e
observe as
variações ocorridas.
c) Questão teórica para responder com a ajuda do simulador :Com base na
observação do comportamento do processo criado, identifique se o processo é
I/Obound
ou CPU-bound. Justifique sua resposta.
2.

Tipos de Processos
a) Práticas de simulação
· Reinicialize o simulador.
· Crie um processo do tipo CPU-bound: janela Gerência de Processos / Criar –
janela Criação de Processos / Criar (tipo de processo deve ser CPU-bound).
· Crie outro processo do tipo I/O-bound: janela Gerência de Processos / Cria –
janela Criação de Processos / Criar (tipo de processo deve ser I/O-bound).
b) Análise Prática
· Na janela Gerência de Processos, observe as mudanças de estado dos dois
processos.
· Na janela Gerência de Processador, observe o comportamento dos processos e
as mudanças de contexto em função do tipo I/O-bound e CPU-bound.
· Na janela Gerência de Processos, compare a taxa de crescimento do tempo de
processador dos dois processos.
33
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

c) Questão teórica para responder com a ajuda do simulador :Analise os
efeitos gerados no caso de redução do tempo gasto na operação de E/S pelo processo
I/O-bound.
Gerenciador de Processos
Com o surgimento dos sistemas multiprogramáveis, onde múltiplos processos
poderiam permanecer na memória e disputar o uso de um único processador, a gerência
do processador tornou-se uma das atividades mais importantes em um sistema
operacional.
A partir do momento em que vários processos podem estar no estado de pronto,
devem ser estabelecidos critérios para definir qual processo será escolhido para fazer
uso do processador. Tais critérios compõem a política de escalonamento, que é a base
da gerência do processador e da multiprogramação em um sistema operacional.
Dentre as funções da gerência do processador, podemos citar: manter o
processador ocupado a maior parte do tempo. balancear o uso da CPU entre processos,
privilegiar a execução de aplicações críticas, maximizar o throughput e oferecer tempos
de resposta razoáveis aos usuários interativos.
Cada sistema operacional possui sua política de escalonamento adequada ao
seu propósito e às suas características. Sistemas de tempo compartilhado, por exemplo,
possuem requisitos de escalonamento distintos dos sistemas de tempo real.
3.

Escalonamento de Processos

O escalonamento de processos é a forma com que os processadores
disponíveis (um ou vários) no Sistema Computacional são distribuídos ou alocados para
os vários processos prontos.
A parte do Sistema Operacional responsável por selecionar qual será o
processo que executará no processador é chamado de escalonador ou agendador.
Dessa forma, a ordem com que os processos serão executados pelo processador é
definida por um determinado algoritmo ou política de escalonamento de processos.
O projeto de um algoritmo de escalonamento deve levar em conta uma série de
critérios , no qual alguns são apontados a seguir:

Throughput: é o número de processos executados em um determinado
intervalo de tempo. Quanto maior o throughput, maior o número de tarefas executadas
em função do tempo. A maximização do throughput é desejada na maioria dos sistemas.

Tempo de Processador: é o tempo que um processo leva no estado de
execução, durante seu processamento. As políticas de escalonamento não interferem
neste parâmetro, sendo este tempo função apenas do código executável e da
entrada/saída de dados.

Tempo de Espera (pela CPU): é todo o tempo que o processo permanece
na fila de pronto, aguardando a liberação da CPU para ser executado. A redução deste
tempo de espera é desejada pela maioria das políticas de escalonamento.
34
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS


Tempo de Turnaround: é o tempo total que o processo permaneceu no
sistema, desde sua criação até o momento em que é encerrado. São contados os tempos
de alocação de memória, espera na fila de pronto e interrupção (E/S).

Tempo de Resposta: é o tempo decorrido entre uma requisição ao sistema
e o instante em que a resposta começa a ser exibida. Em sistemas interativos, como
aplicações on-line ou acesso à Web, os tempos de resposta devem ser da ordem de
apenas poucos segundos.
Os algoritmos de escalonamentos podem ser classificados em preemptíveis e
não-preemptíveis. O algoritmo de escalonamento é não-preemptível quando o
processador alocado para um determinado processo não pode ser retirado deste até que
o processo seja finalizado.
Já o algoritmo de escalonamento é dito preemptível quando o processador
alocado para um determinado processo pode ser retirado deste em favor de outro
processo.
Atualmente a maioria dos sistemas são preemptívos
4.

Escalonamentos Não-Preemptivos

Algoritmo de Escalonamento FIFO (First in First out)
Trata-se do algoritmo de escalonamento de implementação mais simples. Com
este algoritmo de escalonamento, o primeiro processo que solicita a CPU é o primeiro a
ser alocado. Dessa forma, os processos que estão prontos para serem executados pela
CPU são organizados numa fila, que funciona baseado na política FIFO (First in First
out – Primeiro a entrar é o primeiro a sair).
Vejamos um exemplo. Considere o seguinte conjunto de processos:

Supondo que a ordem de chegada dos processos seja: A – B – C – D. Dessa
forma, baseado na política FIFO, a ordem de execução dos processos é mostrado na
Figura abaixo (diagrama de tempo).

Diagrama de tempo usando a política FIFO.

35
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Para este conjunto de tarefas o tempo de espera do processo A é de 0 (zero)
unidades de tempo; para o processo B de 12 unidades de tempo; para o processo C de
20 unidades de tempo; e para o processo D de 35 unidades de tempo. O tempo médio de
espera na fila de prontos é de (0+12+20+35)/4, que equivale a 16,75 unidades de
tempo.
Nesta política de escalonamento o tempo médio de espera é, com freqüência,
um tanto longo. Outro ponto é que processos importantes podem ser obrigados a esperar
devido à execução de outros processos menos importantes dado que o escalonamento
FIFO não considera qualquer mecanismo de distinção entre processos.
Algoritmo de Escalonamento Menor Tarefa Primeiro (SJF –shortest job
first)
Neste escalonamento o processo que tem o menor ciclo de processamento
(tempo de execução) será selecionado para usar o processador.
Considerando o mesmo conjunto de tarefas apresentados, teríamos o diagrama
de tempo apresentado na Figura abaixo.

Diagrama de tempo usando a política Menor Tarefa Primeiro.

Nesta política de escalonamento, o tempo de espera do processo A é de 13
unidades de tempo; para o processo B de 5 unidades de tempo; para o processo C de 25
unidades de tempo; e para o processo D de 0 unidades de tempo. O tempo médio de
espera na fila de prontos é de (13+5+25+0)/4, que equivale a 10,75 unidades de tempo.
Em média, nessa política de escalonamento, os processos tiveram que esperar
menos para serem executados pelo processador.
Segundo Silberschatz, a dificuldade real com o algoritmo de Menor Tarefa
Primeiro é saber o tempo de duração da próxima solicitação de CPU. Assim, trata-se de
um algoritmo ótimo, porém, não pode ser implementado, pois não há modo de saber o
tempo de duração do próximo pico de CPU. Uma abordagem possível é tentar
aproximar-se do algoritmo de Menor Tarefa Primeiro.
5.

Escalonamentos Preemptivos
Algoritmo de Escalonamento Round Robin

O algoritmo Round Robin, conhecido também como algoritmo de
escalonamento circular, também organiza a lista de processos prontos como uma fila
simples, semelhante ao algoritmo FIFO.
36
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

. É muito semelhante ao FIFO (obedece a ordem de chegada á fila de
PRONTO), mas quando um processo passa para o estado de execução há um limite de
tempo para o uso contínuo do processador, chamado fatia de tempo (time-slice) ou
quantum. Assim, toda vez que um processo é selecionado para execução uma nova fatia
de tempo lhe é concedida. Caso esta fatia de tempo expire, o sistema operacional
interrompe o processo, salva seu contexto e o direciona para a fila de PRONTO.
Algoritmo de Escalonamento por Prioridades
Nesta política, os processos são organizados na fila de prontos baseado em
prioridades. Quem tiver maior prioridade vai para o início da fila. Quem tiver menor
prioridade vai se encaixando no final da fila. Esta prioridade pode ser uma atribuição
externa ao sistema.
Vejamos um exemplo. Considere o seguinte conjunto de processos:

Dessa forma, baseado na política de escalonamento por prioridades (quanto
menor o número, maior a prioridade), a ordem de execução dos processos é mostrado
através da Figura abaixo (diagrama de tempo).

Diagrama de tempo usando a política por prioridades.

Alguns aspectos devem ser considerados na política de escalonamento por
prioridades. Primeiro, se no sistema existir uma quantidade grande e interativa de
processos de alta prioridade, podemos chegar a uma situação onde processos de baixa
prioridade nunca executarão.
Uma possível solução para este problema é a utilização de prioridades
dinâmicas. Dessa forma, os processos de baixa prioridade podem ter suas prioridades
lentamente aumentadas, tendo, assim, chances de utilizar o processador.

37
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Algoritmo de Escalonamento Múltiplas Filas
Este escalonamento implementa várias filas de pronto, cada uma com
prioridade específica. Os processos são associados às filas de acordo com características
próprias, como importância da aplicação, tipo de processamento ou área de memória
necessária. Assim, não é o processo que detém a prioridade, mas sim a fila.. Dessa
forma, ao invés de termos apenas uma única fila de prontos, poderíamos construir várias
filas de prontos e agrupar os processos de mesma categoria nessas filas. Para cada fila
poderíamos definir prioridades diferentes e políticas de escalonamentos específicas
.Um exemplo deste algoritmo seria considerar duas filas de prontos, uma com
maior prioridade e outra de menor prioridade, as duas funcionando segunda a política
Round Robin. Dessa forma, se a fila mais prioritária tiver processos, estes terão
prioridade sobre o processador. Caso a fila mais prioritária estiver vazia, os processos
prontos da fila menos prioritária irão concorrer ao processador.
2.4 Sincronização dos Recursos
A sincronização dos recursos do computador é uma tarefa muito importante,
realizada pelos sistemas operacionais multitarefa e é feita em duas áreas distintas:

Sincronização dos Dados: nesse caso o objetivo é manter os dados do
computador em perfeita integridade;

Sincronização dos Processos: refere-se à sincronização da execução dos
processos,com o objetivo de se evitar o conflito na utilização dos recursos do
computador;
A sincronização dos processos só faz sentido em sistemas multitarefa, em que a
cada instante, vários processos poderão estar em execução. O trabalho do sistema
operacional será garantir que cada processo seja concluído corretamente. Aqui, o
conceito de processo será aplicado tanto ao processo em si quanto à thread, ou seja, a
sincronização de processos e sincronização de threads serão tratados de maneiras
unificadas, como Sincronização de Processos.
Para realizar a sincronização algumas medidas podem ser tomadas: a utilização
de Barreiras, Travas, Semáforos, Comunicação e várias outras. Algumas dessas medidas
são implementadas no código dos programas, como as Barreiras, e outras medidas são
realizadas no sistema operacional, as Travas.
As Barreiras são criadas e gerenciadas pelos desenvolvedores de programas
aplicativos. Dentro das instruções desses programas, deve-se incluir uma instrução de
criação de Barreira. Quando um processo executa tal instrução, entra em estado de
Espera (ou Bloqueio), e permanece assim até que todos os processos pertencentes ao
mesmo programa também executem a instrução de Barreira. Com isso consegue-se
colocar todos os processos no mesmo ponto de execução do programa.
Semáforos podem ser utilizados tanto pelos programas quanto pelo sistema
operacional. São variáveis de controle, que indicam se um determinado recurso pode ser
utilizado ou não. O modo mais frequente de controle é a utilização de um contador no
semáforo. O contador indica a quantidade de processos que podem compartilhar o
recurso, quando o limite é alcançado, nenhum processo a mais pode utilizar o mesmo
recurso.
Barreiras e Semáforos geralmente são utilizados para lidar com situações em
que vários processos podem (ou devem) compartilhar um mesmo recurso. Nos casos,
38
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

nos quais um recurso deve ser utilizado exclusivamente por apenas um processo é
utilizada a Trava.
Alguns sistemas implementam Travas Simples, que impedem a utilização do
recurso por outro processo, e outros sistemas implementam Travas Especiais, que
emitem um sinal (aviso de erro) quando um processo tenta acessar um recurso já em
uso. Existe também a possibilidade de se ter uma Trava Compartilhada por vários
processos, mas nesse caso, o acesso ao recurso fica limitado apenas à leitura dos dados
contidos nele.
Para o correto funcionamento dos métodos de sincronização, o processador
deve estar preparado para permitir que os processos consigam compartilhar um recurso
até o limite estabelecido, sem que haja conflito no controle de sincronia. Por exemplo,
em um sistema de Trava, se ela estiver aberta significa que um processo poderá acessar
o recurso. Se, em um mesmo instante, dois processos tentarem utilizar o recurso, os dois
conseguirão acesso ao recurso e com certeza isso resultará em má utilização dele
(imagine uma impressora imprimindo simultaneamente dois documentos diferentes).
Para evitar essa falha, os processadores devem possuir mecanismos de
verificação e ativação da sincronia quase instantânea, ou no mínimo, não conflitante.
Esses mecanismos no processador são instruções que realizarão a sincronização de
maneira correta, as instruções serão do tipo “verificar e travar recurso”, uma mesma
instrução faz a verificação e, se possível, o travamento do recurso. Esse mecanismo só é
válido em computadores com um processador (podendo o processador ter vários
núcleos). Em computadores com vários processadores, o controle da sincronização é
mais complexo, havendo um maior número de considerações a serem feitas. A etapa de
efetivação do sincronismo é muito importante, o tempo que ela demora não deve em
hipótese alguma ser demorado. A efetivação da sincronização deve acontecer
obrigatoriamente antes de o processador executar mais uma instrução de outro processo
(ou do mesmo processo).
A etapa de liberação de uma sincronização também deve ser tratada de
maneira adequada, pois em um ambiente de execução de múltiplos processos, para
haver a real otimização da utilização dos recursos, os processos devem ter acesso aos
mesmos assim que eles não estiverem em uso.

39
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

EXERCICIO

1. O que é política de escalonamento de um sistema operacional?
2. Quais as funções do escalonador e do dispatcher?
3. Quais os principais critérios utilizados em uma política de escalonamento?
4. Diferencie os tempos de processador, espera, turnaround e resposta.
5. Diferencie os escalonamentos preemptivos e não-preemptivos.
6. Qual a diferença entre os escalonamentos FIFO e circular?
7. Descreva o escalonamento SJF e o escalonamento por prioridades.
8. Qual a diferença entre preempção por tempo e preempção por prioridade?
9. O que é um mecanismo de escalonamento adaptativo?
10. Que tipo de escalonamento aplicações de tempo real exigem?

11.Considere um sistema operacional que implemente escalonamento circular
com fatia de tempo igual a 10 u.t.. Em um determinado instante de tempo, existem
apenas três processos (P1, P2 e P3) na fila de pronto, e o tempo de UCP de cada
processo é 18, 4 e 13 u.t, respectivamente. Qual o estado de cada processo no instante
de tempo T, considerando a execução dos processos P1, P2 e P3, nesta ordem, e que
nenhuma operação de E/S é realizada?
a) T = 8 u.t.
b) T = 11 u.t.
c) T = 33 u.t.
12. Considere um sistema operacional que implemente escalonamento circular
com fatia de tempo igual a 10 u.t. Em um determinado instante de tempo, existem
apenas três processos (P1, P2 e P3) na fila de pronto,e o tempo de UCP de cada
processo é 14, 4 e 12 u.t, respectivamente. Qual o estado de cada processo no instante
de tempo T, considerando a execução dos processos P1, P2 e P3, nesta ordem, e que
apenas o processo P1 realiza operações de E/S? Cada operação de E/S é executada após
5 u.t. e consome 10 u.t.
a) T = 8 u.t.
b) T = 18 u.t.
40
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

c) T = 28 u.t.
13. Existem quatro processos (P1, P2, P3 e P4) na fila de pronto, com tempos
de UCP estimados em 9, 6, 3 e 5, respectivamente. Em que ordem os processos devem
ser executados para minimizar o tempo de turnaround dos processos?

ATIVIDADE PRÁTICA
1) Estatísticas
a)Práticas de simulação
· Reinicialize o simulador.
· Ative a janela de Estatísticas em Console SOsim / Janelas / Estatísticas.
· Crie dois novos processos: janela Gerência de Processos / Criar – janela
criação de Processos / Criar.
b)Análise Prática
· Na janela Estatística, observe as informações: número de processos, estados
dos processos e processos escalonados
c)Questão teórica para responder com a ajuda do simulador: Observe que
em alguns momentos existem processos no estado de pronto, porém
nenhum em estado de execução. Explique a razão dessa situação.
2) Log de Execução dos Processos
a)Práticas de simulação
· Reinicialize o simulador.
· Ative a janela de Log em Console SOsim / Janelas / Log.
· Crie dois novos processos do tipo CPU-bound: janela Gerência de Processos /
Cria – janela Criação de Processos / Criar (tipo de processo deve ser CPUbound).
b)Análise Prática
· Na janela Log, observe as informações sobre as mudanças de estado dos
processos observando o tempo que cada processo permanece nos estados de
execução e Pronto.
· Reinicialize o simulador parametrizado com um valor de fatia de tempo
diferente observe as diferenças na janela Log.
c)Questão teórica para responder usando o simulador :Analise
comparativamente a concorrência de dois processos CPU-bound
executando em dois sistemas operacionais que se diferenciam apenas pelo
valor da fatia de tempo.
3) Suspensão e Eliminação de Processos
a)Práticas de simulação
· Reinicialize o simulador.
41
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

· Crie dois novos processos: janela Gerência de Processos / Cria – janela
criação de processos / Criar.
b)Análise Prática
· Na janela Gerência de Processos, observe as informações sobre o contexto de
software dos processos criados.
· Na janela Gerência de Processador, observe a concorrência no uso do
processador pelos dois processos.
· Compare percentualmente os tempos de uso do processador entre os dois
processos.
· Suspenda temporariamente um dos processos na janela Gerência de Processos
/ Suspender.
· Observe os estados dos processos, a concorrência no uso do processador e
novamente compare percentualmente os tempos de uso do processador entre
os dois processos.
· Libere o processo do estado de espera (suspenso) na janela Gerência de
Processos / Prosseguir.
· Elimine um dos processos na janela Gerência de Processos / Finalizar.
c)Questão teórica para responder com a ajuda do simulador :Ao se
eliminar um processo em estado de suspenso, o processo não é eliminado
imediatamente.
Reproduza essa situação no simulador e explique a razão da situação.
4) Escalonamento Circular
a)Práticas de simulação
· Execute o simulador SOsim e configure-o para trabalhar com Escalonamento
Circular: janela Console SOsim / Opções / Parâmetros do Sistema na guia
Processador.
b)Análise Prática
· Crie dois processos com a mesma prioridade (um CPU-bound e outro I/Obound): janela Gerência de Processos / Criar – janela Criação de Processos /
Criar.
· Na janela Gerência de Processos, observe o tempo de processador de cada
processo durante dois minutos e as mudanças de estado. Após esse período
anote o tempo de processador de cada processo. Analise o balanceamento no
uso do processador pelos dois processos.
· Na janela Gerência de Processos finalize os dois processos.
· Na janela Gerência de Processador, aumente a fatia de tempo movimentando
a barra de fatia de tempo.
· Na janela Gerência de Processos, observe mais uma vez o tempo de
processador de cada processo durante dois minutos e as mudanças de estado.
Após esse período anote o tempo de Processador de cada processo. Compare os
tempos anotados nas duas e analise o resultado do balanceamento no uso do
processador pelos dois processos. Identifique as causas da variação.
c)Questão teórica para responder com a ajuda do simulador
Considere a concorrência, nesse tipo de escalonamento, com dois processos
CPU-bound que não realizam operações de E/S. Qual o efeito da variação
da fatia de tempo sobre o balanceamento no uso do processador?
42
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

GERENCIAMENTO DE ENTRADA E SAÍDA

1 Introdução
Para gerenciar os dispositivos, os sistemas operacionais contam com
gerenciadores específicos: Gerenciador de Impressão, Gerenciador de Disco,
Gerenciador de Modem, Gerenciador USB, Gerenciador de Vídeo, entre outros, Para
realizar essa tarefa, os sistemas operacionais recebem um conjunto de instruções
específicas para o tratamento dos dispositivos. Cada gerenciador será responsável por
realizar a administração e controle da utilização do respectivo dispositivo.

Princípios de hardware e de software de E/S.

2. Princípios de Hardware de E/S
Segundo Tanenbaum, o hardware de entrada e saída pode ser visto sob dois
pontos de vista:

Visão do Engenheiro Elétrico: vê o hardware sob o ponto de vista
de chips, fios, fontes de alimentação, de motores e de todos os componentes
físicos que o constituem.

Visão do Programador: já o programador vê a interface
apresentada para o software (comandos que o hardware aceita, as funções que
ele executa e os erros que podem ser retornados).
43
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Dispositivos de Entrada e Saída
Os dispositivos de entrada e saída é o mecanismo utilizado para fazer a
interface entre o mundo exterior e o sistema e sem ele o computador não teria muita
funcionalidade. É possível encontrar uma grande diversidade de dispositivos de entrada
e saída, como: teclados, mouses, monitor de vídeo, impressora, scanners, dentre outros.
Os dispositivos de entrada e saída, dependendo do sentido o do fluxo de
informações entre o sistema e o dispositivo, podem ser divididos, grosso modo, em
dispositivos de entrada, dispositivos de saída ou dispositivos de entrada e saída. Os
dispositivos de entrada são caracterizados por conter um fluxo de informações do
dispositivo para o sistema, ou seja, são responsáveis por inserir no sistema informação
do mundo externo. Já os dispositivos de saída são caracterizados pelo fluxo de
informações do sistema para o mundo externo, ou seja, responsáveis por disponibilizar
respostas ao mundo externo. Já os dispositivos e entrada e saída contemplam os dois
fluxos.
Segundo Tanenbaum, os dispositivos também podem ser divididos, grosso
modo, em duas categorias: dispositivos de bloco e dispositivos de caractere. Os
dispositivos de bloco são caracterizados por armazenar informações em blocos de
tamanhos fixos, cada um com seu endereço próprio. A propriedade essencial desse tipo
de dispositivos é que é possível ler ou gravar blocos independentemente um do outro. O
disco é um bom exemplo deste tipo de dispositivo.
Já os dispositivos de caractere são caracterizados por aceitar ou entregar um
fluxo de caracteres, sem considerar qualquer estrutura de bloco, sem endereçamento ou
qualquer operação de busca.
Embora esta classificação seja, de forma geral, muito utilizada, segundo o autor
Tanenbaum, existem dispositivos que não são classificáveis em nenhum desses tipos.
Como exemplo, tomemos por base os relógios. Os relógios são dispositivos que geram
interrupções em intervalos definidos de tempo. Este dispositivo não se encaixa nos
dispositivos de bloco, pois não possuem estrutura de blocos e, também, não se encaixam
como dispositivos de caractere, pois não gera nenhum fluxo de caracteres.
Controladoras de Dispositivos
Para que os dispositivos se comuniquem com o sistema, eles são ligados ao
computador através de um componente de hardware chamado de interface. Assim, os
dispositivos não estão ligados diretamente aos barramentos do computador. Devido a
diversidade de tipos de dispositivos, que abstrai diferentes formas de operações e
complexidade, as interfaces empregam no seu projeto outro componente de hardware
conhecido como controladora de dispositivo.
A controladora de dispositivo (chamada também de adaptador de dispositivo)
trata-se de um componente eletrônico, comumente na forma de uma placa de circuito
impresso, que pode ser inserido na placa mãe do computador. O dispositivo em si trata
se de um componente mecânico. Uma controladora pode manipular mais de um
dispositivo e, quando padronizadas, podem ser fabricadas por diversas empresas. Como
exemplo de controladoras, temos as controladoras de disco IDE ou SCSI.
Cada controladora deve saber especificamente como o dispositivo a ela
relacionado funciona, a fim de que possa enviar comandos a serem realizados.
44
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Basicamente, uma controladora tem a função de converter um fluxo serial de bits em
um bloco de bytes e executar uma correção de erros. Este bloco de bytes, montado em
um buffer interno da controladora, após verificado erros, pode ser copiado para a
memória principal. A maioria dos Sistemas Operacionais quase sempre lida com a
controladora, não com o dispositivo.
As controladoras são formadas de um conjunto de registradores que são
enxergados pelo processador. Esses registradores recebem ordens do processador,
fornecem o estado de uma operação ou permitem a leitura ou escrita de dados do
dispositivo. O Sistema Operacional quando deseja dar algum comando à controladora
acessam esses registradores (cada registrador possui um endereço). Os endereços dos
registradores podem fazer parte do espaço normal de endereçamento de memória. Esse
esquema é conhecido como mapeamento de entrada e saída em memória.
Controladoras que suportam Acesso Direto à Memória
As controladoras comuns (sem acesso direto à memória) recebem um fluxo de
caracteres, converte para um bloco, armazenado em seu buffer, depois verifica possíveis
erros. Por seguinte, a controladora gera uma interrupção no Sistema Operacional, que
por sua vez, começa a ler o bloco do buffer da controladora, cada byte por vez, e
armazena-os na memória principal. Esta operação, naturalmente, exige desperdício de
CPU.
O Acesso Direto à Memória (DMA – Direct Memory Access) é um
mecanismo criado para liberar a CPU do trabalho de cópia dos dados da controladora
para a memória. O controlador DMA é conectado diretamente ao barramento de dados e
de endereços do computador, para ter a capacidade de acessar diretamente endereços de
memória.
Com a controladora DMA, após o bloco ter sido lido do dispositivo
completamente e verificado possíveis erros, ela copia o primeiro byte para o endereço
de memória principal especificado pelo endereço de memória DMA. Após terminar a
transferências dos dados para a memória principal, a controladora DMA gera uma
interrupção para o Sistema Operacional, que ao ser iniciado já encontra o dado em
memória principal.
Segundo Oliveira, a técnica de DMA é mais eficiente quando a operação de
entrada e saída envolve a leitura ou escrita de muitos dados, como exemplo, uma leitura
de disco. Nem todos os computadores utilizam a técnica de DMA. A justificativa disso é
o fato de que a CPU, comumente, é bem mais rápida que a controladora DMA e pode
fazer o trabalho de cópia de dados para a memória muito mais rápida.
3 Princípios de Software de E/S
O software de entrada e saída, comumente, é organizado em uma estrutura de
camadas, no qual as camadas mais baixas têm como principal função esconder das
camadas mais altas as peculiaridades do hardware. Já as camadas mais altas têm como
principal função apresentar uma interface amigável e simples para o usuário final.
Algumas metas de software de entrada e saída podem ser apontadas:

Independência de dispositivo: deve ser possível escrever programas que
podem, por exemplo, lê arquivos de qualquer dispositivo.
45
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS


Atribuição uniforme de nomes: o nome de um arquivo ou de um
dispositivo não pode depender do dispositivo.

Tratamento de erros: os erros devem ser tratados o mais perto possível do
hardware.

Transferências síncronas ou assíncronas: a maior parte dos dispositivos
de E/S são assíncronos e os programas dos usuários são mais fáceis de implementar
através de bloqueios. Assim o Sistema Operacional deve fazer com que as operações
pareçam, de fato, com bloqueios para os programas do usuário.

Dispositivos compartilháveis ou dedicados: O Sistema Operacional deve
ser capaz de tratar dispositivos tanto dedicados como compartilhados de uma maneira
que não gere problemas.
Manipuladores de Interrupções
As interrupções devem ser escondidas do sistema. O ideal é bloquear um
processo que inicia uma operação de E/S e mantê-lo bloqueado até que a operação de
E/S complete e a interrupção tenha ocorrido. O importante a se saber é que quando uma
interrupção é gerada, o processo é desbloqueado, passando para um estado capaz de ser
executado.
Drivers de Dispositivos
O driver de dispositivo (device driver) é composto de um conjunto de módulos
de software cada um implementado para fornecer mecanismos de acesso a um
dispositivo de entrada e saída específico. Assim, cada driver de dispositivo trata de um
tipo de dispositivo ou de uma classe de dispositivos correlacionados.
De modo geral, um driver é responsável por aceitar uma solicitação abstrata
(por exemplo, ler alguma informação) e cuidar para que esta solicitação seja atendida.
Assim o driver de um dispositivo tem o conhecimento de como funciona a controladora
funciona.
Software de E/S Independente de Dispositivo
A principal função do software de E/S independente de dispositivo é executar
funções que são comuns para vários dispositivos e oferecer uma interface uniforme para
o software de nível de usuário.
Segundo Oliveira, podemos enumerar alguns serviços sob responsabilidade
dessa camada:

Nomeação de Dispositivo: Cada dispositivo deve receber um nome
lógico e ser identificado a partir dele.

Buferização: Buffer é uma zona de memória temporária utilizada para
armazenar dados enquanto eles estão sendo transferidos entre as diferentes camadas do
software de E/S.

Cache de Dados: Armazenar na memória um conjunto de dados que
estão sendo frequentemente utilizados.

Alocação e Liberação: Devido a alguns dispositivos admitirem, no
máximo, um usuário por vez, o software de E/S deve gerenciar a alocação, liberação e
uso destes dispositivos.

Tratamento de Erros: o software de E/S deve fornecer mecanismos de
manipulação de erros, informando à camada superior o sucesso ou fracasso de uma
operação.
46
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

Software de E/S de Nível de Usuário
A visão dos dispositivos de E/S para o usuário consiste de bibliotecas
vinculadas em programas de usuários. Essas bibliotecas são fornecidas pelas linguagens
de programação e podem ser utilizadas pelos usuários e ligadas com seus programas
para compor o arquivo executável.
As funções de entrada e saída são dependentes e específicas de cada linguagem
de programação. Por exemplo, na linguagem C as funções printf e scanf são utilizadas
para impressão formatada e leitura, respectivamente. As bibliotecas de entrada e saída
não fazem parte do núcleo do Sistema Operacional. Elas são associadas às várias
linguagens de programação.

47
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

EXERCICIO
1) Qual o papel do Sistema Operacional com relação aos dispositivos de
entrada e saída?
2) Diferencie a visão do engenheiro elétrico e do programador quanto ao
hardware de entrada e saída.
3) Como são caracterizados os dispositivos de E/S de bloco e de caractere.
4) Qual a função dos Drivers de Dispositivos ?

5) Como funciona as controladoras que suportam DMA.
6) Aponte as metas de software de E/S, explicando cada uma.
7) Qual a principal função do software de E/S independente de dispositivo?

48
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS

GERENCIAMENTO DE MEMÓRIA

1 Introdução
Historicamente, a memória principal sempre foi vista como um recurso escasso
e caro. Uma das maiores preocupações dos projetistas foi desenvolver sistemas
operacionais que não ocupassem muito espaço de memória e, ao mesmo tempo,
otimizassem a utilização dos recursos computacionais. Mesmo atualmente, com a
redução do custo e o aumento considerável da capacidade da memória principal, seu
gerenciamento é dos fatores mais importantes no projeto e implementação dos sistemas
operacionais.
O Sistema Operacional tem como principal função gerenciar a hierarquia de
memória. A parte do SO responsável por essa função é chamada de gerenciamento de
memória. Entre as funções do gerenciador de memória está em controlar as partes de
memória utilizada e as partes não utilizadas, alocar (disponibilizar) memória para os
processos, desalocar (retirar) memória de processos e gerenciar a troca entre memória
principal (primária) e memória secundária.

Hierarquia de Memória

Basicamente, o gerenciamento da memória é a ferramenta utilizada para
permitir aos programas em execução no computador utilizarem a memória do
computador para armazenar as instruções e dados que serão manipulados.
Os principais objetivos a serem alcançados no gerenciamento da memória são:

Oferecer uma área de armazenamento para os processos serem
executados;
49
PRONATEC/SEDUC-PI

SISTEMAS OPERACIONAIS


Proteger a execução dos processos contra eventuais falhas causadas por
erro em um determinado processo;

Criar um ambiente de execução com desempenho satisfatório aos
usuários;
Além dessas características, adicionalmente deseja-se de um bom gerenciador:

Compartilhamento da memória entre os processos (em sistemas
avançados);

Permitir aos programadores desenvolverem programas que tenham um
acesso transparente à memória do computador.
Nos sistemas operacionais modernos, o gerenciamento da memória realizará
essas tarefas através da Proteção da Memória.
2. Gerenciamento Básico de Memória
O esquema mais simples de gerenciamento de memória foi implementado nos
primeiros Sistemas Operacionais, porém ainda está presente em alguns sistemas
monoprogramáveis. Este esquema é chamado por alguns autores como alocação
contígua.
Basicamente, a memória principal disponível é dividida entre o Sistema
Operacional e o programa em execução. Como este esquema de gerenciamento é
utilizado em sistemas monoprogramáveis, temos apenas um processo em execução por
vez.

Esquema Básico de gerenciamento de memória

Neste tipo de gerenciamento, o usuário tem acesso a toda memória principal,
inclusive o espaço do Sistema Operacional. É possível proteger a área de memória do
Sistema Operacional utilizando registradores delimitadores de área de usuário e do
SO.Assim, os programas estão limitados ao tamanho de memória principal disponível.
Uma técnica conhecida como overlay, permite que um programa seja dividido em
módulos, de forma que seja possível a execução independente de cada módulo,
utilizando uma mesma área de memória.
50
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais
Principais conceitos de sistemas operacionais

Mais conteúdo relacionado

Mais procurados

Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fsopaulocsm
 
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisFundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisHelder Lopes
 
Cap05 processos e threads
Cap05   processos e threadsCap05   processos e threads
Cap05 processos e threadsfernandao777
 
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplinaFundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplinaHelder Lopes
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Conceitos de sistemas operacionais
Conceitos de sistemas operacionaisConceitos de sistemas operacionais
Conceitos de sistemas operacionaisAparicio Junior
 
2. conceito de processos
2. conceito de processos2. conceito de processos
2. conceito de processosvini_campos
 
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalSistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalCharles Fortes
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisvini_campos
 
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...Helder Lopes
 
Sistema operacional
Sistema operacionalSistema operacional
Sistema operacionalMichael Soto
 
00 - Apresentação Sistemas Operacionais
00 - Apresentação Sistemas Operacionais00 - Apresentação Sistemas Operacionais
00 - Apresentação Sistemas OperacionaisMauro Duarte
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisCharles Fortes
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Leinylson Fontinele
 
Sistema Operativo
Sistema OperativoSistema Operativo
Sistema Operativoguest7185f
 
Introducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIntroducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIsaac Vieira
 
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...antonio sérgio nogueira
 

Mais procurados (20)

Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fso
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisFundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
 
Cap05 processos e threads
Cap05   processos e threadsCap05   processos e threads
Cap05 processos e threads
 
Aula 11,12,13,14...
Aula 11,12,13,14...Aula 11,12,13,14...
Aula 11,12,13,14...
 
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplinaFundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Conceitos de sistemas operacionais
Conceitos de sistemas operacionaisConceitos de sistemas operacionais
Conceitos de sistemas operacionais
 
2. conceito de processos
2. conceito de processos2. conceito de processos
2. conceito de processos
 
Fundamentos de SO
Fundamentos de SOFundamentos de SO
Fundamentos de SO
 
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalSistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
 
Sistema operacional
Sistema operacionalSistema operacional
Sistema operacional
 
00 - Apresentação Sistemas Operacionais
00 - Apresentação Sistemas Operacionais00 - Apresentação Sistemas Operacionais
00 - Apresentação Sistemas Operacionais
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
 
Sistema Operativo
Sistema OperativoSistema Operativo
Sistema Operativo
 
Introducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIntroducao a Sistemas Operacionais
Introducao a Sistemas Operacionais
 
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...
 

Destaque

Sistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoSistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoLuiz Arthur
 
Sistemas Operacionais 2 -aula00
Sistemas Operacionais 2 -aula00Sistemas Operacionais 2 -aula00
Sistemas Operacionais 2 -aula00Anderson Favaro
 
Sistema Operativos
Sistema OperativosSistema Operativos
Sistema Operativosguestcd9192
 
SO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas OperacionaisSO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas OperacionaisEduardo Nicola F. Zagari
 
So2 aula00-cic4 ma446-quarta
So2 aula00-cic4 ma446-quartaSo2 aula00-cic4 ma446-quarta
So2 aula00-cic4 ma446-quartaAnderson Favaro
 
So2 aula00-noite-1sem2011
So2 aula00-noite-1sem2011So2 aula00-noite-1sem2011
So2 aula00-noite-1sem2011Anderson Favaro
 
Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Cristiano Pires Martins
 
Sistemas Operacionais 10 comunicação entre processos
Sistemas Operacionais 10   comunicação entre processosSistemas Operacionais 10   comunicação entre processos
Sistemas Operacionais 10 comunicação entre processosMauro Duarte
 
História dos Sistemas Operativos
História dos Sistemas OperativosHistória dos Sistemas Operativos
História dos Sistemas OperativosTROLITO LALALAL
 
Sistema Operativos
Sistema OperativosSistema Operativos
Sistema OperativosBugui94
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisLuciano Crecente
 
Gracias Señor Por Un Año Mas
Gracias Señor Por Un Año Mas Gracias Señor Por Un Año Mas
Gracias Señor Por Un Año Mas Robinson Pulgarin
 
Aula 10 - Exclusão Mútua e Região Crítica
Aula 10 - Exclusão Mútua e Região CríticaAula 10 - Exclusão Mútua e Região Crítica
Aula 10 - Exclusão Mútua e Região Críticacamila_seixas
 
Regiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisRegiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisAbadia Cardoso
 

Destaque (20)

Sistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoSistemas Operacionais - Introducao
Sistemas Operacionais - Introducao
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Modelo de von neumann
Modelo de von neumannModelo de von neumann
Modelo de von neumann
 
Sistemas Operacionais 2 -aula00
Sistemas Operacionais 2 -aula00Sistemas Operacionais 2 -aula00
Sistemas Operacionais 2 -aula00
 
Sistema Operativos
Sistema OperativosSistema Operativos
Sistema Operativos
 
Pseudoparalelismo
PseudoparalelismoPseudoparalelismo
Pseudoparalelismo
 
SO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas OperacionaisSO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas Operacionais
 
So2 aula00-cic4 ma446-quarta
So2 aula00-cic4 ma446-quartaSo2 aula00-cic4 ma446-quarta
So2 aula00-cic4 ma446-quarta
 
So2 aula00-noite-1sem2011
So2 aula00-noite-1sem2011So2 aula00-noite-1sem2011
So2 aula00-noite-1sem2011
 
Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1
 
Sistemas Operacionais 10 comunicação entre processos
Sistemas Operacionais 10   comunicação entre processosSistemas Operacionais 10   comunicação entre processos
Sistemas Operacionais 10 comunicação entre processos
 
História dos Sistemas Operativos
História dos Sistemas OperativosHistória dos Sistemas Operativos
História dos Sistemas Operativos
 
Sistema Operativos
Sistema OperativosSistema Operativos
Sistema Operativos
 
1ª aula sistema operacional
1ª aula  sistema operacional1ª aula  sistema operacional
1ª aula sistema operacional
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas Operacionais
 
S.o aula 1516
S.o aula 1516S.o aula 1516
S.o aula 1516
 
Gracias Señor Por Un Año Mas
Gracias Señor Por Un Año Mas Gracias Señor Por Un Año Mas
Gracias Señor Por Un Año Mas
 
Aula 10 - Exclusão Mútua e Região Crítica
Aula 10 - Exclusão Mútua e Região CríticaAula 10 - Exclusão Mútua e Região Crítica
Aula 10 - Exclusão Mútua e Região Crítica
 
Regiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisRegiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas Operacionais
 

Semelhante a Principais conceitos de sistemas operacionais

APOSTILA PCM gestão da manutenção tipos de manutençãopdf
APOSTILA PCM gestão da manutenção tipos de manutençãopdfAPOSTILA PCM gestão da manutenção tipos de manutençãopdf
APOSTILA PCM gestão da manutenção tipos de manutençãopdfWilliansilva12549
 
Plano de Projeto de Software
Plano de Projeto de SoftwarePlano de Projeto de Software
Plano de Projeto de SoftwareLeonardo Felipe
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisMarcos Pessoa
 
sistemas_operacionais-livro.pdf
sistemas_operacionais-livro.pdfsistemas_operacionais-livro.pdf
sistemas_operacionais-livro.pdfJoelManuel8
 
Apresentação do SCAD, Sistema Académico do DIEE
Apresentação do SCAD, Sistema Académico do DIEEApresentação do SCAD, Sistema Académico do DIEE
Apresentação do SCAD, Sistema Académico do DIEEalexculpado
 
PI IV - DESENVOLVIMENTO DE SERVICOS DE TI
PI IV - DESENVOLVIMENTO DE SERVICOS DE TIPI IV - DESENVOLVIMENTO DE SERVICOS DE TI
PI IV - DESENVOLVIMENTO DE SERVICOS DE TINilo Basílio
 
TCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em ComponentesTCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em ComponentesJuliano Tiago Rinaldi
 
Arquitectura de computadores
Arquitectura de computadoresArquitectura de computadores
Arquitectura de computadoresRui Raposo
 
Gerencia memoria simulador
Gerencia memoria simuladorGerencia memoria simulador
Gerencia memoria simuladormarcosfon
 
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...Jefferson Simão Gonçalves
 
Relatório de Estágio da Graduação
Relatório de Estágio da GraduaçãoRelatório de Estágio da Graduação
Relatório de Estágio da GraduaçãoMaurício Linhares
 
Apostila elementos de projeto de informática
Apostila elementos de projeto de informáticaApostila elementos de projeto de informática
Apostila elementos de projeto de informáticaFabricio Tecinfo
 
Controladoria crc rj
Controladoria crc rjControladoria crc rj
Controladoria crc rjHélio Dias
 
Desenvolvimento de Sistema CRUD (MVC) PHP / MYSQL
Desenvolvimento de Sistema CRUD (MVC) PHP / MYSQLDesenvolvimento de Sistema CRUD (MVC) PHP / MYSQL
Desenvolvimento de Sistema CRUD (MVC) PHP / MYSQLRogerio de Moraes
 

Semelhante a Principais conceitos de sistemas operacionais (20)

Estagio ads
Estagio adsEstagio ads
Estagio ads
 
APOSTILA PCM gestão da manutenção tipos de manutençãopdf
APOSTILA PCM gestão da manutenção tipos de manutençãopdfAPOSTILA PCM gestão da manutenção tipos de manutençãopdf
APOSTILA PCM gestão da manutenção tipos de manutençãopdf
 
Plano de Projeto de Software
Plano de Projeto de SoftwarePlano de Projeto de Software
Plano de Projeto de Software
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiais
 
Sistemas digitais arquitectura computadores
Sistemas digitais arquitectura computadoresSistemas digitais arquitectura computadores
Sistemas digitais arquitectura computadores
 
sistemas_operacionais-livro.pdf
sistemas_operacionais-livro.pdfsistemas_operacionais-livro.pdf
sistemas_operacionais-livro.pdf
 
1 76 (1)
1 76 (1)1 76 (1)
1 76 (1)
 
Apresentação do SCAD, Sistema Académico do DIEE
Apresentação do SCAD, Sistema Académico do DIEEApresentação do SCAD, Sistema Académico do DIEE
Apresentação do SCAD, Sistema Académico do DIEE
 
PI IV - DESENVOLVIMENTO DE SERVICOS DE TI
PI IV - DESENVOLVIMENTO DE SERVICOS DE TIPI IV - DESENVOLVIMENTO DE SERVICOS DE TI
PI IV - DESENVOLVIMENTO DE SERVICOS DE TI
 
TCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em ComponentesTCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em Componentes
 
Relatório_168_APPs__Gerenciamento_Projetos
Relatório_168_APPs__Gerenciamento_ProjetosRelatório_168_APPs__Gerenciamento_Projetos
Relatório_168_APPs__Gerenciamento_Projetos
 
Arquitectura de computadores
Arquitectura de computadoresArquitectura de computadores
Arquitectura de computadores
 
Gerencia memoria simulador
Gerencia memoria simuladorGerencia memoria simulador
Gerencia memoria simulador
 
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
 
Relatório de Estágio da Graduação
Relatório de Estágio da GraduaçãoRelatório de Estágio da Graduação
Relatório de Estágio da Graduação
 
Sdac
SdacSdac
Sdac
 
Apostila elementos de projeto de informática
Apostila elementos de projeto de informáticaApostila elementos de projeto de informática
Apostila elementos de projeto de informática
 
Trabalho individual
Trabalho individualTrabalho individual
Trabalho individual
 
Controladoria crc rj
Controladoria crc rjControladoria crc rj
Controladoria crc rj
 
Desenvolvimento de Sistema CRUD (MVC) PHP / MYSQL
Desenvolvimento de Sistema CRUD (MVC) PHP / MYSQLDesenvolvimento de Sistema CRUD (MVC) PHP / MYSQL
Desenvolvimento de Sistema CRUD (MVC) PHP / MYSQL
 

Principais conceitos de sistemas operacionais

  • 2. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS PROGRAMA DE DISCIPLINA ESCOLA OFERTANTE: CURSO: TÉCNICO EM INFORMÁTICA SEMESTRE: ANO: 2013 DISCIPLINA: SISTEMAS OPERACIONAIS C/H ANUAL: 85h/a MÓDULO: I C/H SEMANAL: 5h/a I – Objetivos A disciplina Sistemas Operacionais tem por objetivo fornecer ao aluno uma visão detalhada dos principais mecanismos envolvidos na concepção de um sistema operacional moderno. Compreendendo sua importância, conhecendo as metodologias utilizadas para controle e aproveitamento dos recursos do computador; conhecendo os principais componentes de um sistema operacional e dos mecanismos e técnicas usadas para desenvolvê-los. Apresentar aos estudantes os conceitos e princípios básicos dos sistemas operacionais de computadores digitais, observando os sistemas operacionais como gerente dos recursos computacional e como elemento de interface entre programas de aplicação e os recursos da máquina. II – Conteúdo VISÃO GERAL Introdução 2. Definição de Sistemas Operacionais 3. História dos Sistemas Operacionais 4 Classificação dos Sistemas Operacionais 5 Funcionalidades 6 Estruturas do Sistema Operaciona 7 Chamadas de Sistemas 8 Arquiteturas de Sistemas Operacionais GERENCIAMENTO DE PROCESSOS 1 Introdução ao modelo de processos 2 Estados de um Processo 3 Threads 4 Comunicação Interprocessos. 5 Seções Críticas 6 Deadlocks : Impasse entre Processos 2
  • 3. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS 7 Gerenciador de processos 8 Escalonamento de processos 9 Escalonamentos Não-Preemptivos 10 Escalonamentos Preemptivos GERENCIAMENTO DE ENTRADA E SAÍDA 1 Introdução 2. Princípios de Hardware de E/S Controladoras de Dispositivos 3 Princípios de Software de E/S GERENCIAMENTO DE MEMÓRIA 1 Introdução 2. Gerenciamento Básico de Memória 3. Gerencia de Memória para Multiprogramação 3 Memória Virtual GERENCIA DE ARQUIVOS 1. Introdução aos Sistemas de Arquivos 2 Tipos de Arquivos 3 Atributos 3 Operações 4 Implementação de Arquivos 5 Diretórios III - Metodologia - Aulas expositivas e dialogadas, - Aulas práticas com Simulação e Demonstração utilizando o Simulador de Sistema Operacional SOsim 2.0, - Apresentação de seminários e Discussão dirigida, -Atividades e exercícios propostos no material. IV - Avaliação - A avaliação dos discentes será realizada perante os resultados diagnósticos aplicados ao longo do módulo e dividida conforme as formas formativas e somativas de verificação de aprendizagem. Os instrumentos de avaliação formal (provas e/ou trabalhos) compõem o valor máximo de 5 (cinco) pontos e terão um complemento de 5 (cinco) pontos considerando aspectos qualitativos como: participação nas discussões sobre tópicos da disciplina, a resolução de exercícios, a execução de trabalhos de pesquisa, assiduidade, realização de trabalhos práticos. . V – Bibliografia TANEMBAUM,A.S. Sistemas Operacionais Modernos .2ª edição . São Paulo,Ed.Prentice Hall,2003 LEÃO,Erico Meneses : Sistemas Operacionais .Universidade Aberta do Brasil OLSEN .Diogo Roberto .Sistemas Operacionais/ LAUREANO.Marcos Aurélio.-Curitiba: Editora do Livro Técnico .2010 Maziero, Carlos Alberto. Sistemas Operacionais Conceitos Básicos .2011 Machado, Francis B. Arquitetura de Sistemas Operacionais.Ed. LTC Abraham Silberschatz .Sistemas Operacionais: Conceitos e Aplicações.Ed. Campus 3
  • 4. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Tanenbaum , A.S. Sistemas Operacionais Modernos .Ed. Campus A evolução dos sistemas operacionais-Traduzido e adaptado por Raimundo G Nóbrega Filho o texto Operating Systems: Design And Implementation,Andrew S. Tanenbaum - Editora Prentice Hall http://www.inf.ufes.br/~zegonc/material/Sistemas%20Operacionais/Introducao.pdf http://www.afms.com.br/sistemas_operacionais.html www.docstoc.com/.../Lista-de-Exercícios-respondida---Grupo-Educacion Simulador de Ensino para Sistemas Operacionais http://www.training.com.br/sosim/http://www.ppgia.pucpr.br/_maziero http://www.inf.unioeste.br/~marcio/SO/Aula9SistemadeArquivos.pdf http://docente.lages.ifsc.edu.br/juliano.goncalves/MaterialDidatico/Sistemas%20Operacionais/Exer c%C3%ADcios%20Revis%C3%A3o%20ProvaI.pdf http://dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:filesystem.pdf http://www.cafw.ufsm.br/~roberto/?page_id=26 http://www.metropoledigital.ufrn.br/aulas/disciplinas/sist_operacional 4
  • 5. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS SUMÁRIO VISÃO GERAL ..................................................................................................................................... 6 1 Introdução ....................................................................................................................... 6 2. Definição de Sistemas Operacionais ............................................................................... 7 3. História dos Sistemas Operacionais ................................................................................ 8 4 Classificação dos Sistemas Operacionais ....................................................................... 12 5 Funcionalidades ............................................................................................................. 17 6 Estruturas do Sistema Operacional................................................................................. 18 7 Chamadas de Sistemas ................................................................................................... 19 8 Arquiteturas de Sistemas Operacionais .......................................................................... 19 GERENCIAMENTO DE PROCESSOS .....................................................................................................24 1 Introdução ao modelo de processos................................................................................ 24 2 Estados de um Processo ................................................................................................. 26 3 Threads ......................................................................................................................... 27 4 Comunicação Interprocessos.......................................................................................... 28 5 Seções Críticas .............................................................................................................. 30 6 Deadlocks : Impasse entre Processos ............................................................................. 30 Gerenciador de Processos ................................................................................................. 34 8 Escalonamento de Processos.......................................................................................... 34 9 Escalonamentos Não-Preemptivos ................................................................................. 35 10 Escalonamentos Preemptivos ....................................................................................... 36 II ATIVIDADE PRÁTICA .......................................................................................................................41 GERENCIAMENTO DE ENTRADA E SAÍDA ...........................................................................................43 1 Introdução ..................................................................................................................... 43 2. Princípios de Hardware de E/S...................................................................................... 43 Controladoras de Dispositivos .......................................................................................... 44 3 Princípios de Software de E/S ........................................................................................ 45 GERENCIAMENTO DE MEMÓRIA ...............................................................................................49 1 Introdução ..................................................................................................................... 49 2. Gerenciamento Básico de Memória .............................................................................. 50 3. Gerencia de Memória para Multiprogramação .............................................................. 51 Memória Virtual ............................................................................................................... 55 GERENCIA DE ARQUIVOS...................................................................................................................59 1. Introdução aos Sistemas de Arquivos............................................................................ 59 2 Tipos de Arquivos ......................................................................................................... 61 3 Atributos ....................................................................................................................... 61 3 Operações...................................................................................................................... 62 4 Implementação de Arquivos .......................................................................................... 63 5 Diretórios ...................................................................................................................... 67 REFERENCIAS BIBLIOGRÁFICAS ..........................................................................................................70 5
  • 6. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS VISÃO GERAL 1 Introdução O Sistema Operacional é um software que habilita as aplicações e interagem com o hardware de um computador, suas aplicações gerenciam todos os recursos do sistema (memória,processador,discos,impressoras e outros dispositivos ) de forma organizada e otimizada.(Livro Técnico ,Sistemas Operacionais . pág.09) Os sistemas Operacionais podem ser encontrados em dispositivos que vão de telefones celulares e automóveis e de computadores pessoais a computadores de grande porte O software, de um modo geral, é utilizado para solucionar os problemas do usuário, enquanto que o hardware do computador é o dispositivo físico capaz de executar esses softwares. Esses softwares, responsáveis por realizar as atividades dos usuários, comumente são chamados de programas aplicativos. Como pode ser visto na Figura , levando em consideração que temos uma camada intermediária, o SO entre os programas aplicativos e o hardware em si, o usuário não necessita conhecer toda a complexidade de implementação do hardware do Sistema Computacional para, assim, poder utilizá-lo. O Sistema Operacional, de fato, opera como uma interface entre o usuário e o dispositivo físico em si, no qual o usuário, quando necessita acessá-lo, faz essa solicitação diretamente ao Sistema Operacional. 6
  • 7. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS O sistema operacional é uma estrutura de software ampla, muitas vezes complexa que incorpora aspectos de baixo nível (como drives de dispositivos e gerência de memória física) e de alto nível (como programas utilitários e a própria interface gráfica). Podemos concluir que os objetivos básicos de um sistema operacional podem ser sintetizados em duas palavras-chave: “abstração” e “gerência”, cujos principais aspectos são detalhados a seguir. 2. Definição de Sistemas Operacionais Segundo Tanenbaum, podemos definir um Sistema Operacional levando em consideração dois pontos de vistas:   O Sistema Operacional como uma Máquina estendida; O Sistema Operacional como gerenciador de recursos. O Sistema Operacional como uma Máquina estendida Acessar os recursos de hardware de um sistema de computação pode ser uma tarefa complexa, devido às características específicas de cada dispositivo físico e a complexidade de suas interfaces. O usuário (que pode ser um programador ou um usuário final), comumente, não está interessado em saber os detalhes funcionais dos dispositivos. Como exemplo, o usuário não quer saber o que é preciso, em nível de hardware, para que seja lida uma determinada informação um disco rígido (tarefa bem complexa, que exige o conhecimento de registradores, motores, cilindros e outros dispositivos físicos). O usuário deseja ter uma interface mais palpável e mais simples de lidar. No caso dos discos, por exemplo, uma abstração típica seria que o disco contenha um conjunto de nomes de arquivos. A partir desses nomes, é possível realizar as operações básicas (abrir, ler, escrever e fechar), sem se importar qual a velocidade e estado atual do motor, por exemplo. Assim, o Sistema Operacional aparece como o programa que esconde do usuário a complexidade do hardware e apresenta uma visão fácil e simples para as operações sobre os dispositivos. Essa visão é equivalente a uma máquina estendida ou máquina virtual, mais fácil de lidar. O Sistema Operacional como gerenciador de recursos Por outro lado, o Sistema Computacional é composto de uma série de recursos, no qual podemos enumerar: processadores, memórias, discos, mouses, teclados, impressoras, placas de rede e uma infinidade de dispositivos em geral. Dessa forma, o Sistema Operacional aparece como sendo o responsável por organizar e alocar de forma ordenada todos esses recursos disponíveis. Essa tarefa, em uma primeira vista, pode parecer simples. Porém, quando se tem vários programas disputando os recursos,que são limitados, é necessário utilizar técnicas de alocação dos dispositivos, a fim de se evitar inconsistências e, até mesmo, situações que resultem numa parada do sistema de uma forma geral.Então cabe ao 7
  • 8. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS sistema operacional definir políticas para gerenciar o uso dos recursos de hardware pelos aplicativos, e resolver eventuais disputas e conflitos. Assim, um sistema operacional visa abstrair o acesso e gerenciar os recursos de hardware, provendo aos aplicativos um ambiente de execução abstrato, no qual o acesso aos recursos se faz através de interfaces simples, independentes das características e detalhes de baixo nível, e no qual os conflitos no uso do hardware são minimizados. Objetivos de um Sistema Operacional  Tornar a utilização do computador eficiente e conveniente, a fim de ter um ganho de produtividade e, dessa forma, utilizar o Sistema Computacional para agilizar as atividades do dia-a-dia;  Garantir a integridade e segurança dos dados armazenados e processados pelos programas e dos recursos físicos disponíveis. 3. História dos Sistemas Operacionais Os Sistemas Operacionais, ao longo dos anos, vêm se desenvolvendo e ganhando novas características, sendo necessário partimos ao seu histórico para que possamos compreender como se deu essa evolução. Partindo do pressuposto que a história dos Sistemas Operacionais sempre esteve intimamente vinculado à história das arquiteturas de computadores, iremos fazer um breve resumo dos principais eventos relacionados à evolução dos Sistemas Operacionais.( ERICO MENESES LEÃO,SISTEMAS OPERACIONAIS ) Início Máquina Analítica de Babage O primeiro computador digital, de fato, foi projetado por volta da década de 1820 pelo matemático Charles Babbage e intitulada como motor analítico. Esta máquina, por se tratar de um equipamento puramente mecânico e a tecnologia da época não permitir a construção de engrenagens de alta precisão o qual Babbage necessitava, nunca funcionou adequadamente. Assim, o motor analítico de Babbage não possuía Sistema Operacional. 8
  • 9. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Primeira Geração (1945-1955) Mark I ENIAC Impulsionado pela Segunda Guerra Mundial, surgiram os grandes computadores digitais, formados por milhares de válvulas e que ocupavam salas inteiras. Estes computadores, desenvolvidos por Howard Aiken e John Von Neumann, eram extremamente lentos. Para trabalhar nesta máquina era necessário o conhecimento do funcionamento do seu hardware, onde a programação era feita através de linguagem de máquina, freqüentemente ligando painéis de conectores com fios para o controle das funções básicas. Nessa época, ainda não existia o conceito de Sistema Operacional. Por esse fato, esta geração ficou conhecida como a geração das válvulas e painéis de conectores. Segunda Geração (1956-1965) Em 1952, a Bell Laboratories inventou o Transístor que passou a ser um componente básico na construção de computadores e que lhes garantia algumas vantagens como menor aquecimento, maior poder de cálculo, mais fiável e rápido, menor consumo de energia para além de não precisar de tempo para aquecer. Os cálculos passaram a ser medidos de segundos para microssegundos. O primeiro computador a transístores é o TRADIC, da Bell Laboratories e apareceu em 1955, possuía 800 transístores cada um em seu próprio recipiente. Outro modelo dessa época era o IBM 1401, com uma capacidade memória base de 4.096 bytes operando em ciclos de memória de 12 microssegundos. O tamanho dos computadores era ainda bastante grande e a instalação de um destes IBM 1401 ocupava uma sala. Em 1958 apareceu o IBM TX-0, tinha um monitor de vídeo de alta qualidade, alem de ser rápido e relativamente pequeno. O PDP-1 virou mania no MIT pois os alunos utilizavam o computador para jogar Rato-no-Labirinto e Spacewar com o auxílio de uma caneta óptica e um joystick. O elevado preço desta máquina restringia a sua utilização a aplicações estratégicas do governo, grandes empresas e universidades. 9
  • 10. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Primeiro transistor Terceira Geração (1966-1970) Circuitos integrados A terceira geração é conhecida com geração dos circuitos integrados (CI’s) e da multiprogramação, diminuindo consideravelmente o preço do computador, possibilitando assim sua aquisição por empresas. Esta época se caracteriza pelo grande aumento do poder de processamento e, também, a diminuição dos equipamentos. Nesta época, a IBM lançou o System/360, que era uma série de computadores pequena, poderosa e, sobre tudo, compatível. O 360 foi projetado para manipular cálculos tanto científicos como comerciais, ou seja, em uma única família de máquinas era possível satisfazer as necessidades de praticamente todos os clientes. Porém, para atender todas as aplicações e periféricos disponíveis por essa família de máquinas, a IBM teve que desenvolver um Sistema Operacional (OS/360) 10
  • 11. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS extremamente grande e complexo, posto que as aplicações disponíveis, comumente, eram contraditórias. Este Sistema Operacional consistia de milhões de linhas de linguagem assembler escrita por milhares de programadores e muitos bugs, que exigiam versões e mais versões a fim de corrigi-los. Apesar de todos os problemas, o OS/360 e os Sistemas Operacionais semelhantes atenderam a maioria dos seus clientes razoavelmente bem. Além disso, eles lançaram várias técnicas utilizadas até hoje, como exemplo a multiprogramação. A multiprogramação consistia em dividir a memória em várias partições a fim de permitir que várias tarefas sejam carregadas em cada partição. Enquanto uma tarefa esperava alguma operação de Entrada ou Saída, outra tarefa poderia usar o processador (CPU). Outro recurso disponível nos Sistemas Operacionais da terceira geração era a capacidade de ler Jobs (tarefas) de cartões para o disco. Assim, sempre que um job acabava sua execução, o Sistema Operacional podia carregar um novo job do disco para a partição e executá-lo. Esta técnica é conhecida como spooling. Entretanto, os Sistemas Operacionais ainda eram basicamente sistemas em lote e que não exigiam comunicação com o usuário. Assim, muitos programadores sentiam falta das máquinas de primeira geração, que eram disponibilizadas por completa para eles e, assim, podiam depurar seus programas. Assim, a multiprogramação evoluiu preocupada em oferecer aos usuários tempos de respostas razoáveis e uma interface cada vez mais amigável. Para tal, cada programa na memória utilizaria o processador em pequenos intervalos de tempo. Esse sistema de divisão de tempo ficou conhecido como compartilhamento de Tempo (time-sharing). A terceira geração também é marcada pelo surgimento do Sistema Operacional UNIX, escrito em linguagem de programação de alto nível, que se tornou popular no mundo acadêmico, entre órgãos do governo e entre muitas empresas. Quarta Geração (1980-1990) Computador Pessoal 11
  • 12. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS De fato, a década de 1980 é caracterizada pelo surgimento dos computadores pessoais. Os computadores pessoais se tornaram possíveis devido ao advento de novas tecnologias, impulsionados pelo avanço da indústria de hardware, com a introdução de novos circuitos integrados. Os computadores pessoais permitiram que as pessoas pudessem ter seu próprio computador. Os equipamentos desta geração se tornaram cada vez menores, mais velozes e, principalmente, mais baratos. Esses novos equipamentos, com alta disponibilidade de poder de computação, especialmente a computação altamente interativa, normalmente com excelentes gráficos, levaram ao crescimento de uma importante indústria, a indústria de softwares para computadores pessoais. Dois Sistemas Operacionais inicialmente dominaram o cenário dos computadores pessoais: o MS-DOS (Microsoft) e o UNIX. O MS-DOS foi amplamente utilizado no IBM PC e em computadores com a tecnologia Intel. Esse Sistema Operacional evolui para o sistema conhecido como Windows. Outra evolução que surgiu nesta geração foi o crescimento de redes de computadores pessoais executando Sistemas Operacionais de rede e Sistemas Operacionais distribuídos. Em um Sistema Operacional de rede, os usuários podem conectar-se a máquinas remotas e copiar arquivos de uma máquina para a outra. Quinta Geração (Dias atuais) Em 1993, Surge o primeiro processador Pentium dotado de memórias de 108 pinos, ou DIMM. Depois vem o Pentium II, o Pentium III e mais recentemente o Pentium 4 (sem contar os modelos similares da concorrente AMD). Nesse meio tempo iam surgindo o slot AGP de 64 bits, memórias com mais pinos e maior velocidade, HD´s cada vez mais rápidos e com maior capacidade, etc. Basicamente são os computadores modernos. Ampliou-se drasticamente a capacidade de processamento de dados, armazenamento e taxas de transferência. Também é nessa época que os processos de miniaturização são iniciados, diminuindo o tamanho e aumentando a velocidade dos agora "populares" PC´s. O conceito de processamento está a ir para os processadores paralelos, ou seja, a execução de muitas operações em simultâneo. Na realidade, as maiores novidades desta época são os novos processadores, cada vez mais velozes. A informática evolui cada vez mais rapidamente e as velocidades de processamento dobram em períodos cada vez mais curtos. Para se ter uma noção disso, basta observar que entre os modelos de computador mais antigos, os espaçamentos entre uma novidade e outra eram de dezenas de anos, sendo que hoje não chega a durar um mês. Isso leva-nos a concluir que o avanço científico e do poder de cálculo avança de maneira que não se encontra paralelo da história humana, fazendo baixar os custos e tornando acessíveis os computadores às pessoas de baixa renda. 4 Classificação dos Sistemas Operacionais Os Sistemas Operacionais evoluíram juntamente com a evolução do hardware e das aplicações por ele suportada. Muitos termos inicialmente introduzidos para definir conceitos e técnicas foram substituídos por outros. 12
  • 13. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Abordaremos neste tópico, os diversos tipos de Sistemas Operacionais classificados quanto ao seu tipo de processamento, apontando suas principais características. Classificação dos Sistemas Operacionais Sistemas Monoprogramáveis ou Monotarefas Os Sistemas monoprogramáveis ou monotarefas são caracterizados por alocar o Sistema Computacional disponível exclusivamente para um único programa, ou seja, um programa tem todos os dispositivos, incluindo periféricos, memória e processador disponível durante todo o tempo em que ele está ativo, mesmo se não estiver usando. Os primeiros sistemas operacionais eram tipicamente voltados para a execução de um único programa. Os sistemas monoprogramáveis estão tipicamente relacionados ao surgimento dos primeiros computadores na década de 1960 e se caracterizam por permitir que todos os recursos do sistema fiquem exclusivamente dedicados a uma única tarefa, como ilustrado na Figura abaixo. Sistemas Mono Programáveis 13
  • 14. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Era muito clara a desvantagem deste tipo de sistema, no que diz respeito à limitação de tarefas (uma de cada vez), o que provocava um grande desperdício de recursos de hardware. Sistemas Multiprogramáveis ou Multitarefa Constituindo-se uma evolução dos sistemas monoprogramáveis, neste tipo de sistema os recursos computacionais são compartilhados entre os diversos usuários e aplicações: enquanto um programa espera por um evento, outros programas podem estar processando neste mesmo intervalo de tempo. Neste caso, podemos observar o compartilhamento da memória e do processador. O sistema operacional se incumbe de gerenciar o acesso concorrente aos seus diversos recursos, como processador, memória e periféricos, de forma ordenada e protegida, entre os diversos programas. As vantagens do uso deste tipo de sistema são a redução do tempo de resposta das aplicações, além dos custos reduzidos devido ao compartilhamento dos recursos do sistema entre as diferentes aplicações. Apesar de mais eficientes que os monoprogramáveis, os sistemas multiprogramáveis são de implementação muito mais complexa. Sistemas Multiprogramáveis Os sistemas multiprogramáveis podem ser classificados pelo número de usuários que interagem com o sistema e pela forma com que suas aplicações são gerenciadas. Quanto ao número de usuários que interagem com o Sistema, podem ser classificados a seguir:  Sistemas monousuários: Apenas um usuário interage com o sistema, podendo realizar várias atividades ao mesmo tempo, como edição de texto, impressão e acesso a Internet, por exemplo.  Sistemas multiusuários: Sistema Operacional que possibilita vários usuários simultâneos. Esse sistema deve suportar a identificação de cada recurso, tais como arquivos, processos, ou conexões de redes e impor regras de controles de acesso 14
  • 15. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS para impedir o uso desses recursos por usuários não identificados. Os principais sistemas operacionais como Linux, Windows são considerados multiusuários. De acordo com a forma com que suas aplicações são gerenciadas, podem ser divididos em: sistemas batch, de tempo compartilhado e de tempo real, de acordo com a figura abaixo. Sistemas Multiprogramáveis/ Multitarefa Sistemas BATCH ou Lote Sistemas de Tempo Compartilhado Sistemas de Tempo Real .  Sistemas Batch : Neste tipo de sistemas todos os programas são colocados em uma fila para execução do processador .Este recebe um programa após o outro (em seqüência). Atualmente o termo batch é utilizado para definir um conjunto de comandos que rodam sem interferência do usuário. Estes sistemas, se bem projetados, podem ser bastante eficientes devido à melhor utilização do processador, mas podem oferecer tempos de resposta bastante longos. Atualmente, os sistemas operacionais simulam este tipo de processamento, não havendo sistemas dedicados a este tipo de execução.  Sistemas de Tempo Compartilhado: Também chamados sistemas de time-sharing, permitem que diversos programas sejam executados a partir da divisão de tempo do processador em pequenos intervalos, denominados fatia de tempo (ou timeslice). Caso a fatia de tempo não seja suficiente para a conclusão do programa, este é interrompido pelo sistema operacional e substituído no processador por outro, enquanto aguarda nova fatia de tempo. Neste tipo de processamento, cada usuário tem a impressão de que a máquina está dedicada ao seu programa, como se ele fosse o único usuário a se utilizar do sistema. Geralmente permitem interação do usuário com a aplicação através de terminais compostos por monitor, teclado e mouse. Estes sistemas possuem uma linguagem de controle que permite ao usuário interagir com o sistema operacional através de comandos. Assim, é possível verificar arquivos armazenados em disco ou cancelar execução de programas. Normalmente, o sistema responde em apenas alguns segundos à maioria destes comandos, o que se levou a chamá-los também de sistemas on-line. A maioria das aplicações comerciais atualmente é processada em ambiente de tempo compartilhado, que oferece tempos baixos de respostas a seus usuários e menores custos, em função do alto grau de compartilhamento dos diversos recursos do sistema. 15
  • 16. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS  Sistemas de Tempo Real: Este tipo de sistema é implementado de forma bastante semelhante ao de tempo compartilhado. O que caracteriza a diferença entre eles é o tempo exigido no processamento das aplicações. Enquanto nos sistemas de tempo compartilhado o tempo de processamento pode variar sem comprometer as aplicações em execução, nos sistemas de tempo real os tempos de execução devem estar dentro de limites rígidos, que devem ser obedecidos, caso contrário poderão ocorrer problemas irreparáveis. No sistema de tempo real não existe a idéia de fatia de tempo como nos sistemas de tempo compartilhado. Um programa ocupa o processador o tempo que for necessário ou até que apareça um outro com um nível de prioridade maior. Esta prioridade de execução é definida pela própria aplicação e não pelo sistema operacional, como nos sistemas de tempo compartilhado. Estes sistemas são utilizados em aplicações de controle de processos, como monitoramento de refinarias de petróleo, controle de tráfego aéreo, de usinas, ou em qualquer aplicação onde o tempo de processamento é fator fundamental. Sistemas Multiprocessadores Os sistemas com múltiplos processadores caracterizam-se por possuir duas ou mais CPUs interligadas e trabalhando em conjunto. Esta característica traz com principal vantagem permitir que vários programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em várias partes para serem executadas simultaneamente em mais de um processador, de fato. Os conceitos aplicados ao projeto de sistemas com múltiplos processadores incorporam os mesmos princípios básicos e benefícios apresentados na multiprogramação, além de outras características e vantagens específicas como escalabilidade, disponibilidade e balanceamento de carga.  Escalabilidade: É a capacidade de ampliar o poder computacional do sistema apenas adicionando novos processadores.  Disponibilidade: É a capacidade de manter o sistema em operação mesmo em casos de falhas.  Balanceamento de carga: É a possibilidade de distribuir o processamento entre os diversos processadores da configuração a partir da carga de trabalho de cada processador, melhorando, assim, o desempenho do sistema como um todo. Esta técnica permitiu a criação de sistemas computacionais voltados para processamento científico, prospecção de petróleo, simulações, processamento de imagens e CAD. Um fator chave no desenvolvimento dos sistemas multiprocessador é a forma de comunicação entre as CPUs e o grau de compartilhamento da memória e dos dispositivos de E/S. Em função destes fatores, podemos classificar os sistemas multiprocessador de acordo com a figura a seguir: 16
  • 17. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Na figura podemos perceber a divisão dos sistemas multiprocessador em duas categorias iniciais: sistemas fortemente acoplados e fracamente acoplados. A grande diferença entre estas duas categorias é que nos sistemas fortemente acoplados existe apenas uma memória a ser compartilhada pelos processadores do conjunto, enquanto que nos fracamente acoplados cada sistema tem sua própria memória individual. A taxa de transferência entre processadores e memória em sistemas fortemente acoplados é muito maior que nos fracamente acoplados. Nos sistemas fortemente acoplados a memória principal e os dispositivos de E/S são gerenciados por um único sistema operacional. Quando todos os processadores na arquitetura são iguais, diz-se que o sistema é simétrico. No entanto, quando os processadores são diferentes, dá-se à arquitetura a denominação assimétrica. Nos sistemas fracamente acoplados, como os processadores estão em arquiteturas diferentes, somente interligados por cabos de interconexão, cada CPU constitui uma máquina independente, com memória própria, dispositivos de E/S e sistemas operacionais independentes. Nesta subdivisão, temos como exemplo as redes e os sistemas distribuídos. Rede: A característica deste sistema é possibilitar o compartilhamento de recursos e disponibilizá-lo para uso. Distribuídos: Os recursos de cada máquina estão disponíveis globalmente de forma transparente para o usuário. Do ponto de vista das aplicações é como se não houvesse um conjunto de vários computadores, mas apenas um único sistema centralizado. Portanto o usuário desconhece qual o computador que atendeu a sua solicitação. Infelizmente, estes sistemas operacionais não são uma realidade no mercado. Outros exemplos de sistemas distribuídos são os clusters, são formados por um conjunto de computadores convencionais ,os quais são ligados em rede e comunicam-se por meio do sistemas, trabalhando como se fossem uma única máquina de grande porte . 5 Funcionalidades Para cumprir seus objetivos de abstração e gerência, o sistema operacional deve atuar em várias frentes. Cada um dos recursos do sistema possui suas particularidades, o que impõe exigências específicas para gerenciar e abstrair os 17
  • 18. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS mesmos. Sob esta perspectiva, as principais funcionalidades implementadas por um sistema operacional típico são:  Gerência do Processador: Visa distribuir a capacidade de processamento (uso de CPU) de forma justa. Deve-se lembrar que algumas aplicações demandam mais processamentos que outras (navegador de internet versus processamento de vídeo , por exemplo )  Gerência de Memória: Tem como objetivo fornecer a cada aplicação um espaço próprio de memória, independente e isolada das demais aplicações  Gerência de Dispositivos: A função da gerência de dispositivos (também conhecida como gerência de entrada/saída) é implementar a interação com cada dispositivo por meio de drivers e criar modelos abstratos que permitam agrupar vários dispositivos distintos sob a mesma interface de acesso.  Gerência de Arquivos: Esta funcionalidade é construída sobre a gerência de dispositivos e visa criar arquivos e diretórios, definindo sua interface de acesso e as regras para seu uso. É importante observar que os conceitos abstratos de arquivo e diretório são tão importantes e difundidos que muitos sistemas operacionais os usam para permitir o acesso a recursos que nada tem a ver com armazenamento.  Gerência de Proteção: Políticas de acesso e uso do sistema operacional. Permite a definição de usuários ,grupos de usuários e registros de recursos por usuários.  Interface Gráfica: A interação com usuário se faz necessário, assim a maioria dos sistemas apresentam telas, nas quais se pode informar ao sistema operacional qual a operação que ele deverá fazer.  Suporte de Rede: A comunicação em rede é, atualmente, essencial ao mundo dos computadores. Assim, o gerenciamento dessas comunicações se faz necessário e é realizado sob a abstração do sistema operacional sobre os dispositivos físicos, como placas de redes ou modem. 6 Estruturas do Sistema Operacional O sistema operacional é formado por um conjunto de rotinas que oferecem serviços essenciais aos usuários, às suas aplicações, e também ao próprio sistema. A esse conjunto de rotinas dá-se o nome de núcleo do sistema ou kernel. É fundamental não se confundir o núcleo do sistema com aplicações, utilitários ou o interpretador de comandos, que acompanham o sistema operacional. As aplicações são utilizadas pelos usuários de maneira transparente, escondendo todos os detalhes da interação com o sistema. Os utilitários, como os compiladores, editores de texto e interpretadores de comandos permitem aos usuários, desenvolvedores e administradores de sistema uma interação amigável com o sistema. Existe uma grande dificuldade em compreender a estrutura e o funcionamento do sistema operacional, pois ele não é executado como uma aplicação tipicamente seqüencial, com início, meio e fim. Os procedimentos do sistema são executados concorrentemente sem uma ordem específica ou predefinida, com base em eventos 18
  • 19. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS dissociados do tempo. Muitos desses eventos estão relacionados ao hardware e a tarefas internas do próprio sistema operacional. 7 Chamadas de Sistemas Uma grande preocupação no projeto de sistemas operacionais se refere à implementação de mecanismos de proteção ao núcleo do sistema e também o controle de acesso aos serviços oferecidos pelo sistema. Caso uma aplicação que tenha acesso ao núcleo realize alguma operação que altere sua integridade, todo o sistema poderá ficar comprometido e inoperante. As chamadas de sistemas (system calls) constituem a interface entre um programa do usuário e o Sistema Operacional. Elas podem ser entendidas como uma porta de entrada para acesso ao núcleo do sistema, que contém suas funções. Sempre que o usuário necessitar de algum serviço, é realizada uma chamada a uma de suas rotinas através de uma system call. Através dos parâmetros fornecidos na system call, a solicitação é processada e uma resposta é enviada à aplicação juntamente com um estado de conclusão indicando o sucesso ou não da operação. Para cada serviço disponível existe um system call associada, e cada sistema operacional possui seu próprio conjunto de chamadas, com nomes, parâmetros e formas de ativação específica. Isto explica por que uma aplicação desenvolvida utilizando serviços de um determinado sistema operacional não pode ser diretamente portada para outro sistema. 8 Arquiteturas de Sistemas Operacionais Em função de sua arquitetura os sistemas operacionais podem ser classificados em:  Núcleo monolítico ou monobloco: É um núcleo que implementa uma interface de alto nível, para possibilitar chamadas de sistemas específicas para gestão de processos , concorrência e gestão de memória por parte de módulos dedicados ,que são executados com privilégios especiais .Exemplos Windows e Linux. 19
  • 20. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS  Micronúcleo ou Microkernel : É um termo usado para caracterizar o sistema cujas funcionalidades saíram do núcleo e foram para servidores ,que se comunicam com um núcleo mínimo possível do “espaço do sistema”(nesse, local o programa tem acesso a todas as instruções e a todo o hardware ) e deixando o máximo de recursos rodando no “espaço do usuário” (nesse espaço, o software sofre algumas restrições , não podendo acessar alguns hardware e não tendo acesso a todas as instruções ) Visão Geral de uma arquitetura micro-núcleo  Máquina Virtual: É uma arquitetura que permite que um sistema operacional suporte aplicações de outro sistema (Linux executando sobre Windows, por exemplo)m ou mesmo outro sistema operacional completo. Possibilita que sobre um mesmo hardware possam ser executados dois ou mais sistemas operacionais. Exemplo VMware , VirtualBox. 20
  • 21. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS EXERCICIOS 1. Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções? 2. Defina Sistemas Operacionais, procurando abordar os dois pontos de vista segundo Tanembaum. 3. Explique o conceito de máquina virtual. Qual a grande vantagem em utilizar este conceito? 4. Defina o conceito de uma máquina de níveis ou camadas. 5. Quais os tipos de sistemas operacionais existentes? 6. Por que dizemos que existe uma subutilização de recursos em sistemas monoprogamáveis? 7. Qual a grande diferença entre sistemas monoprogramáveis e sistemas multiprogramáveis? 8. Quais as vantagens dos sistemas multiprogramáveis? 9. Um sistema monousuário pode ser um sistema multiprogramável? Dê um exemplo. 10. Quais são os tipos de sistemas multiprogramáveis? 11. O que caracteriza o processamento batch? Quais aplicações podem ser processadas neste tipo de ambiente? 12. Os primeiros Sistemas Operacionais eram Monotarefas, já os atuais são Multitarefa. De acordo com os tipos de Sistemas Operacionais identifique-os na figura abaixo e explique seu funcionamento e suas principais características. a. 21
  • 22. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS 13. Como funcionam os sistemas de tempo compartilhado? Quais as vantagens em utilizá-los? 14. Qual a principal diferença entre sistemas de tempo compartilhado e tempo real? Quais aplicações são indicadas para sistemas de tempo real? 15. O que são sistemas com múltiplos processadores e quais as vantagens em utilizálos? 16. Qual a diferença entre sistemas fortemente acoplados e fracamente acoplados? 17. O que é um sistema fracamente acoplado? Qual a diferença entre sistemas operacionais de rede e sistemas operacionais distribuídos? 18. Cite as principais funcionalidades de um projeto de Sistema Operacional. 19. O que é uma system call e qual sua importância para a segurança do sistema? Como as system calls são utilizadas por um programa? 20. O que é o núcleo do sistema e quais são suas principais funções? 21. Como o kernel do sistema operacional pode ser protegido pelo mecanismo de modos de acesso? 22. Explique as três arquiteturas do kernel de um Sistema Operacional. 22
  • 23. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS ATIVIDADE COMPLEMENTAR 1) Faça uma pesquisa e tente identificar os principais sistemas operacionais em uso. Classifique-os de acordo com sua arquitetura (monolítico, micronúcleo, ou máquina virtual) e tipo (rede, distribuído, multiusuário, etc.) LEITURA COMPLEMENTAR Existem diversos documentários sobre a história dos computadores. Pois bem, caso queira conhecer um pouco mais sobre a história recente do computador pessoal, existe um filme chamado “O Triunfo dos Nerds”, que conta a história da do surgimento da Microsot e da Apple, ou seja, o inicío da computação pessoal. Uma verdadeira aula de história! Fonte da figura: http://macmagazine.uol.com.br/wpcontent/uploads/2008/10/12-triunfosilicio2.jpg. Acesso em: 11 de Maio de 2010. Também existe um pequeno e informativo vídeo sobre a história dos computadores no Museu do Telefone no Rio de Janeiro. Você pode assisti-lo através do link a seguir: <http://midiaseducacao.blogspot.com/2009/06/hist oria-do-computador-em-minutos.html>. 23
  • 24. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS GERENCIAMENTO DE PROCESSOS 1 introdução ao modelo de processos Os primeiros Sistemas Operacionais eram caracterizados por apenas um programa poder ser executado de cada vez. Os computadores mais modernos são constituídos de Sistemas Operacionais com capacidade de executar várias tarefas ao mesmo tempo. De fato, o processador pode ser alternado de um programa para o outro, executando cada um por um determinado tempo (comumente em milissegundos). Em outras palavras, para um determinado intervalo de tempo, vários programas utilizam uma fatia desse tempo para realizar suas atividades, passando, assim, para o usuário a falsa impressão de que todos eles estão sendo executados ao mesmo tempo. Essa falsa impressão passada ao usuário de que vários programas estão sendo executados ao mesmo tempo é comumente conhecido por pseudoparalelismo. Para que isso seja possível é necessário um monitoramento das múltiplas atividades entre os vários programas, que se trata de uma tarefa difícil e bastante complexa. Segundo Tanenbaum, os projetistas de Sistemas Operacionais desenvolveram um modelo que torna o paralelismo mais fácil de tratar, conhecido como modelo de processos, assunto desta unidade. Conceito de Processos Um processo pode ser entendido inicialmente como um programa em execução, que tem suas informações mantidas pelo sistema operacional. Num sistema multiusuário, cada usuário tem a impressão de possuir o processador e todos os demais recursos reservados exclusivamente para si, mas isto não é verdade. Todos os recursos estão sendo compartilhados, inclusive a CPU. Neste caso, o processador executa o processo do usuário por um intervalo de tempo e, no instante seguinte, poderá estar processando outro programa, do mesmo ou de outro usuário. Para que a troca de processos possa ser feita sem problemas, é necessário que todas as informações do programa que está sendo interrompido sejam guardadas, para que ele possa retornar à CPU exatamente do ponto em que parou não lhe faltando nenhuma informação vital à sua continuação. Todas as informações necessárias à execução de um programa fazem parte do processo. Um processo também pode ser definido como o ambiente onde o programa é executado. Este ambiente, além das informações sobre a execução, possui também a quantidade de recursos do sistema que o programa pode utilizar como espaço de endereçamento, tempo do processador e área em disco. Para que o Sistema Operacional gerencie os processos, primeiro ele deve ser capaz de: (1) criá-los, (2) reservar memória e (3) colocar os processos numa fila de espera para uso do processador. O próprio Sistema Operacional é um conjunto de vários processos que também compartilham a CPU para serem executados. 24
  • 25. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Por exemplo, quando você executa o programa Internet Explorer do sistema operacional Windows para navegar na Internet, na verdade, você está solicitando a criação do iexplorer.exe (processo do programa Internet Explorer) ao explorer.exe (processo genérico do sistema responsável por fornecer comandos básicos e gerenciar o ambiente gráfico padrão do Windows). A Figura 2 mostra a tela de um computador que está executando o Process Explorer, um programa de gerenciamento de processos que na sua tela inicial mostra todos os processos que estão executando em seu computador e a relação entre eles (por exemplo, se um processo é pai de um outro), observe como o processo iexplorer.exe está situado entre os processos filhos do explorer.exe. Para você apenas visualizar quais processos estão sendo executado, o Windows possui o gerenciador de tarefas do sistema. Uma forma de acessá-lo é pressionando os botões Ctrl, Alt e Del, simultaneamente e escolher a opção “Iniciar Gerenciador de Tarefas”,ou clicar com o botão direito do mouse na barra de tarefas do meu iniciar aba “Iniciar gerenciador de Processos”. Assim, você terá acesso a essa importante ferramenta do sistema e poderá utilizá-las não só para visualizar os processos, mas também, caso ocorra algum problema com um processo específico, você poderá encerrá-lo. 25
  • 26. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS DICA ! Para visualizar a árvore de processos no Windows, existe o programa Process Explorer que traz muito mais informações que o gerenciador de tarefas do Windows. Além de apresentar a estrutura de processos, indicando o parentesco entre eles, informa dados referente a cada processo, como a quantidade de memória utilizada por cada um. Vale a pena conferir, ele é um software gratuito disponível no seguinte link para download: <http://www.baixaki.com.br/download/process-explorer.htm> 2 Estados de um Processo Os vários processos criados competem entre si pela atenção do processador a cada instante, cabendo ao gerenciador de processos do Sistema Operacional estabelecer uma ordem Em diferentes momentos, um processo pode está utilizando-se do processador, ou simplesmente aguardando, além disso, existem situações onde o processo, mesmo tendo o processador disponível, fica impossibilitado de prosseguir a execução, pois geralmente está aguardando por alguma entrada. Então, para que não exista desperdício no uso do processador, processos que estejam aguardando algum dado externo ficam bloqueados, deixando aos demais processos disputarem o uso do processador. Dessa forma, podemos dizer que os processos podem está em três estados, que seriam:  Executando: um processo está no estado executando quando ele, de fato, está sendo processado pela CPU. Em sistemas monoprocessados (único processador), somente um processo por vez pode estar de posse da CPU em um dado instante. Os processos se alternam na utilização do processador.  Pronto: um processo está no estado de pronto quando ele possui todas as condições necessárias para a sua execução, porém, não está de posse do processador. Em geral, existem vários processos no sistema prontos para serem executados e o Sistema Operacional é responsável por, dessa lista de processos, selecionar qual utilizar o processador em um determinado instante de tempo.  Bloqueado: um processo está no estado de bloqueado quando ele aguarda por algum evento externo ou por algum recurso do sistema indisponível no momento. Por exemplo, se um processo necessita de uma informação de algum dispositivo de E/S, enquanto essa informação não se torna disponível, o processo entra no estado de bloqueado. Os três estados de um processo em um Sistema Operacional tornam possível algumas transições, como ser observado na Figura abaixo. . 26
  • 27. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS  A transição 1 (Executando - Bloqueado) ocorre quando um processo que estava utilizando o processador precisou de algum evento externo (operação de Entrada/Saída, por exemplo), não podendo continuar executando, passando, assim, para o estado de bloqueado.  A transição 2 (Bloqueado - Pronto) ocorre quando o evento externo, no qual o processo bloqueado aguardava, acontece. Nesse caso, o processo passa para o estado de pronto e volta para a fila para poder concorrer novamente ao processador. Se não existir nenhum processo na fila de prontos, naturalmente, o processo desbloqueado utilizar a CPU.  Já as transições 3 (Pronto - Executando) e 4 (Executando -Pronto) são realizados pelo escalonador de processos. Comumente, existem vários processos prontos e esperando para serem executados. Cabe então ao Sistema Operacional (escalonador) escolher, entre os processos prontos, qual utilizará o processador e poderá executar suas atividades. O Sistema Operacional (dependendo da política do escalonador) pode, também, retirar o processador de um determinado processo e disponibilizá-lo para outro processo. 3 Threads Atualmente, vários programas precisam executar várias tarefas ao mesmo tempo, por exemplo, um sistema de segurança de um prédio precisa receber imagens de várias câmeras, gravá-las em um disco e ainda exibi-las em uma tela para que possam ser monitoradas. Para que um único processo possa realizar mais que uma tarefa ao mesmo tempo , Há as Threads. Threads são fluxos de execução (linha de controle) que rodam dentro de um processo, ou seja, uma Thread pode ser vista como um fluxo de execução de uma tarefa. Em processos tradicionais, há uma única linha de controle e um único contador de programa. Porém, alguns Sistemas Operacionais fornecem suporte para múltiplas linhas de controle dentro de um processo (sistemas multithread). 27
  • 28. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Ter múltiplas linhas de controle ou threads executando em paralelo em um processo equivale a ter múltiplos processos executando em paralelo em um único computador. Um exemplo tradicional do uso de múltiplas thread seria um navegador web, no qual pode ter uma thread para exigir imagens ou texto enquanto outro thread recupera dados de uma rede. É importante destacar que as threads existem no interior de um processo e compartilham entre elas os recursos do processo, como o espaço de endereçamento (código e dados). 4 Comunicação Interprocessos. Em um Sistema Operacional, freqüentemente, os processos podem precisar trocar informações entre eles ou podem solicitar a utilização de um mesmo recurso simultaneamente, como arquivos,registros, dispositivos de E/S e memória. O compartilhamento de recursos entre vários processos pode causar situações indesejáveis e, dependendo do caso, gerar o comprometimento da aplicação. O Sistema Operacional tem a função de gerenciar e sincronizar processos concorrentes, com o objetivo de manter o bom funcionamento do sistema Condições de Corrida Podemos definir uma condição de corrida quando dois ou mais processos podem compartilhar algum espaço de memória compartilhado no qual, o resultado da informação deste espaço de armazenamento depende de quem executa. Um exemplo típico de condição de corrida, apontado por vários autores, é o spool de impressão. Quando um processo deseja imprimir alguma informação, ele insere o nome de arquivo em um espaço denominado diretório de spooler. Existe outro processo, o servidor de impressão, que verifica periodicamente se há qualquer arquivo a ser impresso e, caso haja, ele os imprime e remove a informação do diretório. Consideremos a seguinte situação: o diretório de spooler contém um número de entradas numeradas e um processo, quando deseja imprimir alguma informação, consulta uma variável (entrada) a fim de saber em qual posição inserir o nome de arquivo no diretório. O diretório de impressão está ilustrado na Figura abaixo. Diretório de spooler (impressão) 28
  • 29. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Podemos imaginar agora a seguinte situação: um processo A lê a variável entrada e armazena o valor dela (valor 0) em uma variável local. Porém, o tempo de execução do processo A termina e o Sistema Operacional o retira do processador, disponibilizando-o a um outro processo B. O processo B, por sua vez, também deseja imprimir um arquivo, acessa a área do diretório de impressão, verifica o valor da variável entrada (valor 0), armazena este valor em uma variável local e, por fim, insere o nome de seu arquivo a ser impresso na posição 0 do diretório de impressão, mudando o valor da variável entrada para 1. A Figura abaixo visualiza esta situação atual. Situação do Diretório de impressão após inserção do nome de arquivo do processo B Por fim, o processo A retoma o processador, iniciando novamente de onde parou. Ao examinar em sua variável local o valor da variável entrada (esta informação ele guardou em sua tabela, momento em que ele parou a execução), o processo observa o valor 0 e escreve seu nome de arquivo nessa posição, apagando o nome de arquivo do processo B. Em seguida, incrementa o valor da variável entrada para 1. A Figura abaixo mostra a nova situação do servidor de impressão. Situação do Diretório de impressão após inserção do nome de arquivo do processo A 29
  • 30. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Internamente, o servidor de impressão continua consistente, porém o arquivo do processo B jamais será impresso. Caracterizamos este tipo de situação como uma condição de corrida. 5 Seções Críticas Para se evitar uma condição de corrida é preciso definir métodos que proíba que mais de um processo acesse uma determinada área de memória compartilhada ao mesmo tempo. Esses métodos são conhecidos como exclusão mútua. Um processo, durante seu tempo de execução, pode realizar uma série de computações internas que não geram condições de corrida ou pode estar acessando memória compartilhada, que levam à condição de corrida. A parte do programa no qual o processo acessa memória compartilhada é chamada seção crítica ou região crítica. Dessa forma, a solução para se evitar uma condição de corrida seria organizar os problemas de tal forma que nenhum de dois ou mais processos estivessem em suas regiões críticas ao mesmo tempo. Para se ter uma boa solução de exclusão mútua, precisamos evitar algumas situações indesejáveis, como:  Nenhum processo que esteja fora de sua região crítica pode bloquear a execução de outro processo;  Nenhum processo deve esperar indefinidamente para poder entrar em sua região crítica. 6 Deadlocks : Impasse entre Processos O Sistema Computacional está repleto de recursos, que podem ser utilizados pelos processos. Comumente, a quantidade de recursos disponíveis é muito menor que a quantidade de processos solicitando esse recurso. Dependendo do recurso, este fato pode gerar uma situação de bloqueio eterno do processo. Podemos, assim, definir que um conjunto de processos está em deadlock ou impasse quando cada um desses processos está bloqueado esperando um evento que só pode ser gerado por outro processo desse conjunto. Como todos os processos estão bloqueados, nenhum deles poderá gerar um evento e, naturalmente, todos continuarão nessa situação. Um bom exemplo apontado por Tanenbaum trata-se de dois processos querendo ler dados de um CD e imprimindo em uma impressora. Suponha que o processo A solicite a impressora, que é disponibilizada. De forma análoga, o processo B solicita o CD-ROM,que lhe é disponibilizado. Agora o processo A solicita o CD-ROM, enquanto que o processo B solicita a impressora. Como ambos os recursos já estão alocados, o processo A e B serão bloqueados. Nessa situação eles continuarão indefinidamente, pois nenhum processo terá como se finalizar e, por fim, liberar o recurso já alocado. Esses processos geram um deadlock. É importante destacar, que os impasses podem ser gerados tanto por recursos de hardware quanto por recursos de software. Um recurso de software seria um impasse gerado no acesso a registros sendo assim, trataremos o termo recurso de uma forma geral. 30
  • 31. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Os recursos podem ser divididos em dois tipos:  Recursos preemptíveis: trata-se de recursos que podem ser retirados de um determinado processo sem gerar problema algum. Por exemplo, a memória.  Recursos não-preemptíveis: trata-se de recursos que não podem ser retirados de um determinado processo sem causar problemas. Por exemplo, é inviável retirar a impressora de um determinado processo que começou a imprimir sua saída. Condições para um Impasse. Coffman demonstrou em 1971 que existe quatro condições para que haja um impasse:  Condição de exclusão mútua: Somente um processo de cada vez pode acessar um recurso. Caso contrário, o recurso estará disponível.  Condição de posse e espera: Um processo deve estar de posse de um recurso e solicitando novos recursos.  Condição de não preempção: Os recursos concedidos aos processos não podem ser retirados deles.  Condição de espera circular: Deve haver uma cadeia circular de dois ou mais processos, cada um dos quais está esperando um recurso já segurado pelo próximo membro da cadeia e, assim por diante. Métodos de Lidar com Deadlocks Existem várias formas de lidar com deadlocks. Em geral, temos quatro métodos:  Ignorar completamente o problema.  Detectar e recuperar uma situação de deadlock.  Prevenir um deadlock através da negação das quatros condições de Coffman.  Impedimento de um deadlock através de uma alocação dinâmica cuidadosa de recursos.  Por incrível que pareça, a estratégia mais usada nos sistemas operacionais é a de ignorar os problemas de deadlock, pois os possíveis tratamentos desse tipo de situação podem acarretar em perdas de desempenho do sistema, comprometendo a execução dos processos.  Assim, é mais comum que os próprios softwares procurem evitar situações de deadlock na lógica em seus códigos e, no caso de ocorrer alguma situação de impasse, é preferível encerrar a execução de um processo ou até reiniciar o computador em casos mais extremos. DICA ! O SOsim 2.0 (Simulador de Sistema Operacional) é um software educacional que permite simular situações de gerencias de um sistema Operacional . 31
  • 32. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS EXERCICIO 1. Defina processos. 2. Por que o conceito de processo é tão importante no projeto de sistemas multiprogramáveis? 3. Descrevas os estados que um processo pode ocupar em um sistema baseado no modelo de processos. 4. Comente as possíveis transições que podem ocorrer entre os estados de um processo. 5. O que são Threads. Caracterize os sistemas multithreads. 6. O que são condições de corrida? 7. O que é uma região crítica e exclusão mútua? 8. Cite as condições para se ter uma boa solução que evite condições de 9. Descreva de forma sucinta o método de exclusão mútua ativa 10. Defina deadlock . corrida. 11. Quais as condições segundo Coffman para que aconteça um impasse entre processos? 32
  • 33. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS ATIVIDADE COMPLEMENTAR 1. Diversos exemplos na literatura de sistemas operacionais procuram demonstrar situações de deadlock. São exemplos simples, como o clássico exemplo dos cinco filósofos jantando. Procure na internet dados sobre esse exemplo e apresente. ATIVIDADE PRÁTICA 1. Criação de Processos a) Práticas de simulação · Execute o simulador SOsim e identifique as quatro janelas que são abertas na inicialização. · Crie um processo: janela Gerência de Processos / Criar – janela Criação de Processos / Criar. b) Análise Prática · Na janela Gerência de Processos, observe algumas informações sobre o contexto de software do processo como prioridade, estado do processo e tempo de processador. · Na janela Gerência de Processador, observe o processo transacionando entre estados. · Na janela Gerência de Processador, movimente a barra de Clock de UCP e observe as variações ocorridas. c) Questão teórica para responder com a ajuda do simulador :Com base na observação do comportamento do processo criado, identifique se o processo é I/Obound ou CPU-bound. Justifique sua resposta. 2. Tipos de Processos a) Práticas de simulação · Reinicialize o simulador. · Crie um processo do tipo CPU-bound: janela Gerência de Processos / Criar – janela Criação de Processos / Criar (tipo de processo deve ser CPU-bound). · Crie outro processo do tipo I/O-bound: janela Gerência de Processos / Cria – janela Criação de Processos / Criar (tipo de processo deve ser I/O-bound). b) Análise Prática · Na janela Gerência de Processos, observe as mudanças de estado dos dois processos. · Na janela Gerência de Processador, observe o comportamento dos processos e as mudanças de contexto em função do tipo I/O-bound e CPU-bound. · Na janela Gerência de Processos, compare a taxa de crescimento do tempo de processador dos dois processos. 33
  • 34. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS c) Questão teórica para responder com a ajuda do simulador :Analise os efeitos gerados no caso de redução do tempo gasto na operação de E/S pelo processo I/O-bound. Gerenciador de Processos Com o surgimento dos sistemas multiprogramáveis, onde múltiplos processos poderiam permanecer na memória e disputar o uso de um único processador, a gerência do processador tornou-se uma das atividades mais importantes em um sistema operacional. A partir do momento em que vários processos podem estar no estado de pronto, devem ser estabelecidos critérios para definir qual processo será escolhido para fazer uso do processador. Tais critérios compõem a política de escalonamento, que é a base da gerência do processador e da multiprogramação em um sistema operacional. Dentre as funções da gerência do processador, podemos citar: manter o processador ocupado a maior parte do tempo. balancear o uso da CPU entre processos, privilegiar a execução de aplicações críticas, maximizar o throughput e oferecer tempos de resposta razoáveis aos usuários interativos. Cada sistema operacional possui sua política de escalonamento adequada ao seu propósito e às suas características. Sistemas de tempo compartilhado, por exemplo, possuem requisitos de escalonamento distintos dos sistemas de tempo real. 3. Escalonamento de Processos O escalonamento de processos é a forma com que os processadores disponíveis (um ou vários) no Sistema Computacional são distribuídos ou alocados para os vários processos prontos. A parte do Sistema Operacional responsável por selecionar qual será o processo que executará no processador é chamado de escalonador ou agendador. Dessa forma, a ordem com que os processos serão executados pelo processador é definida por um determinado algoritmo ou política de escalonamento de processos. O projeto de um algoritmo de escalonamento deve levar em conta uma série de critérios , no qual alguns são apontados a seguir:  Throughput: é o número de processos executados em um determinado intervalo de tempo. Quanto maior o throughput, maior o número de tarefas executadas em função do tempo. A maximização do throughput é desejada na maioria dos sistemas.  Tempo de Processador: é o tempo que um processo leva no estado de execução, durante seu processamento. As políticas de escalonamento não interferem neste parâmetro, sendo este tempo função apenas do código executável e da entrada/saída de dados.  Tempo de Espera (pela CPU): é todo o tempo que o processo permanece na fila de pronto, aguardando a liberação da CPU para ser executado. A redução deste tempo de espera é desejada pela maioria das políticas de escalonamento. 34
  • 35. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS  Tempo de Turnaround: é o tempo total que o processo permaneceu no sistema, desde sua criação até o momento em que é encerrado. São contados os tempos de alocação de memória, espera na fila de pronto e interrupção (E/S).  Tempo de Resposta: é o tempo decorrido entre uma requisição ao sistema e o instante em que a resposta começa a ser exibida. Em sistemas interativos, como aplicações on-line ou acesso à Web, os tempos de resposta devem ser da ordem de apenas poucos segundos. Os algoritmos de escalonamentos podem ser classificados em preemptíveis e não-preemptíveis. O algoritmo de escalonamento é não-preemptível quando o processador alocado para um determinado processo não pode ser retirado deste até que o processo seja finalizado. Já o algoritmo de escalonamento é dito preemptível quando o processador alocado para um determinado processo pode ser retirado deste em favor de outro processo. Atualmente a maioria dos sistemas são preemptívos 4. Escalonamentos Não-Preemptivos Algoritmo de Escalonamento FIFO (First in First out) Trata-se do algoritmo de escalonamento de implementação mais simples. Com este algoritmo de escalonamento, o primeiro processo que solicita a CPU é o primeiro a ser alocado. Dessa forma, os processos que estão prontos para serem executados pela CPU são organizados numa fila, que funciona baseado na política FIFO (First in First out – Primeiro a entrar é o primeiro a sair). Vejamos um exemplo. Considere o seguinte conjunto de processos: Supondo que a ordem de chegada dos processos seja: A – B – C – D. Dessa forma, baseado na política FIFO, a ordem de execução dos processos é mostrado na Figura abaixo (diagrama de tempo). Diagrama de tempo usando a política FIFO. 35
  • 36. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Para este conjunto de tarefas o tempo de espera do processo A é de 0 (zero) unidades de tempo; para o processo B de 12 unidades de tempo; para o processo C de 20 unidades de tempo; e para o processo D de 35 unidades de tempo. O tempo médio de espera na fila de prontos é de (0+12+20+35)/4, que equivale a 16,75 unidades de tempo. Nesta política de escalonamento o tempo médio de espera é, com freqüência, um tanto longo. Outro ponto é que processos importantes podem ser obrigados a esperar devido à execução de outros processos menos importantes dado que o escalonamento FIFO não considera qualquer mecanismo de distinção entre processos. Algoritmo de Escalonamento Menor Tarefa Primeiro (SJF –shortest job first) Neste escalonamento o processo que tem o menor ciclo de processamento (tempo de execução) será selecionado para usar o processador. Considerando o mesmo conjunto de tarefas apresentados, teríamos o diagrama de tempo apresentado na Figura abaixo. Diagrama de tempo usando a política Menor Tarefa Primeiro. Nesta política de escalonamento, o tempo de espera do processo A é de 13 unidades de tempo; para o processo B de 5 unidades de tempo; para o processo C de 25 unidades de tempo; e para o processo D de 0 unidades de tempo. O tempo médio de espera na fila de prontos é de (13+5+25+0)/4, que equivale a 10,75 unidades de tempo. Em média, nessa política de escalonamento, os processos tiveram que esperar menos para serem executados pelo processador. Segundo Silberschatz, a dificuldade real com o algoritmo de Menor Tarefa Primeiro é saber o tempo de duração da próxima solicitação de CPU. Assim, trata-se de um algoritmo ótimo, porém, não pode ser implementado, pois não há modo de saber o tempo de duração do próximo pico de CPU. Uma abordagem possível é tentar aproximar-se do algoritmo de Menor Tarefa Primeiro. 5. Escalonamentos Preemptivos Algoritmo de Escalonamento Round Robin O algoritmo Round Robin, conhecido também como algoritmo de escalonamento circular, também organiza a lista de processos prontos como uma fila simples, semelhante ao algoritmo FIFO. 36
  • 37. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS . É muito semelhante ao FIFO (obedece a ordem de chegada á fila de PRONTO), mas quando um processo passa para o estado de execução há um limite de tempo para o uso contínuo do processador, chamado fatia de tempo (time-slice) ou quantum. Assim, toda vez que um processo é selecionado para execução uma nova fatia de tempo lhe é concedida. Caso esta fatia de tempo expire, o sistema operacional interrompe o processo, salva seu contexto e o direciona para a fila de PRONTO. Algoritmo de Escalonamento por Prioridades Nesta política, os processos são organizados na fila de prontos baseado em prioridades. Quem tiver maior prioridade vai para o início da fila. Quem tiver menor prioridade vai se encaixando no final da fila. Esta prioridade pode ser uma atribuição externa ao sistema. Vejamos um exemplo. Considere o seguinte conjunto de processos: Dessa forma, baseado na política de escalonamento por prioridades (quanto menor o número, maior a prioridade), a ordem de execução dos processos é mostrado através da Figura abaixo (diagrama de tempo). Diagrama de tempo usando a política por prioridades. Alguns aspectos devem ser considerados na política de escalonamento por prioridades. Primeiro, se no sistema existir uma quantidade grande e interativa de processos de alta prioridade, podemos chegar a uma situação onde processos de baixa prioridade nunca executarão. Uma possível solução para este problema é a utilização de prioridades dinâmicas. Dessa forma, os processos de baixa prioridade podem ter suas prioridades lentamente aumentadas, tendo, assim, chances de utilizar o processador. 37
  • 38. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Algoritmo de Escalonamento Múltiplas Filas Este escalonamento implementa várias filas de pronto, cada uma com prioridade específica. Os processos são associados às filas de acordo com características próprias, como importância da aplicação, tipo de processamento ou área de memória necessária. Assim, não é o processo que detém a prioridade, mas sim a fila.. Dessa forma, ao invés de termos apenas uma única fila de prontos, poderíamos construir várias filas de prontos e agrupar os processos de mesma categoria nessas filas. Para cada fila poderíamos definir prioridades diferentes e políticas de escalonamentos específicas .Um exemplo deste algoritmo seria considerar duas filas de prontos, uma com maior prioridade e outra de menor prioridade, as duas funcionando segunda a política Round Robin. Dessa forma, se a fila mais prioritária tiver processos, estes terão prioridade sobre o processador. Caso a fila mais prioritária estiver vazia, os processos prontos da fila menos prioritária irão concorrer ao processador. 2.4 Sincronização dos Recursos A sincronização dos recursos do computador é uma tarefa muito importante, realizada pelos sistemas operacionais multitarefa e é feita em duas áreas distintas:  Sincronização dos Dados: nesse caso o objetivo é manter os dados do computador em perfeita integridade;  Sincronização dos Processos: refere-se à sincronização da execução dos processos,com o objetivo de se evitar o conflito na utilização dos recursos do computador; A sincronização dos processos só faz sentido em sistemas multitarefa, em que a cada instante, vários processos poderão estar em execução. O trabalho do sistema operacional será garantir que cada processo seja concluído corretamente. Aqui, o conceito de processo será aplicado tanto ao processo em si quanto à thread, ou seja, a sincronização de processos e sincronização de threads serão tratados de maneiras unificadas, como Sincronização de Processos. Para realizar a sincronização algumas medidas podem ser tomadas: a utilização de Barreiras, Travas, Semáforos, Comunicação e várias outras. Algumas dessas medidas são implementadas no código dos programas, como as Barreiras, e outras medidas são realizadas no sistema operacional, as Travas. As Barreiras são criadas e gerenciadas pelos desenvolvedores de programas aplicativos. Dentro das instruções desses programas, deve-se incluir uma instrução de criação de Barreira. Quando um processo executa tal instrução, entra em estado de Espera (ou Bloqueio), e permanece assim até que todos os processos pertencentes ao mesmo programa também executem a instrução de Barreira. Com isso consegue-se colocar todos os processos no mesmo ponto de execução do programa. Semáforos podem ser utilizados tanto pelos programas quanto pelo sistema operacional. São variáveis de controle, que indicam se um determinado recurso pode ser utilizado ou não. O modo mais frequente de controle é a utilização de um contador no semáforo. O contador indica a quantidade de processos que podem compartilhar o recurso, quando o limite é alcançado, nenhum processo a mais pode utilizar o mesmo recurso. Barreiras e Semáforos geralmente são utilizados para lidar com situações em que vários processos podem (ou devem) compartilhar um mesmo recurso. Nos casos, 38
  • 39. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS nos quais um recurso deve ser utilizado exclusivamente por apenas um processo é utilizada a Trava. Alguns sistemas implementam Travas Simples, que impedem a utilização do recurso por outro processo, e outros sistemas implementam Travas Especiais, que emitem um sinal (aviso de erro) quando um processo tenta acessar um recurso já em uso. Existe também a possibilidade de se ter uma Trava Compartilhada por vários processos, mas nesse caso, o acesso ao recurso fica limitado apenas à leitura dos dados contidos nele. Para o correto funcionamento dos métodos de sincronização, o processador deve estar preparado para permitir que os processos consigam compartilhar um recurso até o limite estabelecido, sem que haja conflito no controle de sincronia. Por exemplo, em um sistema de Trava, se ela estiver aberta significa que um processo poderá acessar o recurso. Se, em um mesmo instante, dois processos tentarem utilizar o recurso, os dois conseguirão acesso ao recurso e com certeza isso resultará em má utilização dele (imagine uma impressora imprimindo simultaneamente dois documentos diferentes). Para evitar essa falha, os processadores devem possuir mecanismos de verificação e ativação da sincronia quase instantânea, ou no mínimo, não conflitante. Esses mecanismos no processador são instruções que realizarão a sincronização de maneira correta, as instruções serão do tipo “verificar e travar recurso”, uma mesma instrução faz a verificação e, se possível, o travamento do recurso. Esse mecanismo só é válido em computadores com um processador (podendo o processador ter vários núcleos). Em computadores com vários processadores, o controle da sincronização é mais complexo, havendo um maior número de considerações a serem feitas. A etapa de efetivação do sincronismo é muito importante, o tempo que ela demora não deve em hipótese alguma ser demorado. A efetivação da sincronização deve acontecer obrigatoriamente antes de o processador executar mais uma instrução de outro processo (ou do mesmo processo). A etapa de liberação de uma sincronização também deve ser tratada de maneira adequada, pois em um ambiente de execução de múltiplos processos, para haver a real otimização da utilização dos recursos, os processos devem ter acesso aos mesmos assim que eles não estiverem em uso. 39
  • 40. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS EXERCICIO 1. O que é política de escalonamento de um sistema operacional? 2. Quais as funções do escalonador e do dispatcher? 3. Quais os principais critérios utilizados em uma política de escalonamento? 4. Diferencie os tempos de processador, espera, turnaround e resposta. 5. Diferencie os escalonamentos preemptivos e não-preemptivos. 6. Qual a diferença entre os escalonamentos FIFO e circular? 7. Descreva o escalonamento SJF e o escalonamento por prioridades. 8. Qual a diferença entre preempção por tempo e preempção por prioridade? 9. O que é um mecanismo de escalonamento adaptativo? 10. Que tipo de escalonamento aplicações de tempo real exigem? 11.Considere um sistema operacional que implemente escalonamento circular com fatia de tempo igual a 10 u.t.. Em um determinado instante de tempo, existem apenas três processos (P1, P2 e P3) na fila de pronto, e o tempo de UCP de cada processo é 18, 4 e 13 u.t, respectivamente. Qual o estado de cada processo no instante de tempo T, considerando a execução dos processos P1, P2 e P3, nesta ordem, e que nenhuma operação de E/S é realizada? a) T = 8 u.t. b) T = 11 u.t. c) T = 33 u.t. 12. Considere um sistema operacional que implemente escalonamento circular com fatia de tempo igual a 10 u.t. Em um determinado instante de tempo, existem apenas três processos (P1, P2 e P3) na fila de pronto,e o tempo de UCP de cada processo é 14, 4 e 12 u.t, respectivamente. Qual o estado de cada processo no instante de tempo T, considerando a execução dos processos P1, P2 e P3, nesta ordem, e que apenas o processo P1 realiza operações de E/S? Cada operação de E/S é executada após 5 u.t. e consome 10 u.t. a) T = 8 u.t. b) T = 18 u.t. 40
  • 41. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS c) T = 28 u.t. 13. Existem quatro processos (P1, P2, P3 e P4) na fila de pronto, com tempos de UCP estimados em 9, 6, 3 e 5, respectivamente. Em que ordem os processos devem ser executados para minimizar o tempo de turnaround dos processos? ATIVIDADE PRÁTICA 1) Estatísticas a)Práticas de simulação · Reinicialize o simulador. · Ative a janela de Estatísticas em Console SOsim / Janelas / Estatísticas. · Crie dois novos processos: janela Gerência de Processos / Criar – janela criação de Processos / Criar. b)Análise Prática · Na janela Estatística, observe as informações: número de processos, estados dos processos e processos escalonados c)Questão teórica para responder com a ajuda do simulador: Observe que em alguns momentos existem processos no estado de pronto, porém nenhum em estado de execução. Explique a razão dessa situação. 2) Log de Execução dos Processos a)Práticas de simulação · Reinicialize o simulador. · Ative a janela de Log em Console SOsim / Janelas / Log. · Crie dois novos processos do tipo CPU-bound: janela Gerência de Processos / Cria – janela Criação de Processos / Criar (tipo de processo deve ser CPUbound). b)Análise Prática · Na janela Log, observe as informações sobre as mudanças de estado dos processos observando o tempo que cada processo permanece nos estados de execução e Pronto. · Reinicialize o simulador parametrizado com um valor de fatia de tempo diferente observe as diferenças na janela Log. c)Questão teórica para responder usando o simulador :Analise comparativamente a concorrência de dois processos CPU-bound executando em dois sistemas operacionais que se diferenciam apenas pelo valor da fatia de tempo. 3) Suspensão e Eliminação de Processos a)Práticas de simulação · Reinicialize o simulador. 41
  • 42. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS · Crie dois novos processos: janela Gerência de Processos / Cria – janela criação de processos / Criar. b)Análise Prática · Na janela Gerência de Processos, observe as informações sobre o contexto de software dos processos criados. · Na janela Gerência de Processador, observe a concorrência no uso do processador pelos dois processos. · Compare percentualmente os tempos de uso do processador entre os dois processos. · Suspenda temporariamente um dos processos na janela Gerência de Processos / Suspender. · Observe os estados dos processos, a concorrência no uso do processador e novamente compare percentualmente os tempos de uso do processador entre os dois processos. · Libere o processo do estado de espera (suspenso) na janela Gerência de Processos / Prosseguir. · Elimine um dos processos na janela Gerência de Processos / Finalizar. c)Questão teórica para responder com a ajuda do simulador :Ao se eliminar um processo em estado de suspenso, o processo não é eliminado imediatamente. Reproduza essa situação no simulador e explique a razão da situação. 4) Escalonamento Circular a)Práticas de simulação · Execute o simulador SOsim e configure-o para trabalhar com Escalonamento Circular: janela Console SOsim / Opções / Parâmetros do Sistema na guia Processador. b)Análise Prática · Crie dois processos com a mesma prioridade (um CPU-bound e outro I/Obound): janela Gerência de Processos / Criar – janela Criação de Processos / Criar. · Na janela Gerência de Processos, observe o tempo de processador de cada processo durante dois minutos e as mudanças de estado. Após esse período anote o tempo de processador de cada processo. Analise o balanceamento no uso do processador pelos dois processos. · Na janela Gerência de Processos finalize os dois processos. · Na janela Gerência de Processador, aumente a fatia de tempo movimentando a barra de fatia de tempo. · Na janela Gerência de Processos, observe mais uma vez o tempo de processador de cada processo durante dois minutos e as mudanças de estado. Após esse período anote o tempo de Processador de cada processo. Compare os tempos anotados nas duas e analise o resultado do balanceamento no uso do processador pelos dois processos. Identifique as causas da variação. c)Questão teórica para responder com a ajuda do simulador Considere a concorrência, nesse tipo de escalonamento, com dois processos CPU-bound que não realizam operações de E/S. Qual o efeito da variação da fatia de tempo sobre o balanceamento no uso do processador? 42
  • 43. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS GERENCIAMENTO DE ENTRADA E SAÍDA 1 Introdução Para gerenciar os dispositivos, os sistemas operacionais contam com gerenciadores específicos: Gerenciador de Impressão, Gerenciador de Disco, Gerenciador de Modem, Gerenciador USB, Gerenciador de Vídeo, entre outros, Para realizar essa tarefa, os sistemas operacionais recebem um conjunto de instruções específicas para o tratamento dos dispositivos. Cada gerenciador será responsável por realizar a administração e controle da utilização do respectivo dispositivo. Princípios de hardware e de software de E/S. 2. Princípios de Hardware de E/S Segundo Tanenbaum, o hardware de entrada e saída pode ser visto sob dois pontos de vista:  Visão do Engenheiro Elétrico: vê o hardware sob o ponto de vista de chips, fios, fontes de alimentação, de motores e de todos os componentes físicos que o constituem.  Visão do Programador: já o programador vê a interface apresentada para o software (comandos que o hardware aceita, as funções que ele executa e os erros que podem ser retornados). 43
  • 44. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Dispositivos de Entrada e Saída Os dispositivos de entrada e saída é o mecanismo utilizado para fazer a interface entre o mundo exterior e o sistema e sem ele o computador não teria muita funcionalidade. É possível encontrar uma grande diversidade de dispositivos de entrada e saída, como: teclados, mouses, monitor de vídeo, impressora, scanners, dentre outros. Os dispositivos de entrada e saída, dependendo do sentido o do fluxo de informações entre o sistema e o dispositivo, podem ser divididos, grosso modo, em dispositivos de entrada, dispositivos de saída ou dispositivos de entrada e saída. Os dispositivos de entrada são caracterizados por conter um fluxo de informações do dispositivo para o sistema, ou seja, são responsáveis por inserir no sistema informação do mundo externo. Já os dispositivos de saída são caracterizados pelo fluxo de informações do sistema para o mundo externo, ou seja, responsáveis por disponibilizar respostas ao mundo externo. Já os dispositivos e entrada e saída contemplam os dois fluxos. Segundo Tanenbaum, os dispositivos também podem ser divididos, grosso modo, em duas categorias: dispositivos de bloco e dispositivos de caractere. Os dispositivos de bloco são caracterizados por armazenar informações em blocos de tamanhos fixos, cada um com seu endereço próprio. A propriedade essencial desse tipo de dispositivos é que é possível ler ou gravar blocos independentemente um do outro. O disco é um bom exemplo deste tipo de dispositivo. Já os dispositivos de caractere são caracterizados por aceitar ou entregar um fluxo de caracteres, sem considerar qualquer estrutura de bloco, sem endereçamento ou qualquer operação de busca. Embora esta classificação seja, de forma geral, muito utilizada, segundo o autor Tanenbaum, existem dispositivos que não são classificáveis em nenhum desses tipos. Como exemplo, tomemos por base os relógios. Os relógios são dispositivos que geram interrupções em intervalos definidos de tempo. Este dispositivo não se encaixa nos dispositivos de bloco, pois não possuem estrutura de blocos e, também, não se encaixam como dispositivos de caractere, pois não gera nenhum fluxo de caracteres. Controladoras de Dispositivos Para que os dispositivos se comuniquem com o sistema, eles são ligados ao computador através de um componente de hardware chamado de interface. Assim, os dispositivos não estão ligados diretamente aos barramentos do computador. Devido a diversidade de tipos de dispositivos, que abstrai diferentes formas de operações e complexidade, as interfaces empregam no seu projeto outro componente de hardware conhecido como controladora de dispositivo. A controladora de dispositivo (chamada também de adaptador de dispositivo) trata-se de um componente eletrônico, comumente na forma de uma placa de circuito impresso, que pode ser inserido na placa mãe do computador. O dispositivo em si trata se de um componente mecânico. Uma controladora pode manipular mais de um dispositivo e, quando padronizadas, podem ser fabricadas por diversas empresas. Como exemplo de controladoras, temos as controladoras de disco IDE ou SCSI. Cada controladora deve saber especificamente como o dispositivo a ela relacionado funciona, a fim de que possa enviar comandos a serem realizados. 44
  • 45. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Basicamente, uma controladora tem a função de converter um fluxo serial de bits em um bloco de bytes e executar uma correção de erros. Este bloco de bytes, montado em um buffer interno da controladora, após verificado erros, pode ser copiado para a memória principal. A maioria dos Sistemas Operacionais quase sempre lida com a controladora, não com o dispositivo. As controladoras são formadas de um conjunto de registradores que são enxergados pelo processador. Esses registradores recebem ordens do processador, fornecem o estado de uma operação ou permitem a leitura ou escrita de dados do dispositivo. O Sistema Operacional quando deseja dar algum comando à controladora acessam esses registradores (cada registrador possui um endereço). Os endereços dos registradores podem fazer parte do espaço normal de endereçamento de memória. Esse esquema é conhecido como mapeamento de entrada e saída em memória. Controladoras que suportam Acesso Direto à Memória As controladoras comuns (sem acesso direto à memória) recebem um fluxo de caracteres, converte para um bloco, armazenado em seu buffer, depois verifica possíveis erros. Por seguinte, a controladora gera uma interrupção no Sistema Operacional, que por sua vez, começa a ler o bloco do buffer da controladora, cada byte por vez, e armazena-os na memória principal. Esta operação, naturalmente, exige desperdício de CPU. O Acesso Direto à Memória (DMA – Direct Memory Access) é um mecanismo criado para liberar a CPU do trabalho de cópia dos dados da controladora para a memória. O controlador DMA é conectado diretamente ao barramento de dados e de endereços do computador, para ter a capacidade de acessar diretamente endereços de memória. Com a controladora DMA, após o bloco ter sido lido do dispositivo completamente e verificado possíveis erros, ela copia o primeiro byte para o endereço de memória principal especificado pelo endereço de memória DMA. Após terminar a transferências dos dados para a memória principal, a controladora DMA gera uma interrupção para o Sistema Operacional, que ao ser iniciado já encontra o dado em memória principal. Segundo Oliveira, a técnica de DMA é mais eficiente quando a operação de entrada e saída envolve a leitura ou escrita de muitos dados, como exemplo, uma leitura de disco. Nem todos os computadores utilizam a técnica de DMA. A justificativa disso é o fato de que a CPU, comumente, é bem mais rápida que a controladora DMA e pode fazer o trabalho de cópia de dados para a memória muito mais rápida. 3 Princípios de Software de E/S O software de entrada e saída, comumente, é organizado em uma estrutura de camadas, no qual as camadas mais baixas têm como principal função esconder das camadas mais altas as peculiaridades do hardware. Já as camadas mais altas têm como principal função apresentar uma interface amigável e simples para o usuário final. Algumas metas de software de entrada e saída podem ser apontadas:  Independência de dispositivo: deve ser possível escrever programas que podem, por exemplo, lê arquivos de qualquer dispositivo. 45
  • 46. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS  Atribuição uniforme de nomes: o nome de um arquivo ou de um dispositivo não pode depender do dispositivo.  Tratamento de erros: os erros devem ser tratados o mais perto possível do hardware.  Transferências síncronas ou assíncronas: a maior parte dos dispositivos de E/S são assíncronos e os programas dos usuários são mais fáceis de implementar através de bloqueios. Assim o Sistema Operacional deve fazer com que as operações pareçam, de fato, com bloqueios para os programas do usuário.  Dispositivos compartilháveis ou dedicados: O Sistema Operacional deve ser capaz de tratar dispositivos tanto dedicados como compartilhados de uma maneira que não gere problemas. Manipuladores de Interrupções As interrupções devem ser escondidas do sistema. O ideal é bloquear um processo que inicia uma operação de E/S e mantê-lo bloqueado até que a operação de E/S complete e a interrupção tenha ocorrido. O importante a se saber é que quando uma interrupção é gerada, o processo é desbloqueado, passando para um estado capaz de ser executado. Drivers de Dispositivos O driver de dispositivo (device driver) é composto de um conjunto de módulos de software cada um implementado para fornecer mecanismos de acesso a um dispositivo de entrada e saída específico. Assim, cada driver de dispositivo trata de um tipo de dispositivo ou de uma classe de dispositivos correlacionados. De modo geral, um driver é responsável por aceitar uma solicitação abstrata (por exemplo, ler alguma informação) e cuidar para que esta solicitação seja atendida. Assim o driver de um dispositivo tem o conhecimento de como funciona a controladora funciona. Software de E/S Independente de Dispositivo A principal função do software de E/S independente de dispositivo é executar funções que são comuns para vários dispositivos e oferecer uma interface uniforme para o software de nível de usuário. Segundo Oliveira, podemos enumerar alguns serviços sob responsabilidade dessa camada:  Nomeação de Dispositivo: Cada dispositivo deve receber um nome lógico e ser identificado a partir dele.  Buferização: Buffer é uma zona de memória temporária utilizada para armazenar dados enquanto eles estão sendo transferidos entre as diferentes camadas do software de E/S.  Cache de Dados: Armazenar na memória um conjunto de dados que estão sendo frequentemente utilizados.  Alocação e Liberação: Devido a alguns dispositivos admitirem, no máximo, um usuário por vez, o software de E/S deve gerenciar a alocação, liberação e uso destes dispositivos.  Tratamento de Erros: o software de E/S deve fornecer mecanismos de manipulação de erros, informando à camada superior o sucesso ou fracasso de uma operação. 46
  • 47. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS Software de E/S de Nível de Usuário A visão dos dispositivos de E/S para o usuário consiste de bibliotecas vinculadas em programas de usuários. Essas bibliotecas são fornecidas pelas linguagens de programação e podem ser utilizadas pelos usuários e ligadas com seus programas para compor o arquivo executável. As funções de entrada e saída são dependentes e específicas de cada linguagem de programação. Por exemplo, na linguagem C as funções printf e scanf são utilizadas para impressão formatada e leitura, respectivamente. As bibliotecas de entrada e saída não fazem parte do núcleo do Sistema Operacional. Elas são associadas às várias linguagens de programação. 47
  • 48. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS EXERCICIO 1) Qual o papel do Sistema Operacional com relação aos dispositivos de entrada e saída? 2) Diferencie a visão do engenheiro elétrico e do programador quanto ao hardware de entrada e saída. 3) Como são caracterizados os dispositivos de E/S de bloco e de caractere. 4) Qual a função dos Drivers de Dispositivos ? 5) Como funciona as controladoras que suportam DMA. 6) Aponte as metas de software de E/S, explicando cada uma. 7) Qual a principal função do software de E/S independente de dispositivo? 48
  • 49. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS GERENCIAMENTO DE MEMÓRIA 1 Introdução Historicamente, a memória principal sempre foi vista como um recurso escasso e caro. Uma das maiores preocupações dos projetistas foi desenvolver sistemas operacionais que não ocupassem muito espaço de memória e, ao mesmo tempo, otimizassem a utilização dos recursos computacionais. Mesmo atualmente, com a redução do custo e o aumento considerável da capacidade da memória principal, seu gerenciamento é dos fatores mais importantes no projeto e implementação dos sistemas operacionais. O Sistema Operacional tem como principal função gerenciar a hierarquia de memória. A parte do SO responsável por essa função é chamada de gerenciamento de memória. Entre as funções do gerenciador de memória está em controlar as partes de memória utilizada e as partes não utilizadas, alocar (disponibilizar) memória para os processos, desalocar (retirar) memória de processos e gerenciar a troca entre memória principal (primária) e memória secundária. Hierarquia de Memória Basicamente, o gerenciamento da memória é a ferramenta utilizada para permitir aos programas em execução no computador utilizarem a memória do computador para armazenar as instruções e dados que serão manipulados. Os principais objetivos a serem alcançados no gerenciamento da memória são:  Oferecer uma área de armazenamento para os processos serem executados; 49
  • 50. PRONATEC/SEDUC-PI SISTEMAS OPERACIONAIS  Proteger a execução dos processos contra eventuais falhas causadas por erro em um determinado processo;  Criar um ambiente de execução com desempenho satisfatório aos usuários; Além dessas características, adicionalmente deseja-se de um bom gerenciador:  Compartilhamento da memória entre os processos (em sistemas avançados);  Permitir aos programadores desenvolverem programas que tenham um acesso transparente à memória do computador. Nos sistemas operacionais modernos, o gerenciamento da memória realizará essas tarefas através da Proteção da Memória. 2. Gerenciamento Básico de Memória O esquema mais simples de gerenciamento de memória foi implementado nos primeiros Sistemas Operacionais, porém ainda está presente em alguns sistemas monoprogramáveis. Este esquema é chamado por alguns autores como alocação contígua. Basicamente, a memória principal disponível é dividida entre o Sistema Operacional e o programa em execução. Como este esquema de gerenciamento é utilizado em sistemas monoprogramáveis, temos apenas um processo em execução por vez. Esquema Básico de gerenciamento de memória Neste tipo de gerenciamento, o usuário tem acesso a toda memória principal, inclusive o espaço do Sistema Operacional. É possível proteger a área de memória do Sistema Operacional utilizando registradores delimitadores de área de usuário e do SO.Assim, os programas estão limitados ao tamanho de memória principal disponível. Uma técnica conhecida como overlay, permite que um programa seja dividido em módulos, de forma que seja possível a execução independente de cada módulo, utilizando uma mesma área de memória. 50