Você está na página 1de 32

Fundamentos de

Sistemas Operacionais
Professor conteudista: Luiz Antonio de Lima
Sumário
Fundamentos de Sistemas Operacionais
Unidade I
1 INTRODUÇÃO .......................................................................................................................................................1
1.1 Conceituação dos sistemas operacionais ......................................................................................1
1.2 Componentes do sistema operacional ...........................................................................................4
1.3 Evolução dos sistemas operacionais................................................................................................6
1.4 Conceitos básicos sobre processador, memória e armazenamento secundário ......... 15
1.5 Sistema monousuário: monotarefa e multitarefa. Sistema multiusuário .................... 17
1.6 Chamadas ao sistema ......................................................................................................................... 18
1.7 Sistemas com compartilhamento de tempo (Time-Sharing) ............................................. 19
1.8 Sistemas distribuídos .......................................................................................................................... 20
1.9 Sistemas de tempo real...................................................................................................................... 20
1.10 Bootstrap ............................................................................................................................................... 20
2 GERENCIAMENTO DE PROCESSOS ........................................................................................................... 21
2.1 Conceituação de processos .............................................................................................................. 21
2.2 Condições de corrida e regiões críticas ....................................................................................... 21
2.3 Concorrência e sincronização ......................................................................................................... 22
2.3.1 Processos concorrentes ........................................................................................................................ 22
2.3.2 Sincronização ........................................................................................................................................... 23
2.4 Monitores e semáforos ...................................................................................................................... 23
2.4.1 Monitores ................................................................................................................................................... 23
2.4.2 Semáforos .................................................................................................................................................. 23
2.5 Comunicação interprocessos ........................................................................................................... 24
2.6 Escalonamento de processador ...................................................................................................... 24
3 GERENCIAMENTO DE MEMÓRIA ............................................................................................................... 24
3.1 Conceituação ......................................................................................................................................... 24
3.2 Swapping ................................................................................................................................................. 24
3.3 Memória virtual .................................................................................................................................... 25
3.4 Segmentação ......................................................................................................................................... 26
Unidade II
4 SISTEMA DE ARQUIVO ................................................................................................................................... 27
4.1 Conceituação ......................................................................................................................................... 27
4.2 Diretórios ................................................................................................................................................. 27
4.3 Métodos de acesso .............................................................................................................................. 28
4.4 Compartilhamento .............................................................................................................................. 28
4.5 Implementação ..................................................................................................................................... 29
4.6 Métodos de alocação e gerenciamento de espaço ................................................................ 29
4.7 Segurança ................................................................................................................................................ 32
5 GERENCIAMENTO DE ENTRADA E SAÍDA .............................................................................................. 33
5.1 Visão geral ............................................................................................................................................... 33
5.2 Dispositivos ............................................................................................................................................. 33
Unidade III
6 ARQUITETURA DE PROCESSADORES ....................................................................................................... 38
6.1 Modo operacional de processadores com 32 bits, 64 bits e além... ................................. 38
6.2 Velocidade do núcleo.......................................................................................................................... 40
6.3 Cache de memória ............................................................................................................................... 42
6.4 Barramento, clock ................................................................................................................................ 43
6.5 Conjunto de instruções...................................................................................................................... 45
6.6 Compatibilidades .................................................................................................................................. 47
6.7 Dispositivos móveis ............................................................................................................................. 49
7 VIRTUALIZAÇÃO ............................................................................................................................................... 50
7.1 Máquina virtual .................................................................................................................................... 50
7.2 Gerenciamento de continuidade de negócios.......................................................................... 52
7.3 Produtividade e reatividade administrativas ............................................................................ 53
7.4 Gerenciamento de recursos de máquina virtual ..................................................................... 55
Unidade IV
8 ESTUDO DE CASOS: ANÁLISE E CARACTERÍSTICAS ........................................................................... 57
8.1 Caso 1: análise de TCO Windows vs Linux (custo de propriedade) .................................. 57
8.2 Caso 2: análise de características Windows e Linux .............................................................. 60
8.2.1 Características do sistema operacional Linux ............................................................................. 68
8.2.2 Características do sistema operacional Windows ..................................................................... 71
8.3 Caso 3: características VMware e Xen ......................................................................................... 78
8.3.1 Razões do sucesso .................................................................................................................................. 80
9 FERRAMENTAS ................................................................................................................................................. 81
9.1 VMware .................................................................................................................................................... 82
9.2 Xen (focado para Linux)..................................................................................................................... 85
9.3 Qemu ......................................................................................................................................................... 87
9.4 Outras ferramentas.............................................................................................................................. 88
9.4.1 Bochs ........................................................................................................................................................... 88
9.4.2 Microsoft Virtual Server e Virtual PC.............................................................................................. 89
9.5 Comparativos de custo ...................................................................................................................... 89
9.6 Operações eficazes: visão geral ...................................................................................................... 89
9.6.1 SMFs essenciais ........................................................................................................................................ 91
9.6.2 Gerenciamento de alterações ............................................................................................................ 91
9.6.3 Gerenciamento de configuração ...................................................................................................... 91
9.6.4 Gerenciamento de versão.................................................................................................................... 92
9.6.5 Gerenciamento de segurança ............................................................................................................ 92
9.6.6 Monitoramento e controle de serviço............................................................................................ 92
9.6.7 Administração de sistema ................................................................................................................... 93
9.6.8 Gerenciamento de incidentes ............................................................................................................ 93
9.6.9 Gerenciamento de problemas............................................................................................................ 94
9.6.10 Gerenciamento de disponibilidade ............................................................................................... 94
9.6.11 Microsoft Systems Management Server ..................................................................................... 94
9.6.12 Software Update Services Feature Pack do SMS..................................................................... 95
9.6.13 Microsoft Operations Manager ...................................................................................................... 96
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

