Transcript SO 3
SISTEMAS OPERACIONAIS
Prof. Alan Péterson P. Bruno
[email protected]
Estrutura e Funcionamento dos Sistemas
Operacionais
Funcionamento dos Sistemas Operacionais
Os sistemas operacionais reagem a eventos, que
representam solicitação de serviços. Por
exemplo, uma operação de leitura no programa
de usuário será realizada por uma chamada de
sistema que corresponderá a uma função
executada pelo sistema operacional que solicitará
ao controlador do periférico a transferência dos
dados para o endereço de memória informado no
pedido do serviço.
Quando a transferência se completar, o
controlador do periférico pode gerar uma
interrupção, que será sentida pelo processador
e que fará com que o sistema operacional
execute uma rotina de tratamento da
interrupção. Neste exemplo, os dados
solicitados pelo programa do usuário se
encontram na memória principal, na área de
dados do programa que solicitou ou na área de
buffers gerenciada pelo sistema operacional.
Se for na área de buffers, o sistema operacional
os copiará para a área de dados do programa.
Estando os dados na área do programa, o
mesmo poderá novamente executar. A figura
abaixo esquematiza o funcionamento de um
sistema operacional.
Visão esquemática do funcionamento de um Sistema Operacional
Estrutura dos Sistemas Operacionais
Um sistema operacional é um programa, formado
por diversos processos concorrentes, situados
entre os programas de aplicação e o hardware,
que virtualiza o hardware tornando-o mais
simples de ser utilizado. Desta forma, o
desempenho do sistema operacional tem uma
influência fundamental na performance das
aplicações. A forma de estruturação dos sistemas
operacionais têm evoluído, na tentativa de
encontrar a estrutura mais apropriada. A seguir
serão apresentadas as principais formas de
estruturação dos sistemas operacionais.
Monolíticos
O SO é organizado como uma coleção de
processos seqüenciais cooperantes, que
recebem as solicitações dos usuários
(chamadas de sistema), as executam e
devolvem um resultado.
Sistema Operacional Monolítico
Hierárquico
Um sistema operacional pode ser organizado sob a
forma de um conjunto de processos seqüenciais
cooperantes, cada um executando uma função
bem definida. Assim, cada programa de usuário,
cada driver de periférico, a gerência de memória,
o escalonamento, etc. é executado por um
processo. O funcionamento do sistema é o
resultado da cooperação entre os processos
seqüenciais e a ação coordenada destes. Como
as velocidades de execução dos diferentes
processos que formam o sistema operacional é
indeterminada, existe a necessidade de
mecanismos explícitos de sincronização, para
estabelecer o perfeito funcionamento do sistema.
No sistema operacional THE, construído por
Dijkstra em 1968, todas as atividades do
sistema são divididas em um certo número
de processos seqüenciais. Estes processos
implementam as abstrações dos diferentes
componentes do sistema e são colocados
nos vários níveis lógicos nos quais o
sistema foi organizado.
O sistema possui seis níveis lógicos:
Nível 0: responsável pela alocação do processador para os
processos em execução e pelo tratamento das
interrupções.
Nível 1: responsável pela gerência de memória. No sistema foi
utilizado o conceito de páginas e foi feita uma distinção
entre páginas de memória e páginas de tambor magnético.
Uma página de tambor magnético possui exatamente o
tamanho de uma página de memória e um mecanismo de
identificação de segmento permite a existência de um
número maior de páginas na memória secundária. Uma
variável indica se a página está na memória principal ou
não.
Nível 2: interpretador de mensagens: trata da alocação da
console do sistema ao operador, para permitir a
comunicação deste com os processos em execução.
Quando o operador aperta uma tecla, um caractere é
enviado ao interpretador de comandos, que pode então
estabelecer uma conversação com um processo.
Nível 3: neste nível encontram-se os processos
responsáveis pelos input streams e pelos output
streams. Este nível implementa uma console
virtual para cada processo, os quais compartilham
uma mesma console física. O sistema permite
uma única conversação por vez, usando para tal
mecanismos de exclusão mútua. Este nível utiliza
as funcionalidades do nível 2 (interpretador de
comandos) para se comunicar como operador.
Isto é necessário, por exemplo, no caso de
problemas com um periférico.
Nível 4: formado pelos programas de usuário.
Nível 5: representa o operador do sistema.
A figura a seguir ilustra a estrutura do sistema.
Operador
Programas de usuário
Processos de E/S
Interpretador de mensagens
Controlador de segmentos
Alocação do processador
Hardware
Organização do sistema operacional THE
A organização hierárquica, pelo fato de ser
formada por processos independentes, é
interessante de ser utilizada, pois é
adequada a verificação da correção do
funcionamento e permite o
desenvolvimento modular, visto que cada
processo seqüencial pode ser
implementado de maneira completamente
independente dos demais.
Máquinas virtuais
Máquinas virtuais são abstrações construídas por um
monitor de máquinas virtuais, que distribui os recursos
de hardware, permitindo a existência de vários
ambientes de execução.
Uma máquina virtual é formada por recursos virtuais que
são mapeados para recursos reais pelo monitor. Desta
forma, uma máquina com grande capacidade de
memória, disco, etc. pode ser particionada em várias
máquinas virtuais, com menos recursos que a máquina
real. O acesso a uma página de memória na máquina
virtual é mapeado (traduzido) em um acesso a uma
página de memória real. As instruções da máquina
virtual são traduzidas para instruções da máquina real e
executadas.
O VM (Virtual Machine) da IBM [Creasy, 1981] é um
exemplo de sistema operacional que utiliza o conceito de
máquinas virtuais. Cada sistema operacional VM é
controlado por um programa chamado de Control
Program, que gerencia o hardware físico, cria uma
máquina virtual para cada usuário do sistema, sendo
esta máquina virtual uma simulação exata de um
sistema operacional (IBM/370 ou IBM/390). Cada
usuário executa seus programas armazena seus dados,
etc. sem interferência e sem interferir com os outros
usuários.
O Control Program é o componente fundamental do
sistema e roda diretamente no hardware do computador.
Suas funções são gerenciar o hardware do computador,
gerenciar máquinas virtuais (criação, deleção, ...), fazer
o escalonamento, etc.
Microkernel
A organização Microkernel é baseada no modelo cliente/servidor,
na qual os serviços do sistema são implementados por
servidores especializados. Um Microkernel (mínimo) é
responsável pelo tratamento das interrupções, pela gerência de
memória nos seus aspectos mais básicos, e pelas funções de
mais baixo nível do escalonamento. Todos os serviços do
sistema são implementados por servidores, em um nível lógico
acima do Microkernel. Os clientes (programas de aplicação)
solicitam os serviços ao SO (Microkernel) que os encaminha
aos servidores. Os servidores executam um loop eterno, no
qual recebem a solicitação de um serviço, o executam, enviam
o resultado ao Microkernel e voltam a esperar a solicitação de
um novo serviço. O Microkernel recebe do servidor o resultado
e o transmite ao cliente, que de posse do resultado do serviço
pedido, volta a executar o código da aplicação. A figura a
seguir exemplifica uma organização Microkernel. As vantagens
da organização Microkernel são a modularidade e a facilidade
de se acrescentar novos serviços, que consiste na
incorporação de um novo servidor.
Organização Microkernel
Exokernel
A estruturação de um sistema operacional em exokernel
elimina a noção de que o mesmo deve fornecer uma
abstração total do hardware sobre a qual são construídas
todas as aplicações. A idéia é que, devido às
necessidades distintas de diferentes aplicações, o
sistema operacional deve, adequadamente, fornecer os
recursos necessários a cada aplicação. Desta forma, o
exokernel possui um conjunto básico de primitivas de
baixo nível, com as quais gerencia completamente o
hardware e, cada aplicação, utiliza somente o
subconjunto adequado às suas necessidades. Assim, por
exemplo, servidores podem implementar abstrações
tradicionais, adequadas às aplicações às quais se
destinam.
Organização do sistema operacional
Linux
O Linux é um sistema operacional do tipo Unix, livremente
distribuído. O nome Linux é uma combinação do nome
de seu idealizador, Linus Torwalds e Unix. A primeira
versão do Linux se tornou disponível em 1991. Em 1994
foi tornada pública a primeira versão estável do sistema.
A evolução e a manutenção do sistema é realizada por
voluntários, que trabalham no desenvolvimento, na
depuração de erros e testando novas versões. O linux é
hoje um moderno sistema operacional do tipo Unix, com
suporte para:
o Multitarefa;
o Multiprocessamento;
o Diferentes arquiteturas;
o Diferentes file systems (MS/DOS, Ext2, Ext3, ..)
o Permite a carga de novos módulos;
o IPC (pipes, sockets,..)
o Um grande número de periféricos
o Gerência de memória com paginação por demanda
o Bibliotecas dinâmicas e compartilhadas
o TCP/IP;
O sistema operacional Linux é formado por seis grandes
níveis lógicos,apresentados na figura
Programas de Aplicação
Gerencia de
Memória
Gerencia de
Arquivos
Escalonador
Entrada e Saída
Rede
IPC
Hardware
As funções de cada subsistema são:
1.
Escalonador (sched), responsável por selecionar processos para
execução e entregar o processador ao processo selecionado.
2. Gerencia de memória, que permite a existência de vários processos na
memória principal. O MM implementa memória virtual, que permite a
execução de processos maiores que a memória real.
3. Gerencia do sistema de arquivos. Um conceito implementado é o de
independência do dispositivo, que cria uma interface uniforme, comum a
todos os diferentes tipos de dispositivos. Implementa também diferentes
formatos de arquivos, compatíveis com outros sistemas operacionais.
4. Interface de rede, que permite o acesso as redes de comunicação.
5. Inter-Process Communication (IPC), subsistema que implementa os
diversos mecanismos de comunicação entre processos.
6. Entrada e Saída, formado pelos drivers dos diferentes periféricos.
Organização do sistema operacional
Windows NT
•Windows NT designa uma família de sistemas operacionais da Microsoft, que
evoluiu a partir de 1993, ano da sua primeira versão, conforme apresentado a
seguir:
• NT 3.1 Windows NT 3.1 Workstation (denominado Windows NT), Advanced
Server de 1993 ;
• NT 3.5 Windows NT 3.5 Workstation, Server de 1994;
• NT 3.51 Windows NT 3.51 Workstation, Server de 1995;
• NT 4.0 Windows N T 4.0 Workstation, Server, Server Enterprise Edition, Terminal
Server, Embedded de 1996;
• NT 5.0 Windows 2000 Professional, Server, Advanced Server, Datacenter Server
de 2000;
• NT 5.1 Windows XP Home, Professional, IA-64, Media Center (2002, 2003,
2004, 2005), Tablet PC, Starter, Embedded, de 2001;
• NT 5.2 Windows Server 2003 Standard, Enterprise, Datacenter, Web, Small
Business Server de 2003;
• NT 5.2 Windows XP (x64) Professional x64 Edition de 2005;
• NT 6.0 Windows Vista Starter, Home Basic, Home Premium, Business,
Enterprise, Ultimate Empresas: November 2006. Lançamento oficial: 30de Janeiro
de 2007.
A arquitetura do Windows NT é fortemente baseada na idéia de
microkernel, na qual componentes do sistema implementam
funcionalidades que são tornadas disponíveis a outros
componente.
Utiliza também o conceito de níveis lógicos de maneira que cada
nível pode utilizar funcionalidades do nível inferior e oferece
funcionalidades ao nível superior. O conceito de objetos
também é utilizado, sendo que arquivos, dispositivos de I/O,
etc. são implementados por objetos e acessados por métodos
a eles associados.
A estrutura do Windows NT possui duas partes: modo usuário,
formada pelos programas de aplicação e pelos subsistemas
protegidos (servidores) do sistema, e o modo kernel, chamado
de executivo. Os subsistemas protegidos de ambiente
fornecem API’ s específicas dos sistemas operacionais
suportados. Existem subsistemas (servidores) Win32, POSIX,
Win16, OS/2 e MS-DOS. A figura 1.15 a seguir mostra um
servidor Win32 se comunicando com um cliente Win32 através
do Executivo do NT, e um servidor POSIX, a espera de
solicitações de clientes.