Escolar Documentos
Profissional Documentos
Cultura Documentos
OPERACIONAIS
Autor
Carlos Eduardo Moreno
Indaial – 2022
1a Edição
Copyright © UNIASSELVI 2022
Elaboração:
Carlos Eduardo Moreno
SISTEMAS
OPERACIONAIS –
INTRODUÇÃO
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
• Entender os conceitos históricos relacionados à evolução dos sistemas
operacionais;
• Compreender os conceitos de sistemas operacionais;
• Entender os serviços que envolvem os sistemas operacionais;
• Compreender as chamadas de sistema.
PLANO DE ESTUDOS
A cada tema de aprendizagem desta unidade, você encontrará autoativida-
des com o objetivo de reforçar o conteúdo apresentado.
TEMA DE APRENDIZAGEM 1 – INTRODUÇÃO AO ESTUDO DE SISTEMAS OPE-
RACIONAIS
TEMA DE APRENDIZAGEM 2 – GERÊNCIA DO PROCESSADOR
TEMA DE APRENDIZAGEM 3 – PROGRAMAÇÃO CONCORRENTE
TÓPICO 1
INTRODUÇÃO
AO ESTUDO
DE SISTEMAS
OPERACIONAIS
1 INTRODUÇÃO
Um sistema computacional é um conjunto indissolúvel formado por hard-
ware e software. Sendo assim, individualmente, cada um deles não tem serventia.
O hardware é formado pela conjunção dos elementos físicos do sistema (processa-
dor, memória, placas de interface, periféricos etc.), e o software é composto pelos
comandos a serem dados ao hardware para a execução do processo de computa-
ção.
Entre os elementos do software, encontra-se um conjunto de programas
destinados a servir de interface entre o usuário e o hardware. A esse conjunto de
programas, dá-se o nome de “sistema operacional”. Entre as atribuições do sistema
operacional, está o fornecimento de um ambiente adequado para que os usuários
possam executar programas de forma eficiente e conveniente.
Também é tarefa do sistema operacional a garantia da integridade do siste-
ma de computação, evitando operações incorretas e quebra da estrutura do siste-
ma. Assim, o hardware deve possuir estruturas adequadas para garantir o correto
funcionamento do sistema operacional.
Uma vez que o sistema operacional é vinculado diretamente ao hardware,
para cada hardware há uma versão específica dele. Essas versões podem ser total-
mente diferentes, como é o caso de linhas de processadores diferentes (Powerpc,
Intel e Spark) ou parcialmente diferentes, quando se trata de pequenas alterações
de hardware (placas de vídeo, placas de som, impressoras etc.), nas quais somente
alguns arquivos são alterados (drivers).
13
Entretanto, os sistemas operacionais partem de um conjunto de tarefas co-
muns. Assim, pode-se dizer que o sistema operacional tem como funções básicas:
extensão da máquina e gerenciamento de seus recursos.
Fonte: o autor
14
Figura 2 – Dispositivos e periféricos
Fonte: https://img.freepik.com/vetores-gratis/colecao-de-icones-isometrica-de-
-dispositivos-modernos-com-dezesseis-imagens-isoladas-de-perifericos-de-
-computadores-e-varias-ilustracoes-de-eletronicos-de-consumo_1284-29118.
jpg?w=740&t=st=1666622496~exp=1666623096~hmac=eaaf4881c40620ba-
464f170a81d88e5dd098fa502ba2efeff1aa0e7678863c62. Acesso em: 2 dez. 2022.
15
Para que fosse possível operar essas máquinas, um programador deveria
reservar a máquina e inserir o painel com a programação no computador com o
programa já pré-elaborado. Assim, no início dos anos de 1950, surgiram os primei-
ros cartões perfurados, o que tornou possível construir programas nesses cartões
para, depois, serem carregados por meio de uma leitora de cartões específica.
16
Figura 4 – Processamento em lotes (batch)
17
• ser eficiente para qualquer uso.
18
80486); mais tarde, o Pentium e o Pentium PRO. O sucessor do MS-DOS, o Windo-
ws, originalmente rodava sobre o DOS e era mais como uma shell do que um SO.
Em 1995, a Microsoft lançou uma versão independente, o Windows 95, de
modo que o MS-DOS deixou de ser utilizado com suporte do Windows.
O Unix, já em sua versão multiusuário, dominava as estações de trabalho e
em outros computadores topo de linha, como os servidores de rede.
Um desenvolvimento importante iniciado em meados da década de 1980
foi o crescimento das redes de computadores pessoais que executavam sistemas
operacionais de rede e sistemas operacionais distribuídos. Em alguns sistemas
operacionais de rede, os usuários estão cientes da existência de múltiplos com-
putadores e podem se comunicar, se conectar com máquinas e copiar arquivos
de uma máquina para outra. Cada máquina executa localmente seu SO e tem seu
próprio usuário (ou usuários).
19
de aplicação. Seus módulos são construídos para atender a requisitos
de tempo (ex.: controle de uma caldeira, de um míssil, do metrô, bolsa
de valores etc.).
20
próprio sistema. Esse conjunto de rotinas é chamado de “núcleo do sistema” ou
“kernel” (cérebro). As principais funções do núcleo são:
• tratamento de interrupções;
• criação e eliminação de processos;
• sincronização e comunicação entre processos;
• escalonamento e controle dos processos;
• gerência de memória;
• gerência do sistema de arquivos;
• operações de entrada e saída;
• contabilização e segurança do sistema.
21
Figura 5 – System Call
Fonte: o autor
Para cada serviço, existe um system call associado; cada SO tem o seu
próprio conjunto (biblioteca) de chamadas, com nomes, parâmetros e formas de
ativação específicas.
Os system calls podem ser divididos em grupos de funções. Vejamos o qua-
dro a seguir.
Fonte: o autor
22
5.1.2 MODOS DE ACESSO
Para manter a integridade do sistema, nem todas as instruções podem es-
tar disponíveis para as aplicações. Suponha que uma aplicação deseja gravar um
arquivo em disco. Como o disco é um recurso compartilhado, sua utilização deverá
ser realizada unicamente pelo SO, evitando que a aplicação tenha acesso a qual-
quer área do disco indiscriminadamente, o que poderia comprometer a segurança
do sistema. As operações que envolvem dispositivos de entrada/saída são sempre
efetuadas pelo SO para que não ocorram problemas com os aplicativos.
As instruções que têm o poder de comprometer o sistema são conhecidas
como “instruções privilegiadas” e as que não oferecem perigo, como “instruções
não privilegiadas”.
Para que uma aplicação execute uma instrução privilegiada, o processador
implementa o mecanismo de modos de acesso. Esses modos são divididos em dois:
Fonte: o autor
23
5.2 ORGANIZAÇÃO DOS SISTEMAS OPERACIONAIS
Projetar um sistema operacional requer a escolha de uma forma de organi-
zação para que as rotinas do SO possam operar adequadamente sem comprometer
a performance e mantendo a integridade do sistema.
Fonte: o autor
24
5.2.2 SISTEMAS EM CAMADAS
Como o próprio nome diz, é aquele em que o Sistema Operacional é dividi-
do em camadas sobrepostas. Cada módulo oferece um conjunto de funções que
podem ser utilizadas por outros módulos. Módulos de uma camada podem fazer
referência apenas a módulos das camadas inferiores.
A vantagem da estruturação em camadas é isolar as funções do SO, facili-
tando sua alteração e depuração, além de criar uma hierarquia de níveis de modos
de acesso, protegendo as camadas mais internas.
25
NOTA
Sistema operacional pode ser definido como um conjunto de programas
que gerenciam recursos, processadores, armazenamento, dispositivos de
entrada e saída e dados da máquina e seus periféricos.
26
RESUMO DO TÓPICO 1
27
AUTOATIVIDADE
28
d. ( ) O sistema operacional é que irá determinar a prioridade do uso
dos recursos de software e irá monitorar a disponibilidade destes.
Para o usuário, torna-se transparente em qual localização da me-
mória encontra-se determinado aplicativo ou como será monito-
rada a instrução enviada por meio do mouse.
29
TÓPICO 2
GERÊNCIA DO
PROCESSADOR
1 INTRODUÇÃO
A evolução do hardware tornou o computador mais barato, aumentou a
quantidade de recursos disponíveis e popularizou seu uso. Em contrapartida, essa
evolução exigiu que os sistemas operacionais o acompanhassem, incluindo em
suas estruturas as interfaces gráficas e o uso do mouse.
A criação das redes de computadores exigiu que os sistemas operacionais
tivessem funções específicas de controle e segurança, o que aumentou sua com-
plexidade intrínseca.
• sistemas monoprogramáveis/monotarefas;
• sistemas multiprogramáveis /multitarefas.
30
serviram de base para o desenvolvimento dos primeiros sistemas operacionais dos
computadores pessoais, uma vez que somente um usuário teria acesso à máquina,
não exigia-se segurança e não havia capacidade de processamento para mais de
uma tarefa. Vejamos o quadro a seguir, com as vantagens e desvantagens desse
sistema.
Vantagens Desvantagens
Fonte: o autor
31
Quadro 3 – Vantagens e desvantagens do sistema multiprogramável / multitarefa
Vantagens Desvantagens
Fonte: o autor
• sistema batch;
• sistema de tempo compartilhado;
• sistema de tempo real.
32
Figura 8 – Esquema de layout de memória de um sistema batch
Fonte: o autor
33
tado e, assim, retorna ao primeiro job.
34
temas críticos, o tempo de resposta exigido no processamento das aplicações é
muito rígido, não possibilitando utilizar o conceito de time- slice.
A principal função dos sistemas operacionais desse tipo é a de assegurar
o máximo de confiabilidade ao processo controlado, com o mínimo de intervenção
humana. Na eventualidade de um defeito do hardware, espera-se que o sistema
“falhe com a segurança”, ou seja, que haja uma degradação parcial das funções.
Além das situações já citadas, esse tipo de sistema está presente em con-
trole de processos, como monitoramento de refinaria de petróleo, controle de trá-
fego aéreo e controle de usinas termelétricas e nucleares.
No quadro a seguir, podemos conhecer a classificação dos sistemas de
tempo real de acordo com o tipo de aplicação. Acompanhe.
Tipo Descrição
Sistemas de tempo real crítico São aqueles que devem garantir que as
tarefas consideradas críticas sejam exe-
cutadas a tempo.
Com o objetivo de atingir essa meta,
todos os atrasos no sistema devem ser
controlados.
Todos os tempos de recuperação dos
dados armazenados, transmissão ao
processador, processamento e resposta
do sistema operacional devem estar de
acordo com o limite estabelecido para a
aplicação.
Por conta dos limites de tempo de res-
posta, não é possível usar esses siste-
mas de forma compartilhada.
São indicados para os casos em que
qualquer atraso de resposta pode cau-
sar danos significativos, como é o caso
da robótica e dos controles de processos
industriais.
35
Sistemas operacionais de tempo A tarefa crítica tem prioridade sobre as
real não crítico demais tarefas e mantém essa priorida-
de até ser concluída.
Seu uso está limitado a aplicações em
que pequenos atrasos não causem da-
nos graves, como é o caso dos sistemas
multimídias e da realidade virtual.
Fonte: o autor
36
Figura 9 – Sistemas com múltiplos processadores
Fonte: o autor
37
Quadro 5 – Classificação dos sistemas fortemente acoplados quanto à simetria entre processadores
Tipo Descrição
Fonte: o autor
38
3.2 SISTEMAS FRACAMENTE ACOPLADOS
Nesse caso, dois ou mais sistemas de computação são conectados por
meio de linhas de comunicação. Cada sistema funciona de maneira independente,
com seu próprio processador, memória, dispositivos de I/O e sistemas operacionais.
Os sistemas fracamente acoplados podem ser classificados segundo o
compartilhamento de recursos e dados em sistemas operacionais de rede e siste-
mas operacionais distribuídos. Observe o quadro a seguir.
Tipo Descrição
Sistemas operacio- Cada nó (computador) tem seu próprio sistema operacional, hardware
nais de rede e software, que possibilitam ao sistema ter acesso a outros componen-
tes da rede, compartilhando seus recursos.
• emulação de terminal;
• impressão remota;
• gerência remota;
• correio eletrônico.
39
Sistemas operacio- Também possui cada componente da rede com seu sistema opera-
nais distribuídos cional, processador, memória e dispositivos de I/O. Entretanto, o forte
relacionamento existente entre os componentes dos sistemas e o uso
do mesmo sistema operacional em cada nó é o que o diferencia dos
sistemas em rede.
Fonte: o autor
4 MULTIPROCESSADORES EM SISTEMAS
FORTEMENTE ACOPLADOS
Os computadores apresentam a característica de serem máquinas sequen-
ciais nas quais o processador executa uma instrução por vez. Entretanto, sob a
ótica do hardware, essa característica não é real, uma vez que múltiplos sinais es-
40
tão ativos simultaneamente e, dessa forma, pode-se entender o processo como
paralelismo.
A necessidade de sistemas mais velozes e com maiores capacidades de
processamento fez com que os conceitos do paralelismo e da simultaneidade fos-
sem aplicados ao processador, fazendo com que uma determinada tarefa fosse
dividida em mais de um processamento ao mesmo tempo (pipeline).
Com a implementação de sistemas com múltiplos processadores, o concei-
to de simultaneidade ou paralelismo pode ser expandido a um nível mais amplo, em
que uma tarefa é dividida e executada ao mesmo tempo por mais de um processa-
dor, introduzindo o conceito de multiprocessamento.
O multiprocessamento pode ser analisado sob duas óticas:
• processamento vetorial;
• processamento paralelo.
FOR i := 1 TO N DO C[i]
:= A[i] + B[i];
41
4.2 PROCESSAMENTO PARALELO
Permite que uma aplicação seja executada em mais de um processador ao
mesmo tempo. Só existe ganho de tempo se a aplicação puder ser executada em
pares independentes para execução simultânea.
Vamos a um exemplo
42
4.3.1 BARRAMENTO COMUM
É a forma mais simples de fazer a comunicação entre os processadores e
as unidades funcionais. Esse tipo de organização apresenta alguns problemas, tais
como:
43
5 MULTIPROCESSADORES EM SISTEMAS
FRACAMENTE ACOPLADOS
Nos anos 1980, os sistemas operacionais e suas aplicações utilizavam os
computadores de grande porte com um ou mais processadores. Os operadores,
nesse sistema, utilizavam terminais não inteligentes conectados por meio de linhas
seriais dedicadas ou linhas telefônicas públicas para se comunicar com o compu-
tador.
A evolução tecnológica determinou uma nova configuração dos sistemas de
computação, chamada “rede de computadores” (computer network).
Em uma rede de computadores, existem um ou mais sistemas independen-
tes e capacidade própria de processamento — nós, host ou estações —, que estão
interligados pelas linhas de telecomunicações. Dependendo do grau de interligação
dos nós dentro da rede, os sistemas podem ser classificados em dois tipos: siste-
mas operacionais de rede e sistemas operacionais distribuídos.
5.1.1 BARRAMENTO
Os sistemas são conectados por uma única linha de comunicação, e todos
compartilham o mesmo meio. Nessa topologia, caso haja algum problema no meio
de transmissão, todos os nós da rede ficarão incomunicáveis.
44
NOTA
A gerência do processador permite garantir o uso adequado do proces-
sador para atender a diversos processos em execução pelo sistema ope-
racional.
45
RESUMO DO TÓPICO 2
46
AUTOATIVIDADE
47
d. ( ) Os sistemas monoprogramáveis ou monotarefas são aqueles
em que vários programas ou job podem ser executados simulta-
neamente.
48
TÓPICO 3
PROGRAMAÇÃO
CONCORRENTE
1 INTRODUÇÃO
Um processo dentro de um Sistema Operacional pode ser entendido como
um “programa em execução”.
Com o desenvolvimento dos sistemas multiprogramáveis, o termo “proces-
so” tornou-se mais amplo. Passou-se a chamar de “processo” a estrutura respon-
sável pela manutenção de todas as informações necessárias para a execução de
um programa. Uma vez que, em sistemas multiprogramáveis, cada usuário percebe
o sistema como sendo do tipo monoprogramável (todos os recursos estão disponí-
veis somente para ele), o Sistema Operacional é o responsável por manter a integri-
dade dos dados. Assim, quando o programa retornar para o processador, todos os
dados (conteúdo dos registradores, posição do apontador de programas, espaço de
memória, usuário do programa etc.) estarão corretos.
2 PROCESSO
Um determinado programa em execução poderá apresentar diferentes re-
sultados, por meio do processo no qual está sendo executado. Desse modo, quando
um determinado usuário executar um programa, o sistema operacional inicia a exe-
cução de um processo. Esse processo, por sua vez, criará uma estrutura denomi-
nada “process control block”, ou simplesmente PCB (bloco de controle de proces-
so). Assim, a partir desse BCP, o SO manterá todas as suas informações acerca do
processo e gerenciará também os demais processos originários das chamadas de
sistemas (system calls), nas quais irão realizar operações tais como criar, eliminar,
sincronizar, suspender execução de processos, entre outras atividades internas.
Por fim, o processo poderá ser dividido em três elementos: contexto de har-
dware, contexto de software e espaço de endereçamento.
49
2.1 CONTEXTO DE HARDWARE
É realizado o controle de conteúdo dos registradores do processador, que
são program counter (PC), stack pointer (SP) e bits de estado (Flag).
Esse contexto é extremamente importante no processo de implementação
dos sistemas de tempo compartilhado ou time-sharing. Aqui, os processos reali-
zam o revezamento de uso do processador e podem ser interrompidos para, em
seguida, serem restaurados de tal modo como se não tivesse ocorrido nada. Esse
processo é chamado de “context switching” ou “troca de contexto”. Essa mudança
de contexto consiste na execução de salvamento do conteúdo dos registradores
da CPU para, assim, serem carregados com valores referentes ao processo no qual
se está ganhando em uso do processador.
50
2.2.1 ESPAÇO DE ENDEREÇAMENTO
A área de memória na qual determinado programa será executado e o es-
paço para os dados que esse programa utilizará em conjunto compõem o espaço
de endereçamento. Portanto, cada processo tem sua própria área designada para
terminação, que deve ser protegida do acesso de outros processos.
51
rado é concedido;
• execução pronto: um processo em execução passa para o estado de
pronto por eventos gerados pelo sistema.
52
que cada thread pode ser executado de forma paralela em mais de um
processador.
• auditoria e segurança;
• serviços de rede;
• contabilização do uso de recursos;
• gerência de impressão;
• gerência de jobs batch;
• temporização;
• comunicação de eventos;
• interface de comandos (shell).
Tipo Descrição
Fonte: o autor
53
2.6 COMUNICAÇÃO ENTRE PROCESSOS
Os processos que trabalham juntos (concorrentes) compartilham recursos
do sistema; de maneira geral, o compartilhamento de recursos entre processos
pode gerar situações indesejáveis, capazes até de comprometer o sistema.
Os mecanismos que garantem a comunicação entre processos concor-
rentes e o acesso a recursos compartilhados são chamados de “mecanismos de
sincronização”. Em um projeto de SO multitarefa, é fundamental o mecanismo de
sincronização que garanta sua integridade e confiabilidade.
54
PAREND;
X := Temp1 + Temp2 – Temp3; WRITELN (‘X = ‘, X);
END
Fonte: o autor
55
No exemplo da tabela, há um problema de acesso concorrente em variáveis.
Suponha-se que um processo vai somar 1 em uma determinada variável e o outro
processo vai diminuir 1 da mesma variável, e a variável está sendo compartilhada:
Processo A Processo B
x := x + 1; x := x – 1;
Vamos ver como ficaria esse processo escrito:
Processo A Processo B
LOAD x, Ra LOAD x, Rb
ADD 1, Ra SUB 1, Rb
STORE Ra,x STORE Rb, x
Agora, vamos observar o que aconteceu nesta tabela:
PROCESSO COMANDO X Ra Rb
A LOAD x, Ra 2 2 *
A ADD 1, Ra 2 3 *
B LOAD x, Rb * 2
B SUB 1, Rb 2 * 1
A STORE Ra, x 3 3 *
B STORE Rb, x 1 * 1
Fonte: o autor
Para que isso não aconteça, deve-se ter mecanismos de controle que evi-
tem esses tipos de problemas.
56
2.7.1 SOLUÇÃO PARA OS PROBLEMAS DE
COMPARTILHAMENTO
A solução mais simples seria impedir que dois ou mais processos acessem
um mesmo recurso no mesmo instante. Com isso, quando um processo acessa de-
terminado recurso, todos os outros que queiram acessar deverão esperar o término
desse processo. Essa ideia de exclusividade de acesso é chamada de “exclusão
mútua” (mutual exclusion).
Essa exclusão deve afetar apenas os processos concorrentes quando um
deles estiver fazendo acesso ao recurso compartilhado. A parte do código do pro-
grama na qual é feito o acesso ao recurso é denominada “região crítica”.
Os mecanismos que implementam a exclusão mútua utilizam um protocolo
de acesso à região crítica. Com isso, todo processo, quando se inicia, executa um
protocolo de entrada nessa região e, quando termina, executa um protocolo de
saída. Acompanhe.
BEGIN
.
.
Entra_Regiao_Critica ; (* Protocolo e entrada *) Região_Criti-
ca;
Sai_Regiao_Critica; (* Protocolo de Saída *)
.
.
END
Portanto, pode-se dizer que, para garantir a implementação da exclusivida-
de mútua, os processos envolvidos devem fazer acesso aos recursos compartilha-
dos de forma sincronizada.
Na tentativa de implementar a exclusão mútua, algumas soluções introdu-
zem novos problemas, chamados de “problemas de sincronização”. Eles são tão
graves quanto os gerados pela ausência da exclusão mútua. Qualquer solução para
os problemas de compartilhamento de recursos entre processos passa necessa-
riamente pela solução dos problemas de sincronização.
57
2.7.1.1 STARVATION
Outro problema causado pela sincronização entre processos é o starvation
ou situações indefinidas, em que um processo não pode operar em uma região crí-
tica. Portanto, os recursos compartilhados são acessíveis pelo sistema operacional.
Isso pode acontecer quando uma seleção aleatória ou prioridade é atribuída
ao processo de acesso ao recurso.
Uma solução muito simples para esse problema é criar uma fila de requisi-
ções de alocação para cada recurso. Quando um processo necessita de recursos,
a requisição será colocada no final da fila correspondente. Quando os recursos são
liberados, o sistema seleciona o primeiro processo da fila.
58
pelo fato de ser sempre realizado sem interrupção. É um comando au-
tomático, portanto não é possível que dois processos manipulem uma
variável compartilhada ao mesmo tempo, permitindo a implementação
de exclusão mútua. A instrução tem o seguinte formato e, quando exe-
cutada, o valor lógico da variável Y é copiado para a variável X, dando à
variável Y seu verdadeiro valor lógico.
2.8.1 SEMÁFOROS
Um semáforo é uma variável inteira não negativa que só pode ser manipula-
da por dois comandos: DOWN e UP, também chamados originalmente de comandos
P e V.
No caso de exclusão mútua, as instruções DOWN e UP atuam como proto-
colos de entrada e saída respectivamente, para permitir que um processo entre e
saia de uma região crítica. O semáforo foi atribuído a um compartilhamento e indica
quando algum dos processos simultâneos está acessando o compartilhamento. Se
seu valor for maior que 0, nenhum processo estará usando o recurso; caso contrá-
rio, o processo para. Toda vez que um processo deseja entrar em sua região crítica,
ele executa uma instrução DOWN.
Isso significa que o valor maior que 0 será decrementado para que nenhum
outro valor entre nesse intervalo. Se outro processo deseja executar sua seção
crítica e seu valor for igual a 0, o processo estará em estado de espera em uma fila
associada ao semáforo.
O processo que acessa sua seção crítica após a conclusão executa uma
instrução UP, incrementa o semáforo em 1 e libera o acesso ao recurso.
Essas operações são atômicas. Isso garante que, quando uma das opera-
ções for iniciada, nenhum outro processo poderá acessar o semáforo até que essa
59
operação seja concluída. As instruções DOWN e UP são normalmente implementa-
das como rotinas do sistema (chamadas do sistema), com o sistema desabilitando
todas as interrupções apenas para execução das instruções.
Os semáforos aplicados ao problema de exclusão mútua são mutexes (se-
máforos da exclusão mútua) ou binários (assumem apenas os valores 0 e 1).
Além de permitir a resolução de exclusão mútua, os semáforos podem ser
usados para implementar a sincronização condicional. Em geral, é um processo que
precisa ser modificado antes que um evento ocorra; existe outro processo capaz de
detectar sua ocorrência. Podemos usar um semáforo associado ao evento espera-
do para sincronizar ambos os processos.
Da mesma forma, você faz um UP toda vez que libera um recurso para o
pool. Se o semáforo do contador for 0, significa que não mais recursos podem ser
usados, e o processo solicita que o recurso seja retido até que outro processo libere
recursos do pool.
NOTA
Programação concorrente ou programação simultânea é um paradigma de
programação para a construção de programas de computador que fazem
uso da execução simultânea de várias tarefas computacionais interativas.
60
LEITURA COMPLEMENTAR
61
como gerenciamento de recursos (CPU, memória RAM), em linguagem de máquina,
enviando instruções ao processador.
Este último os traduz para código binário, executa os comandos e envia as
respostas como informações que aparecem na sua tela.
Um sistema operacional contém componentes divididos entre os para o
usuário (como bibliotecas, programas e interface) e as instruções que compõem o
seu núcleo (kernel).
O que é kernel?
62
Figura – Tela de inicialização do sistema onde é possível encontrar informações sobre as BIOS
Um firmware pode ser operado pelo usuário da mesma forma que um kernel
(o Linux per se é só o kernel, a interface varia conforme a empresa responsável pela
distribuição, também chamada de distro), mas suas aplicações são distintas.
1. Unix
63
2. MS-DOS
3. OS/2
64
RESUMO DO TÓPICO 3
• Para tornar o núcleo do sistema menor e mais estável, retiram-se algumas fun-
ções do núcleo, as quais são implementadas como processos chamados pelo
SO.
• Durante o processamento, um processo muda de estado diversas vezes por
conta de eventos originados por ele próprio (eventos voluntários) ou pelo siste-
ma operacional (eventos involuntários).
• Os processos podem criar outros processos. Quando isso acontece, chamamos
o processo criado de “subprocesso” ou “processo-filho”; este pode criar outros
processos.
• Os processos que trabalham juntos (concorrentes) compartilham recursos do
sistema; de maneira geral, o compartilhamento de recursos entre processos
pode gerar situações indesejáveis, capazes até de comprometer o sistema.
65
AUTOATIVIDADE
66
b. ( ) O contexto de hardware é fundamental para a implementação
dos sistemas de mudança de contexto (context switching), nos
quais os processos se revezam na utilização do processador, po-
dendo ser interrompidos e, posteriormente, restaurados como se
nada tivesse acontecido. Essa troca é denominada “mudança de
tempo compartilhado” (time-sharing).
c. ( ) O contexto de software é fundamental para a implementação
dos sistemas de tempo compartilhado (time-sharing), nos quais
os processos se revezam na utilização do processador, podendo
ser interrompidos e, posteriormente, restaurados como se nada
tivesse acontecido. Essa troca é denominada “mudança de con-
texto” (context switching).
d. ( ) O contexto de software é fundamental para a implementação
dos sistemas de mudança de contexto (context switching), nos
quais os processos se revezam na utilização do processador, po-
dendo ser interrompidos e, posteriormente, restaurados como se
nada tivesse acontecido. Essa troca é denominada “mudança de
tempo compartilhado” (time-sharing).
67
4. Um processo, em um sistema multiprogramável (multitarefa), não é exe-
cutado todo o tempo pelo processador. Durante a execução, passa por
uma série de estados, e três deles são os principais. Disserte sobre o
processo de espera.
5. Durante seu processamento, sabemos que um processo muda de estado
diversas vezes em função de eventos originados por ele próprio (eventos
voluntários) ou pelo sistema operacional (eventos involuntários). Disserte
sobre “execução espera”.
68
REFERÊNCIAS
69
70
UNIDADE 2
SISTEMAS
OPERACIONAIS
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
• Compreender os principais conceitos para o gerenciamento de políticas
básicas de memória;
• Entender os principais conceitos para o gerenciamento de memória vir-
tual;
• Compreender os principais conceitos para o gerenciamento de arquivos;
• Entender os principais conceitos para o gerenciamento de dispositivos de
entrada e saída.
PLANO DE ESTUDOS
A cada tópico desta unidade, você encontrará autoatividades com o objetivo
de reforçar o conteúdo apresentado.
TÓPICO 1 – GERENCIAMENTO DE MEMÓRIA
TÓPICO 2 – SISTEMAS DE ARQUIVOS
TÓPICO 3 – GERÊNCIA DE ENTRADA/SAÍDA
TÓPICO 1
GERENCIAMENTO
DE MEMÓRIA
1 INTRODUÇÃO
Como é de nosso conhecimento, a memória principal do computador é um
importante componente em quaisquer sistemas em computação. A memória prin-
cipal constitui, basicamente, o que chamamos de “espaço de trabalho” dentro do
sistema, do qual serão mantidos todos os processos (denominados threads), bi-
bliotecas compartilhadas e canais de comunicação, incluindo o próprio núcleo do
Sistema Operacional (SO).
O hardware envolvido na memória pode ser bem complexo, pois contempla
diversas estruturas, tais como cache e unidade de gerenciamento, exigindo um
elevado esforço no processo para o significativo gerenciamento pelo SO. Desse
modo, podemos afirmar que um processo de gerenciamento adequado de memória
é fundamental para que o desempenho do computador seja realizado corretamen-
te.
2 ESTRUTURAS DE MEMÓRIA
Existem tipos de memórias diversos dentro dos sistemas computacionais,
cada qual com suas particularidades, características e especificidades, contudo to-
dos têm um mesmo objetivo, que é o armazenamento de dados. Ao observarmos
um típico sistema computacional, podemos identificar diversos locais em que os
dados podem ser armazenados, tais como os registradores e o cache interno do
processador (cache L1), o cache externo da placa-mãe (cache L2) e a memória
principal (RAM). Também há os hard disks, ou discos rígidos, unidades de armaze-
namento externas (pendrives, CD-ROMs, DVD-ROMs etc.).
Todos esses componentes de hardware são construídos fazendo uso de
tecnologias diversas e, devido a isso, apresentam características bem específicas,
tais como capacidade de armazenamento, velocidade no processo de operação,
consumo de energia e custo por cada byte armazenado. Essas características pos-
73
sibilitam a definição do processo hierárquico de memória, como podemos observar
na Figura 1:
74
Quadro 1 – Tempos de acesso e taxas de transferência típicas
75
4 MODELO DE MEMÓRIA DOS PROCESSOS
Cada processo é visto pelo sistema operacional como um espaço de me-
mória isolado, ou uma área de memória em que somente processos e núcleo do
sistema podem acessar. Essa área de memória é dividida nas seguintes seções:
76
Figura 2 – Organização da memória de um processo
5 ESTRATÉGIAS DE ALOCAÇÃO
Em um sistema de monoprocesso, no qual apenas um processo de cada vez
é carregado na memória para execução, alocar a memória principal é um problema
simples de resolver. Basta reservar um pouco de memória para o núcleo operacio-
nal do sistema e colocar o processo na memória restante, mantendo a disposição
de suas áreas internas.
A memória reservada para o núcleo operacional do sistema pode estar lo-
calizada no início ou no final do espaço de memória física disponível. A maioria das
arquiteturas de hardware especifica o vetor de interrupções nos endereços iniciais
da memória (às vezes conhecidos como “endereços inferiores”), portanto, o nexo
normalmente também está localizado lá. Como resultado, a memória disponível
após o núcleo do sistema é dedicada a processos em nível de usuário.
Em sistemas multiprocessados, vários processos podem ser armazenados
na memória para execução simultânea. Nesse caso, o espaço de memória dedicado
aos processos deve ser dividido entre eles utilizando uma estratégia que permita
eficiência e adaptabilidade de uso. As próximas seções irão abordar os principais
métodos de alocação de memória física.
77
na-o ao valor do registrador de realocação (110.000) para obter o endereço físico
124.257, que então fica acessível. Devemos notar que o valor contido no registrador
de realocação é o endereço inicial do componente ativo (3); esse registro deve ser
atualizado sempre que um processo ativo for trocado.
Essa estratégia é muito simples, porém sua simplicidade não supera suas
várias desvantagens:
78
5.3 ALOCAÇÃO POR SEGMENTOS
O termo “alocação por segmentos”, às vezes conhecido como “alocação
segmentada”, refere-se a uma variação de “alocação contígua”, na qual o espaço
de memória de um processo é dividido em áreas ou segmentos que podem ser
alocados separadamente na memória física. Além das quatro áreas funcionalmen-
te fundamentais da memória do processo (texto, dados, pilha e heap), segmentos
para tipos específicos de memória, como bibliotecas compartilhadas, máquinas vir-
tuais, variáveis de matriz, pools de threads, buffers de entrada/saída etc., também
podem ser definidos.
Quando a memória é organizada em segmentos, o espaço de memória de
cada processo não é mais visto como uma coleção de segmentos lineares com
políticas de acesso distintas, mas como uma coleção de segmentos de vários ta-
manhos.
Os empregos gerados pelos processos no modelo de memória segmentada
devem identificar as posições de memória e os segmentos em que estão localiza-
dos. Em outras palavras, esse modelo emprega endereços lógicos bidimensionais
compostos de pares [segmento:o conjunto], nos quais “segmento” denota o nú-
mero do segmento desejado e “o conjunto”, a posição desejada dentro do segmen-
to. Os valores do conjunto variam de zero ao tamanho do segmento.
O método de tradução de terminais lógicos em coordenadas físicas na alo-
cação de memória segmentar é comparável à alocação contínua, mas como cada
segmento terá seus próprios valores iniciais e finais devido à possibilidade de dife-
rentes tamanhos de segmentos e posicionamento na memória física, é necessário
definir uma tabela de segmentação para cada operação do sistema. Essa tabe-
la inclui os valores-base e máximo para cada segmento utilizado pelo processo,
bem como sinalizadores com detalhes sobre cada segmento, como permissões de
acesso.
O compilador deve dividir os vários segmentos da fonte de código de cada
programa. Por exemplo, ele pode dar a cada vetor ou matriz seu próprio segmento.
Assim, erros comuns, como obter acesso a índices maiores que o tamanho de um
vetor, resultarão em endereços fora do segmento relevante, que serão descobertos
pelo hardware para gerenciamento de memória e reportados ao sistema operacio-
nal.
A implementação da tabela de segmentação varia de acordo com a arquite-
tura de hardware considerada. A tabela poderá ser transferida para os registrado-
res especializados do processador se o número de segmentos utilizados por cada
processo for pequeno. Por outro lado, se o número de segmentos por processo for
alto, será necessário armazenar as tabelas na memória RAM. O processador 80.386
usa duas tabelas baseadas em RAM: a LDT (Local Descriptor Table), que especifi-
79
ca os segmentos de processamento local (exclusivo) para cada processo, e a GDT
(Global Descriptor Table), que descreve os segmentos de processamento global
que podem ser compartilhados entre outros processos.
A tabela de segmentos deve ser acessada para obter os valores-base e li-
mite que correspondem a cada endereço de memória que o processo em execução
atualmente acessou, no entanto como as tabelas de segmentos são normalmente
encontradas na memória principal, esses acessos têm um custo significativo. Por
exemplo, em um sistema de 32 bits, cada acesso à memória exigiria pelo menos
duas leituras de memória adicionais para ler os valores-base e limite, o que torna-
ria o acesso à memória três vezes mais lento. Os processadores definem alguns
registradores de segmentos que permitem armazenar os valores-base e limite dos
segmentos mais utilizados para solucionar esse problema. Como resultado, o de-
sempenho do acesso à memória é mantido em um nível satisfatório, evitando a
necessidade de consultar a tabela de segmentação com frequência excessiva se o
número de segmentos em uso simultâneo for pequeno.
Existem até 8.192 segmentos em cada uma dessas duas tabelas. Os re-
gistradores específicos do processador definem as tabelas a serem utilizadas pelo
processo enquanto ele está sendo executado. Para refletir as regiões de memória
utilizadas pelo processo que será ativado a cada mudança de contexto, os registra-
dores que indicam a tabela de segmentos ativos devem estar ativos:
80
5.4 ALOCAÇÃO PAGINADA
Conforme mencionamos na seção anterior, alocar memória em segmentos
requer o uso de endereços bidimensionais na forma [segmento:o set], o que não
é muito intuitivo para programadores e dificulta a construção de compiladores.
Além disso, é um método de alocação bastante suscetível à fragmentação externa.
Essas deficiências levaram os desenvolvedores de hardware a criar métodos alter-
nativos para alocar a memória principal.
Ao contrário da alocação baseada em segmentos, que utiliza endereços bi-
dimensionais, a alocação baseada em páginas e espaço unidimensional para pro-
cessos lógicos utiliza espaço de endereçamento lógico dos processos. Mantido de
forma linear e de forma clara para os processos, o espaço de endereços lógicos é
dividido em pequenos blocos idênticos conhecidos como “páginas”. Nas arquitetu-
ras atuais, as páginas normalmente têm um tamanho de 4 quilobytes (4.096 bytes),
porém existem alguns edifícios que possuem páginas maiores do que 2. O espaço
de memória física dedicado aos processos é dividido em blocos do mesmo tama-
nho de páginas, conhecidos como “quadros” (da palavra inglesa frames).
A colocação de processos na memória física é, portanto, feita simplesmente
indicando em qual quadro de memória física cada página de cada processo está
localizada. Processos podem ser associados a qualquer quadrante, permitindo uma
grande flexibilidade na alocação. Além disso, como as páginas não utilizadas pelo
processo não precisam ser mapeadas fisicamente na memória, seu uso é mais efi-
caz.
Uma tabela de páginas, na qual cada entrada corresponde a uma página e
inclui o número do quadro em que está localizada, é utilizada para mapear a rela-
ção entre as páginas de um processo e os quadros correspondentes na memória
física. Cada processo tem sua própria tabela de páginas; a tabela de páginas ativa,
que corresponde ao processo em execução, é referenciada por um registrador de
processador chamado PTBR (Page Table Base Register). Esse registro precisa ser
atualizado com o endereço das páginas do novo processo ativo durante cada troca
de contexto.
As seguintes etapas devem ser realizadas pela MMU para traduzir um ende-
reço lógico em seu endereço físico correspondente:
81
ria física, a MMU deve gerar uma interrupção de falta de página para o
processador. Essa interrupção faz com que a execução seja desviada
para o núcleo do sistema operacional, que deve então tratar a falha de
página.
6 MEMÓRIA VIRTUAL
A disponibilidade de memória física em computadores é um problema per-
sistente, pois os programas estão ficando maiores e mais processos estão sendo
executados ao mesmo tempo, consumindo a memória disponível. Além disso, a
crescente manipulação de informações multimodais (imagens, áudio e vídeo) con-
tribui para esse problema, pois esses dados geralmente são muito grandes e exi-
gem muita memória livre para processar. Como a memória RAM é um recurso caro
e consome uma quantidade significativa de energia, aumentar sua capacidade nem
sempre é uma opção viável.
Ao analisar o comportamento de um sistema computacional, fica claro que
nem todos os processos estão sempre ativos e que nem todas as áreas de me-
mória estão em uso constante. Como resultado, a memória que não é usada com
frequência pode ser movida para um tipo de armazenamento mais barato e mais
abundante, como um disco rígido ou um dispositivo de armazenamento flash de
memória, liberando RAM para outros fins. Quando um processo pertencente a uma
dessas áreas precisar acessá-la, ele deverá ser devolvido à memória RAM. “Memó-
ria virtual” é o termo para o uso de um dispositivo de armazenamento externo para
estender a RAM; essa tática pode ser implementada de forma eficaz e transparente
para usuários, processos e programadores.
NOTA
O sistema reserva um espaço chamado “memória virtual” no disco rígido
(HD, hard disk) para compartilhamento seguro e eficiente de memória, a
fim de permitir o salvamento das informações armazenadas na RAM e de
liberar memória para novos aplicativos.
82
RESUMO DO TÓPICO 1
83
AUTOATIVIDADE
84
3. Cada processo é visto pelo sistema operacional como um espaço de
memória isolado, ou uma área de memória que somente ele e o núcleo
do sistema podem acessar. Assinale a alternativa CORRETA em relação
à memória data.
85
TÓPICO 2
SISTEMAS DE
ARQUIVOS
1 INTRODUÇÃO
Ao se construir um sistema de aplicativo para documentos, uma série de
problemas significativos, que vão desde o acesso de baixo nível a dispositivos de
armazenamento físico, até a implementação de uma interface de acesso de pro-
gramadores a documentos, deve ser resolvida. Ao implementar um sistema de do-
cumentos, lembre-se de que cada documento contém dados brutos e metadados.
Os dados de um arquivo são seu conteúdo real (uma música, uma fotografia,
um documento ou um plano), e os metadados de um arquivo incluem seus atribu-
tos (nome, datas, permissões de acesso etc.) e todas as informações de controle
necessárias para localizar e manter seu conteúdo no disco.
2 ARQUITETURA GERAL
Os componentes primários da geração de documentos estão dispostos em
caddies. Os dispositivos de armazenamento de dados e metadados para docu-
mentos, como discos magnéticos ou bancos de memória flash, estão localizados
no nível mais baixo dessa arquitetura. Esses dispositivos são acessados por con-
troladores, que são circuitos eletrônicos criados especificamente para controlar e
interagir com os dispositivos. A interface entre dispositivos de armazenamento e
controladores segue padrões como SATA, ATAPI, SCSI, USB e outros.
86
Figura 3 – Camadas da implementação da gerência de arquivos
87
Uma camada de gerenciamento de blocos fica acima dos drivers e con-
trola o fluxo de blocos de dados entre a memória e os dispositivos de armazena-
mento. É vital ter em mente que os discos são dispositivos orientados a blocos, o
que significa que as operações de leitura e gravação de dados são sempre exe-
cutadas em blocos de dados, e não em bytes individuais. As principais funções
desse cache são implementar o mapeamento de blocos lógicos para blocos físicos
do dispositivo, fornecer aos caches superiores uma abstração de cada dispositivo
físico como um enorme repositório de blocos lógicos independentemente de sua
configuração real e implementar cache/buffer de blocos.
O cache de alocação de documentos é o próximo. Sua principal função é
alocar documentos aos blocos lógicos fornecidos pelo gerenciador de blocos. Cada
documento é visto como uma série de blocos lógicos que devem ser organizados
nos blocos dos dispositivos de forma efetiva, durável e flexível.
Acima da alocação de arquivos está o sistema de arquivos virtual (VFS),
que fornece acesso aos arquivos por meio de uma interface de usuário indepen-
dente dos dispositivos físicos e das estratégias de alocação de arquivos usadas
pelos gabinetes inferiores. Um VFS normalmente gerencia privilégios de acesso
compartilhados por usuários e pontos de acesso compartilhados, além de criar di-
retórios e abstrações de atlas. Outra função importante desta camada é manter
informações sobre cada recurso aberto pelos processos, como a posição da ope-
ração mais recente, o tipo de abertura empregada e o número de processos que
utilizam o recurso. Os processos têm acesso ao sistema de documentos virtuais por
meio de um conjunto de componentes denominado “interface do sistema”.
Finalmente, para criar acesso seguro aos documentos para cada linguagem
de programação, as bibliotecas de entrada/saída utilizam os sistemas de cha-
mada fornecidos pelo sistema operacional.
89
documentos mais avançados, como o Master File Table, do NTFS, e os i-nodes, do
Unix, os blocos de controle de documentos são definidos em estruturas separadas.
Existem três métodos comuns de colocação de documentos nos blocos
lógicos do disco: posicionamento contíguo, encadeamento e indexação. Como as
diretivas são normalmente implementadas na forma de documentos, as estraté-
gias de alocação discutidas aqui também são aplicáveis à alocação de diretivas.
Essas estratégias serão descritas e examinadas à luz de três critérios: a velocidade
oferecida por cada estratégia no acesso aos dados do documento, tanto de forma
sequencial quanto direta; a robustez de cada estratégia contra erros, como blocos
de disco defeituosos e dados corrompidos; e a flexibilidade oferecida por cada es-
tratégia na criação, modificação e exclusão de diretórios.
90
nos quais os documentos são continuamente criados, alterados e destruídos. Ainda
é possível que ela seja útil em circunstâncias específicas em que são necessários
tempos de resposta rápidos para acesso sequencial e direto aos dados e em que os
documentos subjacentes não são constantemente modificados. Sistemas projeta-
dos especificamente para reproduzir dados multimídia, como áudio e vídeo, são um
exemplo dessa situação.
91
defeituosos e reservados. Durante o uso do sistema, uma cópia da tabela é mantida
em cache na memória para melhorar o desempenho na localização dos blocos de
documentos.
92
aos índices de bloco que estão incluídos nos i-nodes. Para localizar o bloco de-
sejado, no entanto, pode ser necessário ter mais três ou quatro acessos ao disco
nos casos em que há blocos no final de documentos muito grandes, por causa do
apontamento indireto. Essa estratégia é robusta, pois ataques em um bloco de da-
dos não afetam os outros blocos de dados, no entanto erros nos metadados (como
aqueles no nó ou nos blocos de ponteiros) podem danificar grandes porções do
arquivo; como resultado, muitos sistemas que utilizam essa estratégia empregam
técnicas de redundância para os nós e os metadados para aumentar sua robustez.
Em termos de flexibilidade, esse método de alocação é tão flexível quanto a aloca-
ção encapsulada, pois não causa fragmentação externa e permite o uso de todo
o disco para armazenar dados, porém há um tamanho máximo para documentos
criados, bem como um número máximo de documentos por divisão.
A capacidade de criar documentos aninhados é um recurso intrigante do
local listado no índice. Somente as áreas que foram mapeadas fisicamente estão
localizadas no disco rígido, pois os ponteiros do i-node que correspondem a essas
áreas apontam para blocos de disco que contêm informações do banco de dados.
A única finalidade dos ponteiros de área não mapeada é indicar que a área do do-
cumento ainda não foi mapeada no disco. Um processo só receberá zeros se ler
uma área não mapeada. As áreas que não foram mapeadas só serão armazenadas
nelas quando um processo escrever nelas. Organizar documentos usando índices
ou tabelas de hash que podem conter longos períodos de inatividade é uma tarefa
comum para gerenciadores de dados de bancos de dados e outros aplicativos.
NOTA
Um sistema virtual de documentos é uma camada de abstração sobre um
sistema de documentos mais detalhado. O objetivo de um VFS é fornecer
aos aplicativos-cliente um acesso padrão a vários tipos de sistemas para
determinados tipos de documentos.
94
RESUMO DO TÓPICO 2
95
AUTOATIVIDADE
96
3. Nesta abordagem, a estrutura encadeada em lista da estratégia anterior
é substituída por um vetor que contém um índice dos blocos do artigo.
Assinale a alternativa CORRETA sobre o método de alocação indexada.
97
TÓPICO 3
GERÊNCIA DE
ENTRADA/SAÍDA
1 INTRODUÇÃO
Um computador é composto principalmente de um ou mais processadores,
memória RAM e dispositivos de entrada e saída. Os dispositivos de entrada/saída
permitem que o computador interaja com o mundo exterior de várias maneiras, por
exemplo:
• interação com usuários via mouse, teclado, display gráfico, touch screen
e joystick;
• gravação e leitura de dados em discos rígidos, SSDs, CD-ROMs, DVD-
-ROMs e unidades flash;
• impressão de informações em plotters e impressoras;
• gravação e reprodução de áudio e vídeo usando dispositivos como câ-
meras, celulares e high-flyers;
• comunicação com outros computadores via LAN, WLAN, Bluetooth e
redes de telefonia móvel.
98
Os primeiros sistemas de computador foram construídos na década de 1940
e destinavam-se a cálculos matemáticos. Como resultado, eles tinham dispositivos
simples de entrada e saída que só podiam baixar e descarregar programas e dados
diretamente na memória principal. Em seguida, surgiram os terminais de leitura e
escrita de texto compostos por um teclado e um monitor de texto, além de discos
rígidos como meio de arquivamento de dados e software duráveis. Existem vários
tipos diferentes de dispositivos de entrada/saída que podem ser conectados a um
computador hoje. Um dos maiores desafios no desenvolvimento e na manutenção
de um sistema operacional é a grande variedade de dispositivos periféricos, pois
cada um apresenta características únicas e requer mecanismos de acesso espe-
cíficos.
2 DISPOSITIVOS DE ENTRADA/SAÍDA
Um dispositivo de entrada/saída facilita a comunicação entre os sistemas
internos de um computador (processadores e memória) e o mundo externo.
Idealmente, a entrada de dados em um computador começa com um sensor
que pode transformar informações externas (como informações físicas ou quími-
cas) em um sinal elétrico para análise. Temos o microfone, as saliências internas
de um teclado ou o fotodiodo de um DVD player como exemplos de sensores. O
sinal analógico elétrico do sensor é então aplicado a um conversor analógico-digital
(CAD), que o converte em informação digital (sequências de bits). Essas informa-
ções digitais são armazenadas em um buffer que o processador pode acessar por
meio de um controle de entrada.
Uma troca de dados começa quando os dados de um processador são en-
viados por um barramento para um controlador de troca de dados. Os dados en-
viados pelo processador são armazenados em um buffer dentro do controlador e
posteriormente convertidos em sinal elétrico por um conversor digital-analógico
(CDA). Esse sinal será aplicado de tal modo que o traduzirá em efeitos tangíveis que
o usuário poderá perceber. Exemplos simples de atuadores são a cabeça de im-
pressão e os motores de um impressor, uma ponte rolante, um display gráfico etc.
Inúmeros dispositivos combinam a funcionalidade de entrada e saída como
discos giratórios: o processador pode ler dados armazenados em um disco giratório
(entrada), mas isso requer a ativação do motor que gira o disco e o posicionamento
correto da cabeça do leitor (saída). A mesma coisa acontece com o hardware de
gravação e reprodução de áudio de um PC convencional.
Existem diversos tipos de dispositivos de entrada/venda com várias carac-
terísticas de velocidade de transferência, formato de transferência de dados e mé-
todo de acesso, assim como inúmeras oportunidades de interação do computador
com o mundo exterior. A velocidade do fluxo de dados de um dispositivo pode variar
99
de alguns bytes por segundo para dispositivos simples, como teclado e mouse, até
terabytes por segundo para algumas interfaces gráficas de usuário ou acesso a
discos de alto desempenho.
2.1 BARRAMENTOS
A prática histórica de conectar dispositivos de entrada/saída a computado-
res por meio de barreiras segue o precedente estabelecido pela arquitetura de Von
Neumann. O barramento dos primeiros sistemas era um arranjo simples de fios, mas
os barramentos dos sistemas atuais são estruturas de hardware extremamente
sofisticadas com circuitos de controle únicos. Além disso, a variedade de velocida-
des e quantidades de dados suportadas pelos dispositivos levou à reestruturação
gradual do barramento único dos sistemas iniciais em uma coleção de barramentos
com várias velocidades e comprimentos de dados.
Um barramento é, portanto, um grupo de linhas de comunicação que per-
mitem a interconexão entre dispositivos como CPU, memória e outros periféricos.
Dois controladores de hardware, a ponte norte e a ponte sul, que fazem
parte do chipset da placa-mãe, são responsáveis por controlar as barreiras em um
sistema de desktop contemporâneo. As pontes dedicadas AGP (Accelerated Gra-
phics Port) e PCI-Express (PCI, Peripheral Component Interconnect) fornecem
acesso à memória RAM e a dispositivos de alta velocidade através da ponte norte,
que é conectada diretamente ao processador.
Por outro lado, a ponte sul é o controlador responsável pelas portas de bai-
xa ou média velocidade do computador, como portas seriais e paralelas, além de
barramentos dedicados como padrão PCI, USB e SATA. Além disso, a ponte sul
frequentemente incorpora outras partes importantes do computador, incluindo
controladores de rede e áudio on-board, controladores de interrupção, controlado-
res DMA, relógios em tempo real (que governam os relógios de escalonamento do
processo), gerenciamento de energia e acesso ao BIOS memória. Através da ponte
norte, o processador se comunica indiretamente com a ponte sul.
100
de acesso fornecidos para cada dispositivo de entrada/saída podem ser divididos
nos seguintes grupos:
2.3 ENDEREÇAMENTO
A forma de acessar os registradores que compõem a interface de um dispo-
sitivo varia de acordo com a arquitetura do computador. Alguns sistemas utilizam
entrada/saída mapeada nas portas (port-mapped I/O); o processador acessa as
portas que compõem a interface através de instruções específicas para operações
de entrada/saída. Por exemplo, a família de processadores Intel usa a instrução “IN
reg port” para ler o valor da porta do dispositivo e depositá-lo no registrador do pro-
cessador, e a instrução “OUT port reg” é usada para escrever o valor do registrador
para a porta.
Outro método de acesso a dispositivos para entrada e saída é a E/S ma-
peada na memória, frequentemente usada em interfaces gráficas e de rede. Nessa
abordagem, uma parte do espaço de endereço de memória que não está em uso
no momento é reservada para mapear os pontos de acesso aos dispositivos. Dessa
forma, as portas são vistas como se fossem parte da memória principal e podem
ser abertas e escritas usando as mesmas instruções usadas para acessar o res-
tante da memória, dispensando a necessidade de instruções especiais, como IN
e OUT. Algumas arquiteturas de computador, como o padrão IBM-PC, empregam
uma abordagem híbrida para determinados dispositivos, como interfaces de rede
e de áudio: as portas de controle e de status estão localizadas no espaço de ende-
reço de entrada/saída e podem ser acessadas usando instruções específicas, e a
entrada de dados e as portas de saída estão localizadas na memória (normalmente
no intervalo de endereços de 640 quilobytes a 1 megabyte).
101
O uso de um processador independente de hardware dedicado que se co-
munica com o processador principal através de algum tipo de barramento é uma
abordagem mais sofisticada para controlar os dispositivos de entrada/saída. Essa
abordagem é conhecida como “canais de entrada/saída” (canais IO) em sistemas
de grande porte (mainframes); é frequentemente usado em interfaces de vídeo ou
áudio de alto desempenho em computadores pessoais, como aqueles com acele-
ração, nos quais um processador gráfico (GPU) lida com os aspectos mais exigentes
do processamento de dados de vídeo, como renderização de imagens em três di-
mensões e texturas, deixando o processo para a CPU.
2.4 INTERRUPÇÕES
A capacidade de acessar controladores de dispositivo por meio de seus
registradores é útil para comunicação do processador e controlador ou, mais es-
pecificamente, para interações iniciadas pelo processador, no entanto pode ser
problemático do ponto de vista do controlador se o processador precisar obter in-
formações do controlador em tempo hábil, sem ter que esperar. Nesse cenário, o
controlador pode utilizar uma solicitação de interrupção (IRQ – Interrupt Request)
para informar ao processador algum evento significativo, como a conclusão de uma
operação solicitada, a disponibilidade de uma nova entrada ou a ocorrência de uma
falha com o dispositivo.
Os requisitos para interrupção são sinais elétricos transmitidos através do
painel de controle do computador. A cada interrupção é atribuído um número único,
normalmente na faixa de 0-31 ou 0-63, permitindo a identificação do dispositivo
que a solicitou.
Quando uma solicitação de interrupção é recebida, o processador suspen-
de seu fluxo atual de instruções e redireciona a execução para um endereço pre-
viamente definido, no qual é encontrada uma rotina de tratamento de interrupção
(manipulador de interrupção). Essa rotina é responsável por lidar com a interrupção
ou realizar as ações necessárias para localizar e endereçar o dispositivo que causou
a solicitação. O processador retoma o código que estava sendo executado quando
a operação foi interrompida na conclusão da rotina de tratamento da interrupção.
Vejamos como isso acontece.
102
de seus registradores) e adia sua execução para uma rotina de trata-
mento da interrupção.
• Ao ser executada, essa rotina acessa os registradores do teclado con-
trolador para transferir o conteúdo de seu buffer para uma seção da
memória do computador. Depois disso, ela pode realizar outras ações,
como alocar algum processo ou thread que esteja aguardando o pres-
sionamento de teclas do teclado.
• Após completar a rotina de tratamento da interrupção, o processador
retoma o fluxo de instruções que havia sido interrompido, utilizando as
informações de estado salvas na etapa 4.
3 SOFTWARES DE ENTRADA/SAÍDA
O sistema operacional é responsável por fornecer acesso aos dispositivos
para entrada/saída dos aplicativos e, em última instância, aos usuários do sistema.
É um tremendo desafio fornecer acesso eficaz, rápido e confiável a uma coleção
de periféricos com comportamento, velocidade de transferência, volume de dados
produzidos/consumidos e interfaces de hardware variados. Além disso, como cada
dispositivo especifica sua própria interface e modo de operação, o núcleo do siste-
ma operacional deve implementar código de baixo nível para interagir com milhares
de tipos diferentes de dispositivos. Por exemplo, cerca de 60% das 12 milhões de
linhas de código no kernel Linux 2.6.31 são drivers para dispositivos de entrada/
saída.
O código do sistema operacional é organizado em clusters que movem as
operações de DMA das portas de entrada/saída para interfaces de acesso abstra-
tas, como arquivos e soquetes de rede, a fim de agilizar o acesso e o gerenciamento
de dispositivos de entrada/saída. A ponta de seta acima, que é implementada em
hardware, corresponde ao controlador específico de cada dispositivo (IDE, SCSI,
SATA etc.), bem como aos controladores de DMA e de interrupção que fazem parte
do chipset do computador.
104
As rotinas de tratamento de interrupção (manipuladores de interrupção) e
drivers de entrada/saída compõem o primeiro módulo de software. Os mecanismos
de tratamento de interrupções são acionados por cada interrupção que se origina
do controlador de interrupção e servem principalmente para registrar sua ocorrên-
cia. A execução dessas rotinas deve ser muito breve, pois o processador desabilita a
ocorrência de novas interrupções enquanto trata uma interrupção existente. Como
resultado, quando uma rotina é ativada, ela apenas reconhece a interrupção ocorri-
da junto ao controlador, cria um manipulador de eventos (descrição do evento) que
contém os dados da interrupção, insere-o em uma lista de eventos pendentes que
é mantida pelo driver do dispositivo, notifica o driver e termina.
Os eventos da fila de eventos pendentes mantidos por cada driver são trata-
dos posteriormente, quando o processador estiver livre. A divisão do tratamento da
interrupção em dois níveis de urgência faz com que o código de cada interrupção
seja organizado em dois níveis: a metade inferior, que inclui as ações imediatas a
serem tomadas quando ocorre uma interrupção, e a metade superior, que inclui as
demais ações de tratamento de interrupção.
4 DISCOS RÍGIDOS
Encontrados na grande maioria dos computadores pessoais e servidores.
Um disco rígido permite o arquivamento (não volátil) persistente e razoável, de bai-
xo custo, de grandes volumes de dados. Além disso, ler e gravar dados em um
disco rígido é mais fácil e flexível do que em outras mídias, como fitas magnéticas
ou discos ópticos (CDs, DVDs). Por esses motivos, os discos rígidos são muito utili-
zados em computadores para armazenamento de arquivos do sistema operacional,
arquivos de aplicativos e dados do usuário. Além disso, são frequentemente em-
pregados como local para armazenar páginas em sistemas de memória virtual.
Um disco rígido é formado por um ou mais discos metálicos que giram jun-
tos em alta velocidade (entre 4.200 e 15.000 rpm), acionados por um motor elétrico.
Um cabeçote de leitura está localizado próximo à face de cada disco e é respon-
sável pela leitura e escrita dos dados, magnetizando pequenas áreas da superfície
metálica. Cada face é logicamente dividida em trilhas e setores; a interseção de
uma trilha e um setor em uma face define um bloco físico, que serve como unidade
fundamental para armazenar e transmitir dados em um disco. Os discos rígidos
atuais (a partir de 2010) usam blocos de 512 bytes, no entanto, o padrão da indús-
tria está se movendo para blocos físicos de 4.096 bytes.
105
NOTA
O componente de hardware que armazena o conteúdo digital é um dis-
co rígido. Documentos, fotos, músicas, vídeos, preferências de software
e sistema operacional podem ser armazenados em um disco rígido. Os
discos rígidos podem ser internos ou externos.
106
LEITURA COMPLEMENTAR
107
A HISTÓRIA POR TRÁS DOS SISTEMAS OPERACIONAIS!
Primeira geração
Segunda geração
Terceira geração
Quarta geração
108
aos modelos PDP, eles custavam ainda menos e permitiam que pessoas comuns
pudessem adquirir uma máquina para uso pessoal.
Pensando nessa revolução de computadores pessoais, o sistema operacio-
nal Windows foi criado em 1975 após o nascimento da Microsoft. O Windows logo se
tornou o maior e mais utilizado sistema operacional, estendendo sua operação até
os dias de hoje. O sistema já contou com diversas atualizações, como Windows 95,
Windows 98, Windows XP, Windows 7 e Windows 10.
Outra empresa que competiu fortemente com a Microsoft nesse mercado
foi a Apple, com o Apple Macintosh, que fez enorme sucesso devido à sua interface
amigável e atraente para pessoas usuárias.
Atualmente, todos dispositivos eletrônicos utilizam sistemas operacionais,
sejam computadores, smartphones ou tablets, mas esse não é o fim da história dos
sistemas operacionais que, assim como toda a tecnologia, continuam evoluindo e
trazendo uma melhor experiência para as pessoas usuárias.
A interface do usuário é o software que uma pessoa usa para interagir com
o sistema operacional e os aplicativos executados em um computador. O sistema
operacional e os aplicativos são executados sem a necessidade dessa interface.
109
Uma pessoa interage por meio da interface do usuário apenas para fornecer entra-
da e observar a saída do software que está sendo executado.
Podemos entender que o sistema operacional é a base de todo programa
e interface, mesmo os dois sendo executados paralelamente, temos a separação
dessas interfaces.
Gerenciamento de Processos
Gerenciamento de Memória
Gerenciamento de Dispositivo
O sistema operacional cria uma comunicação direta por meio de drivers com
os dispositivos conectados no Hardware. Um driver, portanto, é um software que
viabiliza a execução de um dispositivo, que pode ser um pen drive, mouse, teclado
ou até mesmo a placa de vídeo da máquina.
Gerenciamento de Arquivos
110
Segurança
Administração de serviços
Como você viu, os sistemas operacionais contam com uma lista extensa de
recursos. Todos eles podem ser resumidos em algumas características. Dentre elas,
podemos destacar que os sistemas:
O que é Kernel?
Monolítico
No kernel monolítico temos todo o código de suporte para execução das ta-
refas empregadas dentro de apenas um núcleo. Ou seja, caso necessário executar
uma ação, o sistema operacional se comunica diretamente com o kernel e realiza
o que é pedido. Todos os módulos necessários para executar o sistema são arma-
zenados dentro do espaço do kernel monolítico. Alguns exemplos de sistemas que
utilizam a arquitetura monolítica:
• FreeBSD.
• NetBSD.
• OpenBSD.
• Solaris.
• Linux.
• DOS.
• MS-DOS.
Micro kernels
• Família do microkernel L4
• Horizon
• Zircon
• Hurd
• MINIX
• QNX
112
[...]
QUAIS AS VANTAGENS DOS SISTEMAS OPERACIONAIS?
Usabilidade
Segurança
Compartilhar recursos
Multitarefas
[...]
CONCLUSÃO
113
Conhecer os sistemas operacionais é muito útil para pessoas desenvolve-
doras e programadoras, ou para aquelas que ainda estão no processo para mudar
para uma carreira no mercado de tecnologia. Isso porque conhecer a fundo o fun-
cionamento das máquinas facilita a compreensão de sua lógica. Já para quem não
faz parte da área de tecnologia, saber mais sobre sistemas operacionais também
é uma boa ideia, uma vez que lidamos com eles diariamente nos mais variados
dispositivos.
Fonte: NOLETO, C. O que é sistema operacional? O guia completo! Trybe, Belo Ho-
rizonte, 2 ago. 2022. Disponível em: https://blog.betrybe.com/tecnologia/sistema-
-operacional-tudo-sobre/. Acesso em: 21 nov. 2022.
114
RESUMO DO TÓPICO 3
115
AUTOATIVIDADE
116
c. ( ) Os requisitos para interrupção são sinais elétricos transmitidos
através do painel de controle do computador. A cada interrupção
é atribuído um número único, normalmente na faixa de 0-31 ou
0-63, permitindo a identificação do dispositivo que a solicitou.
d. ( ) Uma camada de gerenciamento de blocos fica acima dos dri-
vers e controla o fluxo de blocos de dados entre a memória e os
dispositivos de armazenamento.
117
5. Os requisitos para interrupção são sinais elétricos transmitidos através
do painel de controle do computador. Disserte sobre os conceitos que
envolvem interrupções em um sistema computacional.
118
REFERÊNCIAS
119
120
UNIDADE 3
SISTEMAS
OPERACIONAIS –
SEGURANÇA
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
• Compreender os conceitos de deadlock em sistemas operacionais;
• Entender os conceitos de administração de sistemas operacionais;
• Compreender os requisitos de uma rede de computadores sob aspecto
dos sistemas operacionais;
• Entender os conceitos de segurança de sistemas operacionais.
PLANO DE ESTUDOS
A cada tópico desta unidade, você encontrará autoatividades com o objetivo
de reforçar o conteúdo apresentado.
TÓPICO 1 – SEGURANÇA DE SISTEMAS OPERACIONAIS
TÓPICO 2 – VIRTUALIZAÇÃO DE SISTEMAS OPERACIONAIS
TÓPICO 3 – DEADLOCK, SISTEMAS NUMÉRICOS E CONVERSÃO DE BASES
TÓPICO 1
SEGURANÇA
DE SISTEMAS
OPERACIONAIS
1 INTRODUÇÃO
Os conceitos básicos de segurança e criptografia serão apresentados pri-
meiro, seguidos de descrições de aspectos conceituais e mecanismos relacionados
à autenticação de usuários, controle de acesso, integridade do sistema e privaci-
dade, aplicações e dados armazenados. A maioria dos tópicos de segurança abor-
dados neste tópico se aplica a sistemas de computação em geral, e não apenas a
sistemas operacionais.
A segurança de um sistema de computador refere-se à garantia de algumas
propriedades fundamentais relacionadas aos dados e recursos contidos no sistema.
Todos os recursos do sistema, incluindo registros de banco de dados, documentos,
áreas de memória, pontos de entrada/saída, conexões de rede, configurações, den-
tre outros, são chamados de “informações”.
Em português, a palavra “segurança” tem vários significados, muitas vezes
contraditórios. As palavras “segurança” e “confiabilidade” em inglês nos permitem
definir com mais precisão as várias facetas da segurança. Esses termos também
abrangem ameaças que visam prejudicar usuários de um sistema ou o ambiente,
como erros de programação que podem levar a acidentes. O termo “confiabilidade”
é usado para descrever sistemas confiáveis e construídos para resistir a erros co-
metidos por usuários, hardware, software ou outras fontes de erro.
Portanto, neste tópico, serão discutidas apenas questões de segurança re-
lacionadas à palavra inglesa “security”, ou defesa contra ameaças intencionais.
123
• confidencialidade: somente usuários devidamente autorizados a fa-
zê-lo podem consultar os recursos do sistema;
• integridade: os recursos do sistema só podem ser alterados ou des-
truídos por usuários autorizados a realizar tais operações;
• disponibilidade: os recursos devem ser acessíveis a usuários que te-
nham o direito de usá-los a qualquer momento.
125
3 AMEAÇAS
Qualquer ação que coloque em risco os recursos de segurança do sistema,
conforme descrito na seção anterior, pode ser considerada uma ameaça. Alguns
exemplos de ameaças aos direitos básicos de propriedade relacionados à seguran-
ça podem ser:
4 VULNERABILIDADES
Uma vulnerabilidade é uma falha ou problema que pode ser usado para vio-
lar os recursos de segurança de um software ou sistema, presente em sua especi-
ficação, implementação, configuração ou operação. Alguns exemplos de vulnera-
bilidades são:
126
• A ausência de limites de espaço em disco, permitindo que um único
usuário reivindique todo o espaço disponível para si, impedindo que ou-
tros usuários usem o sistema.
5 CONTROLE DE ACESSO
O controle de acesso em um sistema de computador envolve a avaliação de
cada solicitação de acesso de um usuário que foi autenticado para usar um recurso
ou que recebeu acesso do sistema para determinar se essa solicitação deve ser
concedida ou negada. Praticamente todos os recursos operacionais, como docu-
mentos, áreas de memória, computadores de semáforo, portas de rede, dispositi-
vos de entrada/saída, dentre outros, estão sujeitos a controles de acesso. Alguns
conceitos-chave, inclusive como políticas, modelos e mecanismos, são necessá-
rios para entender o controle de acesso, os quais veremos adiante.
127
É costume dividir as entidades do sistema em dois grupos no controle de
acesso: sujeitos e objetos. Todas as entidades que desempenham um papel ativo
no sistema, como processos, threads ou transações, são consideradas sujeitos.
Normalmente, um sujeito opera em nome de um usuário, que pode ser um huma-
no ou outro sistema de computador externo. Objetos são as entidades passivas
que os sujeitos utilizam, como documentos, espaços de memória ou registros de
bancos de dados. Em algumas situações, um sujeito pode ser percebido por outro
sujeito como um objeto (por exemplo, quando um sujeito deve enviar uma mensa-
gem a outro sujeito). Tanto os assuntos quanto os objetos podem ser organizados
em grupos e hierarquias para facilitar o gerenciamento da segurança.
129
Os papéis permitem que os usuários removam suas permissões. Como re-
sultado, uma coleção de artigos adequadamente definida é geralmente estável;
tudo o que resta para a administração fazer é atribuir a cada usuário os papéis a
que tem direito.
130
to, só é acessível para leitura, escrita e execução pelo proprietário do documento
(permissões rwx), para leitura e execução por usuários do grupo prof (permissões
r-x); não é acessível para outros usuários (permissões — -). No caso de diretórios,
o alvará de leitura autoriza a listagem da diretoria, o alvará de escrita autoriza sua
modificação (criação, remoção ou substituição de documentos ou subdiretórios) e
o alvará de execução autoriza o uso dessa direção como um local de trabalho ou
como um componente de um caminho.
131
teria uma influência negativa significativa no desempenho do sistema, o controle
contínuo de acesso a documentos não é muito utilizado em sistemas operacionais.
133
abordagem é usada em alguns sistemas operacionais com ampla apli-
cação. Vários tipos de usuários administrativos são definidos por algu-
mas implementações, cada um com um conjunto único de privilégios,
como a capacidade de acessar dispositivos externos, iniciar máquinas
virtuais, reiniciar o sistema etc. Um software malicioso executado por
um usuário administrativo terá acesso a todas as suas permissões;
• permissões temporárias: é uma permissão concedida sob demanda
a determinados processos de usuário para realizar ações administrati-
vas; essas permissões podem ser revogadas pelo processo após a con-
clusão das ações. As permissões podem estar conectadas à papelada
administrativa, que seria ativada quando o usuário precisasse delas.
Essa é a estratégia empregada pela infraestrutura UAC (User Access
Control), na qual um usuário administrativo inicia sua sessão de traba-
lho como usuário regular e só ativa sua função administrativa quando é
necessário realizar uma ação administrativa, desativando-a imediata-
mente após a ação estar completa. Um procedimento de reautentica-
ção pode ser afetado pela ativação da função administrativa;
• alteração de credenciais: permite que alguns processos de usuá-
rios alterem identidades, assumindo as identidades de outros usuários
que possuem as permissões necessárias para realizar a ação desejada.
Essa é uma variação da concessão de permissões temporárias. Os sina-
lizadores setuid e setgid do Unix são o exemplo mais conhecido dessa
abordagem em uso;
• monitores: os processos definidos com autoridade administrativa são
chamados de monitores ou supervisores e recebem solicitações de
ações administrativas de processos não privilegiados por meio de uma
API previamente definida; solicitações de processos convencionais são
validadas e atendidas. Essa abordagem, conhecida como separação de
privilégios, também é usada na infraestrutura PolicyKit, que é usada
para autorizar tarefas administrativas em ambientes Linux de desktop.
IMPORTANTE
Ao proteger o sistema operacional, você deixa o ambiente estável e ge-
rencia o acesso a recursos e o acesso externo ao ambiente. A segurança
física do sistema é crucial. As ameaças podem ter origem on-line, mas
também podem ter manifestações físicas.
134
RESUMO DO TÓPICO 1
135
AUTOATIVIDADE
136
a. ( ) Somente usuários devidamente autorizados podem consultar
os recursos do sistema.
b. ( ) Os recursos devem ser acessíveis a usuários que tenham o
direito de usá-los a qualquer momento.
c. ( ) Os recursos devem ser acessíveis a usuários que tenham o
direito de usá-los a qualquer momento.
d. ( ) Os recursos devem ser acessíveis a usuários que tenham o
direito de usá-los a qualquer momento.
137
TÓPICO 2
VIRTUALIZAÇÃO
DE SISTEMAS
OPERACIONAIS
1 INTRODUÇÃO
Um número crescente de pesquisadores, fabricantes de hardware/softwa-
re, administradores de sistema e usuários avançados estão prestando muita aten-
ção às tecnologias que virtualizam o ambiente no qual aplicativos ou plataformas
de hardware são executados. Os avanços mais recentes nesse campo permitem o
uso de máquinas virtuais para a mais ampla gama de objetivos, incluindo seguran-
ça, compatibilidade de aplicativos legados e consolidação de servidores.
Assim, neste tópico, abordaremos conceitos fundamentais, projetos arqui-
tetônicos e implementações de ambientes de trabalho virtuais – como máquinas
virtuais, emuladores e contêineres.
2 UM BREVE HISTÓRICO
A ideia de uma máquina virtual não é nova. Os primeiros passos na cria-
ção de ambientes de máquinas virtuais foram dados na década de 1960, quando a
IBM desenvolveu o sistema operacional experimental M44/44X. A partir dele, essa
empresa desenvolveu vários sistemas comerciais de suporte à virtualização, in-
cluindo o conhecido OS/370. Na época, a tendência predominante em sistemas
de computador era fornecer a cada usuário um ambiente monousuário completo,
completamente independente e desconectado dos ambientes dos outros usuários.
Os primeiros exemplos do mundo real do uso de máquinas virtuais para exe-
cutar aplicativos surgiram nesse momento e envolviam o ambiente UCSD p-Sys-
tem, no qual os programas Pascal são compilados para execução em uma abstra-
ção de hardware conhecida como P-Machine.
A popularidade de plataformas de hardware baratas como o PC na década
de 1980 tornou a virtualização menos significativa. Finalmente, fornecer a cada
138
usuário um computador completo era mais acessível, conveniente e versátil do que
investir em sistemas de grande escala, complicados e caros. Além disso, o hardwa-
re do PC apresentava baixo desempenho e oferecia suporte inadequado à virtuali-
zação, o que impedia o uso de ambientes virtuais nessas plataformas.
Com o aumento de desempenho e funcionalidades do hardware PC e o re-
torno da linguagem Java, no início dos anos 1990 o interesse pelas tecnologias de
virtualização voltou à tona. Atualmente, com soluções de virtualização vêm des-
pertando grande interesse do mercado de máquinas virtuais portáteis.
139
virtual deve se comportar exatamente da mesma maneira como se estivesse sen-
do executado em uma máquina física; exceções podem surgir apenas de diferen-
ças nos recursos disponíveis (memória, disco, dentre outros.), nas dependências de
tempo e na presença de dispositivos de entrada/saída necessários para o aplica-
tivo;
140
Para entender mais claramente as implicações dessa teoria, os seguintes
conceitos devem ser definidos:
De acordo com essa teoria, toda instrução sensata também deve ser prote-
gida. Como resultado, ocorrerá uma interrupção quando uma instrução sensível for
executada por um programa não autorizado (como uma rede confiável ou aplicativo
confiável). Essa interrupção pode ser utilizada para ativar uma rotina de interpre-
tação dentro do hipervisor que irá imitar o efeito da instrução sensível (ou, dito
de outra forma, interpretá-la), dependendo do ambiente em que sua execução foi
solicitada (uma máquina virtual ou um hipervisor). Naturalmente, quanto mais ins-
truções sensatas houver, mais interpretação de código precisará ser feita e menos
eficaz será a máquina virtual.
Quando um programa é carregado na memória, um hipervisor analisa seu
código-fonte e substitui instruções confidenciais por rotinas que o hipervisor inter-
preta. Isso adiciona mais tempo ao lançamento de programas, mas torna possível
a virtualização. Outra técnica para resolver o problema é a virtualização, que se
baseia em reescrever uma parte do sistema convidada para evitar o uso dessas
instruções confidenciais. Ambas as técnicas serão discutidas mais adiante.
141
3.2.1 EMULAÇÃO COMPLETA
Nessa abordagem, cada interface de hardware – incluindo as instruções do
processador, memória e dispositivos periféricos – é virtualizada. Isso permite, se
necessário, fornecer ao sistema operacional uma interface de hardware diferente
daquela fornecida pela máquina real que vem a seguir. O custo da virtualização
pode ser muito alto porque cada comando enviado pelo sistema escolhido deve ser
examinado e traduzido em um ou mais comandos que tenham o mesmo significa-
do em um computador real, no entanto essa abordagem permite que os sistemas
operacionais sejam operados em plataformas diferentes daquela para a qual foram
destinados, sem a necessidade de modificações.
Exemplos de abordagens típicas de emulação completa incluem sistemas
de máquina virtual como QEMU, que oferece um processador Intel Pentium II para o
sistema solicitante, Microsoft VirtualPC para MAC, que permite que o Windows seja
executado em uma plataforma de hardware PowerPC, e Hercules, que emula um
IBM System/390 em um PC convencional baseado em Intel.
Um exemplo único de emulação completa são os hipervisores baseados em
hardware (hipervisores coprojetados). Um hipervisor modificado é visto como um
componente integral do hardware e implementa a visão dos sistemas operacio-
nais e de aplicativos da plataforma da interface do sistema (ISA), no entanto as
instruções combinadas do processador real são acessíveis apenas ao hipervisor,
que lida com as instruções executadas pelos sistemas convidados usando técnicas
de tradução dinâmica. O hipervisor reside em uma área de memória separada da
memória principal. Um exemplo típico desse tipo de sistema é o processador Trans-
meta Crusoe/Eceon, que aceita instruções no formato Intel de 32 bits e as converte
internamente em uma coleção de instruções VLIW (Very Large Instruction Word).
142
aplicativo Java que foi compilado em bytecode pode ser executado em qualquer
plataforma que tenha uma implementação de Java Virtual Machine (JVM).
Outro uso comum da virtualização é o compartilhamento de hardware, que
possibilita executar vários sistemas operacionais ou instâncias do mesmo siste-
ma operacional simultaneamente na mesma plataforma de hardware. Uma área
de aplicação para essa possibilidade é a consolidação de servidores, que envolve a
combinação de vários servidores de rede (como web, e-mail, proxy, bancos de da-
dos etc.) em um computador. Em vez de instalar vários computadores fisicamente
isolados uns dos outros para hospedar cada serviço, é possível instalar um único
computador com mais poder de processamento para dar suporte a várias máqui-
nas virtuais, cada uma executando um sistema operacional diferente e fornecendo
seu próprio serviço. Essa abordagem visa fazer melhor uso do hardware já instala-
do: como a alocação de recursos entre os sistemas convidados pode ser ajustada
dinamicamente, mais recursos podem ser alocados para serviços com maior de-
manda a qualquer momento.
Além desses aplicativos, vários outros usos potenciais para ambientes de
máquina virtual também podem ser descobertos, incluindo os seguintes:
• Hipervisor convidado:
• VMware Workstation: a primeira versão comercial da máquina virtual,
lançada em 1999 para ambientes desktop;
• VMware Fusion: uma versão experimental para o sistema operacional
Mac OS com processadores Intel;
• VMware Player: uma versão gratuita do VMware Workstation que
permite apenas a execução de máquinas virtuais desenvolvidas an-
teriormente em versões comerciais;
144
• • Servidor VMWare: uma versão paga do VMware Workstation que
oferece diversos recursos;
• Hipervisor nativo:
• • VMware ESX Server: para servidores de grande capacidade, possui
um kernel proprietário chamado vmkernel e usa o Red Hat Linux para
fornecer outros serviços, como gerenciamento de usuários.
IMPORTANTE
A virtualização do sistema operacional é uma tecnologia que ganhou po-
pularidade. Seu principal objetivo é dividir os recursos de hardware para
que muitos sistemas operacionais (e aplicativos) possam ser executados
de forma isolada uns dos outros.
145
RESUMO DO TÓPICO 2
146
AUTOATIVIDADE
147
c. ( ) O hipervisor deve ter controle total sobre os recursos da má-
quina física. Nenhum programa em execução na máquina virtual
tem permissão para acessar recursos que não tenham sido espe-
cificamente atribuídos a ela pelo hipervisor, que deve atuar como
intermediário para todos os acessos.
d. ( ) Os aplicativos dentro de uma máquina virtual não conseguem
se comunicar diretamente com outras máquinas virtuais, o hiper-
visor ou um sistema de hospedagem do mundo real.
148
TÓPICO 3
DEADLOCK,
SISTEMAS
NUMÉRICOS E
CONVERSÃO DE
BASES
1 INTRODUÇÃO
Existem inúmeros recursos em sistemas computacionais que são apropria-
dos para o uso de apenas um processo por vez, como impressoras, unidades de
fita e entradas nas tabelas internas do sistema. Haverá um impasse se dois ou mais
processos tentaram gravar simultaneamente no mesmo dispositivo de impressão.
Dessa forma, todos os sistemas operacionais devem ser capazes de garantir que
um processo tenha acesso exclusivo a determinados recursos, mesmo que apenas
temporariamente.
Em muitos casos, um processo requer acesso a vários recursos em vez de
apenas acesso exclusivo a um. Por exemplo, dois processos podem querer gravar
um documento obtido através de um scanner em um CD. Enquanto o processo
B, programado de forma diferente, está usando um gravador de CD, o processo
A está usando um scanner. Assim, o processo A solicita o uso do gravador de CD,
mas o pedido é negado até que o processo B o libere, no entanto o procedimento B
solicita o uso do scanner em vez de liberar o gravador de CD. Ambos os processos
estão atualmente bloqueados e assim permanecerão para sempre. Essa situação é
conhecida como deadlock.
149
2 DEFINIÇÃO DE DEADLOCK
Deadlock pode ser definido como um grupo de processos estará em uma
situação de deadlock se todos os processos dentro do grupo estiverem esperando
por um evento que somente outro processo dentro do grupo pode fazer ocorrer.
Para colocar de forma mais simples, podemos dizer que deadlock é uma fra-
se usada para descrever um problema que surge quando vários processos compe-
tem entre si. A ocorrência de deadlock depende das características de dois ou mais
programas distintos e dos processos individuais executados simultaneamente por
esses programas. Embora seja possível executar repetidamente esses processos
usando vários processos sem ocorrer um deadlock, basta um procedimento parti-
cularmente difícil para alcançar uma situação de deadlock.
Mesmo que não tenha nada a ver com computadores, podemos usar uma
situação de impasse para ajudar as pessoas a entenderem esse conceito. Em uma
estrada que só permite a passagem de um veículo, dois carros trafegam em dire-
ções opostas, um perseguindo o outro. Nessa situação, os dois se tornam incapa-
zes de continuar sua jornada.
Existem quatro condições para a ocorrência de deadlock:
Para que haja uma paralisação, cada uma dessas circunstâncias deve se
manifestar ao mesmo tempo. Não haverá um impasse se uma dessas condições
não for verdadeira.
Qualquer sistema operacional pode enfrentar um impasse. Deadlock ocorre
quando dois ou mais processos estão esperando interminavelmente por um evento
que só pode acontecer em um dos processos que estão esperando. Existem várias
estratégias para lidar com deadlocks, por exemplo, detecção e recuperação ou pre-
venção de deadlocks. Uma das estratégias mais simples é ignorar a ocorrência de
deadlock; essa estratégia funciona se não houver realmente um impasse, mas para
150
determinar se as estratégias de tratamento de impasses devem ou não ser imple-
mentadas, é necessário analisar as necessidades do negócio e pesar os custos e
benefícios que podem produzir.
3 SISTEMAS DE NUMERAÇÃO
Na vida cotidiana, as pessoas se comunicam tanto do ponto de vista algé-
brico, usando o sistema decimal, quanto do ponto de vista alfabético, usando uma
linguagem específica. Semelhante a isso, o computador, por suas características
físicas, lida com o sistema binário de ambos os lados, empregando um conjunto de
códigos que possibilitam seu funcionamento impecável.
Os sistemas decimal e binário são estruturados com base nos mesmos prin-
cípios fundamentais. Por meio do uso do símbolo cadeia, tanto um quanto os outros
números são representados. Cada símbolo representa uma quantidade específica
de acordo com sua posição dentro da cadeia.
Por motivos técnicos, a maioria dos circuitos eletrônicos de computador são
projetados para reconhecer sinais elétricos digitais; como resultado, os métodos de
codificação interna devem ser realizados com base no sistema binário, permitindo a
representação de todos os tipos de informações e instruções que um computador
processa.
Do ponto de vista lógico, em circuitos eletrônicos, a presença de tensão em
um determinado ponto do circuito é representada pela álgebra 1, e a ausência de
tensão é representada pela álgebra 0.
0123456789
151
Uma quantidade específica, referida como um número decimal, pode ser
expressa da seguinte forma:
N° = (dígito)i x (base)i
Em que:
• base = 10
• i = posição em relação à vírgula
• d = número de dígitos à direita da vírgula
• n = número de dígitos à esquerda da vírgula
• dígito = cada um dos dígitos que compõem o número
152
3.3 SISTEMA OCTAL
É um sistema de numeração com base de 8 símbolos, ou seja, são usados
8 símbolos para representar quantidade. Esses símbolos representam algarismos
árabes em todo o Oriente. O sistema octal foi amplamente utilizado na tecnologia
da informação como uma alternativa mais compacta ao sistema binário na progra-
mação de linguagem de máquina. Os símbolos desse sistema são:
01234567
4 x 83 + 7 x 82 + 0 x 81 + 1 x 80
2048 + 448 + 0 + 1 = 2497
0123456789ABCDEF
A 10
B 11
C 12
D 13
153
E 14
F 15
Fonte: O autor
2 x 162 + C x 81 + A x 80
2 x 162 + 12 x 81 + 10 x 80
512 + 192 + 10 = 714
154
Figura 4 – Conversão do número 10 em binário
10(10) = 1010(2)
Fonte: O autor
... X4 x 104 + X3 x 103 + X2 x 102 + X1 x 101 + X0 x 100 + X-1 x 10-1 + X-2 x 10-2…
101011 = 1 x 25 + 0 x 24 + 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 = 32 + 0 + 8 + 0 + 2 + 1 = 43
101011(2) = 43(10)
Fonte: O autor
155
Figura 6 – CONVERSÃO DO NÚMERO 101010(2) EM DECIMAL
Fonte: O autor
Observe:
32 + 0 + 8 +0+2+0 = 42
Portanto 101010(2) = 42(10).
500(10) = 764(2)
Fonte: O autor
156
a conversão de forma direta. Vejamos este exemplo, da conversão do número octal
764 para o seu equivalente em decimal:
Fonte: O autor
157
3.5.7 CONVERSÃO OCTAL-BINÁRIO
Trata-se de uma conversão muito simples; pode-se utilizar a regra prática
descrita a seguir
Vamos utilizar um número octal qualquer, por exemplo, o número 27(8). A
regra consiste em transformar cada algarismo diretamente no correspondente em
binário, respeitando-se o número padrão de bits do sistema, que para o octal é igual
a três (23 = 8 → base do sistema octal). Assim, temos:
Fonte: O autor
110 010
Fonte: O autor
158
3.5.9 CONVERSÃO BINÁRIO-HEXADECIMAL
É análoga à conversão octal para o sistema binário, mas, nesse caso, neces-
sita-se de 4 bits para representar cada algarismo hexadecimal (24 = 16 → base do
sistema hexadecimal).
Como exemplo, vamos converter o número C13(16) para o sistema binário:
Fonte: O autor
Fonte: O autor
NOTA
Um sistema de numeração é uma coleção de regras para classificar as uni-
dades que compõem os números em grupos e subgrupos, as quais devem
se combinar para formar uma unidade superior como base de um sistema
numérico.
159
LEITURA COMPLEMENTAR
160
escalonamento dos processos no método de round-robin, as requisições poderão
ocorrer da seguinte forma:
A pede R; B pede S; C pede T; A pede S; B pede T; C pede R.
Então ocorre uma cadeia circular de processos e recursos, indicando um deadlock.
Vamos ver agora as quatro estratégias para se tratar um deadlock:
1. O Algoritmo da Avestruz (ignorar o problema): mais simples estratégia, con-
siste em fazer como se faz uma avestruz diante a uma situação de perigo: colocar
a cabeça num buraco e fingir que o problema inexiste. É a solução mais utilizada,
pois há baixa probabilidade de ocorrência de deadlock e baixo custo. O UNIX utiliza
este método.
2. Detecção e Recuperação: o SO apenas monitora as requisições e liberações de
recursos, através da manutenção de um grafo de recursos, que é constantemente
atualizado e onde se verifica a ocorrência de ciclos, se houver algum ciclo, um dos
processos deve ser morto. Se o ciclo ainda permanecer, outro processo deve ser
morto e assim sucessivamente, até que o ciclo seja quebrado. Técnica utilizada em
computadores grandes geralmente em batch, onde um processo pode ser morto e
mais tarde reinicializado. Deve-se ter o cuidado de que qualquer arquivo modificado
pelo processo morto deve ser restaurado ao seu estado original antes de iniciar o
processo novamente.
3. Prevenção de Deadlock (negando uma das quatro condições necessárias):
consiste em impor restrições aos processos de forma que o deadlock seja impossí-
vel. Possibilidades de eliminar as condições:
161
recursos devemos fazer com que cada processo só possa ter um re-
curso por vez e se desejar outro, deve liberar o que possui (isto impos-
sibilitaria coisas simples como cópia de uma fita para outra) ou senão
podemos dar uma numeração global a todos os recursos e os processos
só podem requisitar recursos em ordem numérica crescente. O proble-
ma é que é difícil encontrar uma numeração que satisfaça a maioria das
possíveis condições de acesso.
Cada cliente pode em cada momento realizar um pedido desde que não ultrapasse
seu limite de crédito e o banqueiro pode escolher o momento de atendimento dos
pedidos realizados. Após o recebimento de todo o crédito que especificou inicial-
162
mente o cliente se compromete a devolver tudo. O banqueiro deve analisar para
que não entre numa situação difícil.
Chamamos de estado, a situação dos empréstimos e dos recursos ainda disponí-
veis em um dado momento.
O exemplo anterior demonstra um estado seguro, pois existe uma sequência de ou-
tros estados que leva a que todos os clientes recebam seus empréstimos até seus
limites de crédito. O banqueiro pode emprestar duas unidades à C pegar a devolu-
ção da mesma (4) emprestar à B, pegar as cinco unidades de volta e emprestar à A,
pegar as seis unidades de volta e emprestar três delas à D, pegando então as sete
unidades de volta, garantindo o atendimento a todos os clientes. Se por exemplo o
cliente B fizesse um pedido de mais uma unidade (2) teríamos um estado não se-
guro, pois não há forma do banqueiro garantir o atendimento de todos os pedidos,
podendo vir a gerar um deadlock. Ainda não haverá um deadlock, pois os valores de
máximo não precisam necessariamente ser atingido. Por exemplo, o cliente D pode
decidir que não precisa mais de novos recursos e devolver os quatro que pediu,
voltando novamente a uma situação segura, mas o banqueiro não pode contar com
isso, então para cada pedido que chega, o banqueiro deve verificar se conceder o
mesmo leva a uma situação segura, verificando se o disponível é suficiente para
atender o cliente mais próximo de seu máximo. Se for, finge que esse cliente já
devolveu tudo que possuía, marca o mesmo como terminado e verifica se pode
atender o cliente mais próximo do máximo entre os que restam. Se ele puder levar
a bom termo esse processo, atendendo todos os clientes então o estado é seguro.
163
2. Algoritmo do Banqueiro para Vários Recursos: montamos duas matrizes, uma
dos recursos entregue e outra de recursos ainda necessários, sendo que cada linha
das matrizes corresponde a um processo e cada coluna a um tipo de recurso:
164
RESUMO DO TÓPICO 3
• Deadlock pode ser definido como um grupo de processos estará em uma situa-
ção de deadlock se todos os processos dentro do grupo estiverem esperando
por um evento que somente outro processo dentro do grupo pode fazer ocorrer.
• Existem quatro condições para a ocorrência de deadlock: exclusão mútua; pos-
sibilidade e esperança; não preempção; e espera cíclica.
• O computador, por suas características físicas, lida com o sistema binário de
ambos os lados, empregando um conjunto de códigos que possibilitam seu fun-
cionamento impecável.
• O nome para a transformação de uma quantidade específica em um sistema
numérico em seu equivalente em outro sistema é “conversão”.
165
AUTOATIVIDADE
166
3. O sistema de numeração decimal é de base 10, ou seja, utiliza 10 algaris-
mos (símbolos) diferentes para representar todos os números. Baseado
no entendimento dessa informação, assinale a alternativa CORRETA:
167
REFERÊNCIAS
168