Unidade I
1 INTRODUÇÃO

1.1 Conceituação dos sistemas operacionais

A maior parte dos equipamentos que possuem sistemas


operacionais, tais como estações de trabalho, computadores
pessoais ou simplesmente PCs (Personal Computers), que são
utilizados nas empresas e residências, além dos notebooks,
5 celulares, automóveis, eletrodomésticos, televisores, entre outros,
interage com os usuários de forma praticamente imperceptível.
Contudo, as ações finais que esses dispositivos executam através
de seus softwares são realizadas pelos sistemas operacionais
(operating systems).

10 Neste livro-texto abordaremos as características da forma


como o sistema operacional evoluiu ao longo do tempo.

Quando se pensa em sistema operacional, logo vêm à mente


alguns dos mais famosos softwares do mercado, como o Windows
e o Linux. Mas os sistemas operacionais surgiram muito antes do
15 desenvolvimento do Windows e do Linux. Sistemas como MVS,
OS/390 e o próprio UNIX são muito mais antigos.

O sistema operacional, segundo Deitel, H. M.; Deitel, P.


J.; Choffnes, D. R. (2005), é um software que habilita as
aplicações a interagir com o hardware de um computador.
Seu componente central é o núcleo, também conhecido
como kernel. Os sistemas operacionais estão presentes
em telefones celulares, automóveis, eletrodomésticos,
computadores pessoais, além dos computadores de grande
porte ou mainframes (consultar glossário).

1
Unidade I

Na figura 1 é possível perceber a posição do sistema


operacional no contexto do computador. Assim, o sistema
operacional relaciona-se com os softwares instalados para que
estes tenham condição de interagir com os dispositivos do
5 hardware. Dessa forma, o sistema operacional atua como um
intermediário entre o usuário do computador e o hardware
(Silberschatz, A.; Peterson, J. L.; Gavin, P., 1992).

O sistema operacional faz a conexão entre os softwares


aplicativos e as necessidades que estes possuem de interagir
10 com o hardware. Assim os programadores de aplicações não
necessitam ter sólidos conhecimentos de gerenciamento de
memória ou de disco porque, hoje em dia, quem realiza essa
atividade é o sistema operacional, de forma automática. O
propósito de um sistema operacional é o de prover um ambiente
15 no qual o usuário pode executar programas de uma forma
conveniente e eficiente.

Aplicação Aplicação Jogos de


web cliente aventura Aplicativos

Compiladores Editor Interpretador


Sistema
Sistema operacional
Linguagem de máquina
Microprograma (BIOS) Hardware
Dispositivos físicos

Figura 1 — Baseado em Tanenbaum (1987). O sistema de um computador consiste


em hardware, sistema e aplicativos.

A partir da segunda metade do século XX, a computação


avançou de uma forma surpreendente. Os recursos de um
computador evoluem a taxas incríveis, ao mesmo tempo em
20 que o custo decresce. Os usuários de hoje, dos escritórios e das
empresas, têm a sua disposição computadores pessoais que
executam bilhões de instruções por segundo, e equipamentos
que executam trilhões de instruções por minuto já são realidade
— cifras consideradas impossíveis de serem alcançadas há
25 poucos anos.

2
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

Ao mesmo tempo em que o preço dos microprocessadores


foi baixando, ampliou-se o seu poder, a tal ponto que esses
dispositivos podem ser empregados em praticamente todas as
situações da vida moderna.

Quanto custa armazenar um megabyte durante um mês?

US$ 200
US$ 175
US$ 150

US$ 100
US$ 85
US$ 50
US$ 35
GB
US$ 0 US$ 3 US$ 0,01
1975 1980 1985 1990 2003*
*Custo estimado por gigabyte

Figura 2 — A evolução do armazenamento digital, segundo Siqueira (2004).

5 Nos computadores pessoais desenvolvemos a maior parte


das atividades relacionadas à vida moderna, como, por exemplo,
textos, planilhas e apresentações. Também é possível ouvir
música, assistir a vídeos, participar de comunidades virtuais e
utilizar uma infinidade de aplicações voltadas a proporcionar
10 mais comodidade aos usuários.

Há ainda outros dispositivos que possuem recursos de


microprocessamento embarcados, como os telefones celulares,
os aparelhos MP3 e os GPS.

O crescimento do número de dispositivos que possuem


15 acesso à rede e à ampliação das redes, com e sem fio, aumenta
a interatividade e propicia a comunicação entre pessoas
localizadas, muitas vezes, a uma grande distância umas das
outras. Esse fenômeno convergiu para a ampliação da Internet e

