Escolar Documentos
Profissional Documentos
Cultura Documentos
I - Conceitos Bsicos
Prof. Carlos Alberto Maziero
DAInf UTFPR
http://dainf.ct.utfpr.edu.br/maziero
2 de junho de 2013
Este texto est licenciado sob a Licena Attribution-NonCommercial-ShareAlike 3.0 Unported da Creative
Commons (CC). Em resumo, voc deve creditar a obra da forma especificada pelo autor ou licenciante (mas
no de maneira que sugira que estes concedem qualquer aval a voc ou ao seu uso da obra). Voc no
pode usar esta obra para fins comerciais. Se voc alterar, transformar ou criar com base nesta obra, voc
poder distribuir a obra resultante apenas sob a mesma licena, ou sob uma licena similar presente.
Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/3.0/.
Este texto foi produzido usando exclusivamente software livre: Sistema Operacional GNU/Linux (distribuies Fedora e Ubuntu), compilador de texto LATEX 2 , gerenciador de referncias BibTeX, editor grfico
Inkscape, criadores de grficos GNUPlot e GraphViz e processador PS/PDF GhostScript, entre outros.
c Carlos Maziero
: SUMRIO
Sumrio
1
Objetivos
1.1 Abstrao de recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Gerncia de recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
5
Funcionalidades
10
Conceitos de hardware
5.1 Interrupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Proteo do ncleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Chamadas de sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
12
15
17
19
19
20
21
22
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
c Carlos Maziero
: Objetivos
Resumo
Um sistema de computao constitudo basicamente por hardware e software.
O hardware composto por circuitos eletrnicos (processador, memria, portas
de entrada/sada, etc.) e perifricos eletro-ptico-mecnicos (teclados, mouses,
discos rgidos, unidades de disquete, CD ou DVD, dispositivos USB, etc.). Por
sua vez, o software de aplicao representado por programas destinados ao
usurio do sistema, que constituem a razo final de seu uso, como editores de
texto, navegadores Internet ou jogos. Entre os aplicativos e o hardware reside uma
camada de software multi-facetada e complexa, denominada genericamente de
Sistema Operacional. Neste captulo veremos quais os objetivos bsicos do sistema
operacional, quais desafios ele deve resolver e como ele estruturado para alcanar
seus objetivos.
Objetivos
1.1
Abstrao de recursos
c Carlos Maziero
: Abstrao de recursos
editor de
textos
aplicativos
reprodutor
de mdia
Ad augusta per
angusta.
De omni re scibili, et
quibusdam aliis.
Felix qui potuit rerum
cognoscere causas.
In medio stat virtus.
Labor omnia vincit
improbus.
Non nova, sed nove.
Qui scribit bis legit.
editor
grco
sistema operacional
hardware
discos
memria
portas
USB
rede
c Carlos Maziero
: Gerncia de recursos
dos aplicativos e permite que ambos evoluam de forma mais autnoma. Por
exemplo, o cdigo de um editor de textos no deve ser dependente da tecnologia
de discos rgidos utilizada no sistema.
Definir interfaces de acesso homogneas para dispositivos com tecnologias distintas.
Atravs de suas abstraes, o sistema operacional permite aos aplicativos usar a
mesma interface para dispositivos diversos. Por exemplo, um aplicativo acessa
dados em disco atravs de arquivos e diretrios, sem precisar se preocupar com a
estrutura real de armazenamento dos dados, que podem estar em um disquete,
um disco IDE, uma mquina fotogrfica digital conectada porta USB, um CD ou
mesmo um disco remoto, compartilhado atravs da rede.
1.2
Gerncia de recursos
c Carlos Maziero
c Carlos Maziero
: Funcionalidades
Funcionalidades
Para cumprir seus objetivos de abstrao e gerncia, o sistema operacional deve atuar
em vrias frentes. Cada um dos recursos do sistema possui suas particularidades, o que
impe exigncias especficas para gerenciar e abstrair os mesmos. Sob esta perspectiva,
as principais funcionalidades implementadas por um sistema operacional tpico so:
Gerncia do processador : tambm conhecida como gerncia de processos ou de
atividades, esta funcionalidade visa distribuir a capacidade de processamento de
7
c Carlos Maziero
: Funcionalidades
forma justa1 entre as aplicaes, evitando que uma aplicao monopolize esse
recurso e respeitando as prioridades dos usurios. O sistema operacional prov a
iluso de que existe um processador independente para cada tarefa, o que facilita
o trabalho dos programadores de aplicaes e permite a construo de sistemas
mais interativos. Tambm faz parte da gerncia de atividades fornecer abstraes
para sincronizar atividades inter-dependentes e prover formas de comunicao
entre elas.
Gerncia de memria : tem como objetivo fornecer a cada aplicao uma rea de
memria prpria, independente e isolada das demais aplicaes e inclusive do
ncleo do sistema. O isolamento das reas de memria das aplicaes melhora
a estabilidade e segurana do sistema como um todo, pois impede aplicaes
com erros (ou aplicaes maliciosas) de interferir no funcionamento das demais
aplicaes. Alm disso, caso a memria RAM existente seja insuficiente para
as aplicaes, o sistema operacional pode aument-la de forma transparente s
aplicaes, usando o espao disponvel em um meio de armazenamento secundrio
(como um disco rgido). Uma importante abstrao construda pela gerncia de
memria a noo de memria virtual, que desvincula os endereos de memria
vistos por cada aplicao dos endereos acessados pelo processador na memria
RAM. Com isso, uma aplicao pode ser carregada em qualquer posio livre da
memria, sem que seu programador tenha de se preocupar com os endereos de
memria onde ela ir executar.
Gerncia de dispositivos : cada perifrico do computador possui suas peculiaridades;
assim, o procedimento de interao com uma placa de rede completamente diferente da interao com um disco rgido SCSI. Todavia, existem muitos problemas e
abordagens em comum para o acesso aos perifricos. Por exemplo, possvel criar
uma abstrao nica para a maioria dos dispositivos de armazenamento como
pen-drives, discos SCSI ou IDE, disquetes, etc., na forma de um vetor de blocos de
dados. A funo da gerncia de dispositivos (tambm conhecida como gerncia de
entrada/sada) implementar a interao com cada dispositivo por meio de drivers
e criar modelos abstratos que permitam agrupar vrios dispositivos distintos sob
a mesma interface de acesso.
Gerncia de arquivos : esta funcionalidade construda sobre a gerncia de dispositivos e visa criar arquivos e diretrios, definindo sua interface de acesso e as
regras para seu uso. importante observar que os conceitos abstratos de arquivo
e diretrio so to importantes e difundidos que muitos sistemas operacionais os
usam para permitir o acesso a recursos que nada tem a ver com armazenamento.
Exemplos disso so as conexes de rede (nos sistemas UNIX e Windows, cada
socket TCP visto como um descritor de arquivo no qual pode-se ler ou escrever
dados) e as informaes do ncleo do sistema (como o diretrio /proc do UNIX).
1
c Carlos Maziero
: Funcionalidades
gerncia do
processador
gerncia de
memria
suporte
de rede
gerncia de
dispositivos
ncleo
gerncia de
proteo
gerncia de
arquivos
interface
grca
etc
Na verdade essa regra to importante que deveria ser levada em conta na construo de qualquer
sistema computacional complexo.
c Carlos Maziero
mais alto, como por exemplo decidir a quantidade de memria que cada aplicao ativa
deve receber, ou qual o prximo pacote de rede a enviar para satisfazer determinadas
especificaes de qualidade de servio.
Por outro lado, como mecanismo consideram-se os procedimentos de baixo nvel
usados para implementar as polticas, ou seja, atribuir ou retirar memria de uma
aplicao, enviar ou receber um pacote de rede, etc. Os mecanismos devem ser
suficientemente genricos para suportar mudanas de poltica sem necessidade de
modificaes. Essa separao entre os conceitos de poltica e mecanismo traz uma grande
flexibilidade aos sistemas operacionais, permitindo alterar sua personalidade (sistemas
mais interativos ou mais eficientes) sem ter de alterar o cdigo que interage diretamente
com o hardware. Alguns sistemas, como o InfoKernel [Arpaci-Dusseau et al., 2003],
permitem que as aplicaes escolham as polticas do sistema mais adequadas s suas
necessidades.
c Carlos Maziero
: Conceitos de hardware
aplicativos
programas
utilitrios
nvel de usurio
nvel de sistema
ncleo
software
cdigo de
inicializao
drivers de
dispositivos
controladoras de dispositivos
hardware
dispositivos fsicos
Conceitos de hardware
11
c Carlos Maziero
: Interrupes
Memria
processador
MMU
mouse
teclado
controladora
USB
monitor
unidade
de disco
conexo
de rede
control.
de vdeo
control.
de disco
control.
de rede
dados
endereos
controle
5.1
Interrupes
12
c Carlos Maziero
: Interrupes
dispositivo
endereos de acesso
teclado
0060h-006Fh
barramento IDE primrio
0170h-0177h
barramento IDE secundrio
01F0h-01F7Fh
porta serial COM1
02F8h-02FFh
porta serial COM2
03F8h-03FFh
Tabela 1: Endereos de acesso a dispositivos
Notificar o processador atravs do barramento de controle, enviando a ele uma
requisio de interrupo (IRQ Interrupt ReQuest).
Ao receber a requisio de interrupo, os circuitos do processador suspendem seu
fluxo de execuo corrente e desviam para um endereo pr-definido, onde se encontra
uma rotina de tratamento de interrupo (interrupt handler). Essa rotina responsvel por
tratar a interrupo, ou seja, executar as aes necessrias para atender o dispositivo
que a gerou. Ao final da rotina de tratamento da interrupo, o processador retoma o
cdigo que estava executando quando recebeu a requisio.
A Figura 5 representa os principais passos associados ao tratamento de uma interrupo envolvendo a placa de rede Ethernet, enumerados a seguir:
programa
em execuo
Memria
1
rotina de
tratamento de
interrupo
5
6
rede
2
MMU
processador
dados
controladora
de rede
endereos
controle
c Carlos Maziero
: Interrupes
14
c Carlos Maziero
: Proteo do ncleo
Descrio
divide error
debug exception
null interrupt
breakpoint
INTO-detected overflow
bound range exception
invalid opcode
device not available
double fault
coprocessor segment overrun
invalid task state segment
segment not present
stack fault
general protection
page fault
Intel reserved
floating point error
alignment check
machine check
Intel reserved
maskable interrupts (devices & exceptions)
5.2
Proteo do ncleo
c Carlos Maziero
: Proteo do ncleo
16
c Carlos Maziero
nvel
usurio
: Chamadas de sistema
aplicao
nvel
ncleo
aplicao
aplicao
aplicao
ncleo
hardware
5.3
Chamadas de sistema
O confinamento de cada aplicao em sua rea de memria, imposto pelos mapeamentos de memria realizados pela MMU nos acessos em nvel usurio, prov robustez
e confiabilidade ao sistema, pois garante que uma aplicao no poder interferir nas
reas de memria de outras aplicaes ou do ncleo. Entretanto, essa proteo introduz
um novo problema: como chamar, a partir de uma aplicao, as rotinas oferecidas pelo
ncleo para o acesso ao hardware e suas abstraes? Em outras palavras, como uma
aplicao pode acessar a placa de rede para enviar/receber dados, se no tem privilgio
para acessar as portas de entrada/sada correspondentes nem pode invocar o cdigo do
ncleo que implementa esse acesso (pois esse cdigo reside em outra rea de memria)?
A resposta a esse problema est no mecanismo de interrupo, apresentado na Seo
5.1. Os processadores implementam uma instruo especial que permite acionar o
mecanismo de interrupo de forma intencional, sem depender de eventos externos ou
internos. Ao ser executada, essa instruo (int no Pentium, syscall no MIPS) comuta
o processador para o nvel privilegiado e procede de forma similar ao tratamento de
uma interrupo. Por essa razo, esse mecanismo denominado interrupo de software,
ou trap. Processadores modernos oferecem instrues especficas para entrar/sair do
modo privilegiado, como SYSCALL e SYSRET (nos processadores Pentium 64 bits) e
tambm um conjunto de registradores especficos para essa operao, o que permite a
transferncia rpida do controle para o ncleo, com custo menor que o tratamento de
uma interrupo.
A ativao de procedimentos do ncleo usando interrupes de software (ou outros
mecanismos correlatos) denominada chamada de sistema (system call ou syscall). Os
sistemas operacionais definem chamadas de sistema para todas as operaes envolvendo
o acesso a recursos de baixo nvel (perifricos, arquivos, alocao de memria, etc.)
ou abstraes lgicas (criao e finalizao de tarefas, operadores de sincronizao e
comunicao, etc.). Geralmente as chamadas de sistema so oferecidas para as aplicaes
em modo usurio atravs de uma biblioteca do sistema (system library), que prepara os
parmetros, invoca a interrupo de software e retorna aplicao os resultados obtidos.
17
c Carlos Maziero
: Chamadas de sistema
18
c Carlos Maziero
aplicao
read(...)
2
1
int
nvel usurio
nvel ncleo
6
chamada 5
de sistema
gerncia de
atividades
vetor de interrupes
79h
80h
81h
82h
6.1
Sistemas monolticos
19
c Carlos Maziero
nvel
usurio
: Sistemas em camadas
aplicao
aplicao
memory
operations
le
operations
aplicao
process
manager
CPU
scheduler
aplicao
network
operations
memory
manager
access
control
nvel
ncleo
network
protocols
kernel data structures
NTFS
le system
MMU
control
block I/O
operations
USB
driver
VFAT
le system
SATA
driver
Bluetooth
driver
network
driver
hardware
6.2
Sistemas em camadas
Uma forma mais elegante de estruturar um sistema operacional faz uso da noo
de camadas: a camada mais baixa realiza a interface com o hardware, enquanto
as camadas intermedirias provem nveis de abstrao e gerncia cada vez mais
sofisticados. Por fim, a camada superior define a interface do ncleo para as aplicaes
(as chamadas de sistema). Essa abordagem de estruturao de software fez muito
sucesso no domnio das redes de computadores, atravs do modelo de referncia OSI
(Open Systems Interconnection) [Day, 1983], e tambm seria de se esperar sua adoo no
domnio dos sistemas operacionais. No entanto, alguns inconvenientes limitam sua
aceitao nesse contexto:
20
c Carlos Maziero
: Sistemas micro-ncleo
O empilhamento de vrias camadas de software faz com que cada pedido de uma
aplicao demore mais tempo para chegar at o dispositivo perifrico ou recurso a
ser acessado, prejudicando o desempenho do sistema.
No bvio como dividir as funcionalidades de um ncleo de sistema operacional
em camadas horizontais de abstrao crescente, pois essas funcionalidades so
inter-dependentes, embora tratem muitas vezes de recursos distintos.
Em decorrncia desses inconvenientes, a estruturao em camadas apenas parcialmente adotada hoje em dia. Muitos sistemas implementam uma camada inferior de
abstrao do hardware para interagir com os dispositivos (a camada HAL Hardware
Abstraction Layer, implementada no Windows NT e seus sucessores), e tambm organizam em camadas alguns sub-sistemas como a gerncia de arquivos e o suporte de
rede (seguindo o modelo OSI). Como exemplos de sistemas fortemente estruturados em
camadas podem ser citados o IBM OS/2 e o MULTICS [Corbat and Vyssotsky, 1965].
6.3
Sistemas micro-ncleo
c Carlos Maziero
: Mquinas virtuais
user
application
user
application
user
application
aplicaes
sistema operacional
process
manager
memory
manager
MMU
control
le
system
protection
manager
network
protocols
block IO
operations
network
driver
disk
driver
nvel usurio
nvel ncleo
micro-kernel
hardware
6.4
Mquinas virtuais
Para que programas e bibliotecas possam executar sobre uma determinada plataforma
computacional, necessrio que tenham sido compilados para ela, respeitando o
conjunto de instrues do processador e o conjunto de chamadas do sistema operacional.
Da mesma forma, um sistema operacional s poder executar sobre uma plataforma de
hardware se for compatvel com ela. Nos sistemas atuais, as interfaces de baixo nvel
so pouco flexveis: geralmente no possvel criar novas instrues de processador ou
novas chamadas de sistema, ou mudar sua semntica. Por isso, um sistema operacional
s funciona sobre o hardware para o qual foi construdo, uma biblioteca s funciona
sobre o hardware e sistema operacional para os quais foi projetada e as aplicaes
tambm tm de obedecer a interfaces pr-definidas.
Todavia, possvel contornar os problemas de compatibilidade entre os componentes
de um sistema atravs de tcnicas de virtualizao. Usando os servios oferecidos por um
determinado componente do sistema, possvel construir uma camada de software que
22
c Carlos Maziero
: Mquinas virtuais
oferea aos demais componentes servios com outra interface. Essa camada permitir
assim o acoplamento entre interfaces distintas, de forma que um programa desenvolvido
para uma plataforma A possa executar sobre uma plataforma distinta B. O sistema
computacional visto atravs dessa camada denominado mquina virtual.
A Figura 10, extrada de [Smith and Nair, 2004], mostra um exemplo de mquina
virtual, onde uma camada de virtualizao permite executar um sistema operacional
Windows e suas aplicaes sobre uma plataforma de hardware Sparc, distinta daquela
para a qual foi projetado (Intel/AMD).
sistema
convidado
monitor
sistema
hospedeiro
Aplics Windows
Aplics Windows
Windows
Windows
camada de
virtualizao
Sparc
x86
Mquina
Virtual
c Carlos Maziero
: Mquinas virtuais
Espao de
usurio
Aplics Linux
Aplic
Java
Aplics Linux
Aplics Windows
ncleo Linux
ncleo Windows
JVM
ncleo Linux
hipervisor
hardware x86
hardware x86
VM de aplicao
VM de sistema
c Carlos Maziero
: Mquinas virtuais
aplics
OS 1
aplics
aplics
aplics
guest OS
OS 2
host OS
hipervisor
hipervisor
hardware
hardware
hipervisor nativo
hipervisor convidado
25
c Carlos Maziero
26
c Carlos Maziero
1965 : um projeto conjunto entre MIT, GE e Bell Labs define o sistema operacional
Multics, cujas ideias inovadoras iro influenciar novos sistemas durante dcadas.
1969 : Ken Thompson e Dennis Ritchie, pesquisadores dos Bell Labs, criam a primeira
verso do UNIX.
1981 : a Microsoft lana o MS-DOS, um sistema operacional comprado da empresa
Seattle Computer Products em 1980.
1984 : a Apple lana o sistema operacional Macintosh OS 1.0, o primeiro a ter uma
interface grfica totalmente incorporada ao sistema.
1985 : primeira tentativa da Microsoft no campo dos sistemas operacionais com interface
grfica, atravs do MS-Windows 1.0.
1987 : Andrew Tanenbaum, um professor de computao holands, desenvolve um
sistema operacional didtico simplificado, mas respeitando a API do UNIX, que
foi batizado como Minix.
1987 : IBM e Microsoft apresentam a primeira verso do OS/2, um sistema multitarefa
destinado a substituir o MS-DOS e o Windows. Mais tarde, as duas empresas
rompem a parceria; a IBM continua no OS/2 e a Microsoft investe no ambiente
Windows.
1991 : Linus Torvalds, um estudante de graduao finlands, inicia o desenvolvimento
do Linux, lanando na rede Usenet o ncleo 0.01, logo abraado por centenas de
programadores ao redor do mundo.
1993 : a Microsoft lana o Windows NT, o primeiro sistema 32 bits da empresa.
1993 : lanamento dos UNIX de cdigo aberto FreeBSD e NetBSD.
2001 : a Apple lana o MacOS X, um sistema operacional derivado da famlia UNIX
BSD.
2001 : lanamento do Windows XP.
2004 : lanamento do ncleo Linux 2.6.
2006 : lanamento do Windows Vista.
Esse histrico reflete apenas o surgimento de alguns sistemas operacionais relativamente populares; diversos sistemas acadmicos ou industriais de grande importncia
pelas contribuies inovadoras, como Mach, Chorus, QNX e Plan 9, no esto representados.
27
c Carlos Maziero
: REFERNCIAS
Referncias
[Arpaci-Dusseau et al., 2003] Arpaci-Dusseau, A., Arpaci-Dusseau, R., Burnett, N.,
Denehy, T., Engle, T., Gunawi, H., Nugent, J., and Popovici, F. (2003). Transforming
policies into mechanisms with InfoKernel. In 19th ACM Symposium on Operating
Systems Principles.
[Blunden, 2002] Blunden, B. (2002). Virtual Machine Design and Implementation in C/C++.
Worldware Publishing.
[Corbat et al., 1962] Corbat, F., Daggett, M., and Daley, R. (1962). An experimental
time-sharing system. In Proceedings of the Spring Joint Computer Conference.
[Corbat and Vyssotsky, 1965] Corbat, F. J. and Vyssotsky, V. A. (1965). Introduction
and overview of the Multics system. In AFIPS Conference Proceedings, pages 185196.
[Dasgupta et al., 1991] Dasgupta, P., Richard J. LeBlanc, J., Ahamad, M., and Ramachandran, U. (1991). The Clouds distributed operating system. Computer, 24(11):3444.
[Day, 1983] Day, J. (1983). The OSI reference model. Proceedings of the IEEE.
[Dike, 2000] Dike, J. (2000). A user-mode port of the Linux kernel. In Proceedings of the
4th Annual Linux Showcase & Conference.
[Foundation, 2005] Foundation,
http://www.wikipedia.org.
W. (2005).
[Gallmeister, 1994] Gallmeister, B. (1994). POSIX.4: Programming for the Real World.
OReilly Media, Inc.
[Goldberg, 1973] Goldberg, R. (1973). Architecture of virtual machines. In AFIPS
National Computer Conference.
[King et al., 2003] King, S., Dunlap, G., and Chen, P. (2003). Operating system support
for virtual machines. In Proceedings of the USENIX Technical Conference.
[Patterson and Henessy, 2005] Patterson, D. and Henessy, J. (2005). Organizao e Projeto
de Computadores. Campus.
[Pike et al., 1993] Pike, R., Presotto, D., Thompson, K., Trickey, H., and Winterbottom, P.
(1993). The use of name spaces in Plan 9. Operating Systems Review, 27(2):7276.
[Popek and Goldberg, 1974] Popek, G. and Goldberg, R. (1974). Formal requirements
for virtualizable third generation architectures. Communications of the ACM, 17(7):412
421.
[Rashid et al., 1989] Rashid, R., Julin, D., Orr, D., Sanzi, R., Baron, R., Forin, A., Golub,
D., and Jones, M. B. (1989). Mach: a system software kernel. In Proceedings of the 1989
IEEE International Conference, COMPCON, pages 176178, San Francisco, CA, USA.
IEEE Comput. Soc. Press.
28
c Carlos Maziero
: REFERNCIAS
[Rozier et al., 1992] Rozier, M., Abrossimov, V., Armand, F., Boule, I., Gien, M., Guillemont, M., Herrman, F., Kaiser, C., Langlois, S., Lonard, P., and Neuhauser, W. (1992).
Overview of the Chorus distributed operating system. In Workshop on Micro-Kernels
and Other Kernel Architectures, pages 3970, Seattle WA (USA).
[Silberschatz et al., 2001] Silberschatz, A., Galvin, P., and Gagne, G. (2001). Sistemas
Operacionais Conceitos e Aplicaes. Campus.
[Smith and Nair, 2004] Smith, J. and Nair, R. (2004). Virtual Machines: Architectures,
Implementations and Applications. Morgan Kaufmann.
[Tanenbaum, 2003] Tanenbaum, A. (2003). Sistemas Operacionais Modernos, 2a edio.
Pearson Prentice-Hall.
[Tanenbaum et al., 1991] Tanenbaum, A., Kaashoek, M., van Renesse, R., and Bal, H.
(1991). The Amoeba distributed operating system a status report. Computer
Communications, 14:324335.
29