3
Unidade I

da World Wide Web como nunca. Esse crescimento promoveu a


criação e o desenvolvimento de uma infinidade de novos serviços
que revolucionam os negócios das empresas e demandam o
processamento de enormes quantidades de transações por
5 segundo. Isso quer dizer que os sistemas operacionais, que apoiam
essa estrutura altamente crítica de processamento, passam por
uma intensa transformação de papéis e responsabilidades.

Um sistema operacional como o de um software que controla


um hardware é uma definição da década de 1960. Há algum
10 tempo os sistemas operacionais evoluíram e passaram a exercer
mais papéis.

1.2 Componentes do sistema operacional

Figura 3 — Mainframe IBM System/360 Model 50.


Fonte: IBM.

Nos sistemas operacionais, os usuários requisitam ao


computador que realize uma determinada tarefa e o sistema
operacional gerencia o software e o hardware para chegar
15 à execução do que foi solicitado. Assim, quando um usuário
solicita a impressão de um documento, por exemplo, o sistema
operacional age no encaminhamento do documento até a
porta de impressão virtual onde está instalada uma impressora,
converte o arquivo para um formato que a impressora possa
20 entender e o envia para impressão, monitorando o feedback
do dispositivo para saber se o documento foi impresso ou se
ocorreu algum problema, como falta de papel, falta de tinta ou
toner, papel encravado, etc.

4
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

Outra forma de interação com o sistema operacional ocorre


através de uma aplicação chamada shell, que é um interpretador
e, na maioria dos casos, é implementado como interface de
texto.

Como ao sistema operacional estão reservadas as


tarefas mais intrínsecas do ambiente computacional, é
comum que para a maioria dos usuários pareça uma “caixa-
preta” (Deitel, H. M.; Deitel, P. J.; Choffnes, D. R., 2005). Eles
não entendem como a relação entre software e hardware –
como processador, memória, disco rígido, modem – assegura
a realização do trabalho correto.

5 O software que contém os componentes centrais do


sistema operacional chama-se núcleo ou kernel, em inglês.
Entre os componentes centrais do sistema operacional
destacam-se:

• escalonador de processos: determina o momento e o


10 período de tempo em que um processo é executado pelo
processador;
• gerenciador de memória: determina o momento e a
forma como a memória será cedida aos processos e o que
fazer quando a memória principal estiver cheia;
15 • gerenciador de E/S: atende às solicitações de entrada
e saída destinadas e provenientes dos dispositivos de
hardware;
• gerenciador de comunicação interprocessos (IPC):
permite que os processos se comuniquem entre si;
20 • gerenciador de sistema de arquivos: organiza as coleções
de dados gravados nos dispositivos de armazenamento
e fornece uma referência para acessar os dados nesse
dispositivo.

5
Unidade I

1.3 Evolução dos sistemas operacionais

1940

História

• Surgem os primeiros computadores digitais eletrônicos.


Esses equipamentos, porém, não possuíam um sistema
operacional.
5 • Programas eram submetidos em linguagem de máquina.
• É quando ocorre a introdução da perfuração de cartão
para armazenagem dos programas (ver figura 4).
• O Assembly (consultar glossário) foi desenvolvido para
agilizar o processo de programação.

Figura 4 — Este cartão perfurado, denominado “IBM Calculator Instruction Card”,


foi impresso no início da década de 1950, provavelmente para ser utilizado por
programadores do IBM 701.
Fonte: Jones [2000?].

1950

10 História

• Surge o primeiro sistema operacional, no início da década,


desenvolvido pelos laboratórios de pesquisa da General
Motors, para ser executado em seu computador IBM 701.
• O IBM 701 foi o primeiro equipamento da IBM para uso
15 geral.

6
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

• O IBM 701 executava apenas um “job” (consultar glossário)


de cada vez.

1960

História

• Deu-se início à multiprogramação (ver figura 5), quando


5 projetistas desenvolveram sistemas operacionais que
gerenciavam diversos jobs ao mesmo tempo.
Job 3
Job 2
Participação
Job 1 da memória
Sistema
operacional

Figura 5 – Um sistema multiprogramação com três jobs na memória.


Fonte: Tanenbaum, 1987.

• Em 1964 a IBM lançou a família System/360, que utilizava


o sistema operacional OS/360 e tinha a versatilidade de
possuir escalabilidade, ou seja, podia oferecer maior
10 capacidade à medida que o usuário necessitava fazer
crescer a série. Com isso, a IBM permitiu que a arquitetura
360 pudesse evoluir para séries superiores e posteriores,
como a série 370, a série 390 e, mais recentemente, a
zSeries, à medida que eram lançadas, possibilitando o
15 reaproveitamento, de maneira facilitada, dos códigos
escritos nas séries anteriores.
• Os usuários interagiam com o computador por meio
de “terminais burros”, ligados on-line diretamente ao
computador.
20 • Passou-se a focar a melhoria de produtividade e redução
de recursos humanos.
• Foram desenvolvidos sistemas de tempo compartilhado
(Time Sharing Systems) (consultar glossário) e sistemas
de tempo real (Real Time Systems) (consultar glossário).

7
Unidade I

• Vários sistemas operacionais de tempo compartilhado


foram desenvolvidos nessa época, tais como o CTSS
(Compatible Time Sharing System), desenvolvido pelo
MIT, o TSS (Time Sharing System), desenvolvido pela
5 IBM, o Multics, desenvolvido pelo MIT, GE e BELL para
ser o sucessor do CTSS, e o CP/CMS (Control Program /
Conversation Monitor System), que evoluiu para o VM
(Virtual Machine) da IBM, desenvolvido pelo Cambridge
Scientific Center da IBM.
10 • Os sistemas operacionais passaram a ser escritos em
linguagem de alto nível. O primeiro caso foi o Multics,
que foi escrito em PL1 da IBM.
• Na sequência, os projetistas da UNIX criaram o C com a
finalidade específica de desenvolver o UNIX. Famílias de
15 sistemas operacionais tiveram início a partir do UNIX,
como o Xenix e o Linux, que atualmente possui diversas
distribuições.
• Em 1965, programadores com certa experiência recebiam
US$ 4 por hora, enquanto o custo do aluguel da hora de
20 um computador de grande porte, que possuía capacidade
muito menor que a dos computadores pessoais de hoje,
era normalmente de US$ 500 (Deitel, H. M.; Deitel, P. J.;
Choffnes, D. R., 2005). Ver figura 6.

Relação valor-hora
Programador experiente X Tempo de utilização de
computador de grande porte
US$ 500
US$ 450
US$ 400
US$ 350
US$ 300
US$ 250 Custo do programador
US$ 200 Custo do computador
US$ 150
US$ 100
US$ 50
US$ 5
1985 1970 1975 1980 1985 1990 1995 2000 2005
Figura 6 — Simulação da relação do custo hora / homem X custo da hora de uso
de computador de grande porte.

8
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

1970

História

• Criação da interface gráfica com o usuário (GUI — Graphical


User Interface), desenvolvida pelo Palo Alto Research
Center (PARC) da Xerox. O primeiro sistema operacional
5 dotado de interface gráfica com o usuário se chamou Alto
(ver figuras 7a e 7b). Ele foi projetado e construído pela
Xerox e, embora a empresa tenha doado certa quantidade
para várias organizações, ela nunca vendeu nenhuma
licença do Alto.

Figura 7a — Xerox Alto Personal Computer (1973).


Fonte: DigiBarn.

10 • Nessa década os sistemas foram favorecidos pelos


desenvolvimentos anteriores. Tornaram-se multimodais
de multiprogramação, que suportava processamento em
lote, tempo compartilhado e aplicações de tempo real.
• Ocorreu o amplo uso do protocolo TCP/IP e as redes LANs
15 (Local Area Network) tornaram-se práticas e baratas a
partir da aplicação do padrão Ethernet desenvolvido no
Palo Alto Research Center (PARC) da Xerox. Com esses
avanços, as comunicações entre computadores ficaram
fáceis e a conectividade passou a ser mais frequente.

9
Unidade I

Figura 7b — Tela do Alto, primeiro sistema operacional dotado de interface gráfica


com o usuário, criado pela Xerox em 1973.
Fonte: DigiBarn.

• Nesse momento, os sistemas operacionais passaram


a oferecer serviços de configuração da rede e de
administração da segurança, e seu desempenho continua
crescendo.
5 • Os sistemas GUI foram amplamente explorados na década
de 1980 pela Apple e pela Microsoft.

1980

História

• O sistema Apple II teve uma aceitação extraordinária.


• A IBM lança o Personal Computer (PC) em 1982 e a Apple
10 lança a sua versão de computador pessoal (ver glossário),
batizado de Macintosh, em 1984.
• O poder de processamento dos microprocessadores cresceu
de tal forma nessa década, que os computadores pessoais
possuíam um poder de processamento equivalente ao dos
15 computadores de grande porte da década anterior.
• Em 1981 a Microsoft lançou a primeira versão do MS-
DOS para computadores pessoais IBM. A versão da IBM
chamava-se DOS.

10
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

• O sistema operacional MS-DOS representou um marco


na indústria de software, porque permitiu que os
fabricantes desse produto o rodassem no computador
com muito mais facilidade do que até então era
5 conseguido com os demais sistemas operacionais
existentes. A grande redução de trabalho que o MS-
DOS proporcionou aos fabricantes de software se deu,
principalmente, com o uso das Interfaces de Programação
de Aplicativos (API), que os programadores utilizavam
10 para realizar manipulações detalhadas de hardware e
outras operações. Dessa forma, os programadores de
aplicações não necessitariam mais mexer com questões
complexas de software, como o gerenciamento da
memória do computador pessoal e os acessos a seus
15 dispositivos de entrada / saída (ver figura 8).

Aplicação Aplicação Aplicação

Espaço do usuário
Espaço do núcleo
Interface de
chamada ao sistema

Componentes
do sistema
operacional

Processador
Figura 8 — Interação entre aplicações e o sistema operacional, segundo Deitel, H.
M.; Deitel, P. J.; Choffnes, D. R. (2005).

• Nesse momento ocorreu uma enorme revolução na


utilização dos recursos digitais, pois indivíduos sem
formação tecnológica e pequenas e médias empresas
passaram a ter seus próprios computadores exclusivos,
20 que também podiam transmitir dados entre sistemas de
forma rápida e econômica.

11
Unidade I

• Softwares aplicativos, como planilhas eletrônicas e editores


de texto, ganharam espaço e auxiliaram as empresas a
ganhar produtividade.
• Boa parte dos usuários de computadores pessoais passou
5 a utilizar correio eletrônico, transferência de arquivos e a
acessar bancos de dados remotos.
• Surgiu estão a computação distribuída, que deu origem à
arquitetura cliente/servidor (ver figura 9).
• Em meados dessa década, a Microsoft desenvolveu sua
10 plataforma GUI, o Windows, que ainda não atuava como
sistema operacional porque era executado de forma
“sobreposta” ao DOS.

Rede

Estação
cliente Servidor
Figura 9 – Ambiente cliente / servidor. O cliente solicita a informação a partir de
um aplicativo instalado na estação.

1990

História

• No final desta década, um computador pessoal podia


15 executar várias centenas de milhões de instruções por
segundo (MIPS) enquanto armazenava mais de 1Gb em disco
rígido.
• A Internet levou a uma enorme ampliação na popularidade
da computação distribuída.
20 • Em 1990 a Microsoft lançou o Windows 3.0, que
apresentava grande funcionalidade.

12
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

• O Windows tornou-se popular a partir de 1993, com o


lançamento do Windows 3.1. Os sucessores, o Windows
95 e o Windows 98, praticamente dominaram o mercado,
ainda nessa década.
5 • Usuários domésticos e empresas passaram a aumentar
sua produtividade com o uso dos computadores pessoais
ligados em rede.
• A Microsoft tornou-se dominante nessa época.
• O Windows “tomou emprestados” muitos dos conceitos
10 do Macintosh, como ícones, menus e janelas, habilitando
os usuários a utilizar múltiplas aplicações concorrentes de
forma muito fácil.
• Em 1993 a Microsoft decidiu entrar no mercado de
sistemas operacionais corporativos e lançou o Windows
15 NT.

2000

História

• Ocorre a disponibilidade da Internet de alta velocidade,


a preço acessível, através de diversas mídias, como par
metálico telefônico, redes de cabo coaxial das companhias
20 de TV a cabo, satélite e celular.
• Surgem os microprocessadores com mais de um núcleo,
o que agrega uma forte ampliação da capacidade de
processamento dos computadores pessoais e notebooks.
• Linguagens de programação, como o Java, predispõem ao
25 surgimento da computação paralela.
• Diferentemente dos sistemas e computadores da década
de 1960, que processavam suas instruções de forma
sequencial, ou seja, uma após a outra, na computação
paralela o processamento de uma determinada tarefa se
dá enquanto o processador processa outras informações
e gerencia diversos dispositivos.

13
Unidade I

• Surgem sistemas operacionais de código aberto, como


o FreeBSD, OpenBSD e Linux, baseado no GNU (General
Public Licence) - criado pela Free Software Foundation
-, que é um conceito da década de 1980, desenvolvido
5 por seu fundador, Richard Stallman. Ele especifica que
qualquer pessoa pode modificar e redistribuir software
livremente sob sua licença, desde que as modificações
sejam claramente especificadas e que qualquer outro
derivado do software também seja livre.
10 • Tornou-se possível configurar e registrar as preferências
do perfil dos usuários, o que faz com que o sistema
operacional se ajuste a essas preferências toda vez
que o usuário realize sua autenticação no sistema
operacional.
15 • Características do tipo “plug-and-play” foram adicionadas
aos sistemas operacionais. Elas habilitam os usuários a
adicionar e remover dispositivos do sistema operacional
sem a necessidade de reconfigurá-los manualmente a
cada nova ação.
20 • Os projetistas preparam sistemas operacionais
padronizando as interfaces com os usuários, como, por
exemplo, no caso da adoção do sistema de janelas e ícones
também por outros sistemas operacionais, como o Linux e
suas distribuições, e pelo próprio UNIX.
25 • Surge a computação móvel, proporcionada por dispositivos
como telefones celulares, smartphones e PDAs, que passam
a ser dotados de processadores cada vez mais poderosos,
dando oportunidade para a criação de novos sistemas
operacionais que poderão estar associados a questões
30 muito específicas.
• A proliferação dos dispositivos móveis deve-se em parte
à evolução da amplitude e velocidade e à redução de
custo dos serviços de comunicação de dados para esses
dispositivos.

14
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

1.4 Conceitos básicos sobre processador,


memória e armazenamento secundário

Processador: boa parte dos sistemas operacionais


depende do processador para gerenciar o seu mecanismo
de proteção, de forma a impedir alguns processos de acessar
informações privilegiadas ou memória que não lhe foi alocada.
5 É um componente do hardware que executa um conjunto de
instruções em linguagem de máquina, objetivando a execução
eficiente de uma atividade específica. Os processadores podem
atuar também como CPU (Unidade Central de Processamento),
como um coprocessador gráfico, etc.

10 Memória principal: é a RAM (Random Access Memory).


Consiste em uma memória volátil e de acesso aleatório. Ser
volátil significa que perde seus dados quando o computador é
desligado. Quanto ao acesso aleatório, permite que os processos
possam realizar pesquisas em qualquer ordem para a localização
15 de dados. O sistema pode impedir esses processos de acessar
endereços de memória que não lhe foram atribuídos, fornecendo
registradores de limite que especificam o endereço de início e de
fim da memória atribuída a um processo.

Memória

As memórias DRAM (RAM Dinâmica) são os tipos mais comuns


20 de memória RAM. Elas precisam ser acessadas, obrigatoriamente,
de tempos em tempos para que o conteúdo não seja perdido.
As memórias SRAM (RAM Estática), normalmente utilizadas
como caches de processador, não precisam ser acessadas
periodicamente, são mais rápidas e também mais caras que as
memórias DRAM.

15
Unidade I

Hierarquia das memórias:

• registradores: estas memórias, muito rápidas, operam


na velocidade do processador, estão incorporadas no
próprio processador e guardam dados para uso imediato
5 por ele;
• cache: as memórias cache são divididas em L1 e L2 – e
às vezes em L3 – e são integradas aos processadores
mais novos para poder explorar as interconexões de alta
velocidade. Muitos megabytes são transferidos entre a
10 cache e o processador antes de estarem disponíveis para
a memória principal. Possuem uma latência (tempo de
resposta) superior à dos registradores;
• memória principal ou memória primária: é memória
volátil com maior capacidade de armazenamento e acesso
15 mais lento que a dos registradores e a da cache;
• armazenamento secundário: é a forma de
armazenamento mais lenta, porém com maior capacidade
de armazenamento. São os discos rígidos, CD, DVD, etc.

Latência (em ciclos do processador)


0 Registradores Registradores
2-3 SRAM Cache L1
~10 SRAM Cache L2
~30 DRAM Memória principal
Disco rígido Armazenamento
~106 CD secundário e
DVD terciários

Figura 10 – Hierarquia da memória.


Fonte: Deitel, H. M.; Deitel, P. J.; Choffnes, D. R. (2005).

20 Novos desenvolvimentos dos fabricantes tendem a possibilitar


o emprego de memórias mais velozes e de maior capacidade,
com custo menor, respeitando a “Lei de Moore”.

16
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

Essa lei, que é uma “profecia” feita na década de 1970 por


Gordon Moore, um dos fundadores da Intel, previa que a potência
dos processadores dobraria a cada 18 meses. Ela sobreviveu
por mais de duas décadas e ainda não parece estar totalmente
5 desgastada, apesar do ciclo evolutivo dos transistores estar
chegando ao fim e novas tecnologias estarem sendo estudadas.

Armazenamento secundário: devido a sua capacidade


limitada e a sua volatilidade, a memória principal não é adequada
para armazenar grandes quantidades de dados ou por muito
10 tempo, ou ambos. Para realizar o armazenamento de grandes
quantidades de dados, de forma permanente, como arquivos
e softwares, o computador usa o armazenamento secundário.
Esse armazenamento se dá, normalmente, no disco rígido ou no
pen drive. Apesar de custar menos e armazenar mais do que as
15 memórias RAM, não possui a mesma velocidade de acesso.

Disco rígido

1.5 Sistema monousuário: monotarefa e


multitarefa. Sistema multiusuário

Sistema monousuário e monotarefa — Este se dá quando


o sistema operacional permite que apenas um usuário execute
uma tarefa de cada vez. Um bom exemplo são os sistemas
operacionais de boa parte dos telefones celulares e também o
20 sistema operacional PALM OS.

Telefone celular

17
Unidade I

Sistema monousuário e multitarefa — É o caso do usuário


que utiliza um computador pessoal em casa ou no escritório.
Essa situação configura um ambiente monousuário, porque
apenas um usuário acessa o computador pessoal em cada
5 momento. Contudo, sistemas operacionais como Windows XP,
Windows Vista e Linux permitem que esse usuário utilize muitas
tarefas simultaneamente, como, por exemplo, acessar e-mails
enquanto visita alguns sites e verifica os dados de uma planilha,
ouvindo uma rádio na Internet.

10 Sistema multiusuário — É o sistema operacional comumente


encontrado nos servidores (ver figura 11), em que uma série de
usuários pode estar realizando tarefas concorrentes e acessos a
informações de banco de dados sem que um interfira no trabalho
do outro. Um exemplo é o Windows XP Server 2003 ou o UNIX.

Servidor

Estação Estação

Estação Estação

Estação Estação
Estação
Figura 11 — Sistema multiusuário

1.6 Chamadas ao sistema

15 Desde a década de 1980, os sistemas operacionais


incorporaram as Interfaces de Programação de Aplicativo ou
API (Application Programming Interfaces). As APIs (ver figura

18
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

12) fornecem rotinas que os programadores podem utilizar


no desenvolvimento de softwares para requisitar serviços
ao sistema operacional, por exemplo, para realizar uma
impressão ou gravar um determinado conteúdo em disco.
Essas chamadas das APIs, que executam rotinas numa camada
5 mais baixa do sistema, são conhecidas como “chamadas ao
sistema”.

Aplicação

API

Espaço do usuário
Interface de chamada ao sistema
Espaço do núcleo

Memória Disco

Figura 12 — Interface de programação API.


Fonte: Baseado em Deitel, H. M.; Deitel, P. J.; Choffnes, D. R. (2005).

1.7 Sistemas com compartilhamento de tempo


(Time-Sharing)

Um sistema com compartilhamento de tempo (Time-


Sharing), também conhecido como multitarefa (Silberschatz,
A.; Peterson, J. L.; Gavin, P., 1992), é uma extensão lógica da
10 mutiprogramação (ver figura 5). Vários jobs sãos executados
pela CPU, que comuta o processamento de cada job. O sistema
Time-Sharing foi desenvolvido para prover interatividade no uso
dos computadores pessoais a um custo acessível.

Um sistema Time-Sharing utiliza o gerenciamento e a


15 multiprogramação da CPU para prover a cada usuário uma
pequena porção de tempo compartilhado de processamento.

19
Unidade I

1.8 Sistemas distribuídos

O processamento distribuído de dados (ver figura 13)


compreende a ação de um conjunto de processadores
interconectados, de tal forma a permitir a descentralização dos
recursos e prover um ambiente para a execução de programas
5 de aplicação.

Processador Memória Processador


0 principal 1

Seletor de
E/S

Interface de
E/S

Impressoras
Terminal Disco
Estação de Estação de Estação de Estação de
trabalho trabalho trabalho trabalho

Figura 13 — Organização interna de um processador dual.


Fonte: Baseado em Dahmke (1983).

A maior vantagem desse sistema é que, em caso de falha de


hardware de qualquer dos processadores, o outro pode assumir
as funções e continuar os seus trabalhos. Essa característica
aumenta a confiabilidade no sistema.

1.9 Sistemas de tempo real

10 São sistemas utilizados normalmente como um dispositivo


de controle rodando em uma aplicação dedicada.

1.10 Bootstrap

Para que um sistema operacional possa começar a gerenciar


os recursos de um computador, é necessário que ele esteja
carregado na memória no momento da inicialização do
15 computador.

20
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

2 GERENCIAMENTO DE PROCESSOS

2.1 Conceituação de processos

O gerenciamento de processos ocorre porque o sistema, quando


intercala a execução de um determinado processo, deve conseguir
administrá-lo cuidadosamente para que possa reiniciá-lo quando
ele for retomado. Os processos devem possuir a capacidade de
5 poder comunicar-se com o sistema operacional, de forma que
possam informar, por exemplo, o fim da execução do processo.

2.2 Condições de corrida e regiões críticas

Alguns sistemas operacionais permitem que processos que


trabalham de forma simultânea frequentemente compartilhem
o mesmo armazenamento. Esse armazenamento pode ocorrer
na memória principal ou pode ser um arquivo compartilhado.

10 A natureza do armazenamento não elimina a região crítica


quando ocorre o risco de problema (ver figura 14). Segundo
Tanenbaum (1987), onde dois ou mais processos estão lendo
ou gravando um dado compartilhado, localizado no mesmo
endereço de memória principal ou secundária, pode ocorrer uma
15 “condição de corrida” (race condition) ou “condição de disputa”
(Deitel, H. M.; Deitel, P. J.; Choffnes, D. R., 2005). Essa situação
deve ser evitada porque pode causar erros em aplicações que
serão difíceis de identificar.

Processador Memória Processador


0 principal 1

Seletor de
E/S

Interface de
E/S

Impressoras
Terminal Disco
Estação de Estação de Estação de Estação de
trabalho trabalho trabalho trabalho
Figura 14 — Dois processos procuram acessar a memória compartilhada ao mesmo
tempo.
Fonte: Baseado em Tanenbaum (1987).

21
Unidade I

Para prever o aparecimento das regiões críticas, deve-se


encontrar um meio de proibir que mais de um processo leia ou
grave os dados compartilhados no mesmo momento e no mesmo
endereço. Assim, é necessário garantir que, se um processo
5 estiver utilizando uma variável ou arquivo compartilhado, o
outro processo será impedido de realizar a mesma tarefa.

2.3 Concorrência e sincronização

2.3.1 Processos concorrentes

Os processos no sistema podem ser executados de maneira


concorrente. Isso quer dizer que muitos processos podem ser
multitarefa em uma CPU. Existem várias razões que justificam
10 permitir as execuções concorrentes:

• compartilhamento de recurso físico: os recursos


de hardware do computador são finitos e podem ser
compartilhados, tornando o ambiente multiusuário;
• compartilhamento de recursos lógicos: muitos
15 usuários podem estar interessados no mesmo fragmento
de informação, que pode ser provida em um ambiente
que permita o acesso concorrente a esses recursos;
• aumento de velocidade da computação: quando
se deseja que uma tarefa específica seja executada
20 rapidamente, quebra-se essa tarefa em subtarefas e uma
a uma elas são executadas paralelamente a outras;
• modularidade: quando ocorre a construção de sistemas
em padrão modular, dividindo-se as funções em processos
distintos;
25 • conveniência: o usuário pode querer ter muitas tarefas
para trabalhar ao mesmo tempo. Um exemplo disso é
quando os usuários podem estar editando, imprimindo e
compilando de forma concorrente.

22
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

2.3.2 Sincronização

Serão apresentadas algumas instruções simples de hardware


que podem ser executadas em muitos sistemas. Essas instruções
especiais podem ser usadas para resolver os problemas de
regiões críticas com relativa simplicidade. Uma instrução pode
5 ser definida na forma que segue:

function test-and-set (var target: boolean): boolean;


begin
test-and-set: = target;
target: = true;
10 end;

2.4 Monitores e semáforos

2.4.1 Monitores

Para facilitar o processo de escrever programas de forma


correta, foi proposta uma sincronização de alto nível chamada
“monitor”. Um monitor é uma coleção de procedures, variáveis e
estruturas de dados que são agrupados em um tipo especial de
15 pacote. Processos podem chamar as procedures em um monitor
se necessitarem, mas não terão acesso às estruturas de dados
internos de uma procedure declarada fora do monitor.

2.4.2 Semáforos

Como resultado para a dificuldade com as regiões críticas,


existe uma ferramenta de sincronização chamada semáforo.
20 O semáforo é um contador e é usado quando o recurso a
ser utilizado pertence a um conjunto de recursos idênticos. É
uma variável inteira, maior que zero, que é acessada apenas
por duas operações: P (wait) e V (signal). O P decrementa
1, quando um recurso é removido do conjunto e está em
25 uso pela thread. O V acrescenta 1, o que indica que a thread
devolveu um recurso.

23
Unidade I

2.5 Comunicação interprocessos

Ocorre quando há a necessidade de que os processos se


comuniquem uns com os outros.

2.6 Escalonamento de processador

O escalonamento de processador ocorre quando existe uma


política do sistema para escolher quais processos executar. A
5 política de escalonamento deve atender algumas premissas
ligadas a desempenho e maximização do número de processos
executados, reduzir o tempo de latência (tempo de espera antes
da execução), evitar antecipação indefinida de processos e
aperfeiçoar o uso do(s) processador(es).

3 GERENCIAMENTO DE MEMÓRIA

3.1 Conceituação

10 O gerenciamento de memória estabelece a estratégia de


otimização da memória diante da carga que esta sofrerá,
e é normalmente realizado via software ou hardware. O
gerenciamento de memória é um recurso importante do
sistema operacional, pois estabelece como os espaços de
15 memória disponíveis serão alocados para os processos
e como irá se atender as requisições de memória de um
processador.

3.2 Swapping

Compreende um esquema de troca no qual os processos


não permanecem na memória principal até o final de sua
20 execução. Sendo assim, enquanto o processo aguarda
uma E/S, é substituído por outro processo na memória,
para retornar assim que a ação de E/S estiver concluída.
Quando ocorre a retirada do processo da memória, o sistema
armazena o processo num armazenamento temporário

24
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

(swap out). Assim que o sistema recupera o processo (swap


in) do armazenamento secundário ocorre a continuação do
processamento. O sistema operacional normalmente realiza
o swap out e o swap in muitas vezes antes de terminar a
5 execução do processo.

3.3 Memória virtual

Os sistemas de memória virtual dão aos processos a


impressão de que há mais memória disponível do que de
fato existe instalada. Para o propósito deste tópico o aluno
deve saber que há dois tipos de endereços nos sistemas
10 de memória virtual: os propostos pelos próprios processos
(endereço virtual) e os disponíveis na memória principal
(endereço real).

Toda vez que um processo acessar um endereço virtual, o


sistema operacional o converterá em um endereço real.

15 O propósito desse recurso é aperfeiçoar o uso da memória,


porque memórias principais são rápidas, mas muito caras. Por
isso, construir um sistema totalmente pensado para se alojar
na memória principal é inviável, dada a limitação de tamanho
que esse sistema necessariamente teria. Portanto, uma opção
20 interessante é criar a ilusão de que há mais memória utilizando-
se o espaço do armazenamento secundário.

Endereço
Endereço virtual
real

Processador
Memória
Disco

Mecanismo de
mapeamento
de endereços

Figura 15 — Mapeamento de endereços reais e virtuais.


Fonte: Baseado em Deitel, H. M.; Deitel, P. J.; Choffnes, D. R. (2005).

25
Unidade I

3.4 Segmentação

Na segmentação de memória física, os dados e instruções de


um programa são divididos em blocos, denominados segmentos.
Cada segmento pode conter um fragmento do conteúdo que
deve ser armazenado, sem a obrigação de que os blocos tenham
5 o mesmo tamanho, conforme figura 16.

Memória principal

Sistema operacional
10KB Livre

8KB
12KB Livre
10KB 36KB

18KB

20KB Livre Requisitos de espaço


do processo que está
chegando

Figura 16 — Alocação de memória contígua em um sistema de segmentação de


memória real.
Fonte: Baseado em Deitel, H. M.; Deitel, P. J.; Choffnes, D. R. (2005).

26