Sistemas Operacionais

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 236

Unidade 1 / Aula 1

Introdução aos sistemas operacionais

Introdução da Unidade

Objetivos da Unidade

Ao longo desta Unidade, você irá:

• descrever a evolução dos sistemas operacionais e o progresso dos co


mputadores;
• explicar como os sistemas operacionais gerenciam diversos progra
mas e aplicativos do usuário e do sistema sem comprometer a perfor
mance do computador;
• analisar os sistemas operacionais existentes no mercado.

Introdução da Unidade

Olá estudante, boas-vindas!


Nesta unidade veremos as diferentes aplicações dos sistemas operacionais
e como seus diferentes tipos são utilizados em diversas situações, adequan
do-se às necessidades dos usuários. Os conceitos de sistemas operacionais
como segurança, permissão de acesso, armazenamento de dados, recupera
ção das informações, dentre outros estão presentes em todas as ramificaçõ
es da área da tecnologia da informação, e o conhecimento em sistemas ope
racionais aperfeiçoa as habilidades do profissional de TI em sua área de at
uação. Por exemplo:

• na área de banco de dados – armazenamento e acesso às informaçõe


s.
• em programação de sistemas – quando um programa é desenvolvid
o, é necessário definir a permissão de acesso dos usuários para gara
ntir a segurança do sistema.
• na área de redes – performance e segurança da rede.

Vamos começar a estudar o universo dos sistemas operacionais, sua histór


ia e suas características. Após o término desta unidade, você terá condiçõe
s de entender os recursos essenciais dos principais sistemas operacionais.

Para isso, você estudará a definição, os conceitos, a história e a evolução de


les, desde o primeiro computador até os atuais, além de aprender sobre as f
unções e os serviços oferecidos pelo sistema operacional. Aprender sobre o
s sistemas operacionais proporcionará um conhecimento que envolve vári
as áreas da computação, fazendo com que você, estudante, se interesse e qu
eira cada vez mais conhecer e ser capaz de utilizar os recursos essenciais d
os principais sistemas operacionais.

Neste contexto, imagine que um professor de informática da escola munici


pal de sua cidade te convidou para dar um curso durante um simpósio “Inf
ormática para todos” entre as escolas municipais da região. O objetivo do e
vento é ampliar os conhecimentos dos estudantes na área de tecnologia. O
tema do curso escolhido para você foi Sistemas Operacionais, no qual será
abordado desde a definição e os conceitos, avançando até as características
do Windows e do Linux.

Ao realizar o planejamento juntamente com o professor de informática da e


scola, ficou definido que seriam abordados os seguintes conteúdos: definiçã
o, conceitos e um breve histórico dos sistemas operacionais e sua evolução
até os dias atuais, além das principais funções e serviços; a estrutura e os ti
pos de sistemas operacionais; as características e a composição dos sistem
as operacionais mostrando as propriedades do Linux e do Windows, exemp
lificando cada um.

O professor de informática relata a você que às vezes escuta dos estudantes


os seguintes questionamentos:

• qual a importância dos sistemas operacionais para o avanço tecnoló


gico?
• e qual a sua aplicabilidade para o ensino?
• por que devemos incluir a informática em sala de aula?

Ao final do curso, os estudantes farão um relatório dos temas abordados uti


lizando um editor de texto e seguindo os padrões de formatação da ABNT, a
presentando as principais características dos sistemas operacionais Linux
e Windows.

Vamos juntos conhecer mais sobre os sistemas operacionais e suas aplicaç


ões!

Introdução da aula
Qual é o foco da aula?

Nesta aula, você conhecerá os conceitos e a história dos sistemas operacio


nais e suas particularidades, além de iniciar também o aprendizado sobre a
s funções e os serviços que eles oferecem.
Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• explicar o histórico, a definição e os conceitos dos sistemas operacio


nais;
• identificar as principais funções dos sistemas operacionais: estender
a máquina e gerenciar os recursos;
• analisar os principais serviços dos sistemas operacionais para os apl
icativos dos usuários e para o próprio sistema.

Situação-problema

Os Sistemas Operacionais evoluíram com o progresso dos computadores. N


o início, não existiam sistemas operacionais e os computadores eram mani
pulados manualmente. Atualmente, executam diversas funções e oferecem
serviços que auxiliam o usuário e os programadores na execução do trabal
ho, tomando para si as funções de controlar o hardware disponível.
Relembrando nosso contexto sobre o curso de sistemas operacionais minis
trado por você durante o simpósio “Informática para todos” entre as escolas
municipais da região, você organizou os estudantes em grupos de discussã
o, disponibilizou alguns artigos abordando questões sobre definição, concei
to, história e principais funções e serviços dos sistemas operacionais. Poste
riormente à leitura do artigo, durante a realização de um debate, você é que
stionado quanto à importância dos sistemas operacionais.

Ainda, surgem as seguintes perguntas:

• qual o papel do sistema operacional como um gerenciador de recurs


os do computador?
• qual a principal diferença quanto ao acesso do código fonte do Wind
ows e do Linux?
• quais são os serviços oferecidos pelos sistemas operacionais Linux e
do Windows?

Compile as informações obtidas por meio dos questionamentos, para lhe au


xiliar na produção do relatório final. Para que você consiga responder essas
e outras dúvidas sobre os sistemas operacionais, nesta aula vamos conhec
er mais sobre os sistemas operacionais e os conteúdos pertinentes a este te
ma.

Bons estudos!

Definição, conceitos e breve histórico


dos sistemas operacionais
Segundo Tanenbaum (2003), o sistema operacional é parte essencial de qua
lquer sistema computacional. Se eles não existissem, os sistemas computa
cionais funcionariam, porém, o usuário teria que saber os detalhes de hard
ware para utilizar o computador, o que seria bem complexo.

Um sistema computacional é composto por hardware e software.

• Os hardwares são os componentes físicos do computador, como a CP


U (unidade central de processamento), o processador, memória, mou
se, teclado, monitor, entre outros.
• Já o software são programas (conjunto de instruções) instalados n
o hardware para executar uma determinada tarefa.

O sistema operacional é um software responsável por controlar o computa


dor e tem por objetivo gerenciar os recursos de hardware (processador, me
mória, periféricos do computador como teclado, mouse e impressora, dados
, dentre outros) e fazer a interação entre o hardware e o software, além de s
er o responsável por conectar o hardware e o usuário do computador, confo
rme apresentado na figura.
Sistema operacional – elo entre hardware e software. Fonte: elaborada pelo autor.
Segundo Machado (1997), quando o computador é ligado, o sistema operaci
onal é o primeiro programa a ser executado e permanece gerenciando os re
cursos de hardware e software até o computador ser desligado. O sistema o
peracional tem o objetivo de gerenciar o computador de forma eficiente e pr
odutiva facilitando o seu uso, além de garantir a integridade e a segurança
dos dados durante o processamento e na memória.
Breve histórico dos sistemas operacionais

Segundo Tanenbaum (2003), a evolução dos sistemas operacionais caminh


ou em conjunto com a evolução da arquitetura dos computadores. A primei
ra geração de computadores se deu entre 1945 a 1955 (válvulas e painéis de
programação). As máquinas eram enormes, lentas e compostas por válvula
s, ocupando salas inteiras, e as atividades eram realizadas por uma pessoa
por meio de painéis de programação.

Naquela época, não existiam sistemas operacionais e nem linguagens de pr


ogramação, e as máquinas basicamente realizavam cálculos matemáticos
como logaritmos, sendo usadas para fins militares. Se durante o processam
ento de um cálculo um erro acontecesse, o processamento recomeçava do i
nício e, com isso, perdia-se muito tempo. Ainda, se uma válvula queimasse,
todo o processamento estava perdido.
A imagem apresenta as máquinas da primeira geração de computadores.

Primeira geração de computadores. Fonte: Wikimedia Commons.


Segundo Tanenbaum (2003), a segunda geração de computadores foi entre
1955 a 1965 (Transistores e sistema em Lote, ou Batch, em inglês). Nessa ép
oca, surgiram os computadores de grande porte, os mainframes, porém so
mente grandes instituições como bancos e universidades tinham acesso, d
evido ao alto custo.

Os computadores eram utilizados para cálculos científicos como equações


diferenciais presentes na física e na engenharia. A imagem a seguir aprese
nta as máquinas da segunda geração de computadores. Outro fato é o surgi
mento das primeiras linguagens de programação Fortran e Assembly.
Computador de segunda geração. Fonte: Wikimedia Commons.
Os mainframes possuíam sistemas operacionais e operavam através de job
s (programa ou conjunto de programas). Os programas eram escritos em pa
pel e depois passados para os cartões perfurados.
O processamento dos cartões até se obter uma saída era muito demorado e,
com isso, surgiu outra solução: o sistema de lote (batch), cujo objetivo era gr
avar vários jobs em fita magnética usando um computador relativamente
mais barato, bom para ler cartões, copiar fitas e imprimir saídas (TANENB
AUM, 2003).

A figura a seguir apresenta um sistema batch antigo.


Processamento em lote. Fonte: Tanenbaum (2003, p. 5)
(a) Os programadores trazem os cartões para o 1401.

(b) O 1401 lê os Jobs em lote na fita.

(c) O operador leva a fita de entrada para o 7094.

(d) O 7094 realiza a computação.

(e) O operador leva a fita de saída para o 1401.

(f) O 1401 imprime a saída.

Segundo Tanenbaum (2003), a terceira geração de computadores compreen


deu o período entre 1965 a 1980 (Circuitos Integrados e Multiprogramação).
Nesta geração, os fabricantes de computadores ofereciam duas linhas de pr
odutos: os computadores científicos de grande escala orientados a palavras
, usados para cálculos numéricos na ciência e na engenharia e os computa
dores comerciais orientados a caracteres, usados por bancos e companhia
de seguros.

Porém, tinha um custo elevado para desenvolver e manter estes produtos.


A IBM, para resolver este empasse, desenvolveu o OS/360. As máquinas pos
suíam a mesma arquitetura e conjunto de instruções compatíveis, permitin
do o uso tanto científico quanto comercial, além de um melhor custo benefí
cio.

A figura a seguir apresenta as máquinas da terceira geração de computado


res.

Terceira geração de computadores. Fonte: Wikimedia Commons.


Segundo Tanenbaum (2003), uma das técnicas desenvolvidas nesta geraçã
o foi a multiprogramação, cujo objetivo era permitir que vários programas e
xecutassem ao mesmo tempo, compartilhando os recursos de memória.

Da necessidade de respostas mais rápidas de processamento surgiu o conc


eito de compartilhamento de tempo ou timesharing, que consiste em dividi
r o tempo de CPU por intervalo de tempo a cada programa a ser executado.
Nesta época, foi desenvolvido um sistema operacional que suportasse vário
s usuários conectados ao mesmo tempo, conhecido com Multics. O projeto
do Multics inseriu conceitos inovadores, porém somente nos anos seguinte
s foi criado o Unix, que é multitarefa e multiusuário.

A quarta geração de computadores compreende desde de 1980 até a present


e data (computadores pessoais). Com o desenvolvimento acelerado dos circ
uitos integrados ou microchip (circuito eletrônico), foi iniciada a era dos co
mputadores de uso pessoal.

Desde então, eles tiveram uma grande evolução em agilidade e praticidade,


tornaram-se menores, mais rápidos e mais baratos. Os sistemas operacion
ais usados nesta geração foram o MS-DOS e o Unix, quando se iniciou a int
erface gráfica, sendo o MS-DOS a base da evolução para o conhecido Windo
ws.

Com o desenvolvimento das redes de computadores pessoais, surgiram os


sistemas operacionais de rede, que permitem conectar-se a máquinas remo
tas e copiar arquivos de uma máquina para outra, e os sistemas operaciona
is distribuídos, que possuem múltiplos processadores. Hoje, os sistemas op
eracionais gerenciam redes, aplicações para redes, sistemas operacionais d
e servidores, sistemas operacionais em tempo real, além dos sistemas oper
acionais para celulares.

______
➕ Pesquise mais
Para saber mais sobre outros sistemas operacionais, acesse o artigo Conheç
a outros sistemas operacionais.

Principais funções e principais


serviços dos sistemas operacionais
As funções dos sistemas operacionais são: estender a máquina e gerenciar
os recursos (TANENBAUM, 2003).
Estender a máquina (ou máquina virtual)

A função do sistema operacional como uma máquina estendida é esconder


a complexidade do hardware do programador, conhecida também como ab
stração.

Por exemplo, o sistema operacional trata cada dispositivo físico como um a


rquivo e esses arquivos, ao serem manipulados emitindo os comandos de l
eitura/escrita ou de abrir/ fechar, muito complexos devido à quantidade de
parâmetros que recebem, ficam a cargo do sistema operacional controlar es
se dispositivo diretamente com o hardware.

______
🔁 Assimile

Vimos nesta aula que uma das funções do sistema operacional é estender a
máquina. O sistema operacional como uma máquina estendida ou máquin
a virtual esconde do programador a complexidade do hardware, apresenta
ndo uma interface amigável e gerenciável do sistema.

______
Gerenciar os recursos:

1. controlar de forma ordenada e compartilhada os recursos do comput


ador, como a memória, o processador e os dispositivos de E/S para os
processos (programas) que estão aguardando por eles.
2. controlar quem está usando qual recurso, garantindo suas requisiçõe
s de recursos e mediando os conflitos entre programas e usuário.
3. o gerenciamento de recursos controla o compartilhamento de recurs
os de duas formas: no tempo e no espaço. Quando um recurso é comp
artilhado no tempo, vários programas aguardam a sua vez de usá-lo.
O sistema operacional é quem decide qual programa irá utilizar o rec
urso e por quanto tempo. Outro tipo de compartilhamento é o de espa
ço, no qual vários programas utilizam uma parte do recurso. Por exe
mplo, a memória principal é dividida entre vários programas em exe
cução, permitindo assim que cada programa execute ao mesmo tem
po, sendo mais eficiente.

______
📝 Exemplificando

O sistema operacional controla de forma ordenada e compartilhada os recu


rsos do computador. Por exemplo, se você estiver editando um texto num e
ditor de textos e gravando uma mídia de dados, o sistema operacional não
permite que estes programas acessem ao mesmo tempo a memória princip
al, pois isso causaria a perda dos dados salvos durante a edição do arquivo
e ao acessar os dados da mídia, os arquivos teriam sido apagados.

______
Principais serviços dos sistemas operacionais
O sistema operacional oferece os seguintes serviços para os aplicativos dos
usuários e também ao próprio sistema (MACHADO, 1997):

1. meios para que um programa seja carregado em memória e executad


o.
2. um sistema de arquivos, permitindo criar, ler, escrever e excluir arqu
ivos.
3. uma interface de acesso aos periféricos (impressoras, scanner, câme
ra, pen-drive, etc.).
4. mecanismos de monitoração de recursos, capazes de identificar poss
íveis gargalos no sistema.
5. meios para armazenar/manter o estado do sistema.

______
💭 Reflita

Diante do que aprendemos: seria possível operar um computador sem siste


ma operacional?

Conclusão
Agora que você já conheceu a história dos sistemas operacionais e aprende
u sobre as principais funções e os principais serviços oferecidos por eles, v
amos voltar ao nosso contexto sobre o curso de sistemas operacionais mini
strado por você durante o simpósio “Informática para todos” entre as escola
s municipais da região.

Na realização do debate, surgem os seguintes questionamentos:

• qual a importância dos sistemas operacionais e qual o papel deles co


mo gerenciador de recursos do computador?
• qual a principal diferença quanto ao acesso do código fonte do Wind
ows e do Linux?
• quais são os serviços oferecidos pelos sistemas operacionais Linux e
Windows?

O sistema operacional é o software mais importante do computador, pois é


ele quem irá gerenciar todos os recursos e todas as ações realizadas pelos u
suários no computador.

Por exemplo, quando você deseja imprimir um documento, o sistema opera


cional verifica se o arquivo está no disco do computador, confere se as dim
ensões são as ideais para impressão, verifica se o drive da impressora está i
nstalado e se comunica com a impressora para que o documento seja impr
esso de acordo com a configuração definida por você.

Os sistemas operacionais Windows e Linux possuem características difere


ntes quanto aos serviços e às funções oferecidas, por exemplo, o Windows
não permite o acesso ao código fonte, sendo restrito aos desenvolvedores d
a Microsoft.

Já o código fonte do Linux é aberto e todos os usuários podem acessar ou at


é mesmo modificar o código. Quanto à licença de uso, o Linux está licencia
do sob a GPL (GNU Public License) e, por ser livre, qualquer usuário pode fa
zer os ajustes que quiser e lançar no mercado novas versões, além de não e
xistir restrições para o número de computadores que possuem o Linux inst
alado.

Com o Windows você adquire uma licença que pode ser instalada em apen
as um computador. O Linux possui um instalador de aplicativos, permitind
o que você baixe os programas que desejar. Para instalar aplicativos no Wi
ndows, é necessário saber onde adquirir o programa, baixar ou comprar o C
D de instalação.

Em relação ao suporte aos usuários, existem na internet grupos e fóruns de


suporte do Linux, enquanto o do Windows é realizado através de uma centr
al de atendimento e o usuário precisa pagar por este suporte.

Unidade 1 / Aula 2

Evolução dos sistemas operacionais

Introdução da aula

Qual é o foco da aula?


Nesta aula, vamos explicar a estrutura interna dos sistemas operacionais, c
onheceremos os tipos e aprenderemos sobre os sistemas operacionais mon
oprogramáveis, multiprogramáveis e com múltiplos processadores.
Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• explicar o principal componente dos sistemas operacionais, respons


ável pelo gerenciamento dos recursos do computador;
• identificar os modelos das principais arquiteturas dos sistemas oper
acionais: monolíticos, em camadas, máquinas virtuais e modelo clie
nte-servidor;
• classificar os sistemas operacionais: monoprogramáveis/monotaref
a, multiprogramáveis/multitarefa, sistemas com múltiplos processa
dores.

Situação-problema

Você já pensou sobre como os sistemas operacionais conseguem gerenciar


diversos programas e aplicativos do usuário e do sistema sem compromete
r a performance do computador?

Quando um computador está ligado, além dos seus aplicativos que estão se
ndo executados (como editor de textos, internet, aplicativos de música, entr
e outros), outros programas estão rodando em paralelo, como o antivírus (r
astreando as possíveis ameaças que poderiam danificar o sistema operacio
nal), atualização de versões de aplicativos instalados, etc. Esse gerenciame
nto eficaz somente é possível pelo fato de os sistemas operacionais atuais s
erem multitarefa.

Vamos relembrar da nossa situação-problema sobre o curso de sistemas op


eracionais ministrado por você durante o simpósio “Informática para todos
” entre as escolas municipais da região. Durante o curso, outro artigo foi dis
ponibilizado aos estudantes, que trata da classificação dos sistemas operac
ionais quanto à sua capacidade de controlar mais de uma tarefa ao mesmo
tempo (monotarefa, multitarefa e multiprocessamento) e sua performance
durante este controle.

Desta forma, você é questionado:

• quais as principais estruturas dos sistemas operacionais?


• como os sistemas operacionais da atualidade, como Windows e Linu
x, conseguem realizar diversas tarefas ao mesmo tempo sem prejudi
car o desempenho do computador?
• quais as principais características e aplicações dos sistemas operaci
onais multiprogramáveis/multitarefa?
• qual a principal diferença entre os sistemas multiprogramáveis?
• para os sistemas operacionais multiusuários, o Linux e Windows ofe
recem suporte?

Núcleo do sistema operacional


O sistema operacional é composto por um conjunto de rotinas chamado ker
nel ou núcleo do sistema operacional. O kernel é o principal componente d
os sistemas operacionais, pois ele é quem faz o gerenciamento dos recursos
do computador (MACHADO; MAIA, 2007).

Quando o computador é ligado, o kernel executa programas que inicializam


o computador e o conjunto de rotinas é executado seguindo uma ordem lóg
ica.

As principais funções do núcleo são (SIQUEIRA, 2018):

• tratamento de interrupções e exceções.


• gerenciamento, sincronização, comunicação e escalonamento de p
rocessos e threads.
• gerenciamento da memória.
• gerenciamento dos sistemas de arquivos.
• gerenciamento dos dispositivos de entrada/saída.
• auditoria e segurança do sistema.

Os sistemas operacionais limitam as ações executadas pelos programas e


m função da segurança e da estabilidade, como o acesso à memória do com
putador. Assim, os modos de acesso aos serviços do núcleo do computador
referem-se aos privilégios de execução de um programa, garantindo que a
memória não seja invadida por outro programa, por exemplo.

Os modos de acesso são realizados de duas formas: usuário e kernel (núcle


o). No modo usuário, os programas podem executar ações sem privilégios, c
omo leitura de um arquivo. No modo kernel, o acesso pode ser realizado em
modo usuário ou em modo com privilégio total no computador, como acess
o ao disco.

Quando um programa é executado, o kernel é consultado para saber se o ac


esso será realizado em modo usuário ou kernel. Os acessos aos serviços do
núcleo são realizados através de chamadas ao sistema ou system call. As c
hamadas ao sistema fazem a interface entre o sistema operacional e os pro
gramas dos usuários, além de poderem solicitar serviços de acesso ao disco
rígido ou para a criação e execução de processos, por exemplo.

Durante uma chamada ao sistema, o sistema operacional recebe um coman


do (por exemplo, abrir um arquivo) e seus parâmetros e, como resposta à ch
amada, recebe um outro código sinalizando sucesso (se a abertura do arqui
vo aconteceu com sucesso), falha (se houve erro na abertura do arquivo) ou
o resultado do próprio comando (o arquivo é aberto para o usuário).

______
💭 Reflita

Os usuários de computador conseguem identificar claramente quais são as


funções do núcleo, diferenciando-as das funções do software aplicativo (ed
itores de texto, Internet Explorer, entre outros)? Como pode ser feita essa dif
erenciação?

______

A estrutura do sistema operacional, ou seja, a maneira como o código do sis


tema é organizado e o inter-relacionamento entre seus diversos componen
tes podem variar conforme a concepção do projeto. Veremos nesta aula os
modelos das principais arquiteturas dos sistemas operacionais, os quais, se
gundo Tanenbaum (2003), são:

• sistemas Monolíticos.
• sistemas em Camadas.
• máquinas Virtuais.
• modelo Cliente-Servidor.
Classificação dos sistemas
operacionais

Segundo Machado e Maia (2007), os sistemas operacionais podem ser class


ificados em:

1. monoprogramáveis/monotarefa.
2. multiprogramáveis/multitarefa.
3. sistemas com múltiplos processadores.

1. Sistemas Monoprogramáveis/monotarefa

Segundo Machado e Maia (2007), os sistemas operacionais monoprogramá


veis/monotarefa referem-se aos primeiros computadores pessoais criados
em 1960. Os sistemas monoprogramáveis/monotarefa executam um único
programa por vez e todos os recursos da máquina são alocados exclusivam
ente para o programa em execução, mesmo que não esteja utilizando o recu
rso.

Por exemplo, você deseja atualizar uma planilha eletrônica e editar um text
o, ou você atualiza a planilha eletrônica e fecha o editor de textos ou edita o
texto e fecha a planilha eletrônica. A implementação de sistemas monopro
gramáveis/monotarefa é simples porque não é necessário se preocupar co
m a concorrência de recurso. Um exemplo de monoprogramáveis/monotar
efa foi o MS-DOS.
2. Sistemas Multiprogramáveis/multitarefa

Os sistemas operacionais multiprogramáveis/multitarefa dividem os recur


sos do computador com os demais programas e, com isso, a CPU não fica o
ciosa como no caso de sistemas operacionais monoprogramáveis/monotar
efa (MACHADO; MAIA, 2007). Por exemplo, você pode atualizar uma planilh
a eletrônica e utilizar

um editor texto ao mesmo tempo. Os sistemas multiprogramáveis podem s


er classificados pela maneira com que as aplicações são gerenciadas e pelo
número de usuários que utilizam o sistema. Os sistemas multiprogramávei
s em relação ao número de usuários que os utilizam são:

• monousuários: somente um usuário utilizando os recursos da máqui


na.
• multiusuários: vários usuários logados utilizando os recursos da má
quina.

Os sistemas multiprogramáveis, em relação à maneira com que as aplicaçõ


es são gerenciadas, podem ser classificados como batch, de tempo compart
ilhado ou de tempo real.
Sistemas batch

Os sistemas batch foram os primeiros sistemas operacionais multiprogram


áveis e o processamento era realizado por meio de grupos de registros (lote)
. Os programas, conhecidos como jobs, eram executados através de cartões
perfurados, conforme mostra a figura “Exemplo de cartão perfurado”, e arm
azenados em disco ou fitas, onde aguardavam para serem processados.

Nos sistemas batch não havia interação do usuário com a aplicação. Backu
ps, cálculos numéricos e compilações são exemplos de processamento batc
h.

Exemplo de cartão perfurado. Fonte: Wikimedia Commons.


Sistemas de tempo compartilhado (time-sharing)

Os sistemas de tempo compartilhado (time-sharing) permitem que vários p


rogramas sejam executados a partir da divisão do tempo do processador e
m pequenos intervalos, conhecidos como fatia de tempo (time-slice) (MAC
HADO; MAIA, 2007).

No sistema de tempo compartilhado, cada usuário possui um ambiente de t


rabalho próprio, dando a impressão de que o sistema está totalmente dedic
ado a ele. Se um tempo destinado à execução de um programa não for sufic
iente, o programa é interrompido pelo sistema operacional, que passa a vez
de execução para outro programa, e o que foi interrompido fica aguardando
uma nova fatia de tempo para executar.

Nos sistemas de tempo compartilhado, os comandos dados pelos usuários


aos sistemas operacionais são respondidos em segundos e, por isso, ficara
m conhecidos como sistemas on-line. Muitas aplicações comerciais utiliza
m este sistema por ter um tempo de resposta razoável.
Sistemas de tempo real (real-time)

Nos sistemas de tempo real, o tempo é o principal parâmetro. Um programa


utiliza os recursos do computador até aparecer outro com maior prioridade.
Os prazos são rigorosos quanto à execução de uma tarefa (MACHADO; MAI
A, 2007) e aplicados em processos de controles industriais, como monitora
mento de refinarias de petróleo, controle de tráfego aéreo, de usinas termoe
létricas e nucleares ou em qualquer aplicação onde o tempo de respostas é f
ator fundamental.
3. Sistemas com múltiplos processadores

Segundo Machado e Maia (2007), os sistemas com múltiplos processadores


possuem duas ou mais CPUs interligadas e permitem que vários programa
s sejam executados ao mesmo tempo. Os sistemas com múltiplos processa
dores permitem que um programa seja subdividido e executado ao mesmo
tempo em mais de um processador. Com isso, além de esses sistemas sere
m rápidos, possuem uma maior capacidade de processamento e controle d
a CPU.
Os sistemas com múltiplos processadores são complexos, gastam uma part
e do tempo gerenciando a CPU e também estão presentes nas aplicações de
simulações e prospecção de petróleo.

Os sistemas com múltiplos processadores podem ser classificados em:

• Sistemas fortemente acoplados

Possuem dois ou mais processadores, compartilham a mesma memória e o


s dispositivos de entrada/saída são controlados por um único sistema oper
acional. São utilizados em sistemas que usam intensivamente a CPU, volta
ndo-se à solução de apenas um problema.

Os sistemas fortemente acoplados são classificados em:

• Simétricos

Nos sistemas simétricos os processadores compartilham uma única memó


ria e utilizam o mesmo sistema operacional. Usam a técnica de paralelism
o em que os programas podem ser divididos em partes, podendo rodar conc
orrentemente em processadores que estejam disponíveis. Com o processa
mento paralelo, há um aumento do processamento e caso haja uma falha e
m um dos processadores, não impacta na performance do sistema.

O Windows e o Linux suportam os sistemas simétricos.

• Assimétricos

Nos sistemas assimétricos existe um processador principal (mestre) que co


ntrola o sistema e delega atividades para os demais processadores. Se acon
tecer algum problema com o processador principal, os demais não continu
am o processamento.

• Sistemas fracamente acoplados


Os sistemas fracamente acoplados funcionam de forma independente, poss
uindo seu sistema operacional e gerenciando seus próprios recursos como
memória, CPU e dispositivos de entrada e saída.

O sistema é fracamente acoplado por depender de uma rede para distribuir


as atividades do processamento (MACHADO; MAIA, 2007).

______
🔁 Assimile

Uma das diferenças entre os sistemas operacionais fortemente acoplados e


os fracamente acoplados é que os sistemas fortemente acoplados possui ap
enas uma memória compartilhada pelos processadores, já os fracamente a
coplados possuem a sua memória individualmente.

______

Os sistemas fortemente acoplados são classificados em:

• operacionais de rede

Os sistemas operacionais de rede são independentes e estão conectados po


r meio de uma rede. Na rede, cada estação de trabalho ou nó possui um sist
ema operacional próprio e tem a capacidade de processamento das suas ap
licações (MACHADO; MAIA, 2007).

Eles também permitem o compartilhamento de recursos como impressora,


diretórios, cópia de arquivos, entre outros.

• operacionais distribuídos

Os sistemas operacionais distribuídos permitem que um programa seja divi


dido em partes e que cada parte seja executada em nós diferentes da rede.
Os usuários do sistema veem como um sistema centralizado e não como u
m sistema em rede (MACHADO; MAIA, 2007).
______
📝 Exemplificando

Um exemplo de sistemas distribuídos são os clusters. Um cluster é um conj


unto de computadores conectados como se fossem um grande sistema. Ess
e conjunto consegue processar aplicações como se fossem supercomputad
ores. Cada computador que faz parte do cluster recebe um nome de um nó,
e o usuário não conhece os nomes dos membros do cluster e nem quantos
são. Clusters são muito utilizados em servidores de bancos de dados e Web.

Por exemplo, o Google contém vários datacenters (compostos por várias m


áquinas em cluster) espalhados pelo mundo e quando uma solicitação de p
esquisa é feita na web, a informação é procurada no datacenter mais próxi
mo, para que tenha um tempo de resposta mais rápido.
Para aprofundar seus conhecimentos sobre o cluster, indicamos o artigo Cl
uster: conceito e características.

Conclusão
Agora que você já conheceu a estrutura dos sistemas operacionais e estudo
u sobre seus tipos, monoprogramáveis e multiprogramáveis e com múltipl
os processadores, vamos voltar ao contexto sobre o curso de sistemas oper
acionais ministrado por você durante o simpósio “Informática para todos” e
ntre as escolas municipais da região.

Um dos artigos disponibilizados por você aos estudantes refere-se à capaci


dade dos sistemas operacionais de controlar mais de uma tarefa ao mesmo
tempo e sua performance durante este controle.

Os questionamentos dos estudantes direcionados a você foram:

• quais as principais estruturas dos sistemas operacionais?


• como os sistemas operacionais da atualidade, como o Windows e Lin
ux, conseguem realizar diversas tarefas ao mesmo tempo sem prejud
icar o desempenho do computador?
• quais as principais características e aplicações dos sistemas operaci
onais multiprogramáveis/multitarefa?
• qual a principal diferença entre os sistemas multiprogramáveis?
• para os sistemas operacionais multiusuários, o Linux e Windows ofe
recem suporte?

Os sistemas operacionais possuem a estrutura de acordo com o projeto e as


principais arquiteturas são: os sistemas monolíticos, caracterizados pela si
mplicidade de implementação, os sistemas em camadas, em que o sistema
operacional é organizado em hierarquia de camadas, as máquinas virtuais,
que simulam as máquinas reais e são instaladas dentro de outro sistema o
peracional, e o modelo cliente-servidor, que executa as funções em modo u
suário.

Os sistemas operacionais da atualidade, como Windows e Linux, permitem


a execução de vários programas ao mesmo tempo e gerenciam, de forma ef
icaz, todos os recursos da máquina por serem multitarefa e multiusuário. O
s sistemas operacionais multiprogramáveis/multitarefa gerenciam o temp
o de processamento de um programa de acordo com as prioridades e o tem
po que este programa já executou.

Assim, todos os programas possuem uma fatia de tempo para uso dos recur
sos da máquina (processador, memória e dispositivos de entrada/saída). U
ma das principais características dos sistemas multiprogramáveis/multita
refa é a redução do tempo de resposta dos programas, além da redução de c
ustos no compartilhamento de recursos do computador entre os demais pr
ogramas.

Os sistemas multiprogramáveis podem ser do tipo batch, tempo compartilh


ado e sistemas em tempo real. Os sistemas batch executam por meio de lot
es de tarefas e o sistema operacional transfere a execução para a próxima t
arefa após a finalização completa da que está em execução. Um exemplo de
uso do sistema batch é o processamento de uma conta telefônica.

Os sistemas de tempo compartilhado dividem o processamento com vários


usuários do sistema e muitas aplicações comerciais utilizam este sistema.
Já nos sistemas em tempo real, o tempo é o fator principal, pois o tempo de
resposta precisa ser rápido, como, por exemplo, a esteira de produção de u
m carro.

O suporte aos usuários Linux é realizado por meio de grupos e fóruns na int
ernet ou assistência especializada (serviço pago). O suporte do Windows é r
ealizado através de uma central de atendimento e o usuário precisa pagar p
or este suporte.

Unidade 1 / Aula 3

Características e composição dos sistemas operacionais

Introdução da aula
Qual é o foco da aula?

Nesta aula, vamos aprender sobre as características e a composição dos sis


temas operacionais.
Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• descrever os tipos de sistemas operacionais;


• analisar as propriedades dos sistemas operacionais: Unix, Linux e W
indows;
• distinguir os componentes do sistema operacional, por meio do gere
nciamento de: dispositivos de entrada e saída, de arquivos, de proces
sos e de memória.

Situação-problema

Uma das maiores discussões na área de tecnologia está relacionada a: qual


o melhor sistema operacional, Linux, Windows, Mac OS, Android, iOS, Solar
is ou outros sistemas operacionais existentes no mercado?
Por exemplo, tanto o Windows quanto o Linux possuem características pró
prias e, em determinados momentos, é aconselhável usar o Linux ao invés
do Windows e vice- versa. Mas uma das questões indiscutíveis é que o Lin
ux é gratuito e possui o código aberto, enquanto o Windows é pago e gerenc
iável pela Microsoft.

Vamos relembrar nossa situação hipotética sobre o curso de sistemas oper


acionais ministrado por você durante o simpósio “Informática para todos” e
ntre as escolas municipais da região. Uma das discussões mais aguardadas
durante o simpósio era sobre Windows e Linux. Durante uma discussão, vo
cê percebe que os estudantes não chegam a um consenso sobre qual sistem
a operacional usar e que há grupos apoiando o Windows e outros apoiando
o Linux. Porém, há um consenso entre os estudantes sobre uma vantagem
do Linux: o software é livre e pode receber contribuições de melhoria das p
essoas em todo o mundo.

Diante disso, o professor que lhe convidou pede que você responda para os
estudantes:

• quais são as principais características do Linux e Windows?


• quais são as principais diferenças entre eles quanto a preço, populari
dade e suporte?
• quais são as configurações de hardware necessárias para a instalaçã
o do Linux e do Windows?

Para que você consiga responder esses e outros questionamentos sobre os s


istemas operacionais Windows e Linux, vamos conhecer mais sobre eles e,
então, você deverá elaborar um relatório apresentando as principais caract
erísticas e aplicações destes sistemas operacionais.

Bons estudos!

Tipos de sistemas operacionais


Com a evolução dos computadores inserindo em sua arquitetura mais efici
ência e praticidade, os sistemas operacionais estão vindo mais poderosos e
com funções cada vez mais avançadas. Existem vários tipos de sistemas o
peracionais para gostos e necessidades diferentes, descritos a seguir.

• Sistemas Operacionais Embarcados (TANENBAUM, 2003)

São usados para computadores de mão, podendo ser utilizados em celulare


s, aparelhos de TV e forno micro-ondas. Estes sistemas possuem caracterís
ticas dos sistemas operacionais de tempo real, mas possuem limitações de
memória e consumo de energia. São exemplos de sistemas embarcados tvO
S (Apple), WebOS (LG) e Tizen (Samsung).

• Sistemas Operacionais Mobile

Os sistemas operacionais mobile são encontrados em celulares, tablets e M


P3 players. São mais simples e permitem a comunicação de dados sem fio
por bluetooth e wi-fi. Ainda permitem a utilização de rádio, câmera, gravad
or de voz, entre outros. São exemplos de sistemas operacionais mobile: And
roid, Windows Phone, iOS, entre outros (GCFAPRENDELIVRE, 2018).
______
📝 Exemplificando

Um dos sistemas operacionais mobile mais utilizado e vendido é o Android


, que é um sistema operacional do Google e é baseado no Linux, podendo se
r facilmente adaptado, atendendo às necessidades do usuário.

______

• Sistemas Operacionais na Nuvem

Os sistemas operacionais na nuvem utilizam os conceitos (todos os serviço


s oferecidos como banco de dados, redes, etc. são feitos pela internet) com b
ase na computação na nuvem. Todos os dados do usuário e aplicativos fica
m na nuvem (armazenamento de dados através da web) e o acesso é via int
ernet. A Google lançou em 2009 o sistema operacional Chrome OS, que utili
za recursos armazenados on-line (TERRA, 2018).

• Sistemas Operacionais de Cartões Inteligentes (smart cards) (TANE


NBAUM, 2003)

Os cartões inteligentes são os menores sistemas operacionais, são dispositi


vos do tamanho de cartões de crédito e contêm um chip de CPU. Estes siste
mas operacionais têm restrições severas de memória e de energia e são lim
itados a pagamentos eletrônicos e a saques, por exemplo.

______
➕ Pesquise mais
O YouOs é um sistema operacional online que roda pela internet, cuja carac
terística é ser leve e personalizável. Para saber mais sobre ele, acesse o arti
go YouOS- Seu sistema operacional na internet do autor José Lucas Ferreir
a.

Sistema operacional: Unix


Segundo Tanenbaum (2003), a história do Unix começou como um projeto
de um pesquisador e se tornou uma indústria milionária, envolvendo diver
sas instituições como universidades, governos e outras corporações.

Em 1960, o foco era desenvolver um sistema operacional de tempo compart


ilhado, então foi projetado o sistema operacional MULTICS (Multiplexed Inf
ormation and Computing Service). Posteriormente, um dos projetistas aban
donou o projeto e os desenvolvedores que permaneceram criaram sua próp
ria versão do sistema operacional, chamada UNICS e, logo em seguida, cha
mada de Unix, (MACHADO; MAIA, 2007). O Unix foi desenvolvido em asse
mbly, mas, para ser adaptado a outras plataformas, ele foi reescrito em ling
uagem C.

De acordo com Machado e Maia (2007), o Unix é um sistema multiprogram


ável e multiusuário, que suporta múltiplos processadores e implementa me
mória virtual. A seguir serão apresentadas algumas características do Unix
:

• o Unix foi escrito em uma linguagem de alto nível, o que facilita a co


mpreensão e a portabilidade para outras plataformas.
• flexibilidade, sendo usado em diversas aplicações.
• suporte a protocolos de rede.
• possui um sistema de arquivos com uma estrutura simples.
• possui uma interface simples e uniforme com os dispositivos de entr
ada/saída.

O Unix se baseia em uma estrutura monolítica, ou seja, as funções são exec


utadas em modo núcleo, e é composto por:
1) o kernel: núcleo do sistema operacional. O kernel pode ser dividido em d
uas partes (MACHADO; MAIA, 2007):

• dependente do hardware: é composta por rotinas de tratamento de i


nterrupções e exceções e deve ser reescrita quando se está instaland
o o sistema Unix em outra plataforma.
• independente do hardware: não existe vínculo com outra plataforma
onde está sendo executada, sendo responsável pelo tratamento de sy
stem call, gerência de processos, gerência de memórias, entre outras.

2) o shell: é o responsável pela conexão dos usuários com os sistemas oper


acionais através da linha de comando. Sua função é ler e interpretar os co
mandos e criar processos à medida que são requisitados. Os interpretadore
s de shell mais populares são Bourne Shell (sh), C Shell (csh) e Korn Shell (
ksh).
3) sistemas de arquivos: responsáveis pela organização dos dados armazen
ados no Unix através de arquivos e diretórios.
4) aplicações: são as aplicações do usuário, como editores de texto, browser
de navegação web e compiladores.

Sistema operacional: Linux


Linus Torvalds, um estudante finlandês, desenvolveu um sistema operacio
nal com base nas características do Minix (um sistema desenvolvido por A
ndrew Tanenbaum com objetivos educacionais) chamado Linux, em 1991.
O termo Linux refere-se ao kernel do sistema operacional (MACHADO; MAI
A, 2007).

A figura apresenta a mascote do Linux, o Pinguim Tux, escolhido por Linus


Torvalds por seu gosto por este animal.

Os programas que interagem com o kernel foram desenvolvidos pela funda


ção GNU. O Linux em si é somente o kernel e, para que ele funcione, são ne
cessárias ferramentas como o compilador do código-fonte. Por isso, o corre
to é chamar GNU/Linux (VIVAOLINUX, 2018).

O Linux cresceu rapidamente com a ajuda de vários colaboradores espalha


dos pelo mundo, contribuindo no desenvolvimento do kernel, utilitários e a
plicativos. Hoje, o sistema é usado tanto para fins acadêmicos, quanto para
fins comerciais, podendo ser obtido sem custos, juntamente com seu códig
o-fonte.

Por ser um sistema operacional de código-fonte aberto, é flexível e adaptáv


el às necessidades do usuário, além da sua compatibilidade com outros har
dwares, possuindo uma alta performance e estabilidade. O fato de o código-
fonte do Linux ser aberto permite que as pessoas vejam seu funcionamento
e que sejam realizadas alterações e sugestões de melhoria (SILVA, 2018).

A estrutura do Linux é baseada no modelo monolítico, possuindo as mesm


as características e composição do Unix: kernel, shell, sistemas de arquivos
e aplicações, citados acima.

O Linux possui várias versões conhecidas como distribuições (Kernel mais


programas). Cada distribuição tem a sua particularidade como interface gr
áfica, instalação de programas e suporte gráfico. A seguir serão apresentad
as algumas das distribuições do Linux (VIVAOLINUX, 2018):

• DEBIAN: é uma das distribuições mais antigas, estáveis e populares,


servindo de base para a criação das distribuições do Ubuntu e Kuru
min.
• UBUNTU: é uma das distribuições mais populares por ser amigável e
fácil de usar, instalar e obter ajuda na resolução de problemas.
• MINT: é umas das distribuições preferidas dos iniciantes em Linux,
por ser fácil de usar.
• FEDORA: é uma distribuição para quem deseja ter ferramentas de co
nfigurações gráficas, um desktop robusto e um servidor estável.
• KURUMIN: esta distribuição caracteriza-se pela facilidade de uso, su
porte a programas do Windows, interface familiar, entre outras.

Existem outras distribuições que podem ser encontradas nas comunidades


Linux.

É comum que os usuários que estão iniciando no Linux fiquem na dúvida s


obre qual distribuição escolher. Porém, esta escolha dependerá dos gostos e
das necessidades de cada um.

Pontos importantes em relação ao Linux:

• o Linux é licenciado pela GNU Public License (GPL) e o usuário pode


baixar e usar em quantas máquinas quiser.
• o código-fonte do Linux é aberto e todos os usuários tem acesso e po
dem modifica-lo.
• um dos pontos fortes do Linux é a linha de comando que permite um
a administração efetiva do sistema operacional.
• o Linux permite que o usuário adeque o sistema operacional do jeito
que ele desejar em relação ao ambiente gráfico.

Em relação a preço, o Linux é gratuito e possui suporte em diversos fóruns


e sites de ajuda, além de o usuário ter a opção de contratar o suporte de gra
ndes empresas.

A cada dia cresce a popularidade do Linux e cada vez mais as pessoas conh
ecem e aprendem sobre as vantagens de seu uso.

Para instalar e executar o Linux, é necessária uma configuração mínima d


e hardware para que o sistema operacional rode “confortavelmente”, além
de ser fundamental ter uma máquina com no mínimo 2 Gb de memória RA
M, um processador Dual Core e um HD com 250 Gb.

______
🔁 Assimile

Vimos nesta aula que existem diversas distribuições do GNU/Linux. Na ver


dade, não existe uma distribuição melhor do que a outra, mas sim uma que
atenda às diferentes necessidades de cada usuário.

Sistema operacional: Windows

Segundo Machado e Maia (2007), o primeiro sistema operacional lançado p


ela Microsoft, em 1981, foi o MS-DOS. O MS-DOS foi criado com a interface e
m linha de comando e tinha as características de ser monoprogramável e
monousuário.

A Microsoft decidiu dar ao MS-DOS uma interface gráfica com o usuário ch


amada Windows. As versões de 3.0 até 3.11 do Windows não eram sistemas
operacionais, e sim interfaces gráficas com o usuário executando sobre o M
S-DOS, (TANENBAUM, 2003). O Windows 95 foi lançado e quase todas as ca
racterísticas da parte MS-DOS foram transferidas para a parte Windows, po
rém o MS-DOS ainda não havia sido totalmente eliminado. Logo após, foi la
nçada a versão do Windows 98 que tinha poucas diferenças em relação ao
95. A palavra Windows traduzida significa janela, e o sistema foi desenvolv
ido para competir com a interface gráfica da Macintosh.

Em função das limitações e deficiências do MS-DOS, a Microsoft idealizou


o Windows NT (New Technology). Este projeto foi realizado pela DEC (Digit
al Equipment Corporation), responsável pelo desenvolvimento de vários sis
temas operacionais como o PDP/RSX e o VAX/VMS.

Em 1993, a Microsoft lançou o Windows NT nas versões para desktops e se


rvidores, cujo objetivo era desenvolver um sistema operacional multitarefa
para executar em ambientes monousuário e multiusuário (TANENBAUM, 2
003).

O Windows 2000 é uma evolução do Windows NT e a principal diferença e


ntre eles está na oferta de serviços orientados a ambientes distribuídos e d
e rede. O Windows 2000 foi escrito em linguagem C.

Os principais objetivos do desenvolvimento do Windows 2000 foram:

• robustez e confiabilidade: proteção do mau funcionamento do sistem


a;
• extensibilidade e facilidade de manutenção do sistema: adaptação às
novas necessidades de hardware e software.
• portabilidade e desempenho: permitir que o sistema fosse executado
em diferentes plataformas de hardware e melhorar sua performance
.

A arquitetura do Windows 2000 foi baseada em micronúcleo, ou seja, cada f


uncionalidade é gerenciada por um único componente do sistema operacio
nal. Cada módulo pode ser removido, atualizado ou substituído sem precisa
r de alterar todo o sistema.
A estrutura do Windows 2000 pode ser dividida em duas partes (TANENBA
UM, 2003):

• modo núcleo: gerencia a memória, processos, sistemas de arquivos, e


ntre outros.
• modo usuário: onde ficam os subsistemas do ambiente e interage atr
avés de mensagem.

Depois do Windows 2000, vieram as seguintes versões do Windows, (HAR


ADA, 2018):

• Windows XP: tornou-se uma das melhores versões de sistema opera


cional da Microsoft, devido à mudança no visual e à estabilidade do
sistema.
• Windows Vista: esta versão teve muitas críticas dos usuários e apres
entou muitos problemas, como a transparência e os recursos visuais
chamativos, deixando o hardware mais lento.
• Windows 7: tornou-se o sistema operacional mais utilizado no merc
ado, sendo rápido, estável e fácil de usar.
• Windows 8: esta versão foi um fracasso em função da mudança no v
isual e da chegada dos dispositivos sensíveis ao toque.
• Windows 10: é a versão mais recente e tem algumas vantagens com
o leveza, uma adaptação de tela sensível ao toque, uma plataforma u
nificada aproximando os aplicativos para as plataformas existentes,
entre outras.

Pontos importantes em relação ao Windows:

• para usar o Windows, é necessário adquirir a licença da Microsoft, q


ue é paga por computador que vai utilizá-la.
• o código-fonte do Windows é restrito apenas aos desenvolvedores do
sistema operacional.
• o Windows também possui linha de comando, mas não é tão efetiva
quanto a do Linux, porque quase todas as configurações são realizad
as pela interface gráfica.
• o ambiente gráfico é padronizado pela Microsoft e o usuário não poss
ui autonomia de alteração.
• quanto ao suporte, o usuário do Windows pode contratar o pago da M
icrosoft ou utilizar os fóruns de ajuda pela internet.
• o que tornou o Windows um padrão de uso foi o acordo feito entre a
Microsoft e os fabricantes de computadores. Eles já saíam de fábrica
juntamente com o sistema operacional da Microsoft e, devido à popu
laridade dos computadores, a Microsoft conseguiu atingir um grande
número de usuários.
• para instalar e executar o Windows, é necessária uma configuração
mínima de hardware para que o sistema operacional rode “confortav
elmente”, sendo necessário ter uma máquina com no mínimo 4 Gb d
e memória RAM, um processador Core 2 Duo e um HD com 250 Gb.

______
💭 Reflita

A Microsoft conseguirá lançar uma versão de Windows que agrade a maior


ia dos seus usuários, independentemente do tipo de uso do sistema operaci
onal?

______
Componentes do sistema operacional

Segundo Tanenbaum (2003), o sistema operacional tem quatro componente


s:

• gerenciamento de dispositivos de entrada e saída: é responsável por


gerenciar os comandos e interrupções geradas pelos dispositivos, po
r tratar erros e por fornecer uma interface simples e fácil de usar ent
re os dispositivos e o restante do sistema. Os dispositivos de entrada
de dados são os teclados, mouses, microfones, câmeras, entre outros,
e os dispositivos de saída de dados são a impressora, o monitor, alto-
falantes, pen drives, entre outros.
• gerenciamento de processos: é responsável por criar, finalizar, escal
onar e sincronizar processos e threads. Um processo é um programa
em execução.
• gerenciamento de arquivos: é responsável por gerenciar os arquivos
(criar e excluir, por exemplo) e os diretórios (criar e excluir, por exem
plo).
• gerenciamento de memória: gerencia quais partes da memória estão
em uso e quais estão disponíveis, além de administrar a troca de pro
cessos entre memória principal e memória secundária.

Conclusão

Agora que você já aprendeu sobre as características e a composição dos sis


temas operacionais e um pouco mais sobre o Unix, Linux e Windows, vamo
s relembrar o nosso contexto sobre o curso de sistemas operacionais minis
trado por você durante o simpósio “Informática para todos” entre as escolas
municipais da região.

Os estudantes durante o debate não conseguem chegar a um consenso sobr


e qual sistema operacional utilizar. Alguns apoiam o Linux e outros o Wind
ows.

Assim, surgem os seguintes questionamentos direcionados a você:

• quais as principais características do Linux e do Windows?


• quais as principais diferenças entre eles em relação a preço, populari
dade e suporte?
• quais configurações de hardware são necessárias para a instalação d
o Linux e do Windows?

O Windows e o Linux possuem características distintas em relação: (GUIAP


C, 2018)

• à licença: para usar o Windows, é necessário adquirir a licença da Mi


crosoft, paga por computador que vai utilizá-la. Já o Linux é licencia
do pela GNU Public License (GPL) e o usuário pode baixar e usar em q
uantas máquinas quiser.
• ao acesso ao código-fonte: o código-fonte do Windows é restrito ape
nas a seus desenvolvedores. Já o código-fonte do Linux é aberto e to
dos os usuários têm acesso e podem modificá-lo.
• à linha de comando: um dos pontos fortes do Linux é a linha de com
ando que permite uma administração efetiva do sistema operacional
. O Windows também possui linha de comando, mas não é tão efetiv
a quanto a do Linux, porque quase todas as configurações são realiza
das pela interface gráfica.
• à flexibilidade e à rigidez: o Linux permite que o usuário adeque o sis
tema operacional do jeito que ele desejar em relação ao ambiente grá
fico. No Windows, as regras são definidas pela Microsoft.
Além destas características, existem outras que fazem distinção entre Win
dows e Linux.

Em relação a preço, o Linux é gratuito, já o Windows você paga por licença


adquirida. Por exemplo, se precisar ter o Windows instalado em 5 máquina
s, é necessário adquirir 5 licenças. Quanto ao suporte, o usuário do Window
s pode contratar o suporte pago da Microsoft ou utilizar os fóruns de ajuda
pela internet. O Linux possui suporte em diversos fóruns e sites de ajuda, al
ém de o usuário ter a opção de contratar o suporte de grandes empresas.

Quanto à popularidade, o que tornou o Windows um padrão de uso foi o aco


rdo feito entre a Microsoft e os fabricantes de computadores. Eles já saíam
da fábrica juntamente com o sistema operacional da Microsoft e, devido à p
opularidade dos computadores, a Microsoft conseguiu atingir um grande n
úmero de usuários. Por outro lado, a popularidade do Linux cresce a cada di
a e cada vez mais as pessoas conhecem e aprendem sobre as vantagens de
seu uso.

Para instalar e executar tanto o Windows quanto o Linux, é necessária um


a configuração mínima de hardware para que o sistema operacional rode “
confortavelmente”. Para instalar e executar o Linux, é essencial ter uma m
áquina com no mínimo 2 Gb de memória RAM, um processador Dual Core e
um HD com 250 Gb. Já para instalar e rodar o Windows, é preciso ter máqui
na com no mínimo 4 Gb de memória RAM, um processador Core 2 Duo e u
m HD com 250 Gb.

Compile as informações obtidas por meio dos questionamentos e elabore u


m relatório explicativo, apresentando as principais características e aplica
ções destes sistemas operacionais, que deverá ser entregue para o professo
r.

Referências
ALECRIM, E. Cluster: conceito e características. Disponível em: <https://w
ww. infowester.com/cluster.php>. Acesso em: 04 jul. 2021.
FERREIRA, J. L. YouOS- Seu sistema operacional na internet. Viva o Linux,
2007. Disponível em: <https://www.vivaolinux.com.br/artigo/YouOS-Seu-si
stema-operacional-na-internet/>. Acesso em: 04 jul. 2021.
G1. Android passa Windows e se torna o sistema operacional mais usado d
o mundo. Disponível em: <https://g1.globo.com/tecnologia/noticia/android-
passa-windows-e-se-torna-o-sistema-operacional-mais-usado-do-mundo.
ghtml>. Acesso em: 04 jul. 2021.
GCFAPRENDELIVRE. Os sistemas operacionais para dispositivos móveis.
Disponível em:<https://www.gcfaprendelivre.org/tecnologia/curso/inform
atica_basica/sistemas_operacionais/5.do>. Acesso em: 04 jul. 2021.
HAMMERSCHMIDT, R. O que são máquinas virtuais? Disponível em: <https
://www.tecmundo.com.br/maquina-virtual/232-o-que-sao-maquinas-virtu
ais-.htm>. Acesso em: 04 jul. 2021.
HIGA, P. As 10 principais diferenças entre o Windows e o Linux. Guia do P
C, 2011. Disponível em: <https://www.guiadopc.com.br/artigos/3394/as-10-p
rincipais-diferencas-entre-o-windows-e-o-linux.html>. Acesso em: 04 jul.
2021.
IBM. Técnicas para proteger o Sistema Operacional. Disponível em: <https:
//www.ibm.com/docs/pt-br/cognos-analytics/10.2.2?topic=SSEP7J_10.2.2/
com.ibm.swg.ba.cognos.crn_arch.10.2.2.doc/c_securing_the_operating_sys
tem.html>. Acesso em: 04 jul. 2021.
IBM. Os Sistemas Operacionais estão em toda parte. Disponível em: <https:
//www.ibm.com/developerworks/community/blogs/tlcbr/entry/os_sistem
as_operacionais_estao_em?lang=en>. Acesso em: 20 abr. 2018.
MACEDO, G. Dicas para Linux: 10 distribuições Linux para você. Guia do PC,
2013. Disponível em: <https://www.guiadopc.com.br/dicas/33798/10-distrib
uicoes-linux- voce.html>. Acesso em: 04 jul. 2021.
HARADA, E. Do Windows 1 ao Windows 10: os 29 anos de evolução do SO d
a Microsoft. TecMundo, 2014. Disponível em: <https://www.tecmundo.com.
br/windows-10/64136-windows-1-windows-10-29-anos-evolucao-do-so-mi
crosoft. htm>. Acesso em: 04 jul. 2021.
LOPES, S. O que é um sistema operacional? Oficina da Net, 2017. Disponível
em: <https://www.oficinadanet.com.br/artigo/851/o_que_e_um_sistema_o
peracional>. Acesso em: 04 jul. 2021.
MACHADO, F. B. Arquitetura de sistemas operacionais. 2. ed. Rio de Janeir
o: LTC, 1997.
MACHADO, F. B. Fundamentos de sistemas operacionais. 1. ed. Rio de Janei
ro: LTC, 2011.
MACHADO, F. B.; MAIA, L. P. Arquitetura de Sistemas Operacionais. 4. ed. R
io de Janeiro: LTC, 2007.
NÓBREGA FILHO, R. G. Introdução aos Sistemas Operacionais. Disponível e
m: <http://www.di.ufpb.br/raimundo/SistOper/IntSO/IntrodSO.html>. Aces
so em: 20 abr. 2018.
OLHAR DIGITAL. Windows, Mac ou Linux? Veja as vantagens e as falhas d
e cada um deles. 2011. Disponível em: <https://www.youtube.com/watch?v
=wETMvJEoO6I>. Acesso em: 04 jul. 2021.
OLHAR DIGITAL. Windows perde o posto de sistema operacional mais usa
do do mundo. 2017. Disponível em: <https://olhardigital.com.br/noticia/win
dows-perde-o-posto-de-sistema-operacional-mais-usado-do-mundo/67223
>. Acesso em: 04 jul. 2021.
OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas Operacionais. 4.
ed. Porto Alegre: Bookman, 2010.
SANTINO, R. Linux completa 25 anos de existência maior e mais profissio
nal do que nunca. Olhar Digital, 2016. Disponível em: <https://olhardigital.c
om.br/noticia/linux-completa-25-anos-de-existencia-maior-e-mais-profiss
ional-do-que-nunca/61548>. Acesso em: 04 jul. 2021.
SANTOS, A. TVs: comparando os sistemas operacionais. Home Theater e C
asa Digital, 2015. Disponível em: <https://www.hometheater.com.br/portal/
2015/11/04/tvs-comparando-os-sistemas-operacionais/>. Acesso em: 04 jul.
2021.
SILVA, J. E. Entendendo a estrutura do Linux. Viva o Linux, 2003. Disponív
el em:<https://www.vivaolinux.com.br/artigo/Entendendo-a-estrutura-do-
Linux>. Acesso em: 04 jul. 2021.
SIQUEIRA F. Estrutura do Sistema Operacional. Disponível em: <https://site
s.google.com/site/proffernandosiqueiraso/aulas/4-estrutura-do-sistema-op
eracional>. Acesso em: 04 jul. 2021.
TANENBAUM, A. S. Sistemas Operacionais Modernos. 2. ed. São Paulo: Pea
rson, 2003.
TECMUNDO. Conheça outros sistemas operacionais. Disponível em: <https:
//www.tecmundo.com.br/macos/726-conheca-outros-sistemas-operacion
ais.htm>. Acesso em: 04 jul. 2021.
TECHSOUP Brasil. Onze dicas para solucionar problemas de software. Disp
onível em: <https://www.techsoupbrasil.org.br/node/1912>. Acesso em: 04 j
ul. 2021.
TERRA. Sistemas operacionais na nuvem são opção barata e segura. 2012.
Disponível em: <https://www.terra.com.br/noticias/tecnologia/sistemas-op
eracionais-na-nuvem-sao-opcao-barata-e-segura,b1e8201fd70ea310VgnCL
D200000bbcceb0aRCRD.html>. Acesso em: 04 jul. 2021.
UEYAMA, J. Sistemas Operacionais – Aula 02 – Tipos e Estruturas de SO.
UNIVESP, 2017. Disponível em: <https://youtu.be/_J4CVHgXQ1c>. Acesso e
m: 04 jul. 2021.
VIVA O LINUX. O que é GNU/Linux. [s.d.]. Disponível em: <https://www.viv
aolinux.com.br/linux/>. Acesso em: 04 jul. 2021.
Questão 1
Incorreta
Questão com problema?

Virtualização é o processo de criar uma representação de algo baseada em software (ou


virtual), em vez de um processo físico. A virtualização pode se aplicar a servidores,
armazenamento, aplicativos e redes e é a maneira mais eficaz de reduzir as despesas de
TI e, ao mesmo tempo, aumentar a eficiência e a agilidade para empresas de todos os
portes.

Sendo assim, tendo a responsabilidade de justificar a adoção da virtualização na empresa


em que trabalha, analise as seguintes sentenças:

I. Facilidade para mover e copiar máquinas virtuais (tão fácil quanto mover e copiar
arquivos).

II. Independência de hardware permitindo o aprovisionamento ou migração de qualquer


máquina virtual para qualquer servidor físico.

III. Aumento das despesas operacionais e de capital.

IV. Facilidade na recuperação de dados e backups.

Agora, assinale a alternativa que apresenta a resposta CORRETA:

Sua resposta
Incorreta
As alternativas I e IV estão corretas.

Solução esperada

As alternativas I, III e IV estão corretas.

Comentário

Dentre os benefícios oferecidos pela virtualização, um dos principais está na redução


dos custos operacionais e de capital em razão da possibilidade de consolidação de
servidores virtuais em uma única máquina física.

Questão 2
Correta
Questão com problema?
Uma máquina virtual (VM) é similar a uma máquina real. Assim, um nível intermediário
é criado entre o sistema operacional e o hardware. As principais vantagens das máquinas
virtuais são o aproveitamento dos recursos das máquinas; a garantia da segurança e
confiabilidade, pois se acontecer um problema com uma máquina virtual, as demais não
serão impactadas; além de facilitar a recuperação de dados e backups.

A Máquina Virtual é uma das estruturas de sistemas operacionais.

I - Em um mesmo hardware e em plataformas diferentes podem rodar mais de uma


máquina virtual

PORQUE

II - Um nível intermediário é criado entre o sistema operacional e o hardware. Esse nível


intermediário cria várias máquinas virtuais independentes, onde cada qual possui uma
cópia virtual do hardware.

Assinale a alternativa correta.

Sua resposta
Correta
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

Comentário

Em um mesmo hardware e em plataformas diferentes podem rodar mais de uma


máquina virtual : CORRETA Um nível intermediário é criado entre o sistema
operacional e o hardware. Esse nível intermediário cria várias máquinas virtuais
independentes, onde cada qual possui uma cópia virtual do hardware. :
CORRETA Como podem existir vários níveis intermediários, podem permitir
plataformas diferentes. Assim, a afirmação II justifica a afirmação I. Ambas as
afirmações estão corretas, e a afirmação II justifica a afirmação I.

Questão 3
Correta
Questão com problema?

O Linux é um sistema operacional de código-fonte aberto, é flexível e adaptável às


necessidades do usuário, além da sua compatibilidade com outros hardwares, possuindo
uma alta performance e estabilidade. A estrutura do Linux é baseada no modelo
monolítico, possuindo as mesmas características e composição do Unix: kernel, shell,
sistemas de arquivos e aplicações.
Com relação as características dos sistemas operacionais, Unix e Linux, analise o excerto
a seguir, completando suas lacunas.

____________ é o núcleo do sistema operacional, o qual pode ser dividido em duas


partes: Dependente do hardware e independente do hardware. No caso, de dependente do
hardware, é composto por rotinas de ____________ e ____________.

Assinale a alternativa que preenche corretamente as lacunas.

Sua resposta
Correta
kernel / tratamento de interrupções / exceções.

Comentário

Alternativa CORRETA: kernel / tratamento de interrupções / exceções. Kernel é


o núcleo do sistema operacional, o qual pode ser dividido em duas partes: Dependente
do hardware e independente do hardware. No caso, de dependente do hardware, é
composto por rotinas de tratamento de interrupções e exceções.

Questão 4
Correta
Questão com problema?

O sistema operacional é um software que opera em uma camada intermediária entre o


Hardware e o Software, e está presente na totalidade dos sistemas computacionais atuais,
mesmo que em versões mais simples.

Em caso da inexistência do Sistema Operacional para a utilização de um computador é


correto afirmar que:

I. Não se poderia controlar o funcionamento de um computador;

II. Seria difícil o gerenciamento a utilização do computador e a permissão do


compartilhamento de diversos recursos, como: processador, memória, dispositivos de
entrada e saída;

III. A interface entre o usuário e o Hardware ficaria comprometida;

IV. Não seria possível a execução concorrente de seus recursos e dispositivos;

V. Também não seria possível o múltiplo-uso de um computador


Assinale a alternativa que apresenta a correta.

Sua resposta
Correta
Somente I, II, III, IV e V estão corretas.

Comentário

I – Não se poderia controlar o funcionamento de um computador; : está correta II –


Seria difícil o gerenciamento a utilização do computador e a permissão do
compartilhamento de diversos recursos, como: processador, memória, dispositivos de
entrada e saída; : está correta III – A interface entre o usuário e o Hardware ficaria
comprometida; : está correta IV – Não seria possível a execução concorrente de seus
recursos e dispositivos;: está correta V – Também não seria possível o múltiplo-uso de
um computador: está correta.

Questão 5
Correta
Questão com problema?

Há muitos sistemas operacionais comerciais disponíveis, dentre eles os mais populares


são Windows e Linux. No caso do Linux, uma de suas principais características está no
fato dele ter sido desenvolvido com ajuda de colaboradores espalhados por todo o mundo,
contribuindo no desenvolvimento do kernel, utilitários e aplicativos.

I. O sistema operacional Linux pode ser obtido sem custos

PORQUE

II. É licenciado pela GNU Public License (GPL) permitindo aos usuários acessá-lo e
modificá-lo. Possui suporte em diversos fóruns e sites de ajuda, além do usuário ter a
opção de contratar o suporte de grandes empresas.

A respeito dessas asserções, assinale a alternativa correta.

Sua resposta
Correta
As asserções I e II são verdadeiras, e a asserção II é uma justificativa correta da
asserção I.

Comentário

Uma das principais características do Linux está na distribuição ser realizada de forma
gratuita, isso ocorre em razão dele ser licenciado pela GNU Public License (GPL). Esta
é uma das razões pela adoção dele ser cada vez maior nos diferentes setores: acadêmico,
comercial e uso pessoal.
Unidade 2 / Aula 1

Processos

Introdução da Unidade

Objetivos da Unidade

Ao longo desta Unidade, você irá:

• definir o conceito, as características, a hierarquia e os estados dos pr


ocessos e threads;
• analisar as características sobre a comunicação, como condições de
disputa, regiões críticas e exclusão mútua com espera ociosa;
• explicar como é realizado o escalonamento entre processos e threads
, distinguir os tipos de escalonamento e seus principais algoritmos.

Introdução da Unidade

Olá estudante, boas-vindas!


Nesta unidade veremos: o conceito, as características e o funcionamento de
processo e threads e como eles são implementados, como os processos são
criados e finalizados pelo sistema operacional e a hierarquia e os estados d
e processos. Um processo pode ser definido como um programa em execuç
ão. Porém, o sistema operacional não executa apenas os programas que sol
icitamos que sejam rodados.

Por exemplo, quando abrimos uma página em um navegador, ela pode acio
nar outros processos para que seja devidamente carregada, sem impactar a
s demais abas abertas. Além disso, existem outros processos executados no
computador que não são propriedade do usuário, mas que são acionados pa
ra garantir a performance do sistema operacional, como o antivírus e o ger
enciamento da rede.

Após o término desta unidade, você terá condições de entender o funciona


mento e a implementação dos processos e threads. Aprendendo sobre os pr
ocessos, você terá um conhecimento sobre o Gerenciador de Tarefas de seu
sistema operacional, o que o ajudará a manter o bom funcionamento do seu
computador.

Neste contexto, Lucas acabou de ser contratado como gerente da área de Te


cnologia da Informação de uma empresa prestadora de serviços hospitalar
es. Além de fornecer suporte aos usuários dos sistemas hospitalares, outra
função realizada na empresa é fazer pesquisas na internet sobre a qualidad
e de serviços na área da saúde, baixar livros e arquivos da área que auxilia
m o desenvolvimento de aplicativos em TI e editar textos sobre o processo
de avaliação e certificação da qualidade dos serviços hospitalares.

Sempre que uma dessas atividades realizadas por Lucas é executada, um pr


ocesso é criado e ele pode chamar outros processos para auxiliá-lo por mei
o da transferência de informações entre eles. Para escolher qual processo s
erá executado, o escalonador é acionado pelo sistema operacional e define
os critérios de acesso à CPU que cada processo terá para que não afete a exe
cução das aplicações. Ao receber um chamado de atendimento de suporte a
os usuários dos sistemas hospitalares, um estagiário da equipe liderada por
Lucas o aciona para ir até a sala do usuário que realizou a abertura do cha
mado.

Durante o percurso, Lucas é questionado sobre como os processos são criad


os e finalizados, sobre como o sistema operacional trata a hierarquia de pro
cessos e seus estados, sobre o funcionamento da comunicação entre proces
sos e seus problemas clássicos da comunicação e sobre como trabalham o
escalonador de processos e os algoritmos de escalonamento.

Para entender melhor o funcionamento dos processos e os algoritmos de es


calonamento, Lucas sugere ao estagiário que seja implementado um algorit
mo de escalonamento de processos por meio de semáforos.

Vamos juntos conhecer mais sobre essas questões através de algoritmos!

Introdução da aula

Qual é o foco da aula?


Nessa aula, vamos apresentar o conceito, as características, a hierarquia e
os estados dos processos e threads e como se dá a criação e o término de pr
ocessos.
Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• descrever o modelo responsável por organizar os programas executá


veis em processos sequenciais;
• explicar os eventos que fazem um processo: início do sistema, execu
ção de uma chamada ao sistema de criação por um processo em exe
cução, requisição do usuário para criar um novo processo e início de
um job em lote;
• explicar o conceito, as características, a implementação e os gerenci
amentos de thread.

Situação-problema

Os processos são programas ou tarefas em execução e o sistema operacion


al é o responsável por administrá-los, por meio do gerenciador de processo
s. Existem os processos iniciados pelo usuário, como executar um editor de
textos, abrir uma página na internet, abrir o aplicativo de músicas, entre ou
tros.

Há também os processos iniciados por outros processos, por exemplo, uma


página da internet solicitando a ajuda de outro processo para fazer o carreg
amento dos seus elementos.

Relembrando nosso contexto, Lucas acabou de ser contratado como gerent


e da área de Tecnologia da Informação de uma empresa prestadora de servi
ços hospitalares. Durante o atendimento do chamado (supervisionado por
Lucas), o usuário questiona sobre o software de edição de arquivos usado n
a empresa, por travar muito ao formatar e salvar o arquivo.
Para ambientar e auxiliar o estagiário, Lucas assumiu o atendimento, fecho
u o programa e o executou novamente, porém o software continuou travan
do. Ele então acionou o Gerenciador de Tarefas e identificou que o softwar
e de edição de arquivo ainda estava em execução.

O estagiário fez os seguintes questionamentos:

• o que aconteceu para que o programa não tenha sido finalizado corre
tamente?
• como fazer para conseguir executar o software corretamente?
• no caso de o software travar durante o salvamento e formatação, a i
mplementação de threads auxiliaria o processo?

Não se esqueça de compilar todas as informações obtidas para lhe auxiliar


no desenvolvimento de um algoritmo de escalonamento de processos por
meio de semáforos.

Para que você consiga responder esse e outros questionamentos, nesta aula
vamos conhecer mais sobre os processos e os conteúdos pertinentes a este
tema.

Bons estudos!

Processos: conceito e criação


Um dos conceitos principais em sistemas operacionais gira em torno de pr
ocessos.

Um processo pode ser definido como um programa em execução, porém o s


eu conceito vai além desta definição (MACHADO; MAIA, 2007).

Nos computadores atuais, o processador funciona como uma linha de prod


ução executando vários programas ao mesmo tempo de forma sequencial,
como ler um livro on-line, baixar um arquivo e navegar na internet. A CPU
é responsável por alternar os programas, executando-os por dezenas ou ce
ntenas de milissegundos, para que cada um tenha acesso ao processament
o, dando a ilusão ao usuário de paralelismo ou pseudoparalelismo (TANEN
BAUM, 2003).

O pseudoparalelismo é a falsa impressão de que todos os programas estão e


xecutando ao mesmo tempo, mas na verdade o que acontece é que um proc
esso em execução é suspenso temporariamente para dar lugar ao processa
mento de outro processo e assim sucessivamente.
Segundo Tanenbaum (2003), para tratar o paralelismo de forma mais fácil,
foi desenvolvido um modelo responsável por organizar os programas exec
utáveis em processos sequenciais. Um processo pode ser definido como um
programa em execução incluindo os valores do contador de programa atual
, registradores e variáveis. A CPU alterna de um processo para outro a cada
momento, essa alternância é conhecida como multiprogramação.

A diferença entre processos e programa é importante para que o modelo sej


a entendido.

A seguinte analogia é utilizada para exemplificar a diferença entre process


o e programa: fazer um bolo. Para fazer um bolo, é necessário todos os ingre
dientes e a receita. A receita pode ser considerada como o programa, os ing
redientes são os dados de entrada e a pessoa que prepara o bolo é o process
ador.

Os processos são as atividades que a pessoa faz durante a preparação do bo


lo: ler a receita, buscar os ingredientes, misturar a massa e colocar o bolo p
ara assar, que é o processo final desse programa “receita de bolo”.

Ainda neste exemplo, imagine que o filho da pessoa que está fazendo o bolo
tenha se machucado. A pessoa guarda em que parte do processamento par
ou e vai socorrer o filho. Ela pega o kit de primeiros socorros e lê o procedi
mento para tratar do machucado do filho. Neste momento, vemos o process
ador (a pessoa) alternando de um processo (fazer o bolo) para outro process
o com prioridade maior (socorrer o filho), cada um com seu programa – rec
eita versus procedimento de tratamento do machucado. Assim que o filho e
stiver medicado, então a pessoa retornará a fazer o bolo do ponto em que pa
rou.

Podemos considerar então que um processo é uma atividade que contém u


m programa, uma entrada, uma saída e um estado. Veremos a seguir a cria
ção de processo e os estados dos processos.
______
📝 Exemplificando

Os serviços que os sistemas operacionais podem implementar através de p


rocessos são (MACHADO; MAIA, 2007):

• auditoria e segurança do sistema.


• a contabilização do uso de recursos.
• a contabilização de erros.
• gerência de impressão.
• comunicação de eventos.
• serviços de redes.
• interface de comandos (Shell), entre outros.

______
Criação de processos

Os sistemas operacionais devem oferecer formas para que processos sejam


criados. Segundo Tanenbaum (2003), existem quatro eventos que fazem co
m que um processo seja criado:
1) início do sistema: quando o sistema operacional é inicializado, são criado
s vários processos. Existem os de primeiro plano, que interagem com os us
uários e suas aplicações, e os de segundo plano, que possuem uma função e
specífica, como um processo para atualizar e-mails quando alguma mensa
gem é recebida na caixa de entrada.

Para visualizar os processos em execução no Windows, pressione as teclas


CTRL+ALT+DEL e no Linux utilize o comando ps.
2) execução de uma chamada ao sistema de criação por um processo em e
xecução: por exemplo, quando um processo está fazendo download, ele aci
ona um outro processo para ajudá-lo. Enquanto um faz o download, o outro
está armazenando os dados em disco.
3) uma requisição do usuário para criar um novo processo: quando o usuár
io digita um comando ou solicita a abertura de um ícone para a abertura de
um aplicativo.
4) início de um job em lote: esses processos são criados em computadores d
e grande porte, os mainframes.

______
🔁 Assimile

Vimos nesta aula que existem os processos de primeiro plano, que são proc
essos dos usuários e interagem com suas aplicações, e os de segundo plano
, que possuem função específica. Os processos de segundo plano, ao execut
arem uma função específica, são chamados de daemons.

______
Término de processos

Após a criação, os processos podem ser finalizados nas seguintes condiçõe


s, (TANENBAUM, 2003):

• saída normal (voluntária): acontece quando o processo acaba de exe


cutar por ter concluído seu trabalho.
• saída por erro (voluntária): acontece quando o processo tenta acessa
r um arquivo que não existe e é emitida uma chamada de saída do si
stema. Em alguns casos, uma caixa de diálogo é aberta perguntando
ao usuário se ele quer tentar novamente.
• erro fatal (involuntário): acontece quando ocorre um erro de progra
ma, por exemplo, a execução ilegal de uma instrução ou a divisão de
um número por zero. Neste caso, existe um processo com prioridade
máxima que supervisiona os demais processos e impede a continuaç
ão do processo em situação ilegal.
• cancelamento por um outro processo: acontece quando um processo
que possui permissão emite uma chamada ao sistema para cancelar
outro processo.
Hierarquia de Processos

Segundo Tanenbaum (2003), em alguns sistemas, quando um processo cria


outro, o processo-pai e o processo-filho ficam associados. O filho pode gerar
outros processos, criando, assim, uma hierarquia de processos, conforme a
presentado na figura.

Hierarquia de processos. Fonte: elaborada pelo autor.


No Unix, um processo-pai, seus filhos e descendentes formam um grupo de
processos. Por exemplo, quando um usuário envia um sinal do teclado (co
mo CTRL + ALT + DEL), este sinal é entregue para todos os processos que co
mpõem o grupo de processos do teclado. Quando um processo-pai é “morto”
, todos os filhos vinculados a ele são “mortos” também.

O Windows não possui uma hierarquia de processos. Cada um possui um i


dentificador próprio e quando um processo cria outro, existe uma ligação e
ntre eles, mas ela é quebrada quando o processo- pai passa seu identificado
r para outro processo. Quando um processo-pai é “morto”, os processos vinc
ulados a ele não são mortos.
Estados do Processo

Os processos podem passar por diferentes estados ao longo do processame


nto. Um processo ativo pode estar em três estados (MACHADO; MAIA, 2007
):

• em execução: um processo está em execução quando está sendo pro


cessado pela CPU. Os processos são alternados para a utilização do p
rocessador.
• pronto: um processo está no estado de pronto quando possui todas as
condições necessárias para executar e está aguardando. O sistema o
peracional é quem define a ordem e os critérios para execução dos pr
ocessos.
• espera ou Bloqueado: um processo está no estado de espera quando a
guarda por um evento externo (um comando do usuário, por exempl
o) ou por um recurso (uma informação de um dispositivo de entrada/
saída, por exemplo) para executar.

Quatro mudanças podem acontecer entre os estados, representadas na figu


ra a seguir.
Transições dos processos. Fonte: Tanenbaum (2003, p. 58).
Conforme apresentado na figura “Transições dos processos”, a mudança 1 (
“Em execução” para “Bloqueado”) acontece quando um processo aguarda u
m evento externo ou uma operação de entrada/saída e não consegue conti
nuar o processamento.

As mudanças 2 (“Em execução” para “Pronto”) e 3 (“Pronto” para “Em Execu


ção”) são realizadas pelo escalonador sem que o processo saiba. O escalona
dor de processos é o responsável por decidir em qual momento cada proces
so será executado. A mudança 2 acontece quando o escalonador decide que
o processo já teve tempo suficiente em execução e escolhe outro processo p
ara executar.

A mudança 3 ocorre quando os demais processos já utilizaram o seu tempo


de CPU e o escalonador permite a execução do processo que estava aguarda
ndo.

A mudança 4 (“Bloqueado” para “Pronto”) ocorre quando a operação de entr


ada/saída ou o evento externo que o processo estava esperando ocorre. Ass
im, o processo retorna para a fila de processamento e aguarda novamente a
sua vez de executar.
Threads

Segundo Machado e Maia (2007), o conceito de thread foi introduzido para r


eduzir o tempo gasto na criação, eliminação e troca de contexto de process
os nas aplicações concorrentes, assim economizando recursos do sistema
como um todo.

Thread é um fluxo de controle (execução) dentro do processo, chamado ta


mbém de processos leves. Um processo pode conter um ou vários threads q
ue compartilham os recursos do processo.

A principal razão para o uso de thread é que as aplicações da atualidade ro


dam muitas atividades ao mesmo tempo e quando são compostas por threa
ds, podem ser executadas em paralelo. Outro motivo para a criação de threa
d é que são mais fáceis de criar e destruir, por não terem recursos vinculad
os a eles.

Em relação ao desempenho, quando uma aplicação processa muitas inform


ações de entrada/saída, o uso de threads acelera a execução da aplicação.

Para entender melhor o conceito de thread, vamos apresentá-lo utilizando


como exemplo um processador de texto (TANENBAUM, 2003).
Imagine que você esteja escrevendo um livro e que seja necessário trocar u
m termo errado escrito em diversos capítulos. Se o livro estiver em um úni
co arquivo, fica fácil fazer a alteração, porém se estiver em arquivos separa
dos, será necessário fazer a correção em cada um.

Outra questão é: se uma ou duas páginas forem removidas de um arquivo d


e 500 páginas, o processador de textos terá que formatar todo o documento
em todas as páginas até chegar à página retirada, o que causará uma grand
e demora.

Neste caso, se forem utilizados threads, um thread auxiliaria a formatação


do texto, outro atenderia aos requisitos do usuário via teclado e um terceir
o thread faria o backup dos dados em disco sem interferir nas ações dos de
mais threads, conforme apresentado na figura.

Processador de texto com três threads. Fonte: Tanenbaum (2003, p. 64).


Outro exemplo do uso de threads é em um navegador web, enquanto um th
read carrega imagens ou textos de uma página e outro thread recupera dad
os de uma rede.

______
➕ Pesquise mais
Algumas linguagens de programação da atualidade, como Java, possuem r
ecursos para a implantação de threads, chamados programação concorrent
e.
Para saber mais sobre esse assunto, leia o artigo Trabalhando com Thread
s em Java.

______
Implementação de Processos

Para implementar o modelo de processos, o sistema operacional mantém u


m quadro de processos contendo informações sobre o estado do processo, s
eu contador de programa, o ponteiro da pilha, a alocação de memória, o stat
us dos arquivos abertos, entre outros, que permitem que o processo reinicie
do ponto em que parou (TANENBAUM, 2003).

O quadro apresenta os campos mais importantes. No primeiro campo estão


os dados necessários para o armazenamento, referentes ao gerenciamento
de processos. O segundo e o terceiro campos referem-se aos dados do geren
ciamento de memória e ao gerenciamento de arquivos.

Processos. Fonte: Tanenbaum (2003, p. 59).


Implementação de Threads
A implementação de threads pode ocorrer no espaço do usuário, no núcleo
do sistema operacional e em uma implementação híbrida (no espaço do us
uário e do núcleo).

• Thread de usuário: são implementados pela aplicação do usuário e o


sistema operacional não sabe de sua existência. A vantagem é que n
ão é necessária nenhuma mudança entre os modos de usuário e núcl
eo, tornando-se rápido e eficiente.
• Thread do núcleo: são implementados e gerenciados pelo núcleo do
sistema operacional. A desvantagem desta implementação é que tod
o o gerenciamento dos threads é feito por chamadas ao sistema, o qu
e compromete a performance do sistema.
• Threads híbridos: são implementados tanto no espaço do usuário, qu
anto no núcleo do sistema operacional. O sistema operacional sabe d
os threads do usuário e faz o seu gerenciamento. A vantagem desta i
mplementação é a flexibilidade em função das duas implementaçõe
s.

______
💭 Reflita

Diante do que aprendemos sobre processos e threads, quais são os desafios


de implementar processos e threads em sistemas operacionais multiprogra
mados?

Conclusão
Agora que você já aprendeu sobre os conceitos, as características e o funcio
namento de processo e threads, sobre como os processos são criados e final
izados pelo sistema operacional, sobre a hierarquia e os estados de process
os e sobre como os processos e threads são implementados, vamos voltar a
o nosso contexto?

Lucas estava auxiliando o atendimento realizado por um estagiário de sua


equipe e surgiram os seguintes questionamentos:

• o que aconteceu para que o programa não tenha finalizado corretam


ente?
• como fazer para conseguir executar o software corretamente?
• no caso de o software travar durante o salvamento e a formatação, a
implementação de threads auxiliaria o processo?

O problema de travamento de um software pode acontecer tanto em função


do próprio software, quanto por causa de um hardware.

Como Lucas identificou que o processo estava em execução ao acionar o Ge


renciador de Tarefas, porém estava travado, constatou-se o problema no pr
ocesso que estava rodando. Neste caso, o processo travou por algum erro en
contrado, por exemplo, na memória durante a gravação do arquivo feita pel
o editor de texto.

O correto é “matar” o processo e reiniciar o software de edição. Ao fazer isso


, verifique se outro processo em execução impactará no salvamento do arq
uivo e, em caso positivo, feche-o antes de reiniciar o software de edição. A i
mplementação de threads durante a execução do processo agiliza o process
amento e melhora o desempenho das aplicações.

O próprio conceito de threads diz “são as entidades programadas para a exe


cução sobre a CPU” (TANENBAUM, WOODHULL, 2008, p. 78).

Logo, ao adicionar threads em uma aplicação, esta conseguirá processar du


as ou mais coisas ao mesmo tempo. Por exemplo, no caso do software de e
dição de arquivos, um thread seria responsável por receber os comandos do
usuário via teclado, outro thread seria responsável por formatar o arquivo e
outro seria responsável por salvar o arquivo, todos os threads trabalhando
em sincronia e executando as atividades em paralelo.

Unidade 2 / Aula 2

Comunicação entre processos

Introdução da aula
Qual é o foco da aula?

Nessa aula, vamos estudar sobre a comunicação entre processos e threads.


Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• definir a execução cooperativa de processos e threads, que solicitam


o uso de recursos como memória, arquivos, dispositivos de entrada/s
aída e registros;
• explicar os métodos que impedem que um processo invada outro qua
ndo um deles está em sua região crítica;
• analisar os tipos de exclusão mútua: dormir e acordar, semáforos, m
onitores e troca de mensagens.

Situação-problema

Em um sistema operacional, os processos e threads trocam informações en


tre si ou solicitam a utilização de recursos simultaneamente, como arquivo
s, dispositivos de entrada/saída e memória. Um exemplo de comunicação i
nterprocessos é a transferência de dados entre processos. Se um processo d
eseja imprimir um arquivo, ele o insere em um diretório de impressão com
um nome para identificá-lo e outro processo é responsável por verificar per
iodicamente se existem arquivos a serem impressos.

Nessa aula você saberá como é feita a comunicação entre processos e threa
ds. Veremos alguns pontos sobre essa comunicação, como condições de dis
puta, regiões críticas e exclusão mútua com espera ociosa. Além disso, estu
daremos os mecanismos de sincronização que resolvem a exclusão mútua:
dormir e acordar, semáforos, monitores e troca de mensagens.

Relembrando nosso contexto, Lucas acabou de ser contratado como gerent


e da área de Tecnologia da Informação de uma empresa prestadora de servi
ços hospitalares e, durante o acompanhamento do atendimento realizado p
or um estagiário, em relação aos constantes travamentos do software de ed
ição de arquivos ao salvar ou realizar a formatação, eles observam que outr
o usuário está fazendo o download de um arquivo.

Durante o download, um processo (A) é responsável por baixar o arquivo e


outro processo (B) é responsável por gravar estas informações em disco. Ca
so tenha outro processo acessando o disco, o processo (B) aguarda a sua vez
para poder acessar o disco e gravar as informações. Caso contrário, o proce
sso (B) grava os dados em disco e libera o recurso compartilhado para outro
processo.

Dessa forma, o estagiário faz os seguintes questionamentos a Lucas:

• quais são os desafios da comunicação entre os processos?


• quais os problemas clássicos da comunicação entre processos?
• e se fosse utilizado um algoritmo de escalonamento de processos por
meio de semáforos?
• qual a importância e os benefícios de sua utilização?

Para que você consiga responder esse e outros questionamentos sobre a co


municação entre processos e os mecanismos de sincronização que resolve
m a exclusão mútua, nesta aula vamos conhecer mais sobre os conteúdos p
ertinentes a este tema.

Bons estudos!

Execução cooperativa de processos e


threads

Em uma aplicação concorrente (execução cooperativa de processos e threa


ds), os processos precisam se comunicar entre eles, então solicitam o uso d
e recursos como memória, arquivos, dispositivos de entrada/saída e registr
os.

Por exemplo, uma região de memória é compartilhada entre vários process


os. O sistema operacional deve garantir que esta comunicação seja sincroni
zada para manter o bom funcionamento do sistema e a execução correta da
s aplicações.
Segundo Tanenbaum (2003), é necessário levar em consideração três tópic
os:

1. como um processo passa a informação para outro processo.


2. garantir que dois ou mais processos não invadam uns aos outros qua
ndo estão em regiões críticas (será detalhada no decorrer da aula). Q
uando um processo estiver usando uma região de memória, o outro p
rocesso deve aguardar a sua vez.
3. é necessário existir uma hierarquia quando houver dependências. Se
o processo A produz dados e o processo B os imprime, B deve esperar
até que A produza dados para serem impressos.

Estas questões serão discutidas ao longo desta aula e também se aplicam


a threads.
Condições de disputa ou condições de corrida

Condições de disputa ou condições de corrida acontecem quando dois ou m


ais processos estão compartilhando alguma região da memória (lendo ou e
screvendo dados) e o resultado final depende das informações de quem exe
cuta e quando.

Como exemplo, podemos citar o problema da Conta_Corrente relatado por


Machado e Maia (2007). Nesta situação, o saldo bancário de um cliente é at
ualizado por meio de um programa após o lançamento de um débito ou cré
dito no arquivo de contas correntes (neste arquivo são armazenadas infor
mações sobre o saldo dos correntistas do banco).

O registro do cliente e o valor depositado ou sacado são lidos por um progra


ma e o saldo do cliente é atualizado. Suponha que dois funcionários do ban
co atualizem o saldo do mesmo cliente simultaneamente.

O processo do primeiro funcionário lê o registro do cliente e soma ao saldo


o valor sacado pelo cliente. Porém, antes de gravar o novo saldo no arquivo,
o segundo funcionário lê o registro do mesmo cliente que está sendo atuali
zado e lança um crédito a ser somado ao saldo.

Independentemente do processo que atualizar primeiro, o dado gravado no


arquivo referente ao saldo está inconsistente.
Regiões críticas

Para impedir as condições de disputa, é necessário definir maneiras que im


peçam que mais de um processo leia e escreva ao mesmo tempo na memór
ia compartilhada. Esses métodos são chamados de exclusão mútua, ou seja,
quando um processo estiver lendo ou gravando dados, sua região crítica ou
processo deve esperar.

A parte do programa em que o processo acessa a memória compartilhada é


chamada de região crítica ou seção crítica.

Segundo Tanenbaum (2003), para termos uma boa solução, é necessário sat
isfazer quatro itens:

1. dois ou mais processos jamais estarão ao mesmo tempo em suas reg


iões críticas.
2. não se pode afirmar nada sobre o número e a velocidade de CPUs.
3. nenhum processo que esteja executando fora de sua região crítica po
de bloquear outros processos.
4. nenhum processo deve esperar sem ter uma previsão para entrar em
sua região crítica.

A seguir veremos as soluções propostas para realizar a exclusão mútua: ex


clusão mútua com espera ociosa, dormir e acordar, semáforos, monitores e
troca de mensagens.

Exclusão mútua: com espera ociosa


Segundo Tanenbaum (2003), existem alguns métodos que impedem que u
m processo invada outro quando um deles está em sua região crítica. Confi
ra quais são eles, a seguir.
Desabilitando interrupções

Nesta solução, as interrupções são desabilitadas por cada processo (qualqu


er parada que pode ocorrer por um evento) assim que entra em sua região c
rítica e ativadas novamente antes de sair dela. Desta forma, a CPU não será
disponibilizada para outro processo.

Esta solução não é prudente, uma vez que, ao dar autonomia para processo
s, a multiprogramação fica comprometida. Se um processo, ao entrar em su
a região crítica, desabilitasse as interrupções e se esquecesse de habilitá-la
s novamente ao sair, o sistema estaria comprometido.

Em sistemas com múltiplos processadores, a interrupção acontece em ape


nas um processador e os outros acessariam normalmente a memória comp
artilhada, comprometendo essa solução.

______
🔁 Assimile
A solução de exclusão mútua com espera ociosa, como desabilitando interr
upções e instrução TSL são mecanismos implementados no hardware do c
omputador. As demais soluções são implementadas via software.

______
📝 Exemplificando

Suponha que um processo de atualização da base de dados de uma empres


a de vendas de seguros de vida desabilite as interrupções durante a noite p
ara fazer uma nova carga da base de dados. Esta interrupção é necessária,
uma vez que a carga demorará aproximadamente dez horas. Se o processo
finalizar e não reabilitar as interrupções, a base de dados no dia seguinte n
ão poderá ser usada e a consequência pode ser a perda financeira e de fideli
zação de clientes.

______
Variáveis de impedimento

Esta solução contém uma variável chamada lock, inicializada com o valor
0. Segundo Tanenbaum (2003), o processo testa e verifica o valor dessa vari
ável antes de entrar na região crítica e, caso o valor seja 0, o processo o alte
ra para 1 e entra na região crítica. Caso o valor da variável seja 1, o processo
deve aguardar até que seja alterado para 0.

Variáveis de impedimento não resolvem o problema de exclusão mútua e a


inda mantêm a condição de disputa. Quando o processo 1 vê o valor da vari
ável 0 e vai para alterar o valor para entrar na região crítica, chega o proces
so 2 e altera o valor da variável para 1, antes de o processo 1 ter alterado. Lo
go, os dois processos entram, ao mesmo tempo, na região crítica.
Alternância obrigatória

Segundo Tanenbaum (2003), essa solução utiliza uma variável turn compar
tilhada que informa qual processo poderá entrar na região crítica (ordem).
Esta variável deve ser alterada para o processo seguinte, antes de deixar a r
egião crítica.

Suponha que dois processos desejam entrar em sua região crítica. O proces
so A verifica a variável turn que contém o valor 0 e entra em sua região crít
ica. O processo B também encontra a variável turn com o valor 0 e fica test
ando continuamente para verificar quando ela terá o valor 1.

O teste continuo é chamado de espera ociosa, ou seja, quando um processo


deseja entrar em sua região crítica, ele examina se sua entrada é permitida
e, caso não seja, o processo fica esperando até que consiga entrar. Isso ocasi
ona um grande consumo de CPU, podendo impactar na performance do sist
ema.

Ainda segundo Tanenbaum (2003), assim que o processo A deixa sua regiã
o crítica, a variável turn é atualizada para 1 e permite que o processo B entr
e em sua região crítica.

Vamos supor que o Processo B é mais ágil e deixa a região crítica. Os proces
sos A e B estão fora da região crítica e turn possui o valor 0. O processo A fi
naliza antes de ser executado em sua região não crítica. Como o valor de tu
rn é 0, o processo A entra de novo na região crítica, e o processo B ainda per
manece na região não crítica. Ao deixar a região crítica, o processo A atuali
za a variável turn com o valor 1 e entra em sua região não crítica.
Os processos A e B estão executando na região não crítica e o valor da variá
vel turn é 1. Se o processo A tentar entrar de novo na região crítica, não con
seguirá, pois o valor de turn é 1. Desta forma, o processo A fica impedido pel
o processo B, que NÃO está na sua região crítica.

Esta situação viola a seguinte condição: nenhum processo que esteja execu
tando fora de sua região crítica pode bloquear outros processos.
Solução de Peterson
Segundo Tanenbaum (2003), essa solução foi implementada por meio de u
m algoritmo que consiste em dois procedimentos escritos em C, baseado na
definição de duas primitivas (enter_region e leave_region) utilizadas pelos
processos que desejam utilizar sua região crítica. Antes de entrar na região
crítica, todo processo chama enter_region com os valores 0 ou 1.

Este apontamento faz com que o processo aguarde até que seja seguro entr
ar. Depois de finalizar a utilização da região crítica, o processo chama leave
_region e permiti que outro entre. Como a solução de Alternância Obrigatór
ia, a Solução de Peterson precisa da espera ociosa.
Instrução TSL

Segundo Tanenbaum (2003), a instrução TSL (test and set lock, ou seja, test
e e atualize a variável de impedimento) conta com a ajuda do hardware.

A instrução TSL RX, LOCK faz uma cópia do valor do registrador RX para L
OCK. Um processo somente pode entrar em sua região crítica se o valor de
LOCK for 0. A verificação do valor de LOCK e sua alteração para 0 são realiz
adas por instruções ordinárias.

A solução de Alternância Obrigatória, a Solução de Peterson e a instrução T


SL utilizam a espera ociosa.

Exclusão mútua: dormir e acordar e


semáforos
Dormir e acordar

As soluções apresentadas até aqui utilizam a espera ociosa (os processos fi


cam em um laço ocioso até que possam entrar na região crítica). Para resol
ver este problema, são realizadas chamadas sleep (dormir) e wakeup (acor
dar) ao sistema, que bloqueiam/ desbloqueiam o processo, ao invés de gasta
r tempo de CPU com a espera ociosa.

A chamada sleep faz com que o processo que a chamou durma até que outr
o processo o desperte, e a chamada wakeup acorda um processo.

Para exemplificar o uso dessas chamadas, vamos apresentar o problema d


o produtor/consumidor.
Problema do produtor/consumidor

De acordo com Tanenbaum (2003), o problema do produtor/consumidor nor


malmente acontece em programas concorrentes em que um processo gera
informações (produtor) para uso de outro processo (consumidor).
Imagine que dois processos compartilham um buffer (memória) de tamanh
o fixo. O problema acontece quando o produtor quer inserir um novo item, p
orém o buffer está cheio ou o consumidor deseja remover um item e o buffe
r está vazio.

A solução é colocar o processo, impedido pela capacidade do buffer, para do


rmir (através da chamada sleep) até que o outro modifique o buffer e acorde
o anterior (por meio da chamada wakeup). Para controlar a quantidade de i
tens no buffer, é utilizada uma variável count.

O problema da condição de disputa acontece quando o buffer está vazio e o


consumidor verifica o valor da variável count. O escalonador decide parar a
execução do consumidor e executa o produtor, que inclui itens no buffer en
viando um sinal de acordar para o consumidor. Como o consumidor ainda
não está logicamente adormecido, o sinal para acordar é perdido e tanto o c
onsumidor, quanto o produtor ficarão eternamente adormecidos.
Semáforos

Segundo Machado e Maia (2007), a utilização de semáforos é um dos meca


nismos utilizados em projetos de sistemas operacionais e em aplicações co
ncorrentes. Hoje, grande parte das linguagens de programação disponibiliz
a procedimentos para que semáforos sejam utilizados.

Um semáforo é uma variável inteira que realiza duas operações: DOWN (de
crementa uma unidade ao valor do semáforo) e UP (incrementa uma unida
de ao valor do semáforo).

As rotinas DOWN e UP são indivisíveis e executadas no processador. Um s


emáforo com o valor 0 indica que nenhum sinal de acordar foi salvo e um v
alor maior que 0 indica que um ou mais sinais de acordar estão pendentes (
TANENBAUM, 2003).

De acordo com Machado e Maia (2007), os semáforos são classificados com


o:
• binários, também conhecidos como mutexes (mutual exclusion sem
aphores), que recebem os valores 0 ou 1.
• contadores, que recebem qualquer valor inteiro positivo, além do 0.

Para compreendermos melhor o uso de semáforos, utilizaremos um exemp


lo de semáforos binários.

Segundo Machado e Maia (2007), o semáforo com o valor igual a 1 significa


que nenhum recurso está utilizando o processo e valor igual a 0 significa q
ue o recurso está em uso.

A figura “Semáforo binário” apresenta o uso do semáforo binário na exclus


ão mútua. Quando um processo deseja entrar em sua região crítica, é execu
tada a instrução DOWN.

Caso o valor do semáforo seja igual a 1, o valor é decrementado e o processo


pode entrar em sua região crítica. Caso o valor seja 0 e a operação DOWN se
ja executada, o processo é impedido de entrar em sua região crítica, perman
ecendo em fila no estado de espera.

O processo que utiliza o recurso executa a instrução UP ao deixar a região c


rítica incrementa o valor do semáforo e libera o acesso ao recurso. Caso exi
stam processos aguardando na fila para serem executados, o sistema seleci
onará um e alterará o seu estado para pronto.
Semáforo binário. Fonte: Machado e Maia (2007, p. 108).
O problema do produtor/consumidor (perda de sinal de acordar) apresentad
o acima pode ser resolvido através de semáforos, conforme apresentado na
figura “Problema do produtor/consumidor usando semáforos”, em que três
semáforos são usados: um chamado mutex, que controla o acesso à região
crítica e é inicializado com o valor 1, outro chamado full, que conta os valor
es preenchidos no buffer, sendo o valor inicial 0 e o terceiro chamado de e
mpty, que conta os lugares vazios no buffer (representa o número de lugare
s do buffer).

Segundo Tanenbaum (2003), um processo, ao executar a operação DOWN, d


ecrementa o seu valor inteiro. Caso o valor do semáforo seja negativo, o pro
cesso é impedido e inserido ao fim da fila. Quando um processo executa a o
peração UP, o seu valor inteiro é incrementado. Se existir algum processo i
mpedido na fila, o primeiro processo é liberado.
Problema do produtor/consumidor usando semáforos. Fonte: Tanenbaum (2003, p. 82).
➕ Pesquise mais
Para saber mais sobre o funcionamento de semáforos, assita ao vídeo Semá
foros.

Exclusão mútua: monitores e troca


de mensagens
Monitores

Segundo Tanenbaum (2003), um monitor é uma coleção de rotinas, estrutur


a de dados e variáveis que ficam juntos em um módulo ou pacote. Também
pode ser definido como uma unidade de sincronização de processos de alto
nível.

Um processo, ao chamar uma rotina de um monitor, verifica se existe outro


processo ativo. Caso esteja, o processo que chamou é bloqueado até que o o
utro deixe o monitor, senão, o processo que o chamou poderá entrar.

A utilização de monitores garante a exclusão mútua, uma vez que só um pr


ocesso pode estar ativo no monitor em um determinado momento e os dem
ais processos ficam suspensos até poderem estar ativos. O compilador é o r
esponsável por definir a exclusão mútua nas entradas do monitor.

É preciso definir métodos para suspenderem os processos caso não possam


prosseguir, mesmo que a implementação da exclusão mútua em monitores
seja fácil.

Assim, é necessário introduzir variáveis condicionais, com duas operações


: wait e signal. Se um método do monitor verifica que não pode prosseguir,
um sinal wait é emitido (bloqueando o processo), permitindo que outro proc
esso que estava bloqueado acesse o monitor. A linguagem de programação
Java suporta monitores.

______
💭 Reflita

Os monitores e semáforos são soluções para CPUs que utilizam memória co


mpartilhada. E como seria esse processo em sistemas distribuídos, em que
existem troca de informações entre processos que estão em máquinas difer
entes?
______
Troca de Mensagens

Segundo Tanenbaum (2003), esse método utiliza duas chamadas ao sistem


a:

• send (destination, &message) - envia uma mensagem para um deter


minado destino.
• receive (source, &message) - recebe uma mensagem de uma determi
nada origem.

Caso nenhuma mensagem esteja disponível, o receptor poderá ficar suspen


so até chegar alguma.

A troca de mensagens possui problemas como sua perda pela rede. Para ev
itar este problema, assim que uma mensagem é recebida, o receptor enviar
á uma mensagem de confirmação de recebimento. Caso o receptor receba e
não confirme o recebimento, não será problema, uma vez que as mensagen
s originais são numeradas de forma sequencial.

Uma questão importante refere-se à autenticação, pois é necessário saber s


e a fonte é real. Além disso, as mensagens enviadas e recebidas não podem
ser ambíguas.

Quanto ao desempenho, copiar mensagens é um procedimento mais lento


do que realizar operações sobre semáforos ou monitores. Uma solução seri
a realizar a troca de mensagens através de registradores.

______
🔁 Assimile

Vimos nesta aula que, para resolver o problema de exclusão mútua, existe
m as seguintes soluções: exclusão mútua com espera ociosa, dormir e acor
dar, semáforos, monitores e troca de mensagens. Estes métodos são equiva
lentes quando implementados em um único processador.

______
➕ Pesquise mais
Existem diversos problemas clássicos da comunicação interprocessos, co
mo o problema do jantar dos filósofos e o problema do barbeiro sonolento. P
ara saber mais sobre eles, indicamos o livro Sistemas Operacionais Moder
nos, do autor Andrew Tanenbaum, editora Pearson, 2003.

Conclusão

Agora que você já aprendeu como os processos e threads fazem a comunica


ção, conheceu as questões sobre a comunicação entre processos como cond
ições de disputa, regiões críticas e exclusão mútua com espera ociosa e est
udou sobre os mecanismos de sincronização que resolvem a exclusão mút
ua dormir e acordar, semáforos, monitores e troca de mensagens, vamos vo
ltar ao nosso contexto.
Durante o atendimento do chamado referente aos constantes travamentos
do software de edição de arquivos ao salvar ou realizar a formatação, eles o
bservam que outro usuário está fazendo o download de um arquivo. Como
os sistemas operacionais precisam manter a comunicação entre processos
para um bom funcionamento do sistema e para não comprometer a execuç
ão das aplicações, os desafios são grandes.

Os processos que concorrem por recursos do computador devem ter suas e


xecuções sincronizadas, garantindo o correto processamento das aplicaçõe
s. Para isso, o sistema operacional deve implementar mecanismos de contr
ole e sincronismo, como a exclusão mútua que consiste em não permitir qu
e dois processos acessem o mesmo recurso ao mesmo tempo, garantindo a
ssim que nenhum processo invada a região crítica de outro.
Neste caso, foram desenvolvidas soluções para evitar a exclusão mútua, co
mo: dormir e acordar, que faz com que um processo durma enquanto outro
esteja acessando o recurso, até que seja acordado pelo outro processo; semá
foro, uma variável responsável por contar a quantidade de sinais de dormir
e acordar, sendo vantajoso por não existir a espera ocupada que desperdiça
o processamento de máquina; entre outras soluções.

Analisando esta situação, um dos mecanismos de sincronização de proces


sos chama-se Semáforos. Os Semáforos garantem que processos não acess
em um mesmo recurso simultaneamente através de duas variáveis Dow
n e Up, que são verificadas e alteradas sem a possibilidade de interrupções.
A variável Down é decrementada quando o processo grava os dados e liber
a o disco para outro processo. A variável Up é incrementada quando outro p
rocesso já está usando a CPU.

Existem os problemas clássicos da comunicação entre processos e existem


vários métodos para resolver estes problemas. Podemos citar o problema d
o jantar dos filósofos e o problema do barbeiro adormecido, conforme apres
entado em Tanenbaum (2003).
O problema do jantar dos filósofos foi proposto e resolvido assim: cinco filó
sofos estão sentados em uma mesa circular e cada um tem um prato de esp
aguete e garfos. Porém, para comer são necessários dois garfos, pois o espa
guete está escorregadio. Cada filósofo alterna entre comer e pensar e, quan
do algum deles fica com fome, tenta pegar os garfos da sua esquerda e direi
ta, um de cada vez, para poder comer o espaguete. Caso consiga pegar os do
is garfos, ele come por um tempo, liberando os garfos ao final e voltando à s
ua atividade de pensar. O problema é não gerar o bloqueio dos filósofos imp
lementando soluções para resolver a questão do acesso exclusivo a um nú
mero restrito de recursos.

O problema do barbeiro adormecido acontece em uma barbearia. A barbeari


a tem um barbeiro, uma cadeira de barbeiro e várias cadeiras para que os cl
ientes esperem a sua vez. Se não tiver clientes, o barbeiro adormece e quan
do um cliente chega, o barbeiro acorda e corta seu cabelo. Se chegarem outr
os clientes, eles verificam se há cadeiras de espera disponíveis e, caso não t
enha, os clientes vão embora. O problema principal é programar o barbeiro
e os clientes para não cairem em condição de disputa.

Unidade 2 / Aula 3

Escalonamento de processos

Introdução da aula
Qual é o foco da aula?

Nessa aula, vamos aprender sobre como é realizado o escalonamento entre


processos e threads e sobre os tipos de escalonamento e seus principais alg
oritmos.
Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• definir os objetivos do escalonador de processos e analisar as princip


ais situações que levam ao escalonamento;
• distinguir os três ambientes de escalonamento: lote, interativo e tem
po real;
• explicar as características e os critérios para o escalonamento de thr
eads.

Situação-problema

Em um sistema operacional vários processos compartilham recursos ao m


esmo tempo, e quem faz a escolha de qual processo deve ser executado é o
escalonador, feita por meio de um algoritmo (algoritmo de escalonamento),
sendo necessário seguir as seguintes premissas: dar a cada processo o tem
po necessário de uso da CPU, verificar se a política estabelecida é cumprida
e manter ocupadas todas as partes do sistema. Por exemplo, quando um pr
ocesso termina sua execução, outro processo deve ser escolhido entre os qu
e estão no estado “pronto para executar”.

Relembrando nosso contexto, Lucas acabou de ser contratado como gerent


e da área de Tecnologia da Informação de uma empresa prestadora de servi
ços hospitalares. Um usuário abriu um chamado para atualização do Adobe
Reader em seu computador.

Durante o atendimento, Lucas acompanha a resposta do chamado, delegad


a a um estagiário, que inicia a atualização do software e observa que no co
mputador do usuário existem dois processos ativos: A e B. O processo A vai
atualizar o Adobe Reader, enquanto o processo B vai gravar em disco os da
dos da alteração de um arquivo iniciada pelo usuário.

Neste caso, o escalonador, além de fazer todas as verificações necessárias,


deve conferir a prioridade de execução, pois a gravação em disco é prioritár
ia em relação à atualização de um aplicativo.

O escalonador de processos deve escolher um algoritmo de escalonamento


para realizar esta ação, e Lucas foi designado para implementar um algorit
mo de escalonamento de processos por meio de semáforos, que deverá ser
entregue ao diretor da área de TI do hospital.

Dessa forma, o estagiário fez os seguintes questionamentos:

• quais critérios o escalonador leva em consideração na escolha do us


o da CPU?
• quais são os objetivos do algoritmo de escalonamento?
• por que em alguns algoritmos de escalonamento é necessário saber
o tempo de execução de cada processo para executar?
• como os sistemas operacionais atuais fazem a escolha do algoritmo
de escalonamento a ser utilizado?

A fim de conseguir responder essas e outras questões sobre o escalonamen


to de processos e sobre os algoritmos de escalonamento, vamos conhecer
mais sobre eles, para que você consiga implementar um algoritmo de escal
onamento de processos através de semáforos.

Bons estudos!

Escalonador de processos

Segundo Tanenbaum (2003), nos computadores existem vários processos q


ue competem pela CPU e é necessário que o sistema operacional escolha, d
e forma eficiente, os que estejam aptos a executar. O responsável por isso é
o escalonador de processos, por meio da aplicação de algoritmos ou política
s de escalonamento para otimizar a utilização do processador, definindo o
processo que ocupará a CPU.

Segundo Machado e Maia (2007), além de escolher o processo a ser executa


do, o escalonador deve prezar pelos critérios e pelos objetivos.
Critérios do escalonador de processos
• Utilização do processador: eficiência do uso da CPU mantendo o pro
cessador ocupado na maior parte do tempo.
• Throughput: maximizar a produtividade (throughput), executando o
maior número de processos em função do tempo.
• Tempo de processador: tempo de execução do processo.
• Tempo de espera: reduzir o tempo total que um processo aguarda na
fila para ser executado.
• Tempo de turnaround: minimizar o tempo que um processo leva des
de sua criação até seu término, considerando a alocação de memória,
tempo de espera e tempo do processador e aguardando as operações
de entrada/saída.
• Tempo de resposta: reduzir o tempo de resposta para as aplicações i
nterativas dos usuários.

Objetivos do escalonador de processos

Dar privilégios para aplicações críticas.

• Balancear o uso da CPU entre processos.


• Ser justo com todos os processos, pois todos devem poder usar o proc
essador.
• Maximizar a produtividade (throughput).
• Proporcionar menores tempos de resposta para usuários interativos.

Diferentes sistemas operacionais apresentam características de escalonam


ento distintas. Podemos citar como exemplos o sistema operacional em te
mpo real e o de tempo compartilhado. O primeiro prioriza as aplicações crít
icas, enquanto o segundo aloca todos os processos com tempo igual para ac
esso à CPU, a fim de que os processos não esperem muito tempo para ter ac
esso ao processamento.

Segundo Tanenbaum (2003), alternar processos é oneroso, uma vez que é n


ecessário alternar do modo usuário para o modo núcleo para iniciar a exec
ução. Nessa execução, o estado do processo e o mapa de memória devem se
r salvos, armazenando os dados dos registradores na tabela de processos e,
a cada troca de processos, a memória cache (memória de acesso rápido) é i
nvalidada.

As principais situações que levam ao escalonamento, segundo Tanenbaum


(2003), são:

• a criação de um novo processo: é necessário escolher entre executar


o processo pai ou o filho.
• o término de um processo: quando um processo é finalizado, é neces
sário escolher outro para ser executado.
• bloqueio do processo: quando um processo é bloqueado e está aguard
ando uma entrada/saída, é necessário escolher outro processo.
• interrupção de entrada/saída: se a interrupção for gerada por um dis
positivo que finalizou a execução, o processo passará de “bloqueado”
para “pronto” e o escalonador deve escolher entre continuar executa
ndo o processo atual ou o que acabou de ficar pronto.
• interrupções de relógio: a cada interrupção do hardware de relógio p
ode haver um escalonamento de processos.

Em relação ao tratamento das interrupções de relógio, os algoritmos ou polí


ticas de escalonamento são classificados em não-preemptivo e preemptivo
(MACHADO; MAIA, 2007). No não-preemptivo um processo executa até fina
lizar, independentemente do tempo de uso da CPU, ou até que seja bloquead
o aguardando entrada/saída de outro processo. Este escalonamento foi imp
lementado no processamento batch.

Já no escalonamento preemptivo um processo é executado por um tempo p


ré- determinado e quando o tempo de execução dado ao processo finaliza, a
CPU é alocada para outro processo. No escalonamento preemptivo é possív
el priorizar aplicações em tempo real em função dos tempos dados aos proc
essos. Os algoritmos de escalonamento preemptivo são complexos, porém
permitem a implantação de vários critérios de escalonamento.
______
💭 Reflita

Já pensou na complexidade e na criticidade de se definir a quantidade cert


a de tempo de execução de cada processo (quantum)? Por que esse é um pro
cesso crítico? Quais seriam as implicações se este processo fosse malfeito?

______

Segundo Tanenbaum (2003), existem três ambientes diferentes de escalona


mento: lote, interativo e tempo real. A seguir descreveremos cada um deles.

Ambientes de escalonamento: lote

Como não existem usuários aguardando uma resposta, tanto algoritmos pr


eemptivos como não-preemptivos são aceitáveis para sistemas em lote. Os
algoritmos de escalonamento aplicados aos sistemas em lote são:

• FIFO (First in first out):


primeiro a chegar, primeiro a sair. Neste algoritmo os processos são inserid
os em uma fila à medida que são criados, e o primeiro a chegar é o primeiro
a ser executado. Quando um processo bloqueia e volta ao estado de pronto,
ele é colocado no final da fila e o próximo processo da fila é executado. O FI
FO é um algoritmo não- preemptivo, simples e de fácil implementação.

• Job mais curto primeiro (SJF – shortest job first):

é um algoritmo de escalonamento não-preemptivo, em que são conhecidos


todos os tempos de execução dos jobs. O algoritmo seleciona primeiro os jo
bs mais curtos para serem executados. Este algoritmo é recomendado quan
do todos os jobs estão disponíveis ao mesmo tempo na fila de execução.

A figura “Escalonamento do job mais curto primeiro” (a) apresenta quatro jo


bs (A, B, C e D) aguardando numa fila, com os respectivos tempos de execuç
ão em minutos (8, 4, 4 e 4).

Se os jobs forem executados nesta ordem, teremos uma média de espera de


execução de 14 minutos (o retorno do job A é de 8 minutos, o retorno do jo
b B é de 12 minutos (8 + 4), o retorno do job C é de 16 minutos (12 + 4) e o reto
rno do job D é de 20 minutos (16 + 4).

Logo, (8+12+16+20) / 4 = 14 minutos. Se os jobs forem executados selecionan


do primeiramente o mais curto, conforme apresentado na figura (b), teremo
s uma média de espera de execução de 11 minutos (o retorno do job B é de 4
minutos, o do job C é de 8 minutos (4 + 4), o do job D é de 12 minutos (8 + 4) e
o do job A é de 20 minutos (12 + 8)). Logo, (4+8+12+20) / 4 = 11 minutos.
Escalonamento do job mais curto primeiro. Fonte: Tanenbaum (2003, p. 102).
Uma versão preemptiva para o algoritmo job mais curto é, primeiro, o algor
itmo próximo de menor tempo restante. O escalonador conhece os tempos
de execução e escolhe sempre o job cujo tempo restante ao seu término seja
o menor.

Quando um novo job chega na fila para execução, seu tempo total é compar
ado ao tempo restante do processo que está utilizando a CPU.

Ambientes de escalonamento:
interativo
Nos sistemas interativos, a preempção se faz necessária para que outros pr
ocessos tenham acesso à CPU. Os algoritmos de escalonamento aplicados a
os sistemas interativos e que podem também ser aplicados a sistema em lo
te são:

• Escalonamento Round Robin:

é um algoritmo antigo, simples, justo e muito usado. Também é conhecido


como algoritmo de escalonamento circular. Nele os processos são organiza
dos em uma fila e cada um recebe um intervalo de tempo máximo (quantu
m) que pode executar.

Se ao final de seu quantum o processo ainda estiver executando, a CPU é lib


erada para outro processo. A figura “Escalonamento Round Robin” (a) most
ra a lista de processos que são executáveis mantida pelo escalonador. Quan
do um processo finaliza o seu quantum, é colocado no final da fila, conform
e apresentado na figura “Escalonamento Round Robin” (b).
Escalonamento Round Robin. Fonte: Tanenbaum (2003, p. 104).
Segundo Machado e Maia (2007), o quantum varia de acordo com a arquitet
ura do sistema operacional e a escolha deste valor é fundamental, uma vez
que afeta a política do escalonamento circular. Os valores variam entre 10 e
100 milissegundos. O escalonamento circular é vantajoso porque não permi
te que um processo monopolize a CPU.

• Escalonamento por prioridades:

o algoritmo por prioridades considera todos os processos importantes, send


o associados a ele uma prioridade e um tempo máximo de execução. Por ex
emplo, um processo que carrega os dados em uma página web deve ter um
a prioridade maior do que um processo que atualiza em segundo plano as
mensagens de correio eletrônico.

Quando os processos estiverem disponíveis para execução, o que tiver a ma


ior prioridade é selecionado para executar. Para que os processos com prior
idades altas não sejam executados infinitamente, a cada interrupção de rel
ógio o escalonador pode reduzir a prioridade do processo.

Segundo Machado e Maia (2007), as prioridades de execução podem ser cla


ssificadas em estática ou dinâmicas.
A prioridade estática não altera o valor enquanto o processo existir. Já a di
nâmica ajusta-se de acordo com os critérios do sistema operacional.

• Escalonamento garantido:

se existirem vários usuários (n) logados em uma máquina, cada um deles r


eceberá 1/n do tempo total da CPU. O sistema gerencia a quantidade de tem
po de CPU de cada processo desde sua criação.

______
📝 Exemplificando

Para exemplificar o escalonamento garantido, imagine que em um comput


ador multiusuário existam 4 usuários logados. O tempo de CPU estabelecid
o para cada usuário executar os seus processos são de 7 segundos.

Assim, o processo do usuário 1 executa por 7 segundos e para, dando lugar


ao 2, que também executa por 7 segundos. Inicia então o processo do usuári
o 3 que executa pelo mesmo tempo e para, iniciando o processo do usuário
4.

Este ciclo se repete até que todos os processos dos usuários finalizem a sua
execução.

______

• Escalonamento por loteria:

o escalonamento por loteria é baseado em distribuir bilhetes aos processos


e os prêmios recebidos por eles são recursos de sistema, incluindo tempo d
e CPU. Cada bilhete pode representar o direito a um quantum de CPU e cada
processo pode receber diferentes números de bilhetes, com opções de escol
ha distintas. Também existem as ações como compra, venda, empréstimo
e troca de bilhetes.
• Escalonamento fração justa (fair-share):

nesse caso, cada usuário recebe uma fração da CPU. Por exemplo, se existe
m dois usuários conectados em uma máquina e um deles tiver nove proces
sos e o outro tiver apenas um, não é justo que o usuário com o maior númer
o de processos ganhe 90% do tempo da CPU.

Logo, o escalonador é o responsável por escolher os processos que garanta


m a fração justa.

______
➕ Pesquise mais

O LinSched é um simulador de scheduler do Linux que reside no espaço do


usuário. Ele isola o subsistema do scheduler do Linux (que fica dentro do k
ernel) e desenvolve ao redor dele uma quantidade suficiente do ambiente d
o kernel para que possa ser executado dentro do espaço do usuário.
Para saber mais sobre este scheduler, acesse a Simulação do Linux Schedu
ler.

Ambientes de escalonamento: tempo


real
• Tempo real:

nesses sistemas, o tempo é um fator importantíssimo e os processos, ao util


izarem a CPU, fazem seu trabalho rapidamente e são bloqueados, dando op
ortunidade para outros processos executarem.

Segundo Machado e Maia (2007), o escalonamento por prioridades seria o


mais adequado em sistemas de tempo real, uma vez que uma prioridade é v
inculada ao processo e, assim, a importância das tarefas na aplicação são c
onsideradas.

No escalonamento de tempo real, a prioridade deve ser estática, além de nã


o existir fatia de tempo para cada processo executar.

______
🔁 Assimile

Vimos nesta aula que no escalonamento de tempo real, o tempo é um fator


crucial. Esse sistema pode ser classificado em crítico e não crítico. O crítico
atende a todos os prazos de um processo. No não crítico, os prazos de temp
o do processo não podem ser garantidos.

______
Escalonamento de Threads

Da mesma forma que processos são escalonados, threads também são. O es


calonamento de threads depende se estas estão no espaço do usuário ou do
núcleo. Se forem threads de usuário, o núcleo não sabe de sua existência e
o sistema operacional escolhe um processo A para executar, dando a ele o c
ontrole de seu quantum.

O escalonador do thread A escolhe qual thread deve executar, através dos a


lgoritmos de escalonamento descritos anteriormente. Se forem threads do
núcleo, o sistema operacional escolhe um thread para executar até um qua
ntum máximo e, caso o quantum seja excedido, o thread será suspenso (TA
NENBAUM, 2003).

Uma das diferenças entre threads do usuário e do núcleo é o desempenho,


uma vez que a alternância entre threads do usuário e do núcleo consome p
oucas instruções do computador. Além disso, os threads do usuário podem
utilizar um escalonador específico para uma aplicação (TANENBAUM, 200
3).

Segundo Deitel, Deitel e Choffnes (2005), na implementação de threads em


Java, cada thread recebe uma prioridade. O escalonador em Java garante q
ue o thread com prioridade maior execute o tempo todo. Caso exista mais d
e um thread com prioridade alta, eles serão executados através de alternân
cia circular.

Conclusão
Agora que você já aprendeu sobre como é realizado o escalonamento de pro
cessos e threads e como os algoritmos de escalonamento funcionam, vamo
s relembrar o nosso contexto.

Durante a atualização do Adobe Reader no computador do usuário, enquant


o o processo A atualiza o software, o processo B grava em disco os dados da
alteração de um arquivo iniciada pelo usuário. O escalonador de processos
deve escolher um algoritmo para realizar esta ação, e Lucas foi designado p
ara implementar um algoritmo de escalonamento de processos por meio de
semáforos, que deverá ser entregue ao diretor da área de TI da empresa pre
stadora de serviços hospitalares.

Desta forma, Lucas foi questionado pelo estagiário:

• quais critérios o escalonador leva em consideração na escolha do us


o da CPU?
• quais são os objetivos do algoritmo de escalonamento?
• por que em alguns algoritmos de escalonamento é necessário saber
o tempo de execução de cada processo para executar?
• como os sistemas operacionais atuais fazem a escolha do algoritmo
de escalonamento a ser utilizado?
Em um computador multiprogramado, ou seja, que executa vários program
as ao mesmo tempo, os processos disputam a CPU, sendo necessário que o
escalonador defina qual processo executará. Escolher corretamente o proce
sso é importante, uma vez que alternar processos é caro, sendo preciso se p
reocupar com o uso eficiente da CPU. Para isso, é necessário que o escalona
dor siga os seguintes critérios:

• manter o processador ocupado a maior parte do tempo, prezando pel


a eficiência da CPU.
• executar o maior número de processos em função do tempo.
• reduzir o tempo total que um processo aguarda na fila para ser execu
tado.
• minimizar o tempo que um processo leva desde a sua criação até o s
eu término.
• considerar a alocação de memória, o tempo de espera e do processad
or e aguardar as operações de entrada/saída.
• reduzir o tempo de resposta para as aplicações interativas dos usuári
os.

Os objetivos do escalonador de processos são: dar privilégios para aplicaçõe


s críticas, balancear o uso da CPU entre processos, ser justo com todos os pr
ocessos, pois todos devem ter poder usar o processador, maximizar a produ
tividade (throughput) e proporcionar menores tempos de resposta para usu
ários interativos.
Em alguns algoritmos de escalonamento, por exemplo, no Job mais curto p
rimeiro, o tempo de execução de cada processo é conhecido, porque estes al
goritmos eram utilizados em sistemas em lote e, nestes sistemas, era possí
vel prever o tempo de execução de cada programa, por serem rotinas que e
xecutavam constantemente. Assim, o processo que possuía o menor tempo
de execução era selecionado para ocupar a CPU.

Os sistemas operacionais atuais precisam levar em consideração o tempo d


e resposta rápido das aplicações dos usuários, manter em conformidade os
processos com prioridades altas e baixas, entre outros. Em tempo de execu
ção, o escalonador pode definir qual processo executará de acordo com a su
a política de escalonamento. Além disso, ele deve manter a CPU ocupada n
a maior parte do tempo, executando o maior número de processos possívei
s.

Os escalonadores dos sistemas operacionais atuais são preemptivos, isto é,


dividem o tempo do processador em partes e cada parte é alocada aos proce
ssos. Assim, todos os processos que chegam para executar possuem seu te
mpo de CPU garantido.

Após analisar o cenário da empresa prestadora de serviços hospitalares, Lu


cas implementou o algoritmo de escalonamento de processos por meio de s
emáforos Binários. Foi definido que quando nenhum recurso estiver sendo
utilizado pelo processo, o valor do semáforo será igual a 1, caso o valor seja i
gual a 0 significa que o recurso está em uso. O quadro “Pseudocódigo Semáf
oro” apresenta o pseudocódigo utilizado por Lucas para implementar as fun
ções down e up.

Quando um processo deseja entrar em sua região crítica, é executada a inst


rução down. Se o valor do semáforo for igual a 1, o valor é decrementado e o
processo pode entrar em sua região crítica. Caso o valor seja 0 e a operaçã
o down seja executada, o processo é impedido de entrar em sua região críti
ca, permanecendo em fila no estado de espera. O processo que está utilizan
do o recurso executa a instrução up ao sair da região crítica, incrementand
o o valor do semáforo e liberando o acesso ao recurso.

Caso existam processos aguardando na fila para serem executados, o siste


ma selecionará um e alterará o seu estado para pronto.
Pseudocódigo Semáforo. Fonte: elaborado pelo autor.
A implantação de semáforos na empresa prestadora de serviços hospitalar
es foi bem executada e eliminou os problemas de concorrência entre proce
ssos.

Referências

AMOROSO, D. O que são processos de um sistema operacional e por que é i


mportante saber. TecMundo, [s.l.], 4 dez. 2009. Disponível em: <https://ww
w.tecmundo.com.br/memoria/3197-o-que-sao-processos-de-um-sistema-o
peracional-e-por-que-e-importante-saber.htm>. Acesso em: 04 jul. 2021.
CANALTECH. O que é Thread? Disponível em: <https://canaltech.com.br/pr
odutos/o-que-e-thread/>. Acesso em: 04 jul. 2021.
DEITEL, H. M.; DEITEL, P. J.; CHOFFNES, D. R. Sistemas Operacionais. 3. ed.
São Paulo: Prentice Hall, 2005.
JONES, M. Simulação do Linux Scheduler. IBM, 12 abr. 2011. Disponível em:
<https://kernel.googlesource.com/pub/scm/linux/kernel/git/pjt/linsched/>
. Acesso em: 04 jul. 2021.
LANHELLAS, R. Trabalhando com Threads em Java. DEVMEDIA, [s.l.], 2013
. Disponível em: <https://www.devmedia.com.br/trabalhando-com-threads
-em-java/28780>. Acesso em: 04 jul. 2021.
MACHADO, F. B.; MAIA, L. P. Arquitetura de Sistemas Operacionais. 4. ed. R
io de Janeiro: LTC, 2007.
NOVATO, D. Sistemas Operacionais - O que é escalonamento de processos?
Oficina da Net, 22 maio 2014. Disponível em: <https://www.oficinadanet.co
m.br/post/12781-sistemas-operacionais-o-que-e-escalonamento-de-proces
sos>. Acesso em: 04 jul. 2021.
PATIL, S. S. Limitations and capabilities of Dijkstra's semaphore primitive
s for coordination among processes. USA: MIT, 1971.
PEREIRA, J. W. Semáforos, Kernel, Memória Compartilhada e Cia. Dicas-L,
[s.l.], 21 set. 2005. Disponível em: <http://www.dicas-l.com.br/arquivo/sema
foros_kernel_ memoria_compartilhada_e_cia.php>. Acesso em: 04 jul. 2021
.
ROCHA, R. B. Desenvolvendo aplicações concorrentes estáveis e escaláveis
. Revista Modelo Java Magazine, [s.l.], 2009. Disponível em: <http://summa.
com.br/wp-content/uploads/2009/06/programacaoconcorrente.pdf>. Acess
o em: 04 jul. 2021.
ROJAS, A. Semáforos. 8 out. 2014. Disponível em: <https://youtu.be/8YTV7c
MyOSU>. Acesso em: 04 jul. 2021.
SANCHES, R. O. Hierarquia de Processos no Unix e Windows. DEVMEDIA, [
s.l.], 2012. Disponível em: <https://www.devmedia.com.br/hierarquia-de-pr
ocessos-no-unix-e-windows/24739>. Acesso em: 04 jul. 2021.
TANENBAUM, A. S. Sistemas Operacionais Modernos, 2. ed. São Paulo: Pea
rson, 2003.
TANENBAUM, A. S.; WOODHULL, A. S. Sistemas operacionais: projeto e im
plementação. 3. ed. Porto Alegre, Bookman, 2008.
Questão 1
Incorreta
Questão com problema?

Com o advento na década de 60 dos sistemas multiprogramáveis, foi possível estruturar


aplicações para que executassem partes diferentes do código do programa de forma
concorrente. O sincronismo entre processos é importante para que essa concorrência
possa ser implementada e com isso muitos problemas podem ocorrer durante este
processo. Uma das soluções encontradas como mecanismo de sincronização foram os
semáforos proposto por E. W. Dijkstra em 1965.

Levando em consideração o contexto apresentado, assinale a alternativa correta em


relação aos semáforos:

Sua resposta
Incorreta
Podem ser classificados como binários (podem receber qualquer valor inteiro positivo,
além do 0) ou contadores (podem receber os valores 0 ou 1).

Solução esperada

Trata-se de uma forma simples de implementar a exclusão mútua e a sincronização


condicional entre processos.

Comentário

Um semáforo é uma variável inteira, não-negativa, que realiza duas operações: DOWN
(decrementa uma unidade ao valor do semáforo) e UP (UP incrementa uma unidade ao
valor do semáforo), tratando-se de uma forma simples de implementar a exclusão mútua
e a sincronização condicional entre processos. Podem ser classificados como binários
(podem receber os valores 0 ou 1) ou contadores (podem receber qualquer valor inteiro
positivo, além do 0). São implementados na maioria das linguagens de programação,
além de ser uma das formas de resolver o problema conhecido como
produtor/consumidor.
Questão 2
Correta
Questão com problema?

Thread é uma forma do processo dividir a si mesmo em duas ou mais tarefas que podem
ser executadas simultaneamente. Permite que o usuário do programa, utilize uma
funcionalidade do ambiente enquanto outros threads realizam outros cálculos e
operações. O benefício do uso de threads advém do fato do processo poder ser dividido
em mais de uma linha de tarefas, enquanto uma linha está esperando determinado
dispositivo de I/O ou qualquer outro recurso do sistema, o processo como um todo não
fica parado, pois quando um thread entra no estado de espera, outro thread aguarda na fila
de aptos para executar.

O conceito de thread foi introduzido principalmente para:

Sua resposta
Correta
reduzir o tempo gasto na criação, eliminação e troca de contexto de processos nas
aplicações concorrentes, e assim economizando recursos do sistema como um todo.

Comentário

Uma das razões para o uso de threads é que as aplicações da atualidade executam
muitas atividades ao mesmo tempo e quando são compostas por threads, podem ser
executadas em paralelo. Além disso, os threads são associados a um processo o que
permite torna-los mais leves ao compartilharem o mesmo espaço de endereçamento e
contexto de software. Os threads melhoram o desempenho do sistema já que enquanto
um aguarda por um dispositivo de I/O, outro pode realizar outra tarefa, porém, não
obrigatoriamente estas tarefas são realizadas pelos threads. Todos os threads são
atrelados a um ou mais processos, portanto são encerrados juntamente com os
processos.
Questão 3
Correta
Questão com problema?

Atualmente existem vários servidores de multimídia disponibilizados de forma gratuita


na internet e a preocupação com a performance, não se limita somente quanto a largura
de banda relacionado com a quantidade de acessos via link de dados. Imagine um único
servidor de vídeos com um único disco rígido armazenando todos os vídeos. Imagine
também que as pessoas acessam um site e após pesquisas as pessoas assistem o conteúdo
desejado. Provavelmente, alguns vídeos serão mais requisitados que outros, com isto
podemos tirar proveito desta situação. Mediante a coleta de dados estatísticos é possível
saber quais são vídeos são mais assistidos e assim, podemos adotar a abordagem de
armazenar os vídeos mais assistidos um próximo do outro, visando diminuir o movimento
do cabeçote de leitura sobre o disco rígido.

Assinale a alternativa que corresponde ao algoritmo utilizado na escolha de qual processo


deve ser executado.

Sua resposta
Correta
Algoritmo de Escalonamento.

Comentário

Correta.
Questão 4
Correta
Questão com problema?

Semáforos são mecanismos que permitem solucionar o problema de exclusão mútua. Um


semáforo pode ser visto como uma variável que pode receber o valor 0, indicando que
nenhum sinal de acordar foi salvo, ou um valor positivo se um ou mais sinais de acordar
estiverem pendentes. As operações de semáforos são atômicas ou seja, uma vez que uma
operação sobre semáforos comece, ela não pode ser interrompida no meio e nenhuma
outra operação sobre o semáforo deve ser começada.

Levando em consideração que operações sobre um semáforo são atômicas, assinale a


alternativa correta.

Sua resposta
Correta
Uma vez iniciada uma operação de semáforo, nenhum outro processo pode ter acesso ao
semáforo até que a operação tenha terminada ou sido bloqueada.
Comentário

Alternativa CORRETA: Uma vez iniciada uma operação de semáforo, nenhum


outro processo pode ter acesso ao semáforo até que a operação tenha terminada ou
sido bloqueada. A característica de atomicidade está relacionada ao fato de nenhum
processo poder acessar o semáforo até que a operação tenha sido terminada ou
bloqueada. Além disso, o semáforo pode assumir o valor 1 indicando que nenhum
recurso está em uso ou 0 quando o recurso está em uso. INCORRETA. O semáforo
pode assumir o valor 0 que indica que nenhum recurso está utilizando o processo e
valor igual a 1 que significa que o recurso está em uso. Pois o semáforo pode assumir
o valor 1 que indica que nenhum recurso está utilizando o processo e valor igual a 0 que
significa que o recurso está em uso. CORRETA. Uma vez iniciada uma operação de
semáforo, nenhum outro processo pode ter acesso ao semáforo até que a operação
tenha terminada ou sido bloqueada. INCORRETA. São atômicos porque
permitem receber qualquer valor inteiro positivo ou negativo. São atômicos porque
permitem receber somente valores inteiros positivos, além do
0. INCORRETA. Permitem o compartilhamento da variável podendo ser
acessada simultaneamente por qualquer processo. O objetivo do semáforo é evitar
justamente o acesso simultâneo ao recurso garantindo que o acesso seja exclusivo e não
haja inconsistências. INCORRETA. Quando um processo deseja entrar em sua
região crítica é executada a instrução UP. Se o valor do semáforo for igual a 0, o
valor é incrementado e o processo pode entrar em sua região crítica. Pois quando
um processo deseja entrar em sua região crítica é executada a instrução DOWN. Se o
valor do semáforo for igual a 1, o valor é decrementado e o processo pode entrar em sua
região crítica.
Questão 5
Correta
Questão com problema?

Os processos de segundo plano, ao executarem uma função específica, são chamados


de daemons. Após a criação, os processos podem ser finalizados nas seguintes condições:
Saída normal (voluntária), Saída por erro (voluntária), Erro fatal (involuntário) e
Cancelamento por um outro processo.

De acordo com as informações apresentadas na tabela a seguir, faça a associação dos tipos
de finalização de processos contidos na Coluna A com suas respectivas funções na Coluna
B.

COLUNA A COLUNA B

1. Saída normal (voluntária) I. acontece quando um processo que possui permissão emite uma ch
II. acontece quando ocorre um erro de programa, como por exemplo,
2. Saída por erro (voluntária)
por zero.

3. Erro fatal (involuntária) III. acontece quando o processo acaba de executar por ter acabado se

4. Cancelamento por um outro


IV. acontece quando o processo tenta acessar um arquivo que não ex
processo

Assinale a alternativa que apresenta a associação CORRETA entre as colunas.

Sua resposta
Correta
1 - III; 2 - IV; 3 - II; 4 - I.

Comentário

Alternativa CORRETA: 1 - III; 2 - IV; 3 - II; 4 - I. Os processos de segundo


plano, ao executarem uma função específica, são chamados de daemons. Após a
criação, os processos podem ser finalizados nas seguintes condições: Saída normal
(voluntária), Saída por erro (voluntária), Erro fatal (involuntário) e Cancelamento
por um outro processo. 1) Saída normal (voluntária): acontece quando o processo
acaba de executar por ter acabado seu trabalho.
2) Saída por erro (voluntária): acontece quando o processo tenta acessar um
arquivo que não existe e é emitida uma chamada de saída do sistema. Em alguns
casos, uma caixa de diálogo é aberta perguntando ao usuário se ele quer tentar
novamente.
3) Erro fatal (involuntário): acontece quando ocorre um erro de programa, como
por exemplo, a execução ilegal de uma instrução ou a divisão de um número por
zero. Neste caso, existe um processo com prioridade máxima que supervisiona os
demais processos e impede a continuação do processo em situação ilegal.
4) Cancelamento por um outro processo: acontece quando um processo que possui
permissão emite uma chamada ao sistema para cancelar outro processo.

Unidade 3 / Aula 1

Arquivos e sistemas de arquivos

Introdução da Unidade
Objetivos da Unidade

Ao longo desta Unidade, você irá:

• descrever os arquivos, suas características, nomeação e estrutura, e


distinguir os tipos de arquivos suportados pelos sistemas operaciona
is;
• apontar a hierarquia e as propriedades dos diretórios e como são real
izados o acesso e as operações;
• explicar a implementação de arquivos e diretórios, o gerenciamento
de espaço em disco e os requisitos da segurança e da confiabilidade
do sistema de arquivos.

Introdução da Unidade

Olá estudante, boas-vindas!


Nesta unidade, veremos como os arquivos são usados pelo usuário, suas ca
racterísticas, nomeação e estrutura, além de apresentarmos os tipos suport
ados pelos sistemas operacionais. Estudaremos também como é realizado
o acesso, os atributos dos arquivos e as operações realizadas nos mesmo, co
mo se dá a hierarquia de diretórios e como são realizados o acesso e as oper
ações. Por fim, abordaremos a implementação de arquivos e diretórios, o ge
renciamento de espaço em disco e como se dá a segurança e a confiabilida
de do sistema de arquivos.

Os arquivos armazenam informações em disco e, posteriormente, permite


m que essas informações sejam recuperadas. Um sistema de arquivos é um
conjunto organizado de arquivos e diretórios. No Windows e no Linux, exis
te um diretório raiz em que os diretórios e arquivos ficam vinculados.

Por exemplo, dentro do diretório “Computador” do Windows existe uma hie


rarquia de diretórios vinculados a ele, tais como os diretórios C:, D:, E:, dentr
e outros que possam existir.

No Linux, o diretório raiz ( / ) contém os seguintes diretórios: /etc (configur


ações do sistema), /home (arquivos pessoais), /boot (arquivos de inicializaç
ão do sistema), entre outros.

Nesse contexto, você é um engenheiro da computação que foi contratado p


ela empresa XYZ Ltda., que atua no ramo de seguros automotivos e residen
ciais, com filiais em todo o país, para organizar os dados e implementar o s
eu sistema de arquivos.

Para isso, é necessário que você tenha domínio de como os arquivos são or
ganizados logicamente, como o sistema operacional facilita a interação do
usuário com os arquivos, os tipos de arquivos permitidos, as operações que
podem ser realizadas com arquivos e as estruturas de diretórios. A empresa
XYZ Ltda. possui os sistemas operacionais Linux e Windows e movimenta
um grande volume de dados. Você deve fazer a escolha certa, de acordo co
m o uso dos sistemas da empresa, para que futuramente não ocorram lenti
dão ou outros problemas.

Para iniciar a operação, será necessário realizar as seguintes etapas:

1. nomear os arquivos, definir a sua estrutura, apresentar os tipos de ar


quivos suportados, o acesso aos arquivos deve ser de forma aleatória,
definir os atributos e operações a serem realizadas nos arquivos;
2. definir os diretórios para controle dos arquivos, especificar os nomes
de caminhos e as operações com os diretórios; e
3. implementar e garantir a segurança do sistema de arquivos.

Como poderão ser definidos os nomes e a estrutura de arquivos para a emp


resa XYZ Ltda.? Como poderão ser definidas a hierarquia de diretórios e as
operações a que cada usuário terá acesso? Como será implementada a segu
rança de arquivos?

Ao final, você deverá entregar um anteprojeto para a avaliação dos gestores


da empresa, apresentando todos os dados obtidos no trabalho realizado. Ap
ós o término desta unidade, você terá condições de entender a organização
de arquivos e diretórios nos sistemas operacionais, as operações que pode
m ser realizadas e como podem ser implementados os sistemas de arquivo
s e diretórios.

Vamos juntos conhecer mais sobre os arquivos e suas propriedades?

Introdução da aula
Qual é o foco da aula?

Nesta aula, vamos aprender sobre as características, os atributos e a estrut


ura dos arquivos, os tipos de arquivos suportados pelos sistemas operacion
ais e as operações realizadas em arquivos.
Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• descrever os requisitos essenciais para o armazenamento das infor


mações nos dispositivos;
• analisar os tipos de arquivos suportados pelos sistemas operacionais
: arquivos regulares, diretórios, arquivos especiais de caracteres e esp
eciais de blocos;
• explicar os sistemas de arquivos no Linux e no Windows.

Situação-problema

O sistema de arquivos é a maneira como as informações são armazenadas


nos dispositivos (disco rígido, pen drives, dentre outros) e os arquivos são a
maneira que o sistema operacional permite a leitura e gravação dos dados.
Um arquivo é composto por um nome e por atributos (tamanho do arquivo,
código de proteção de acesso, quem é o criador do arquivo, data de criação d
o arquivo) que são gerenciados pelo sistema operacional. Por exemplo, o ar
quivo TESTE.TXT, é um arquivo do tipo texto, com o nome TESTE e possui
a extensão de .TXT (arquivo de texto).

Relembrando nosso contexto, você é um engenheiro da computação que foi


contratado pela empresa XYZ Ltda. do ramo de seguros automotivos.

A empresa relata que tem perdido arquivos importantes, dado que a forma
de armazenamento dos mesmos é arcaica, sendo dispostos em caixas em u
m depósito. Além do risco de degradação por umidade ou outras intempéri
es, tem-se a dificuldade da busca de documentos específicos, fatores estes
que prejudicam as atividades da mesma.

Os arquivos de cadastros de clientes de todas as filiais da empresa XYZ Ltd


a. estão armazenados em caixas, num depósito na matriz, localizada em Sã
o Paulo. As caixas estão separadas por cidades em que a empresa possui fil
iais e por nomes, como pré-vendas, vendas e boletos.

Por exemplo: Belo Horizonte – Vendas, Rio de Janeiro – Boletos, Salvador –


Pré- vendas. Uma parte desse cadastro foi armazenada em CDs-ROM e outr
a parte em HD.

Desta forma, você foi encarregado de organizar e implementar um sistema


de arquivos. Portanto, surgem os seguintes questionamentos:

• quais levantamentos devem ser feitos antes de iniciar os trabalhos c


om os arquivos da empresa XYZ Ltda.?
• qual sistema de arquivos será implementado nos sistemas operacion
ais Linux e Windows?
• como serão definidos os nomes, atributos, o acesso e as operações do
s arquivos da empresa XYZ Ltda.?
• quais são operações a serem realizadas com os arquivos?
Para exemplificar os conceitos e justificar a implementação do sistema aos
executivos da empresa, os gestores solicitaram que utilize os documentos r
eferentes ao “Levantamento de Vendas Mensais”, que contêm informações
de todas as vendas realizadas no mês, por setor. Lembre-se que estas infor
mações o auxiliarão na elaboração do anteprojeto de um sistema de proteçã
o de arquivos.

Para que você consiga responder a esses e outros questionamentos sobre o


s arquivos, nesta aula vamos conhecer mais sobre eles e os conteúdos perti
nentes a este tema.

Bons estudos!

Requisitos essenciais para o


armazenamento da informação

As aplicações armazenam e recuperam informações durante seu processa


mento, e um processo deve ser capaz de ler e gravar grandes volumes de in
formações em disco rígido, pen drives, entre outros, além de dividir as infor
mações com outros processos.

Segundo Tanenbaum (2003), existem três requisitos essenciais para o arma


zenamento da informação a longo prazo:

• deve ser possível armazenar um grande volume de informações (a e


xemplo dos sistemas bancários, companhias aéreas, entre outros).
• a informação deve sobreviver ao término do processo que a usa (arm
azenamento em banco de dados).
• múltiplos processos têm que ser capazes de acessar a informação co
ncorrentemente (a informação deve ser independente de qualquer pr
ocesso).

O sistema operacional organiza e estrutura essas informações por meio de


arquivos.

De acordo com Tanenbaum (2003), um arquivo pode ser definido como um


mecanismo de abstração, oferecendo meios de armazenamento de dados e
permitindo que esses dados sejam lidos posteriormente.

Segundo Machado e Maia (2007), o responsável por gerenciar os arquivos n


o sistema operacional é o sistema de arquivos, que é a parte visível de um s
istema operacional, uma vez que os usuários manipulam constantemente
os arquivos. Assim, é importante que o sistema de arquivos possua uma int
erface amigável e de fácil implementação. Cada sistema operacional possu
i seu próprio sistema de arquivos.
Nomeação de arquivos

Quando um processo cria um arquivo, atribui-se um nome a tal arquivo, e q


uando o processo é encerrado, o arquivo continua existindo e outros proces
sos tem acesso a ele, buscando-o pelo seu nome (TANENBAUM, 2003). As r
egras de nomeação de arquivos variam de acordo com o sistema operacion
al.
Os sistemas operacionais atuais aceitam cadeias de caracteres com entre u
ma e oito letras como nomes válidos de arquivos. Caracteres especiais e no
mes com tamanhos de até 255 caracteres são aceitos em alguns sistemas d
e arquivos, por exemplo o Unix.

O sistema de arquivos do Unix faz distinção entre letras maiúsculas e minú


sculas (case sensitive), já o sistema de arquivos do Windows não faz esta di
stinção. A identificação do arquivo é composta por duas partes, separadas p
or um ponto, sendo que a parte após o ponto é denominada extensão do arq
uivo e identifica o conteúdo do arquivo (MACHADO; MAIA, 2007).

O quadro a seguir apresenta algumas extensões de arquivos.

Algumas extensões de arquivos. Fonte: adaptado de Tanenbaum (2003, p. 59).


Estrutura dos arquivos

Segundo Tanenbaum (2003), os arquivos podem ser estruturados de várias


formas, sendo que as três mais comuns são: sequência estruturada de bytes
, sequência de registro de comprimento fixo e árvore de registros. A figura a
presenta a estrutura dos arquivos.
Estruturas de arquivos. Fonte: Tanenbaum (2003, p. 288).

• Sequência estruturada de bytes: na estrutura da Figura (a), o sistema


operacional não sabe qual é o conteúdo do arquivo, e tudo o que ele v
ê são bytes. A sequência estruturada de bytes oferece flexibilidade, u
ma vez que os programas de usuário podem dar o nome que quisere
m aos seus arquivos e inserir o conteúdo que desejarem.
• Sequência de registro de comprimento fixo: na estrutura da figura “E
struturas de arquivos” (b), um arquivo é uma sequência de registros d
e tamanho fixo, cada um com uma estrutura interna. O objetivo é que
a operação de leitura retorne um registro e a operação de escrita sobr
eponha ou anexe um registro.
• Árvore de registros: na estrutura da figura “Estruturas de arquivos” (
c), um arquivo é formado por uma árvore de registros, não necessaria
mente do mesmo tamanho, cada um contendo um campo-chave em
uma posição fixa do registro. A árvore é ordenada pelo campo-chave,
para que se busque mais rapidamente por uma chave específica. Nov
os registros podem ser inseridos no arquivo, e é o sistema operaciona
l que decide onde colocá-los. Esse tipo de arquivo é amplamente apli
cado em computadores de grande porte, usados ainda para alguns pr
ocessamentos de dados comerciais.
Arquivos: tipos, acesso, atributos e
operações

Tipos de arquivos

Diferentes tipos de arquivos são suportados pelos sistemas operacionais, ta


is como arquivos regulares, diretórios, arquivos especiais de caracteres e es
peciais de blocos.

Tanembaum (2003) afirma que os arquivos regulares contêm informações


do usuário, e são classificados em:

• arquivos ASCII: são formados por linhas de texto. A grande vantage


m dos arquivos ASCII é que eles podem ser mostrados e impressos co
mo são e podem ser editados com qualquer editor de textos, além de f
acilitar a conexão entre a saída de um programa e a entrada de um o
utro.
• arquivos binários: possuem alguma estrutura interna, conhecida pel
os programas que os usam. Os sistemas operacionais devem reconhe
cer pelo menos um tipo de arquivo: seu próprio arquivo executável.
Os arquivos de diretórios mantêm a estrutura dos sistemas de arquivos. Já
os arquivos especiais de caracteres são relacionados à entrada/saída e usa
dos para modelar dispositivos de E/S, como terminais, impressoras e rede.
Os arquivos especiais de blocos são usados para modelar discos.
Acesso aos arquivos

Os arquivos podem recuperar informações de diferentes formas, de acordo


com sua organização. Segundo Machado e Maia (2007), os primeiros sistem
as operacionais armazenavam os arquivos em fitas magnéticas e seu acess
o era realizado de forma sequencial. No acesso sequencial, os arquivos são l
idos sequencialmente, a partir do início do arquivo, sempre na ordem em q
ue os registros foram gravados.

A figura “Acesso sequencial” apresenta um modelo de acesso sequencial. A


leitura do arquivo era realizada avançando o ponteiro do arquivo para o pró
ximo registro, e a gravação era realizada sempre no final do arquivo.

Acesso sequencial. Fonte: Galvin et al (2013, p. 431).


Com a criação dos discos magnéticos, surgiu o acesso direto, cuja leitura/gr
avação é feita na sua posição por meio do número do registro. Não existem
restrições em relação à ordem em que os registros são lidos ou gravados, se
ndo sempre necessário especificar o número do registro.
O acesso direto somente é possível quando os registros do arquivo são de ta
manho fixo, sendo que o mesmo pode ser combinado com o acesso sequenc
ial, sendo possível acessar qualquer registro de um arquivo e, assim, acessa
r os demais.

Um método mais sofisticado é o acesso indexado ou por chave. O arquivo d


eve possuir uma área de índice em que existam ponteiros para os diversos
registros. A aplicação que desejar acessar o registro deverá especificar uma
chave para que o sistema pesquise, na área de índice, o ponteiro correspond
ente, acessando o arquivo diretamente.
Atributos dos arquivos

Segundo Machado e Maia (2007), atributos são informações de controle de


cada arquivo, que variam de acordo com o sistema de arquivos, mas o tama
nho do arquivo, a proteção, a identificação do criador e a data de criação est
ão presentes em quase todos os sistemas.

Alguns atributos especificados na criação de arquivos não podem ser modi


ficados, como a organização e data/hora da criação. Outros atributos podem
ser alterados pelo sistema operacional, como o tamanho e a data/hora do úl
timo backup realizado. Existem, ainda, atributos que podem ser modificado
s pelo usuário, como proteção do arquivo, tamanho máximo e senha de ace
sso.

Observe no quadro alguns atributos dos sistemas de arquivos:


Atributos e caraterísticas de arquivos. Fonte: adaptado de Tanenbaum (2003, p. 291).
🔁 Assimile

Vimos nesta aula que os atributos são informações de controle de cada arq
uivo e variam de acordo com o sistema de arquivos. Além dos atributos apr
esentados nesta aula, temos os seguintes atributos: "somente leitura", que i
ndica que o arquivo não deve ser modificado ou deletado, e o atributo “ocult
o”, usado quando um arquivo não deve ser visto por todos.

______
➕ Pesquise mais

Para garantir a segurança dos seus arquivos na nuvem, é necessário seguir


alguns passos importantes: criar uma senha forte, não utilizar redes WiFi p
úblicas para acesso aos arquivos, reforçar a autenticação das contas, mante
r seus programas e aplicativos atualizados e não permitir o backup automá
tico dos seus dados.
Para saber mais sobre esse assunto, consulte o artigo Saiba como proteger
seus arquivos salvos na nuvem, do autor Rafael Waltrick.

______
Operações com arquivos
Segundo Tanenbaum (2003), sistemas de arquivos diferentes oferecem ope
rações distintas para armazenar e recuperar informações. As principais op
erações com arquivos são:

• create: cria um arquivo sem dados e define alguns atributos.


• delete: deleta um arquivo quando ele não é mais necessário, liberand
o espaço de memória.
• open: um processo deve abrir um arquivo antes de usá-lo, permitind
o que o sistema busque e coloque na memória principal os atributos
e a lista de endereços do disco, agilizando o acesso as informações.
• close: fecha um arquivo e libera espaço na memória.
• read: leitura dos dados do arquivo.
• write: grava os dados no arquivo.

Sistemas de Arquivos – Linux e


Windows

Linux
Segundo Machado e Maia (2007), o sistema de arquivos no Linux é baseado
numa estrutura de diretórios hierárquica, sendo o diretório raiz (root) repre
sentado por uma (/). Os sistemas de arquivos suportados pelas distribuiçõe
s do Linux são (SILVA, 2018):

• EXT2: Second Extended File System ou EXT2, estava presente nas pr


imeiras versões do Linux, mas era pouco eficiente.
• EXT3: o sistema EXT3 é uma versão do EXT2, e se tornou popular, es
tável e robusto por possuir um suporte eficiente, conhecido como jou
rnaling. Journaling é um recurso que gerencia a manipulação de arq
uivos. Journals (ou logs) registram nos discos as alterações realizada
s nos arquivos antes de serem gravadas, e, por meio desse log, caso a
conteça algum erro, como queda de energia ou o travamento inesper
ado, as operações podem ser recuperadas.
• EXT4: é a versão mais recente do EXT, apresentando um bom desem
penho com a manipulação de arquivos grandes, porém ainda instáve
l.
• ReiserFS: foi criado recentemente, possui suporte journaling e uma b
oa performance, além de ser suportado pelas versões do Linux.

Os sistemas EXT3 e ReiserFS são os mais utilizados pelas distribuições do


Linux. Além destes sistemas existem outros suportados pelo Linux, como S
WAP, XFS, entre outros.

______
📝 Exemplificando

O Linux oferece suporte a vários sistemas de arquivos antigos, como MINIX


, MS-DOS e EXT2. Também suporta os novos sistemas de arquivos com regi
stro de mudança, como EXT3, JFS e ReiserFS, além do suporte a sistemas d
e arquivos criptográficos, como CFS, e a sistemas de arquivos virtuais, com
o /proc.

______
Windows

Os sistemas de arquivos do Windows são o FAT16, FAT32 e NTFS. O nome


FAT significa File Alocation Table.

Segundo Tanenbaum (2003), o FAT16, usado no MS-DOS, utiliza endereços


de memória de 16 bits e não suporta discos maiores que 2GB, gerando despe
rdício de espaço. Já o FAT32 utiliza endereços de memória de 32 bits, mas
não reconhece arquivos maiores que 4GB.

O NTFS (New Technology File System) é o atual sistema de arquivos do Wi


ndows. O NTFS é seguro, possui suporte a discos maiores, além de impleme
ntar permissões de acessos aos arquivos. A partir do Windows 8, foi criado
o sistema de arquivos ReFS (Resilient File System), com o objetivo de verifi
car e corrigir automaticamente os dados e manipular um grande volume d
e dados.

______
💭 Reflita

Qual sistema operacional é melhor ao trabalhar com arquivos? O Windows,


com o padrão NTFS, ou o Linux, com o padrão Ext4?

Conclusão
Agora que você já conheceu como os arquivos são usados pelo usuário, sua
s características, como se dá a nomeação e a estrutura de arquivos, os tipos
de arquivos suportados pelos sistemas operacionais, como é realizado o ace
sso aos arquivos, os atributos dos arquivos e as operações realizadas em ar
quivos, vamos voltar ao nosso contexto.

Na empresa XYZ Ltda., os arquivos de cadastros de clientes de todas as filia


is estão armazenados em caixas, num depósito na matriz, localizada em Sã
o Paulo. Uma parte deste cadastro foi armazenada em CDs-ROM e outra par
te em HD.

• Quais levantamentos devem ser feitos antes de iniciar os trabalhos c


om os arquivos da empresa XYZ Ltda.?
• Qual sistema de arquivos será implementado nos sistemas operacio
nais Linux e Windows?
• Como serão definidos os nomes, os atributos, o acesso e as operações
dos arquivos da empresa XYZ Ltda.?

Antes de definir o sistema de arquivos a ser usado, é necessário fazer um le


vantamento dos documentos que estão armazenados no depósito, verifican
do a estrutura destes arquivos. Como os arquivos ficam guardados em caix
as, é necessário antes migrar estes dados para um banco de dados que irão
gerenciar melhor estas informações. Após isso, é necessário definir o siste
ma de arquivo a ser utilizado. Na empresa XYZ Ltda. são utilizados os siste
mas operacionais Linux e Windows.

Como sistema de arquivos do Windows, podemos usar o padrão adotado at


ualmente, o NTFS, que é seguro e manipula um grande volume de dados. P
ara o Linux, muitas distribuições, ao serem instaladas, já trazem o sistema
de arquivos instalado.

Na maioria das distribuições, o sistema que vem instalado é o EXT4, que nã


o é a versão atual, é seguro, porém instável, e atenderá bem às necessidade
s da empresa XYZ Ltda. Como a empresa trabalha por filiais, podemos suge
rir que os nomes dos arquivos comecem identificando-as, conforme aprese
ntado no quadro.

Por exemplo, a empresa possui o documento “Levantamento de Vendas Me


nsais”, que contém informações de todas as vendas realizadas no mês por s
etor. Esse arquivo pode ser nomeado iniciando pela filial, o nome do setor, o
tipo de vendas (diário, semanal, mensal, anual) e o mês/ano do arquivo.

É necessário salientar que o Linux faz diferenciação de letras maiúsculas e


minúsculas, e, durante a definição dos nomes, essa questão deve ser levada
em consideração.
Sugestão de nomes de arquivos. Fonte: elaborado pela autora.
Quanto aos atributos, será necessário definir:

• quem terá acesso a sistema - por exemplo, o setor de Pré- vendas te


m acesso somente aos arquivos do seu setor. Já o setor de vendas ter
á acesso aos seus arquivos e aos arquivos do setor de Pré-vendas.
• inserção de senha para acesso a todos os arquivos.
• identificação de quem criou o arquivo.
• tamanho do arquivo.
• data da criação do arquivo.
• data da modificação do arquivo.

O acesso aos arquivos pode ser do tipo indexado, para acessar de forma rápi
da o registro desejado no arquivo. É necessário definir alguns parâmetros p
ara que as operações sejam realizadas.
Sugestão de operações a serem realizadas. Fonte: elaborado pela autora.

Unidade 3 / Aula 2

Sistemas de diretórios

Introdução da aula

Qual é o foco da aula?


Nesta aula, vamos estudar sobre as características e as propriedades dos di
retórios, como funcionam os sistemas de diretório simples e hierárquico, co
mo se dá a nomeação dos caminhos de diretórios e sobre as operações reali
zadas em diretórios.
Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• descrever as estruturas de diretórios: simples e hierárquica;


• explicar as principais operações de manipulação de diretórios;
• distinguir o sistema de diretórios do Linux e do Windows.

Situação-problema

O sistema de arquivos contém diretórios e pastas que gerenciam os arquivo


s. Normalmente, os atuais sistemas de arquivos permitem que os usuários
criem vários diretórios e subdiretórios, apresentando uma estrutura organi
zada dos arquivos.

Por exemplo, o diretório “/” do Linux representa a raiz do sistema de arquiv


os e os demais diretórios estão abaixo dele, como arquivos de sistemas, arq
uivos de usuário, arquivos de aplicações, entre outros. No Windows, o diret
ório C:/ representa a raiz do sistema.

Relembrando nosso contexto, a empresa XYZ Ltda. do ramo de seguros aut


omotivos e residenciais, com filiais em todo o país, deseja organizar os dad
os e implementar o seu sistema de arquivos e, para isso, lhe contratou, já qu
e você é um engenheiro da computação. Na empresa XYZ Ltda., os arquivos
dos setores de pré-vendas e vendas são acessados durante todo o dia pelos
funcionários dessas áreas para traçarem planos de ação das equipes de ven
das.

Porém, não existem diretórios específicos definidos para cada setor armaze
nar seus arquivos e diretórios do próprio sistema operacional. Desta forma,
todos os usuários da empresa podem acessá-los, o que compromete a segur
ança dos dados, uma vez que, caso algum usuário acesse um diretório inde
vidamente, ele poderá altera-lo e/ou exclui-lo.

Na empresa XYZ Ltda., já está definido o sistema de arquivos a ser usado ta


nto no Linux (EXT4) como no Windows (NTFS), além dos nomes, atributos,
o acesso e as operações a serem realizadas nos arquivos.

• Como você fará a organização de diretórios?


• Como serão definidas as permissões de diretórios para os setores de
vendas e pré-vendas?

Todas essas questões darão base para você elaborar o anteprojeto de um sis
tema de proteção de arquivos. Para que você consiga responder a esses e ou
tros questionamentos sobre os diretórios, nesta aula vamos conhecer mais
sobre eles e os conteúdos pertinentes a este tema. Vamos lá?

Bons estudos!

Estrutura de diretórios
Segundo Machado e Maia (2007), a estrutura de diretórios é a organização l
ógica dos arquivos, em disco. O diretório é uma estrutura de dados que poss
uem entradas associadas aos arquivos, sendo que cada entrada possui os at
ributos de localização do arquivo, nome, dono, organização, dentre outros.

Em alguns sistemas operacionais, como o Linux, todos os diretórios e pasta


s são considerados arquivos.
Diretórios Simples

Uma forma simples de sistema de diretório é manter um diretório contend


o todos os arquivos, chamado de diretório raiz (TANENBAUM, 2003). Esse f
ormato era utilizado nos primeiros computadores pessoais por haver apena
s um usuário e, como vantagem, apresenta a simplicidade e a capacidade d
e encontrar rapidamente os arquivos.

A figura “Sistema de Diretórios Simples” apresenta um exemplo de sistema


de diretórios com quatro arquivos de três usuários diferentes, A, B e C.

Sistema de Diretórios Simples. Fonte: Tanenbaum (2003, p. 296).


Sistemas de Diretório Hierárquico

Segundo Tanenbaum (2003), o problema existente em um sistema com vári


os usuários é que pode ocorrer de diferentes usuários nomearem seus arqui
vos com os mesmos nomes. Por isso, esse esquema não é mais utilizado e
m sistemas multiusuário.

Para evitar conflitos causados por diferentes usuários escolhendo o mesmo


nome, é necessário dar um diretório privado para cada um. Assim, os nome
s escolhidos por um usuário não interfeririam nos nomes escolhidos por ou
tro, podendo existir arquivos com o mesmo nome em dois ou mais diretório
s. Esse esquema é chamado de sistema de diretórios em dois níveis.

A figura “Sistema de Diretórios em dois níveis” apresenta um sistema de di


retórios em dois níveis, em que cada usuário possui seu diretório. Assim, o
sistema, conhecendo o usuário, sabe em qual diretório buscar o arquivo.

Sistema de Diretórios em dois níveis. Fonte: Tanenbaum (2003, p. 296).


O esquema de diretórios em dois níveis elimina o conflito de nomes entre u
suários, porém, não é adequado para usuários com um grande número de a
rquivos. Por exemplo, um programador de sistemas pode ter:

• um conjunto de arquivos de códigos, que juntos formam um sistema.


• outro conjunto de arquivos referentes a projetos já entregues.
• outro conjunto de arquivos tratando de livros específicos da área, e a
ssim por diante.
Dessa forma, faz-se necessário agrupar esses arquivos segundo as necessid
ades do usuário. Assim, é necessária uma hierarquia geral ou árvore de dire
tórios (folder tree) para permitir que os usuários tenham tantos diretórios q
uanto precisarem para agrupar os seus arquivos.

A figura “Sistema de Diretórios Hierárquicos” apresenta a estrutura de diret


órios hierárquicos. Nela, os diretórios A, B e C pertencem a usuários diferen
tes, e dois desses usuários criaram subdiretórios para organizar os seus arq
uivos.

Quase todos os sistemas de arquivos modernos são organizados com essa e


strutura, por proporcionar uma melhor organização dos trabalhos.

Sistema de Diretórios Hierárquicos. Fonte: Tanenbaum (2003, p. 297).


Nomes de Caminhos dos Diretórios

Segundo Tanenbaum (2003), quando o sistema de arquivos é organizado po


r meio de uma árvore de diretórios, é necessário definir uma forma de espe
cificar o nome dos arquivos. Para isso, são usados dois métodos: nome de c
aminho absoluto e nome de caminho relativo.
Nome de caminho absoluto
O método nome de caminho absoluto é formado pelo caminho entre o diret
ório-raiz e o arquivo. Os nomes de caminhos absolutos sempre iniciam no
diretório-raiz e são únicos. Como exemplo, o caminho /usuário/meus_docu
mentos/atividades.txt significa que dentro do diretório-raiz há um diretório
chamado “usuário”, dentro do diretório “usuário” existe um subdiretório cha
mado “meus_documentos” e dentro do subdiretório “meus_ documentos” e
xiste um arquivo chamado “atividades.txt”.

No Windows, os componentes do caminho são separados por \. No Unix, sã


o separados por /.
Nome de caminho relativo

O método nome de caminho relativo é usado em conjunto com o conceito d


e diretório atual ou diretório de trabalho. Desta forma, é possível que o usuá
rio designe um diretório como o diretório atual de trabalho, em que todos os
nomes de caminhos não comecem no diretório-raiz.

Como exemplo, se o diretório atual for /usuário/meus_ documentos/, o arqu


ivo cujo caminho absoluto for /usuário/ meus_documentos/atividades pod
e ser referenciado apenas como atividades.

______
📝 Exemplificando

Analise o endereço do seguinte projeto de um sistema hospitalar alocado n


um servidor Linux: /home/user/projetos/sistema_hospitalar.

O caminho absoluto do endereço é /home/user/projetos/sistema_ hospitala


r e o caminho relativo do endereço é sistema_hospitalar, se estivermos no
diretório /home/user/projetos.

______
Ainda, segundo Tanenbaum (2003), cada processo possui seu próprio diretó
rio de trabalho, e caso ocorra alguma alteração, nenhum outro processo é af
etado e nenhum vestígio da mudança é deixado no sistema de arquivos.

Procedimentos de biblioteca (conjunto de subprogramas que auxiliam no d


esenvolvimento do software) raramente alteram o diretório de trabalho, poi
s se alterarem o diretório de trabalho e não retornarem aonde estavam qua
ndo finalizarem, o resto do programa poderá não funcionar.

Os sistemas operacionais que suportam um sistema de diretório hierárquic


o possuem duas entradas especiais em cada diretório: “.” (ponto), que se refe
re ao diretório atual, e “..” (ponto-ponto), referindo-se a seu pai.

Por exemplo, se um usuário estiver trabalhando no diretório / usuário/meu


s_documentos/ e utilizar o ponto-ponto, ele estará subindo na árvore de dir
etórios, ou seja, referenciando o diretório/usuário. Caso ele utilize o ponto, e
stará referenciando o próprio diretório (/usuário/meus_documentos/).

Operações com Diretórios

As chamadas aos sistemas que gerenciam as operações com diretórios vari


am de sistema para sistema. Segundo Tanenbaum (2003), as principais ope
rações de manipulação de diretórios são:
• create: cria um diretório. Um diretório é criado sem conteúdo, ou seja
, vazio.
• delete: apaga um diretório. Somente um diretório vazio pode ser apag
ado.
• opendir: lê um diretório. Antes de ser lido, um diretório precisa ser ab
erto.
• closedir: após a leitura do diretório, o mesmo precisa ser fechado, lib
erando, assim, espaço em disco.
• rename: permite a troca do nome de um diretório.

______
📝 Exemplificando

Seguem as principais operações realizadas nos diretórios dos sistemas ope


racionais Linux e Windows.
Linux

• Criar: mkdir EXEMPLO (cria o diretório EXEMPLO no diretório atual


do usuário).
• Deletar: rmdir EXEMPLO (apaga o diretório EXEMPLO se ele estiver v
azio).
• Abrir: cd EXEMPLO (abre o diretório EXEMPLO a partir do diretório a
tual do usuário).
• Fechar: closedir EXEMPLO (fecha o diretório EXEMPLO).
• Renomear: mv EXEMPLO TESTE (renomeia o diretório EXEMPLO pa
ra TESTE).

Windows

• Criar: clique com o botão direito do mouse no local que deseja criar u
m novo diretório e, em seguida, na opção “Novo -> Pasta”.
• Deletar: selecione o diretório que deseja excluir e clique com o botão
direito do mouse na opção “Excluir”.
• Abrir: basta dar um duplo clique no diretório.
• Fechar: clique no X do diretório para fechá-lo.
• Renomear: selecione o diretório que deseja renomear e clique com o
botão direito do mouse na opção “Renomear”.

_____
🔁 Assimile

Vimos nesta aula as principais operações realizadas com diretórios nos sis
temas operacionais. Além dessas operações, podemos citar como exemplo
a operação Link, que permite a um arquivo aparecer em mais de um diretór
io.

Essa chamada ao sistema especifica um arquivo existente e um nome de ar


quivo, criando uma ligação do arquivo existente com o nome especificado p
elo caminho (TANENBAUM, 2003).

Sistemas de diretórios: Linux e


Windows

Sistemas de Diretórios do Linux


No Linux, o sistema de diretórios é baseado numa estrutura hierárquica e o
s diretórios são implementados por meio de arquivos. As partições e discos
fazem parte do diretório-raiz ou “/”. Dentro do diretório-raiz existem diretór
ios que possuem funções distintas.

A Figura a seguir apresenta a estrutura de diretórios do Linux.

Sistema de Diretórios do Linux. Fonte: elaborada pela autora.


A seguir, apresentamos as definições de cada diretório que estão abaixo do
diretório-raiz (JUNIOR, 2018):

• /bin: contém aplicativos e utilitários do sistema.


• /boot: contém todos os arquivos necessários para a inicialização do s
istema e o gerenciador de boot.
• /etc: contém todos os arquivos de configuração do sistema.
• /dev: contém todos os dispositivos do sistema, tais como: modem, HD
, floppy disk, CD-ROM, entre outros.
• /home: contém diretórios e arquivos de trabalho dos usuários comun
s do sistema.
• /lib: contém as bibliotecas compartilhadas e módulos do kernel.
• /root: contém diretórios e arquivos de trabalho do superusuário (root)
.
• /usr: contém os programas de usuários, sistemas de janelas, jogos, en
tre outros.
• /tmp: contém os arquivos temporários utilizados por algumas aplica
ções.
• /var: contém os arquivos de dados variáveis, como log do sistema e d
iretórios de spool.
• /mnt: diretório reservado para montagem de dispositivos e sistemas
de arquivos em partições e discos locais e de rede.
• /opt: diretório reservado para instalação de aplicações de terceiros, c
omo OpenOffice, softwares pagos, entre outros.
• /sbin: contém ferramentas de configuração e manutenção do sistem
a.

Segundo Machado e Maia (2007), a localização de um arquivo dentro da est


rutura de diretórios é indicada por um pathname, que pode ser dos tipos ab
soluto ou relativo. Um pathname absoluto indica a localização do arquivo p
or meio do caminho completo do diretório. Já um relativo é representado p
elo nome parcial do diretório.

Ainda segundo os mesmos autores, um sistema de arquivos proporciona u


m mecanismo de compartilhamento chamado link (ligação). Um link é a e
ntrada de um diretório que referencia um arquivo em outro diretório. Um ar
quivo pode ter vários links. Com a utilização de links existe uma redução d
e espaço em disco, a possibilidade de compartilhamento entre diversos usu
ários, entre outros.

Todo arquivo ou diretório do Linux tem um dono (user) e pertence a um gru


po (group). Para cada categoria de usuário existem três tipos de acesso: leit
ura (r), gravação (w) e execução (x).

O quadro a seguir apresenta as permissões (privilégios) que os arquivos e di


retórios possuem, de acordo com o tipo de acesso.
Permissões de arquivos e diretórios. Fonte: elaborado pela autora.
Existe ainda a definição de quem pode acessar os diretórios: somente o don
o, todos os usuários, somente usuários do mesmo grupo ou qualquer conjun
to de usuários.

______
📝 Exemplificando

Comando – rwxr. Fonte: elaborada pela autora.


Sistemas de Diretórios do Windows
Segundo Tanenbaum (2003), o sistema de arquivos NTFS é baseando numa
estrutura hierárquica. No Windows, o sistema de arquivos está concentrad
o em pastas ou diretórios C:, D:, entre outras.

A figura “Sistema de Diretórios do Windows” apresenta a estrutura de diret


órios do Windows.

O diretório C: contém as pastas “Usuários”, “Arquivos de Programas” e “Win


dows”.

A pasta “Usuários” contém as principais pastas utilizadas pelos usuários.

A pasta “Arquivos de Programas” é onde estão concentrados todos os progr


amas instalados no computador.

A pasta “Windows” é a mais importante, por nela constar toda a estrutura d


o sistema operacional.

Sistema de Diretórios do Windows. Fonte: elaborada pela autora.


No Windows, o separador de nomes é representado por “\” (contra barra) e t
ambém existe o conceito de caminho absoluto e relativo, como no Linux. Al
ém disso, é possível inserir permissões de acesso para cada usuário (admin
istrador do sistema e usuário comum). Para isso, basta configurar as permi
ssões na pasta desejada.

A figura “Sistema de Diretórios do Windows” apresenta a pasta Drivers e as


permissões que o usuário SISTEMA possui.
Observe que o usuário SISTEMA possui as permissões de controle total, mo
dificar, ler e executar, listar conteúdo de pastas, leitura, gravar e permissõ
es especiais.

Sistema de Diretórios do Windows. Fonte: captura de tela do Windows, elaborada pela


autora.
💭 Reflita

Na sua opinião, a hierarquia de diretórios do Linux é mais complexa do que


a do Windows? Por quê?

Conclusão
Agora que você já conheceu como os diretórios são usados pelo usuário, su
as propriedades e as operações que podem ser realizadas, vamos voltar ao
nosso contexto.

Na empresa XYZ Ltda., os arquivos dos setores de pré-vendas e vendas são


acessados durante todo o dia, porém, não existem diretórios específicos def
inidos para cada setor armazenar seus arquivos e diretórios do próprio sist
ema operacional. Isso pode comprometer a segurança, pois caso um usuári
o acesse um diretório indevidamente, poderá altera-lo e/ou excluí-lo.

O sistema de arquivos já foi definido tanto no Linux (EXT4) como no Windo


ws (NTFS), além dos nomes, os atributos, o acesso e as operações a serem r
ealizadas nos arquivos.

• Como você fará a organização de diretórios?


• Como seriam definidas as permissões de diretórios para os setores d
e vendas e pré-vendas?

Um diretório fornece acesso aos arquivos e a outros diretórios vinculados a


ele. A questão da falta de estrutura dos diretórios da empresa XYZ Ltda. pod
e ser em função da má implementação de diretórios realizada anteriormen
te. Assim, é necessário analisar a estrutura atual e reorganizar os diretórios
e arquivos, implementando e relacionando cada entrada do diretório aos ar
quivos que estão armazenados nele.

Um fator importantíssimo é que os diretórios do próprio sistema operacion


al estão acessíveis a todos os usuários. Isso não pode acontecer. Logo, os dir
etórios devem ser reestruturados para que somente os administradores do
sistema tenham acesso a eles.

A empresa XYZ Ltda. possui os sistemas operacionais Linux e Windows, e


a organização de diretórios para ambos pode ser representada pelo exempl
o da figura “Sistema de Diretórios do Windows”. A organização de diretório
s pode ser definida pelo administrador do sistema ou pelo próprio usuário.

Sistema de Diretórios do Windows. Fonte: elaborada pela autora.


Na figura acima é apresentada uma organização estruturada de diretórios.
Dentro do diretório-raiz são encontrados os diretórios Vendas, Pré-vendas,
Administrativo, Faturamento, Gerência e Diretório Temporário. Em cada di
retório há subdiretórios criados pelos usuários.

Será necessário definir as permissões de acesso dos setores de vendas e pr


é-vendas para que cada setor consiga operar seus diretórios de forma eficie
nte.
O setor de pré-venda terá acesso para gravar, ler e executar arquivos, ou sej
a, terá permissão total ao seu diretório de arquivos, porém, será permitido a
penas ler os arquivos do diretório de vendas. Já o setor de vendas, terá aces
so total ao seu diretório, podendo ler e executar dados do setor de pré- vend
as.

Uma vez definidas as permissões de acesso de cada setor, as operações per


mitidas para cada setor são:

Definição das permissões de diretórios para o setor de vendas e pré-vendas. Fonte: elabo
rado pela autora.

Unidade 3 / Aula 3

Implementação e segurança de sistemas de arquivos

Introdução da aula
Qual é o foco da aula?

Nesta aula, vamos aprender sobre como é realizada a implementação do Si


stema de Arquivos e os métodos de implementação de Arquivos e Diretório
s, como é feito o gerenciamento de espaço em disco e a importância da seg
urança e confiabilidade do Sistema de Arquivos.
Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• descrever os principais critérios para implementação de arquivos uti


lizados nos sistemas operacionais;
• explicar os métodos para controle do armazenamento dos arquivos e
m disco;
• analisar os processos para segurança e confiabilidade do sistema op
eracional, para manter a integridade dos arquivos.

Situação-problema

Existem vários métodos de implementação do sistema de arquivos e diretó


rios, e nesta aula conheceremos alguns deles. Por exemplo, o Netflix possui
um sistema de arquivos onde são armazenados os filmes e séries que são e
xibidos por streaming ao cliente. Além disso, possui um algoritmo de reco
mendação que determina as sugestões de filmes e séries para cada usuário.

Relembrando nosso contexto, você foi contratado como engenheiro da com


putação pela empresa XYZ Ltda., que atua no ramo de seguros automotivos
e residenciais, com filiais em todo o país e que deseja organizar os dados e i
mplementar um sistema de arquivos.

A empresa XYZ Ltda. é segmentada nas seguintes áreas: pré- vendas, respo
nsável por captar os clientes que possuem um desejo de obter um seguro; v
endas, área que efetiva o seguro do cliente; faturamento, que é responsável
pelo faturamento de todas as filiais; e administrativo, responsável pela emi
ssão e envio dos boletos aos clientes e pela comissão de cada funcionário d
e vendas.

Ela precisa que os dados contidos em seus arquivos sejam protegidos para
que somente as pessoas ou setores autorizados tenham acesso a eles. Dess
a forma, surgem os seguintes questionamentos:

• qual método você utilizá na implementação de arquivos na empresa


XYZ Ltda.?
• como você fará o gerenciamento de espaço em disco destes arquivos
?
• quais são os mecanismos de proteção que podem ser implementados
na empresa XYZ Ltda., considerando os sistemas operacionais Linux
e Windows?

Para que consiga responder a esses e outros questionamentos sobre a impl


antação e segurança do sistema de arquivos, vamos conhecer mais sobre el
es, e você conseguirá elaborar um anteprojeto que deverá ser entregue para
a avaliação dos gestores da empresa, apresentando todos os dados obtidos
no trabalho realizado.
Bons estudos!

Métodos de implementação de
arquivos e diretórios

Para cada sistema operacional existem diferentes métodos de implementa


ção de arquivos e diretórios, sendo importante levar em consideração como
será realizado o controle do armazenamento dos arquivos em disco.
Implementação do Sistema de Arquivos

Segundo Machado e Maia (2007), o sistema operacional precisa controlar q


uais áreas ou blocos no disco estão livres quando um arquivo é criado. A se
guir serão apresentados os principais métodos de implementação de arqui
vos utilizados nos sistemas operacionais.
Alocação Contígua: segundo Tanenbaum (2003), a implementação de arqui
vos por alocação contígua (figura “Alocação Contígua”) é o método mais si
mples, em que os arquivos são armazenados de forma sequencial no disco.
Assim, se você tem um disco rígido com blocos de tamanho 1MB, por exem
plo, e um arquivo cujo tamanho seja de 40MB, você utilizará 40 blocos sequ
enciais de disco para alocar o arquivo, e assim por diante.

A implementação desse método é simples e possui um bom desempenho, p


orém, como desvantagem, gera a fragmentação do disco, ou seja, os arquivo
s ficam espalhados por todo disco rígido do computador, o que compromete
o desempenho, e ainda é necessário especificar o tamanho do arquivo dura
nte a criação.

Na figura “Alocação Contígua” são apresentados quatro arquivos, com seus


nomes, o tamanho dos blocos de disco e o respectivo bloco onde começará
a alocação do arquivo.

Por exemplo, o arquivo D.html inicia a alocação a partir do bloco de disco 1,


com tamanho de 7 blocos de disco.

Alocação Contígua. Fonte: Junior ([s.d.]).


Alocação por Lista Encadeada: segundo Machado e Maia (2007), outro méto
do de armazenamento de arquivos consiste em organizar os mesmos como
um conjunto de blocos ligados logicamente no disco, independentemente d
e sua localização física. Cada bloco contém um ponteiro para o bloco segui
nte do arquivo.
A figura “Alocação por Lista Encadeada” apresenta a implementação de alo
cação por lista encadeada. Nela são apresentados quatro arquivos, com seu
s respectivos nomes e o bloco onde começará a alocação do arquivo.

Segundo Junior ([s.d.]), cada bloco do arquivo é composto por dados e pelo e
ndereço do próximo bloco onde está a continuação dos dados.

Por exemplo, o arquivo A.txt se inicia na posição 4 para o primeiro bloco e c


ontém o endereço para o próximo bloco do arquivo, que é o bloco 7. O próxi
mo bloco de dados do arquivo será armazenado no bloco 2. O bloco 2 faz ref
erência para o próximo endereço de armazenamento, o bloco 10, e assim po
r diante.

Alocação por Lista Encadeada. Fonte: Junior ([s.d.]).


Segundo Tanenbaum (2003), neste método não há desperdício de espaço co
m a fragmentação, além de precisar somente do primeiro endereço do disc
o para acessar todo o arquivo, pois os demais são encontrados a partir dele.

A desvantagem é que o acesso aleatório é lento, além de gastar espaço de m


emória para armazenar os ponteiros.
Alocação por Lista Encadeada usando uma tabela na memória: segundo Ta
nenbaum (2003), nesse método cada palavra de ponteiro de cada bloco de d
isco é inserida em uma tabela na memória principal, chamada de FAT (File
Allocation Table).

A figura “Alocação por Lista Encadeada usando uma tabela na memória” a


presenta a implementação de alocação por lista encadeada usando uma ta
bela na memória, onde são apresentados quatro arquivos, com seus respect
ivos nomes e o bloco onde começará a alocação do arquivo.

Cada arquivo aponta para uma entrada na tabela de memória, que, por sua
vez, contém o endereço do próximo bloco onde está a continuação dos dado
s.

Por exemplo, o arquivo A.txt aponta para a entrada 4 da tabela de memória,


e esse endereço contém o endereço para o próximo bloco do arquivo, que é
o bloco 7. A entrada 7 da tabela de memória faz referência para o próximo e
ndereço de armazenamento, o bloco 2, e assim por diante.

Alocação por Lista Encadeada usando uma tabela na memória. Fonte: Junior ([s.d.]).
A vantagem desse método é que o acesso aleatório se torna mais fácil pela t
abela estar carregada na memória. Porém, como desvantagem, a tabela dev
e estar na memória o tempo todo para funcionar.

______
📝 Exemplificando

A desvantagem do método de alocação por lista encadeada usando uma ta


bela na memória é que a tabela deve estar na memória o tempo todo para f
uncionar.

Por exemplo, para um disco de 20GB e blocos de 1KB, a tabela precisará de 2


0 milhões de entradas, uma para cada um dos 20 milhões dos blocos de dis
co, ou seja, a tabela pode ser muito grande para ser mantida em memória.

______
I-nodes: segundo Tanenbaum (2003), nesse método cada arquivo é associa
do a uma estrutura chamada I-node (index-node), relacionando os atributo
s e os endereços em disco dos blocos de arquivos. Com o I-node é possível e
ncontrar todos os blocos de arquivos.

Por exemplo, o arquivo A.txt foi associado a uma tabela I-node (figura “ I-no
des”), com os seus atributos e endereços de disco, que fazem referência aos
blocos de arquivos.

I-nodes. Fonte: Junior ([s.d.]).


Nesse método, a tabela precisa ser carregada somente quando o arquivo cor
respondente estiver aberto. Uma desvantagem é que se existirem arquivos
que precisam crescer além do esperado, seria necessário ter dois ou mais e
ndereços de disco apontando para outros blocos de disco cheios de endereç
os.

______
💭 Reflita

Você sabia que num determinado dispositivo de armazenamento o I-node


pode ocupar até 1% do espaço total (LINUXANDO, 2018)? A quantidade de ar
quivos e diretórios influenciam sobre a quantidade de I-nodes?

______

Esse método é utilizado no sistema operacional Unix. No Linux, o método I-


node armazena num disco rígido, por exemplo, as informações de permissõ
es de acesso, identificação dos donos dos arquivos, o tamanho do arquivo e
os ponteiros.

Segundo Couto (2018), o núcleo do sistema operacional, ao ler um arquivo o


u diretório, verifica as permissões contidas no I-node do arquivo e, caso sej
am negadas, o usuário não terá acesso às suas informações. Somente após
a verificação das permissões do I-node é que são validadas as permissões d
os arquivos ou diretórios.

______
➕ Pesquise mais

Cada entrada de registo de um I-node tem um tamanho de 128 bytes, e as in


formações armazenadas podem incluir: o número do I-node, o controle de a
cesso, as propriedades ou atributos, o número dos blocos do dispositivo (loc
alização no disco), entre outros.
Para saber mais sobre esse assunto, consulte este artigo Compreender o In
ode em Linux.
Implementação de Arquivos e
Diretórios

Segundo Tanenbaum (2003), para localizar a entrada de um diretório, o sist


ema operacional usa o nome do caminho do arquivo dado pelo usuário. A e
ntrada de um diretório contém a informação necessária para encontrar os
blocos de disco, que pode ser: o endereço do disco do arquivo, o número do
primeiro bloco, o número do I-node.

A função principal do sistema de diretório é mapear o nome do arquivo na i


nformação necessária para localizar os dados. Os atributos do arquivo (pro
prietário do arquivo e data da criação, por exemplo) são armazenados na en
trada do diretório.

A figura “Atributos na entrada do diretório (a)” apresenta um diretório com


entradas de tamanho fixo, contendo um nome, os atributos e os endereços
de discos.
Os sistemas que utilizam I-nodes podem armazenar os atributos em I-node
s, assim, as entradas de diretórios conterão um nome de arquivo e um núm
ero I-node, conforme apresentado na figura “Atributos em I-nodes (b)”

Atributos na entrada do diretório (a) e atributos em I-nodes (b). Fonte: Tanenbaum


(2003, p. 305).
Ainda segundo Tanenbaum (2003), os sistemas operacionais modernos sup
ortam nomes de arquivos mais longos e com tamanhos variáveis.

Para fazer essa implementação, é necessário definir um limite de 255 carac


teres para o tamanho do nome do arquivo. Essa implementação é simples,
mas consome uma quantidade grande e desnecessária de espaço no diretór
io, uma vez que nem todos os nomes de arquivos são grandes. diretório co
m dois arquivos (“a.out" e “projeto.c”), com o tamanho da entrada variável e
os atributos do arquivo.

Outra forma de tratar nomes de arquivos variáveis é apresentada na figura


“Atributos na entrada do diretório em I-nodes” (b). As entradas de diretório
são de tamanho fixo e os nomes de arquivos ficam agrupados no final do di
retório, em uma área chamada heap. Desta forma, os ponteiros dos arquivo
s apontam para início dos nomes dos arquivos no final do diretório.

Uma alternativa para esse método é definir a entrada do diretório como um


a parte fixa a partir do tamanho da entrada dos arquivos (variável), seguida
por dados de formato fixo (proprietário do arquivo, horário de criação, entre
outros).

A figura “Atributos na entrada do diretório (a)” apresenta um diretório com


dois arquivos (“a.out" e “projeto.c”), com o tamanho da entrada variável e os
atributos do arquivo.

Outra forma de tratar nomes de arquivos variáveis é apresentada na figura


“Atributos em I-nodes (b)”. As entradas de diretório são de tamanho fixo e o
s nomes de arquivos ficam agrupados no final do diretório, em uma área ch
amada heap. Desta forma, os ponteiros dos arquivos apontam para início d
os nomes dos arquivos no final do diretório.

Atributos na entrada do diretório (a) e atributos em I-nodes (b). Fonte: Junior ([s.d.]).
Gerenciamento de Espaço em Disco

O sistema operacional precisa gerenciar o espaço em disco dos blocos livre


s, garantindo um bom desempenho ao sistema. Segundo Tanenbaum (2003
), são utilizados dois métodos para monitorar os blocos livres: lista encadea
da de blocos e mapa de bits.
No método da lista encadeada de blocos, cada bloco contem a quantidade d
e espaços livres que puderem ter e possuem a localização dos blocos livres,
conforme apresentado na figura a seguir.

Por exemplo, um disco de 16GB precisa de uma lista livre de 16.794 blocos p
ara conter 224 número de blocos de disco.

Lista encadeada de blocos. Fonte: Junior ([s.d.]).


Segundo Deitel, Deitel e Choffnes (2005), um mapa de bits possui um bit par
a cada bloco físico do sistema de arquivos. O bit igual a 1 indica que o bloco
está em uso, e o bit 0 que não está, conforme apresentado na figura “Mapa d
e Bits”.

Caso seja necessário alocar mais um bloco físico para o disco, é só percorre
r o mapa de bits para encontrar o bit igual a 0.
Mapa de Bits. Fonte: Junior ([s.d.]).
Ainda segundo Deitel, Deitel e Choffnes (2005), a vantagem do mapa de bits
em relação à lista encadeada de blocos é que o sistema de arquivos conseg
ue saber rapidamente onde há blocos livres, além de ser simples a sua impl
ementação.

Segurança e Confiabilidade do Sistema de Arquivos

imagem sem audiodescrição

Segundo Machado e Maia (2007), os arquivos são compartilhados com usuá


rios e utilizados para diversas finalidades. Assim, é necessário que o siste
ma operacional ofereça proteção desses arquivos para que usuários e proce
ssos que não tenham permissão consigam acessá- los.

Ainda segundo Machado e Maia (2007), um sistema de arquivos possui dife


rentes mecanismos de proteção, como:
senha de acesso: para ter acesso ao arquivo, é necessário que o usuário a co
nheça e que o sistema conceda o acesso ao arquivo. Nesse caso, como um a
rquivo possui apenas uma senha, não é possível definir quais tipos de oper
ações serão realizadas.

grupo de usuários: essa proteção consiste em associar cada usuário a um gr


upo para compartilhar arquivos. Durante a criação do arquivo, o usuário def
ine quais usuários terão acesso a ele.

lista de controle de acesso (Access Control List - ACL): é uma lista associad
a a cada arquivo, com as permissões de cada usuário. Quando um usuário t
enta acessar um arquivo, o sistema operacional verifica sua permissão par
a autorizar ou não a operação realizada.

Segundo Tanenbaum (2003), existem questões de confiabilidade que deve


m manter a integridade dos arquivos, como cópias de segurança e consistê
ncia do sistema de arquivos. As cópias de segurança (backups) garantem q
ue os dados sejam copiados e armazenados em diferentes lugares e disposi
tivos.

A consistência do sistema de arquivos permite que os arquivos sejam salvo


s antes de finalizar sua tarefa. Assim, caso um usuário esteja modificando
um arquivo e a luz acabe, por exemplo, a parte trabalhada até o momento é
salva em disco.

______

🔁 Assimile
Vimos nesta aula que existem diferentes mecanismos de proteção de um si
stema de arquivos. A escolha do mecanismo dependerá do sistema operaci
onal utilizado. Por exemplo, no Linux, os usuários e grupos de usuários são
agrupados por atividades em comum e possuem acesso para realizarem es
sas tarefas.

Conclusão

imagem sem audiodescrição

Agora que você já conheceu como é realizada a implementação do Sistema


de Arquivos, os métodos de implementação de Arquivos e Diretórios, como
é realizado o gerenciamento de espaço em disco e a importância da segura
nça e confiabilidade do Sistema de Arquivos, vamos voltar ao nosso contex
to.

A empresa XYZ Ltda. precisa que os dados contidos em seus arquivos seja
m protegidos, para que somente as pessoas ou setores autorizados tenham
acesso a eles. Assim, surgem os seguintes questionamentos:

qual método será utilizado para a implementação de arquivos na empresa


XYZ Ltda.?

como será feito o gerenciamento de espaço em disco desses arquivos?

quais são os mecanismos de proteção que podem ser implementados, consi


derando os sistemas operacionais Linux e Windows?
Existem vários métodos de implementação de arquivos. Neste caso, deve-s
e analisar qual método será melhor aplicado ao sistema operacional utiliza
do pelo usuário. A empresa XYZ Ltda. utiliza os sistemas operacionais Linu
x e Windows.

O Linux, por exemplo, utiliza o método I-node, onde são armazenados num
disco rígido ou arquivo as informações de permissões de acesso, identificaç
ão dos donos dos arquivos, o tamanho do arquivo e os ponteiros. O núcleo d
o sistema operacional verifica as permissões contidas no I-node do arquivo
antes de verificar as permissões dos arquivos ou diretórios. O Sistema de A
rquivos do Linux e do Windows conseguem trabalhar com uma quantidade
grande de arquivos, além de gerenciar arquivos que precisam aumentar o c
onsumo de memória durante a execução.

No caso da empresa XYZ Ltda., o mais adequado é gerenciar o espaço em di


sco por meio do mapa de bits, uma vez que o sistema de arquivos consegue
saber rapidamente onde há blocos livres, além de ser simples a sua implem
entação. O bit igual a 1 corresponde ao bloco que está em uso e o bit 0 ao qu
e não está.

Como a empresa XYZ Ltda. é segmentada nas áreas de pré-vendas, vendas,


faturamento e administrativo, é necessário garantir a segurança dos diretó
rios e arquivos de cada setor, para que somente usuários autorizados consi
gam acessá-los.
Para implementar os mecanismos de proteção, será necessário utilizar os
métodos de senha de acesso, grupo de usuários e lista de controle de acesso
. No Linux, cada arquivo possui permissão de acesso para ler, gravar e exec
utar, e os tipos de usuários são dono, grupo e outros usuários do sistema. N
o Windows, a permissão de acesso aos arquivos e pastas pode ser configur
ada pelo administrador do sistema para cada usuário.

O administrador dos sistemas Linux e Windows, na hora da criação dos us


uários do sistema, deve atribuir a cada um a permissão (leitura, gravação e
execução) ao sistema e diretórios. Durante a criação deles, poderão ser inse
ridos em um grupo, de acordo com as áreas da empresa (pré-vendas, venda
s, faturamento e administrativo), de forma que somente os funcionários de
uma determinada área poderão incluir, deletar ou editar os arquivos de seu
diretório.

Além da senha de acesso e do grupo de usuários, pode ser implementada a


lista de controle de acesso (Access Control List – ACL), que é associada a ca
da arquivo com as permissões de cada usuário. Desta forma, a segurança é
reforçada, pois quando um usuário tenta acessar um arquivo, o sistema ope
racional verifica sua permissão para autorizar ou não a operação realizada.

Para finalizar suas atividades, agora você deverá elaborar o anteprojeto que
será entregue para a avaliação dos gestores, apresentando as informações l
evantadas durante a sua atividade na empresa. Ele deverá conter os seguin
tes dados:
o levantamento dos documentos que estavam armazenados dentro de caix
as no depósito, analisando a estrutura desses arquivos.

a definição do sistema de arquivos a ser utilizado nos sistemas operacionai


s Linux e Windows.

a definição dos nomes, atributos e operações realizadas, com os arquivos e


diretórios que atenderão a cada setor da empresa.

os métodos de implantação de arquivos no Linux e Windows.

a implantação do mecanismo de proteção, utilizando os métodos de senha


de acesso, grupo de usuários e lista de controle de acesso.

Referências

imagem sem audiodescrição

ALENCAR, F. Entenda o que é sistema de arquivos e sua utilidade no PC e n


o celular. TechTudo. 26 fev. 2016. Disponível em: <http://www.techtudo.co
m.br/dicas-e-tutoriais/noticia/2016/02/entenda-o-que-e-sistema-de-arquiv
os-e-sua-utilidade-no-pc-e-no-celular.html>. Acesso em: 04 jul. 2021.

COTA, A. Diferenças entre o sistema de arquivos do Windows e Linux. 17 m


ar. 2005. Disponível em: <https://www.vivaolinux.com.br/artigo/Diferencas
-entre-o-sistema-de-arquivos-do-Windows-e-Linux>. Acesso em: 04 jul. 20
21.
COUTO, E. O que é um inode? 23 set. 2009. Disponível em: <https://gnulinux
br. wordpress.com/category/comandos-intermediarios/o-que-e-um-inode/
>. Acesso em: 04 jul. 2021.

DEITELL, H. M.; DEITEL, P. J.; CHOFFNES, D. R. Sistemas Operacionais. 3. ed


. São Paulo: Prentice Hall, 2005.

EASEUS. Meus Arquivos de Computador Sumiram. Preciso de Ajuda para E


ncontrá-los. 8 jan. 2018. Disponível em: <https://br.easeus.com/file-recover
y/recuperar-arquivos-e-pastas-sumiram-do-computador-windows-10.html
>. Acesso em: 04 jul. 2021.

GALVIN, P. B., GAGNE, G.; SILBERSCHATZ, A. Operating system concepts. 8.


ed. United States of America: John Wiley & Sons, Inc., 2013.

GUTIERREZ, C. Backup: a importância das cópias de segurança. 8 abr. 2018.


Disponível em: <http://www.administradores.com.br/noticias/tecnologia/b
ackup-a-importancia-das-copias-de-seguranca/124318/>. Acesso em: 04 jul
. 2021.

HAMMERSCHMIDT, R. Microsoft revela mais detalhes sobre o ReFS, seu no


vo sistema de arquivos. Tecmundo. 17 jan. 2012. Disponível em: <https://w
ww.tecmundo.com.br/windows-8/17975-microsoft-revela-mais-detalhes-s
obre-o-refs-seu-novo-sistema-de-arquivos.htm>. Acesso em: 10 maio 2018.
JONES, M. Anatomia do Sistema de Arquivos do Linux. 30 out. 2007. Dispon
ível em: <https://www.ibm.com/developerworks/br/library/l-linux-filesyst
em/index.html>. Acesso em: 9 maio 2018.

JUNIOR, J. S. V. Diretórios do Linux. 10 set. 2009. Disponível em: <https://w


ww. vivaolinux.com.br/dica/Diretorios-do-Linux>. Acesso em: Acesso em:
04 jul. 2021.

JUNIOR, L. A. P. L. Sistemas de Arquivos. [S.d.]. Disponível em: <http://www


.ppgia. pucpr.br/~laplima/ensino/so/materia/04_arquivos.html>. Acesso e
m: 21 maio 2018.

LINUXANDO. Compreender o Inode em Linux. [S.d.]. Disponível em: <https:/


/www. linuxando.com/tutorial.php?t=Compreender%20o%20Inode%20em%
20Linux_7>. Acesso em: 04 jul. 2021

MACHADO, F. B.; MAIA, L. P. Arquitetura de Sistemas Operacionais. 4. ed. R


io de Janeiro: LTC, 2007.

PAULO, D. Fundamentos do sistema Linux - arquivos e diretórios. 28 out. 20


05. Disponível em: <https://www.vivaolinux.com.br/artigo/Fundamentos-d
o-sistema-Linux-arquivos-e-diretorios/>. Acesso em: 04 jul. 2021
SANTOS, T. A Arvore de diretórios do Linux. 13 out. 2016. Disponível em: <ht
tps:// fsocietybrasil.org/a-arvore-de-diretorios-do-linux/>. Acesso em: 11 m
aio 2018.

SHIELDS, I. Gerenciamento de arquivo e diretório. 10 nov. 2009. Disponível e


m:<https://www.ibm.com/developerworks/br/linux/library/l-lpic1-v3-103-
3/index. html>. Acesso em: 14 maio 2018.

SILVA, R. R. Sistemas de arquivos suportados pelo Linux. 13 nov. 2006. Disp


onível em: <https://www.vivaolinux.com.br/artigo/Linux-Sistema-de-arqui
vos>. Acesso em: 04 jul. 2021.

TANENBAUM, A. S. Sistemas Operacionais Modernos. 2. ed. São Paulo: Pea


rson, 2003.

WALTRICK, R. Saiba como proteger seus arquivos salvos na nuvem. Gazeta


do Povo. 3 set. 2014. Disponível em: <http://www.gazetadopovo.com.br/tecn
ologia/ saiba-como-proteger-seus-arquivos-salvos-na-nuvem-ecz71ltnny7
43iyd4u3yeas7i>. Acesso em: 04 jul. 2021.

Questão 1
Correta
Questão com problema?
Para cada
sistema operacional existem diferentes métodos de implementação de arquivos e
diretórios, sendo importante levar em consideração como será realizado o c
ontrole do armazenamento dos arquivos em disco (MACHADO; MAIA, 2007). Além
disso, o sistema operacional precisa controlar quais as áreas ou blocos no disco
estão livres quando um arquivo é criado.

MACHADO, Francis B.; MAIA, Luiz P. Arquitetura de Sistemas Operacionais. 4.ed. Rio
de Janeiro: LTC, 2007.

Sobre os métodos de implementação de arquivos utilizados nos sistemas operacionais é


correto afirmar que

Sua resposta
Correta
Alocação Contígua é o método mais simples, onde os arquivos são armazenados de
forma sequencial no disco, possuindo um bom desempenho.

Comentário

Alternativa CORRETA. Alocação Contígua é o método mais simples, onde os


arquivos são armazenados de forma sequencial no disco, possuindo um bom
desempenho. - Alocação Contígua: Segundo Tanenbaum (2003), a implementação de
arquivos por alocação contígua é o método mais simples, onde os arquivos são
armazenados de forma sequencial no disco. - Alocação Por Lista Encadeada: Segundo
Machado e Maia (2007), outro método de armazenamento de arquivos consiste em
organizar os mesmos como um conjunto de blocos ligados logicamente no disco
independente de sua localização física. Cada bloco contém um ponteiro para o bloco
seguinte do arquivo. - Alocação Por Lista Encadeada usando uma tabela na memória:
Segundo Tanenbaum (2003), neste método cada palavra de ponteiro de cada bloco de
disco é inserida em uma tabela na memória principal chamada de FAT (File Allocation
table). - I-nodes: Segundo Tanenbaum (2003), neste método é associado a cada arquivo
uma estrutura chamada i-node (index-node), relacionando os atributos e os endereços
em disco dos blocos de arquivos.

Questão 2
Correta
Questão com problema?

Segundo Tanenbaum (2003), um arquivo pode ser definido como um mecanismo de


abstração, oferecendo meios de armazenamento de dados e permitindo que estes dados
sejam lidos posteriormente.

TANENBAUM, Andrew. S. Sistemas Operacionais Modernos, 2.ed. São Paulo:


Pearson, 2003.
Com relação ao sistema de arquivos, complete as lacunas da sentença a seguir.

O responsável por gerenciar os arquivos no ____________ é o sistema de arquivos. O


sistema de arquivos é a parte ____________ de um sistema operacional, uma vez que os
usuários manipulam constantemente os arquivos. Dessa forma é importante que o sistema
de arquivos possua uma ____________ amigável e de fácil implementação. Cada sistema
operacional possui seu próprio sistema de arquivos.

Assinale a alternativa que completa as lacunas corretamente.

Sua resposta
Correta
sistema operacional / visível / interface.

Comentário

Resposta correta: sistema operacional / visível / interface. O responsável por


gerenciar os arquivos no sistema operacional é o sistema de arquivos. O sistema de
arquivos é a parte visível de um sistema operacional, uma vez que os usuários
manipulam constantemente os arquivos. Dessa forma é importante que o sistema de
arquivos possua uma interface amigável e de fácil implementação. O sistema de
arquivos é a parte visível de um sistema operacional, uma vez que os usuários
manipulam constantemente os arquivos. Dessa forma é importante que o sistema de
arquivos possua uma interface amigável e de fácil implementação. Cada sistema
operacional possui seu próprio sistema de arquivos.

Questão 3
Incorreta
Questão com problema?

O sistema operacional precisa controlar quais as áreas ou blocos no disco estão livres
quando um arquivo é criado. Para esse controle, existem alguns métodos de
implementação de arquivos.

Considerando os métodos de implementação de arquivos, avalie as afirmativas a seguir.

I. Para cada sistema operacional existem diferentes métodos de implementação de


arquivos e diretórios, sendo importante levar em consideração como será realizado o
controle do armazenamento dos arquivos em disco.

II. Alocação Por Lista Encadeada nesse método há desperdício de espaço com a
fragmentação, além de precisar somente do primeiro endereço do disco para acessar todo
o arquivo, pois os demais são encontrados a partir dele. A vantagem é que o acesso
aleatório é rápido, não gastando espaço de memória para armazenar os ponteiros.
III. Os principais métodos de implementação de arquivos utilizados nos sistemas
operacionais são: Alocação Contígua, Alocação Por Lista Encadeada, Alocação Por Lista
Encadeada usando uma tabela na memória e I-nodes.

Agora, assinale a alternativa correta.

Sua resposta
Incorreta
As afirmativas I, II e III estão corretas.

Solução esperada

Apenas as afirmativas I e III estão corretas.

Comentário

Alternativa correta: Apenas as afirmativas I e III estão corretas. A afirmativa I está


correta porque para cada sistema operacional existem diferentes métodos de
implementação de arquivos e diretórios, sendo importante levar em consideração como
será realizado o controle do armazenamento dos arquivos em disco. A afirmativa II está
incorreta porque no método de Alocação Por Lista Encadeada não há desperdício de
espaço com a fragmentação, além de precisar somente do primeiro endereço do disco
para acessar todo o arquivo, pois os demais são encontrados a partir dele. A
desvantagem é que o acesso aleatório é lento, além de gastar espaço de memória para
armazenar os ponteiros. A afirmativa III está correta. Os principais métodos de
implementação de arquivos utilizados nos sistemas operacionais são: Alocação
Contígua, Alocação Por Lista Encadeada, Alocação Por Lista Encadeada usando uma
tabela na memória e I-nodes.

Questão 4
Correta
Questão com problema?

Os atuais sistemas de arquivos permitem que os usuários criem vários diretórios e


subdiretórios apresentando uma estrutura organizada dos arquivos.

O método nome de caminho absoluto é formado pelo caminho entre o diretório-raiz e o


arquivo. Os nomes de caminhos absolutos sempre iniciam no diretório-raiz e são
únicos. O método nome de caminho relativo é usado em conjunto com o conceito de
diretório atual ou diretório de trabalho. Desta forma é possível ser designado pelo usuário
um diretório como diretório atual de trabalho, em que todos os nomes de caminhos não
comecem no diretório-raiz. Um link é a entrada de um diretório que referencia um
arquivo em outro diretório. Um arquivo pode ter vários links.

BARBOSA, Cynthia da Silva. Sistemas de Diretórios. São Paulo: Editora e Distribuidora


Educacional, 2018.
A partir desse contexto, associe os conceitos, contidos na Coluna I, com os respectivos
tipos, apresentados na Coluna II.

Coluna A

I. Com sua utilização existe uma redução de espaço em disco, compartilhamento entre diversos usuários,

II. Contém diretórios e pastas que gerenciam os arquivos.

III. Se o diretório atual for /usuário/meus_documentos/, logo o arquivo cujo caminho absoluto for /usu
pode ser referenciado apenas como atividades.

IV. O caminho /usuário/meus_documentos/atividades.txt significa que dentro do diretório-raiz possui


dentro do diretório “usuário” existe um subdiretório chamado “meus_documentos” e dentro do subdiretór
arquivo chamado “atividades.txt”. Nos Windows, os componentes do caminho são separados por \.

Assinale a alternativa que apresenta a associação correta das colunas.

Sua resposta
Correta
I-4; II-1; III-3; IV-2.

Comentário

Alternativa correta: I-4; II-1; III-3; IV-2. Sistemas de arquivos: contém diretórios
e pastas que gerenciam os arquivos. Caminho absoluto: o caminho
/usuário/meus_documentos/atividades.txt significa que dentro do diretório-raiz possui
um diretório chamado “usuário”, dentro do diretório “usuário” existe um subdiretório
chamado “meus_documentos” e dentro do subdiretório “meus_documentos” existe um
arquivo chamado “atividades.txt”. Nos Windows, os componentes do caminho são
separados por \. Caminho relativo: se o diretório atual for /usuário/meus_documentos/,
logo o arquivo cujo caminho absoluto for /usuário/meus_documentos/atividades pode
ser referenciado apenas como atividades. Link: com sua utilização existe uma redução
de espaço em disco, compartilhamento entre diversos usuários, dentre outros.

Questão 5
Correta
Questão com problema?

Segundo Barbosa (2018) o sistema de arquivos é a maneira como as informações são


armazenadas nos dispositivos (disco rígido, pendrives, dentre outros) e os arquivos são a
maneira que o sistema operacional permite a leitura e gravação dos dados. Um arquivo é
composto por um nome e por atributos (tamanho do arquivo, código de proteção de
acesso, quem é o criador do arquivo, data de criação do arquivo) que são gerenciados pelo
sistema operacional.

Fonte: BARBOSA, Cynthia da Silva. Arquivos e Sistemas de Arquivos. São Paulo:


Editora e Distribuidora Educacional, 2018.

Com relação ao sistema de arquivos, complete as lacunas da sentença a seguir.

Segundo Machado e Maia (2007), quem é responsável por gerenciar os arquivos no


sistema operacional é o sistema de arquivos. O sistema de arquivos é a parte _________
de um sistema operacional, uma vez que os ____________ manipulam constantemente
os ___________. Dessa forma é importante que o sistema de arquivos possua
uma __________ amigável e de fácil implementação. Cada sistema operacional possui
seu próprio sistema de arquivos.

Assinale a alternativa que completa as lacunas corretamente.

Sua resposta
Correta
Visível / Usuários / Arquivos / Interface.

Comentário

Alternativa correta: Visível; Usuários; Arquivos; Interface. Segundo Machado e


Maia (2007), quem é responsável por gerenciar os arquivos no sistema operacional é o
sistema de arquivos. O sistema de arquivos é a parte visível de um sistema operacional,
uma vez que os usuários manipulam constantemente os arquivos. Dessa forma é
importante que o sistema de arquivos possua uma interface amigável e de fácil
implementação. Cada sistema operacional possui seu próprio sistema de arquivos.

Unidade 4 / Aula 1

Gerenciamento de memória

Introdução da Unidade
Objetivos da Unidade (5M)

Ao longo desta Unidade, você irá:

• descrever a evolução do gerenciamento de memória utilizados em co


mputadores multiprogramados;
• explicar os conceitos do swapping e o funcionamento dos algoritmo
s de troca de processos;
• identificar as características da memória virtual e esclarecer o funci
onamento dos algoritmos de substituição de páginas.

Introdução da Unidade

Ola estudante, boas-vindas!

Nesta unidade, veremos como é realizado o gerenciamento de memória no


s sistemas operacionais e suas características, como se dá a monoprogram
ação sem troca de processos ou paginação, e a multiprogramação com parti
ções fixas, além de apresentar os problemas da multiprogramação: relocaç
ão e proteção. Estudaremos a troca de processos, conhecida como swappin
g, e a multiprogramação com partições variáveis.
Ainda, aprenderemos como são realizados o gerenciamento de memória po
r meio de mapa de bits e os algoritmos de troca de processos, o funcioname
nto da memória virtual, da paginação e da tabela de páginas, assim també
m como são realizadas a segmentação da memória e os algoritmos de subs
tituição de páginas.

A memória é um dos recursos computacionais mais importantes, pois é o l


ocal onde são armazenados dados e informações no computador. Logo, é n
ecessário que seja feito um bom gerenciamento da memória nos sistemas o
peracionais, uma vez que a tendência dos programas é consumir cada vez
mais este recurso durante sua execução.

Neste âmbito, vamos adentrar no seguinte contexto: você trabalha em uma


empresa de infraestrutura como gerente de TI e foi convidado para represe
nta-la em uma importante feira de tecnologia que acontecerá em sua cidad
e dentro de alguns dias. A empresa fornece serviços e soluções para proble
mas de recursos computacionais de acordo com a necessidade dos contrat
antes.

Neste evento estarão presentes as melhores empresas na área de tecnologi


a do país e todas as inovações de gerenciamento de memória, swapping e
memória virtual serão apresentadas. Você será o responsável pela apresent
ação técnica das inovações em gerenciamento de memória, swapping (que
é a paginação de memória em disco) e memória virtual da empresa para os
clientes, apresentando os conteúdos teóricos e práticos sobre eles. Para isso
será necessário dominar os seguintes conceitos:

1. saber como funcionam o controle e a alocação de memória principal


para os processos, o gerenciamento de memória e mostrar como são
gerenciados os problemas da multiprogramação (relocação e proteçã
o);
2. saber como se dá o tratamento da insuficiência de memória dos proc
essos que estão sendo executados, utilizando a técnica swapping (tro
ca de processos) e como são definidas as estratégias de organização
da memória através da multiprogramação com partições variáveis e
do gerenciamento da memória com mapa de bits, além de apresenta
r os principais algoritmos de troca de processos;
3. mostrar como é tratada a insuficiência de memória dos processos qu
e estão sendo executados, utilizando a técnica de memória virtual, e
também mostrar as técnicas de paginação e segmentação e apresent
ar os algoritmos de substituição de páginas.

Algumas observações importantes que podem surgir durante o evento:

• qual a função do gerenciador de memória?


• quais são os esquemas de gerenciamento de memória?
• quando ocorrem os erros de páginas?
• e quais as ações que o sistema operacional toma quando ocorre este
erro?

Você deverá elaborar um anteprojeto de gerenciamento de memória e de di


spositivos de entrada e saída para cada cliente que procurar o seu stand. A
pós o término desta unidade você terá condições de entender como é realiz
ado o gerenciamento de memória, o funcionamento do swapping e da mem
ória virtual no computador.

Vamos juntos conhecer mais sobre o gerenciamento de memória e suas pr


opriedades! Vamos lá!

Introdução da aula
Qual é o foco da aula?

Nesta aula, vamos apresentar a evolução do gerenciamento e os tipos de m


emória que auxiliam na execução das aplicações para elevar o desempenh
o do computador.
Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• descrever o gerenciamento de memória, importante recurso para um


bom funcionamento de um computador;
• distinguir os métodos de gerenciamento de memória: monoprogram
ação e multiprogramação;
• analisar os problemas da multiprogramação: relocação e proteção.

Situação-problema

Em um sistema operacional, o gerenciamento de memória é fundamental p


ara garantir a eficiência das aplicações que rodam no computador, uma vez
que a tendência é consumir cada vez mais memória durante sua execução.

Iremos apresentar a evolução do gerenciamento de memória, desde o mais


simples até os sistemas de gerenciamento de memória utilizados em comp
utadores multiprogramados. Existem diferentes tipos de memória que auxi
liam na execução das aplicações.

Por exemplo, a memória cache é rápida e é utilizada juntamente com o pro


cessador, elevando assim o desempenho do computador. Quando uma pági
na é acessada constantemente num navegador, ao invés do processador fa
zer uma busca das informações na memória RAM, ela busca as informaçõe
s na memória cache.

Neste caso, as informações acessadas são copiadas para essa memória, agil
izando a recuperação da página desejada. O controle de todas é de responsa
bilidade do gerenciador de memória, que realiza a gestão de quais partes es
tão sendo usadas e quais não estão.

Relembrando nosso contexto, você trabalha em uma empresa de infraestru


tura como gerente de TI e irá representa-la em uma importante feira de tec
nologia. Durante a feira, um funcionário de uma empresa do ramo de produ
tos de beleza, responsável pelo setor de TI, procura seu stand interessado e
m substituir os computadores nela utilizados.

Ele ressalta que precisará de máquinas potentes, com memória que suporte
o processamento de um grande volume de dados, uma vez que a empresa a
tua em nível nacional. Ele informou que no início da empresa, não obteve ê
xito na gestão das informações e teve que começar do zero, devido ao fato d
a memória dos computadores não suportar a quantidade de dados processa
dos como pedidos de produtos, vendas realizadas, orçamento dos revended
ores, entre outros.

Em algumas situações os dados foram perdidos e/ou sobrescritos. Surgem


os seguintes questionamentos:

• qual a solução para este cliente referente ao gerenciamento de mem


ória dos computadores de sua empresa?
• qual estratégia poderá ser adotada para obter um bom desempenho d
e memória considerando a situação atual da empresa?

Para que você consiga responder a esses e outros questionamentos sobre o


gerenciamento de memória e os problemas da multiprogramação, vamos c
onhecer mais sobre eles. Não se esqueça que, ao fim desta unidade, você de
verá entregar um relatório para o seu gestor, com os anteprojetos elaborado
s durante a feira.

Bons estudos!

Gerenciamento de memória

Segundo Machado e Maia (2007), desde os primeiros sistemas operacionais


a memória do computador era considerada como um recurso caro e escass
o. Mesmo com a redução de custo e aumento da capacidade de armazenam
ento das memórias, gerenciar o seu uso é fundamental e complexo.

Memória é o local de armazenamento de informações no computador e o s


eu gerenciamento em um sistema operacional é importante para garantir a
eficiência das aplicações que rodam no computador, uma vez que a tendên
cia das aplicações dos usuários é consumir cada vez mais esse recurso dur
ante sua execução.

Além disso, o gerenciamento de memória permite que vários processos sej


am executados ao mesmo tempo, mantendo um bom desempenho do siste
ma (TANENBAUM, 2003). Machado e Maia (2007) afirmam que o sistema o
peracional deve proteger as áreas de memória utilizadas pelos processos d
e forma que, se um programa tente acessá-la indevidamente, o sistema seja
impedido.

______
💭 Reflita

A memória é um recurso importantíssimo para um bom funcionamento de


um computador. Quais são os desafios do gerenciamento de memória? Qua
is seriam os efeitos se o controle da memória fosse mal gerenciado?

______

Segundo Tanenbaum (2003), na maioria dos computadores existe o conceit


o de hierarquia de memória (figura “Hierarquia de memórias”), combinando
uma pequena quantidade de memória cache (rápida, alto custo e volátil – g
uardam a informação temporariamente), uma grande quantidade de memó
ria principal (RAM – volátil, possui um médio custo) e uma memória secun
dária (baixo custo, alto armazenamento das informações, não volátil, com a
s informações armazenadas em disco).

Quanto mais alto as memórias estiverem na pirâmide, mais caras serão, po


ssuirão alta velocidade de processamento e baixa capacidade de armazena
mento. E quanto mais baixo e mais baratas são, possuirão uma grande cap
acidade de armazenamento e baixa velocidade de processamento.
Hierarquia de memórias. Fonte: Universidade Federal da Paraíba.
Segundo Tanenbaum (2003), a hierarquia de memória é controlada pelo ger
enciador de memória, responsável por gerenciar quais partes estão em uso
e quais não estão, alocando-a quando os processos precisarem, liberando-a
após o término dos processos e controlando a troca de processos entre a m
emória e o disco quando a memória principal não é suficiente para manter
todos os processos em execução.

______
➕ Pesquise mais

A hierarquia de memória fornece para as aplicações dos usuários e do com


putador uma grande quantidade de memória barata, rápida e não volátil. É
necessário que estas memórias estejam em sintonia enquanto o computad
or esteja ligado, ou seja, que elas se interliguem para garantir o bom funcio
namento do sistema operacional.
Para saber mais sobre este assunto acesse indicamos o artigo Como funcio
nam as diferentes memórias quando o computador está em uso.

______
Segundo Tanenbaum (2003), o gerenciamento de memória pode ser dividid
o em duas classes:
1) sistemas que durante o processamento levam e trazem a informação da
memória para o disco (troca de processos e paginação);
2) sistemas que não o fazem.

A troca de processos (swapping) carrega todo o programa para a memória


principal, o executa por um determinado tempo e depois o mesmo retorna
para o disco. A paginação divide a memória em partições para a execução d
as aplicações de forma eficiente.

A seguir serão apresentados os mecanismos de gerenciamento de memóri


a que não fazem troca de processos ou paginação.

Métodos de gerenciamento de
memória: monoprogramação e
multiprogramação

Monoprogramação sem troca de processos ou paginação


Segundo Tanenbaum (2003), este método de gerenciamento de memória é
o mais simples, pois somente um programa é executado por vez, e a memór
ia é compartilhada entre o sistema operacional e o programa.

A figura “Monoprogramação sem troca de processos ou paginação” apresen


ta três formas que podem ocorrer neste esquema:

• o sistema operacional está utilizando o espaço de endereçamento em


RAM (figura (a)), modelo aplicado aos mainframes e minicomputado
res.
• o sistema operacional está utilizando o espaço de endereçamento em
ROM somente para a leitura (figura (b)), usado em alguns computado
res de mão e em sistemas embarcados.
• os drives de dispositivos estão em ROM e os programas do usuário e
o sistema operacional está em RAM (figura (c)) – modelo utilizado n
os primeiros computadores pessoais (MS-DOS).

Monoprogramação sem troca de processos ou paginação. Fonte: Tanenbaum (2003, p.


140)
Segundo Machado e Maia (2007), a alocação contigua simples (outro termo
usado para Monoprogramação sem Troca de Processos ou Paginação) foi ut
ilizada nos primeiros sistemas operacionais e ainda está presente em algu
ns sistemas monoprogramáveis. O usuário tem o controle sobre toda a me
mória, podendo acessar qualquer posição dela e, até mesmo, a área do siste
ma operacional. Neste método, a utilização de recursos computacionais nã
o é eficiente, pois somente um usuário tem acesso aos recursos.

Ainda segundo Machado e Maia (2007), todos os programas são limitados à


área de memória principal disponível para o usuário. Para resolver essa li
mitação, utiliza-se uma técnica chamada overlay (sobreposição), que consi
ste em dividir o programa em módulos, sendo cada um executado indepen
dentemente, utilizando a mesma área de memória. Cada módulo de código
ou dados só é sobreposto quando não for mais necessário utilizar o que esta
va naquele local na memória anteriormente. O overlay era definido pelo pr
ogramador e foi utilizado no MS-DOS.

______
📝 Exemplificando

Por exemplo, imagine que um programa tenha três módulos: um principal,


um de cadastramento e outro de impressão. Os módulos de cadastramento
e impressão são independentes.

Assim, quando o módulo de cadastramento estiver em execução na memór


ia, o módulo de impressão não precisa estar presente. O modulo principal é
comum aos módulos de cadastramento e impressão, e deve estar na memó
ria durante o tempo de execução do programa (MACHADO; MAIA, 2007).

______
Multiprogramação com Partições Fixas

Segundo Tanenbaum (2003), a maioria dos sistemas operacionais moderno


s permite que vários processos executem ao mesmo tempo (multiprograma
ção) e quando um processo é bloqueado aguardando uma informação de en
trada/ saída, outro processo poderá utilizar a CPU, aumentando a sua utiliz
ação.
Nesse método, a memória é dividida em n partições de tamanhos diferente
s, podendo ser definida quando o sistema for iniciado. Segundo Machado e
Maia (2007), sempre que o tamanho de uma partição for alterado, o sistema
deverá ser reiniciado com a nova configuração.

Segundo Tanenbaum (2003), quando um processo chega para ser executad


o, ele é inserido em uma fila associada à menor partição suficiente para ar
mazená-lo. O espaço não utilizado pelo processo é perdido, uma vez que o t
amanho das partições é fixo.

A figura “Partições fixas com (a) múltiplas filas de entrada e (b) com uma ú
nica fila” apresenta filas de entrada separadas para cada partição. Por exe
mplo, na partição 4 existem dois processos na fila, sendo que estes podem t
er um tamanho de até 100 k para utilizar. A desvantagem deste método é q
ue podem existir muitos processos aguardando para serem executados em
algumas partições (como nas partições 1 e 4) e em outras filas não exista ne
nhum processo (como na partição 3).

Uma solução é implementar uma fila única, assim, gerando um processo m


ais próximo do início da fila e que caiba na partição para ser carregado e ex
ecutado (figura “Partições fixas com (a) múltiplas filas de entrada e (b) com
uma única fila”)). Para evitar desperdício de espaço não utilizado em uma p
artição, poder-se- ia percorrer a fila a procura do maior processo que compo
rte na partição.
Porém, processos pequenos não seriam selecionados para executar. Uma s
olução seria implementar uma partição pequena e definir que um processo
não poderia aguardar para receber uma partiçã o mais do que n vezes.
Partições fixas com (a) múltiplas filas de entrada e (b) com uma única fila. Fonte:
Tanenbaum (2003, p. 141).
🔁 Assimile

Vimos nesta aula como é importante gerenciar o uso da memória do comp


utador. Nas linguagens de programação, o gerenciamento da memória é fu
ndamental, pois a tendência das aplicações dos usuários é consumir cada v
ez mais este recurso. Em muitas linguagens de programação não é necessá
rio se preocupar com o gerenciamento, porém é importante que sejam conh
ecidas as restrições e capacidades do gerenciador de memória para uma pr
ogramação eficaz.

Por exemplo, nas linguagens de programação C/C++ é preciso realizar o ger


enciamento de memória.

Problemas da Multiprogramação:
relocação e proteção
Segundo Tanenbaum (2003), a multiprogramação apresenta dois problema
s essenciais: relocação e proteção.
A relocação é a transferência de um código de um local para outro de form
a que um programa não escreva na área de outro programa. A relocação é n
ecessária uma vez que processos executam em diferentes endereços na me
mória física.

Como exemplo, podemos relatar o problema de relocação entre dois progra


mas: quando o programa 1 está executando no endereço de memória entre
0 e 20. Após a finalização do programa 1, o programa 2 também foi alocado
no endereço de memória entre 0 e 20, ambos com as suas instruções (ADD,
MOV, JMP, dentre outras).

Os programas 1 e 2, ao serem relocados, foram alterados os seus endereços i


niciais de memória. Ao iniciarem a execução de suas instruções com novo
s endereços, o programa 2, que possui uma instrução de saltar para o ender
eço 20, invade a área de memória do programa 1. Esta é uma operação ilega
l, uma vez que os processos não podem ler ou escrever endereços que perte
nçam a outros processos/usuários.

Segundo Tanenbaum (2003), quando um programa é ligado (combinação d


o programa principal e procedimentos executados pelo usuário e procedim
entos de biblioteca), o linker – responsável por gerar o código executável –
tem que saber o endereço inicial do programa para relocar todas as instruç
ões que fazem uso de um endereço relativo de memória quando o program
a for executado.

Uma solução para o problema de relocação é alterar as instruções do progr


ama segundo a partição de memória em que ele está carregado. No caso da
relocação dos programas 1 e 2, a instrução contida no endereço 20, seria dir
ecionada para um endereço de memória dentro da área dos endereços do p
rograma para não comprometer sua execução.

Assim, o linker deve inserir no código binário uma lista ou um mapa infor
mando quais são os códigos de operação precisam ser relocados e quais nã
o precisam.

Segundo Tanenbaum (2003), a relocação de um programa durante a carga


não resolve a proteção. Diferentes aplicações não podem acessar dados que
não estejam dentro de sua partição. Se não houvesse esta proteção, caso u
m programa mal-intencionado insira uma nova instrução, ele poderá desvi
ar o controle para ela, ocasionando uma falha de proteção.

Tanto os problemas de relocação quanto de proteção podem ser resolvidos


fornecendo o processador com dois registradores (memória localizada no p
rocessador): base e limite. O registrador é uma memória localizada no proce
ssador do computador e acelera a execução das aplicações. Ele está no topo
da hierarquia de memória, possuem baixa capacidade de armazenamento,
alta velocidade de processamento, porém são caros.
Quando um processo é escalonado, o registrador-base é carregado com o en
dereço de início da partição e o registrador-limite com o tamanho da partiç
ão. Os endereços gerados são verificados no registador-limite garantindo q
ue não seja possível endereçar memória fora da região alocada ao processo
durante a execução.

______
🔁 Assimile

O registrador é uma memória rápida e cara localizada no processador do co


mputador. Sua função é armazenar e processar operações através de instru
ções. O registrador-base recebe o endereço inicial da memória, enquanto qu
e o registrador-limite recebe o tamanho da região de memória que o proces
so poderá executar.

Conclusão

Agora que você já aprendeu sobre como é realizado o gerenciamento de me


mória nos sistemas operacionais e suas características e sobre os problema
s da multiprogramação, vamos relembrar o nosso contexto. Durante a feira
um funcionário de uma empresa do ramo de produtos de beleza, responsáv
el pelo setor de T.I., procura seu stand interessado em substituir os comput
adores utilizados na empresa.

Assim, surgem os seguintes questionamentos:

• qual a solução para este cliente referente ao gerenciamento de mem


ória dos computadores de sua empresa?
• qual estratégia poderá ser adotada para obter um bom desempenho d
e memória considerando a situação atual da empresa?

No caso deste cliente é necessário fazer um estudo em sua empresa para de


finir qual será a melhor estratégia para o seu negócio. O cliente relatou que
processa um grande volume de informações, e a memória dos computador
es não consegue processar a quantidade de dados geridos na empresa. Nest
e caso, é preciso ver quais programas e aplicações são realmente necessári
os nas máquinas da empresa para não sobrecarregar o processamento dos
dados principais do negócio do cliente. Estas aplicações extras instaladas n
as máquinas podem fazer com que o computador fique lento ou pare de exe
cutar.

Uma solução inicial, é a aquisição de mais memória RAM, pois a maior qua
ntidade permitirá que mais programas e aplicações sejam executados. A m
emória RAM auxilia o processador na transferência dos dados entre o disco
e a memória. Porém o aumento da memória nem sempre acelerará o dese
mpenho da máquina.

Pode ser que o processador dos computadores não seja adequado para a qu
antidade de memória existente, não conseguindo endereçar um volume tão
grande de memória RAM. Os processadores mais antigos não suportam um
a memória maior que 3 GB. Talvez seja necessário realizar a troca do siste
ma operacional que contenha um processador mais eficiente que consiga a
tender a uma maior quantidade de memória.
Ainda segundo o relato do cliente, em algumas situações os dados foram so
brescritos. Pode ter acontecido um atraso na atualização dos dados pela red
e e, assim, o último arquivo salvo sobrescreveu os arquivos existentes. Outr
a análise a ser feita é verificar como é realizada a relocação dos arquivos do
computador.

O problema de relocação altera a partição (endereços) de memória em que e


le está carregado. Mesmo os processos não podendo ler ou escrever endere
ços que pertençam a outros processos/usuários se tiver ocorrido algum pro
blema na rede, por exemplo, o último processo que acessou a memória, inv
adiu o endereço de memória de outro processo apagando os dados. Verifiqu
e se os registradores do computador estão inibindo que outros processos al
oquem memória em regiões que estejam sendo utilizadas.

As soluções apresentadas auxiliam no desempenho de memória das máqui


nas e, consequentemente, o cliente não terá problemas. Porém, mesmo apó
s todas as soluções apresentadas os computadores continuarem não suport
arem a quantidade de dados processados, será necessário a troca das máqu
inas para outras mais potentes, para que não ocorra prejuízos nos negócios
da empresa do cliente.

Unidade 4 / Aula 2

Swapping: troca de processos

Introdução da aula
Qual é o foco da aula?

Nessa aula, vamos apresentar os conceitos do swapping, os tipos e suas car


acterísticas, como se dá a multiprogramação com partições variáveis e o ge
renciamento de memória com mapa de bits, além de entender o funcionam
ento dos algoritmos de troca de processos.
Objetivos gerais de aprendizagem

Ao longo desta aula, você irá:

• definir o método para o gerenciamento de memória: a troca de proce


ssos (swapping);
• explicar os métodos de gerenciamento de memória com alocação di
nâmica: com mapa de bits e com listas encadeadas;
• analisar as estratégias ou algoritmos para definir a área livre dos pro
cessos que serão executados por meio da lista encadeada.

Situação-problema

O swapping (troca de processos) é realizado quando não existe memória pri


ncipal suficiente para executar todos os programas do computador ao mes
mo tempo. No swapping um programa é totalmente carregado em memóri
a e executado por um tempo definido, enquanto os demais programas agua
rdam, em disco, sua vez de executar.

Para exemplificarmos o conceito de swapping, imagine que estamos usand


o o navegador para pesquisar sobre um determinado assunto e, logo que en
contramos a informação que buscamos, abrimos o editor de texto para inse
rir essa informação. Em alguns casos, quando temos vários programas abe
rtos e realizamos essa troca – no caso do navegador e do editor de texto –,
percebemos um pouco de lentidão no computador.

Na verdade, o que ocorre é a troca de processos (swapping), pois o navegad


or – que estava sendo executado até então – é tirado da memória e colocad
o em disco, enquanto o editor de texto, que estava no disco, por falta de utili
zação, é trazido para a memória e reativado.

Relembrando nosso contexto, você trabalha em uma empresa de infraestru


tura como gerente de T.I. e irá representá-la em uma importante feira de te
cnologia. Durante a feira, um representante de T.I. de uma empresa de digit
alização de documentos visita o seu stand.

A empresa digitaliza e gerencia diversos documentos de pessoas físicas e d


e outras empresas, preservando e prevenindo a perda de documentos impo
rtantes. O representante informou que processa um grande volume de docu
mentos diariamente e liberou a memória física dos computadores, usando
a partição do HD como uma área de troca (swap) em que o sistema pode ar
mazenar áreas de memória que não estão sendo usadas.

Porém quanto menos memória física os computadores usavam e o swap er


a utilizado, ficavam cada vez mais lentos. Assim você é questionado:

• por que ocorre este problema?


• quais as sugestões você dará para resolvê-lo?
• aumentar a memória é sempre a melhor solução para evitar o swapp
ing e a lentidão do computador?
• qual o melhor algoritmo para definir em qual área livre o processo de
verá ser executado na memória?

Para que você consiga responder esses e outros questionamentos sobre sw


apping e os algoritmos de troca de processos, vamos conhecer mais sobre e
les. Lembre-se que ao fim dessa unidade, você deverá entregar um relatório
para o seu gestor, com os anteprojetos elaborados durante a feira.

Bons estudos!

Swapping e multiprogramação com


partições variáveis

Segundo Tanenbaum (2003), em sistemas de compartilhamento de tempo o


u computadores pessoais com memória RAM insuficiente para conter todo
s os processos ativos do sistema, é necessário que eles permaneçam em dis
co e sejam trazidos dinamicamente para a memória para serem executados
somente quando necessário. Neste caso, podem ser utilizados dois métodos
para o gerenciamento de memória: a troca de processos (swapping) e a me
mória principal.
Swapping: troca de processos

Segundo Tanenbaum (2003), a troca de processos (swapping) traz totalmen


te cada processo para a memória, o executa por algum tempo e o retorna pa
ra o disco.
A figura “Troca de processos na memória principal” apresenta o funcionam
ento da troca de processos, sendo que, inicialmente, somente o process
o A está na memória (figura (a)).
O processo B é trazido do disco para a memória (figura (b)) e em seguida o p
rocesso C (figura (c)).
O processo A é retirado da memória e retorna ao disco (figura (d)) e em segu
ida o processo D é trazido para a memória (figura (e)) e o processo B retorna
para o disco (figura (f)).
O processo A é trazido novamente na memória (figura (g)).

Troca de processos na memória principal. Fonte: Tanenbaum (2003, p. 145).


Segundo Machado e Maia (2007), o swapping permite maior compartilham
ento da memória principal e utilização dos recursos do sistema computacio
nal. Uma desvantagem é que aumenta o custo operacional de entrada/saíd
a. Quando existe pouca memória RAM disponível, o sistema pode ficar dedi
cado à execução do swapping, deixando de realizar tarefas mais críticas, se
tornando ineficiente.

O swapping não pode ser utilizado como solução para a questão da falta de
memória RAM pelo fato de ser um método lento. Outra questão é que nem s
empre adicionando mais memória no computador será resolvido o problem
a do swapping e performance, pois se o HD e a CPU estiverem ultrapassado
s, influenciarão o desempenho da máquina.

Nos sistemas operacionais atuais, as memórias tendem a ser maiores e rar


amente acontece a troca entre memória e disco.

______
💭 Reflita

Qual a vantagem de utilizar o swapping uma vez que os computadores atua


is possuem memórias com elevada capacidade de processar várias inform
ações ao mesmo tempo? E caso não seja suficiente, o usuário pode adquirir
mais memória RAM para ser inserida no computador? Um computador pod
e ser usado sem swapping?

______

Além disso, é necessário manter o antivírus do computador sempre atualiz


ado, uma vez que os vírus e programas maliciosos tendem a consumir muit
a memória, dificultando que programas com prioridade alta executem, forç
ando a utilização do swapping.

Um computador sem a devida utilização do antivírus, também pode ocasio


nar na demora para carregar os aplicativos e até mesmo travá-lo.

______
📝 Exemplificando
Para exemplificarmos o conceito de swapping, imagine que computador te
nha uma memória de 512 MB e você tem quatro processos para serem exec
utados com os tamanhos 481 MB, 508 MB, 380 MB e 369MB, respectivamen
te. O gerenciador de memória seleciona um processo inteiro para ser execu
tado em memória e os demais processos aguardam em disco a sua vez de e
xecutar. Se o primeiro processo (com o tamanho de 481 MB) for selecionado
para ser executado, ele é carregado para memória e executado por um temp
o determinado.

Assim que o tempo finalizar, o processo retorna para o disco e outro é seleci
onado para executar. Para a seleção de qual processo será executado são ut
ilizados algoritmos que utilizam de critérios para realizar a escolha.

______

Segundo Simioni (2018), no Windows o swap é um arquivo que está dentro


do diretório raiz (C:/) chamado PAGEFILE.SYS. Este arquivo é criado quand
o o Windows é instalado. O tamanho do arquivo de swap varia de acordo co
m a quantidade de memória RAM do computador.

Por exemplo, se o seu computador possui 2 GB de memória RAM, o tamanh


o do arquivo será de 2048MB. Além disso, o tamanho do arquivo pode ser al
terado e/ou desativado. No Linux, o swap é uma partição no diretório raiz (/
) e esta partição pode ser utilizada por vários sistemas operacionais.

______
➕ Pesquise mais

O grande problema com o uso de swap é que o HD é muito mais lento que a
memória RAM. Enquanto uma sequência de quatro leituras em um módulo
de memória DDR2-800 demora cerca de 35 bilionésimos de segundo, um ac
esso a um setor qualquer do HD demora pelo menos 10 milésimos.
Para saber mais sobre esse assunto, leia o tutorial hardware para iniciantes
, parte 3 Swap e cache de disco.
______
Multiprogramação com Partições Variáveis

Segundo Machado e Maia (2007), o esquema conhecido como alocação part


icionada dinâmica ou variável, consiste em ajustar dinamicamente o tama
nho das partições de memória quando os processos chegam para serem ex
ecutados. Além disso, cada processo utiliza um espaço necessário para exe
cutar, não acontecendo a fragmentação interna.

Porém, em alguns casos, pode acontecer a fragmentação externa quando os


processos, ao retornarem para o disco, deixarem pequenos espaços na me
mória, não permitindo que novos processos sejam executados, como por ex
emplo, o espaço entre os processos B e D (figura “Troca de processos na me
mória principal” (e)).

A vantagem das partições variáveis é a flexibilidade por não estar preso a u


m número fixo de partições, melhorando a utilização da memória, porém i
mpactando o gerenciamento das trocas de processos e na alocação e libera
ção da memória.

Segundo Tanenbaum (2003), quando as trocas deixam muitos espaços vazi


os é necessário agrupar esses espaços e combiná- los nos endereços mais b
aixos. Esta técnica é conhecida como compactação de memória, porém não
é utilizada devido ao alto tempo de processamento.

______
📝 Exemplificando

A compactação de memória é muito cara, pois gasta muito tempo de proces


samento. Por exemplo, se um computador possui uma memória de 256 MB
e que possa copiar 4 bytes em 40 nanossegundos (ns), gastaria em torno de
2,7 segundos para compactar toda a memória (TANENBAUM, 2003, p. 145).
Métodos de gerenciamento de
memória com alocação dinâmica

Quando os processos precisam consumir mais memória durante o process


amento, é necessário alocar memória dinamicamente. Existem dois métod
os de gerenciamento de memória com alocação dinâmica: com Mapa de Bi
ts e com Listas Encadeadas.
Gerenciamento de Memória com Mapa de Bits

Segundo Tanenbaum (2003), neste método a memória é dividida em unida


des de alocação, a qual é associado um bit no mapa de bits. Se o valor do bit
for 1, indica que a unidade está ocupada e o se o bit for 0 ela está livre.
A figura “Mapa de bits e uma parte da memória” apresenta o mapa de bits e
a memória dividida em unidades de alocação A figura (a) mostra uma parte
da memória com cinco segmentos alocados a processos (A, B, C, D e E) e trê
s segmentos de memória livre (espaços vazios). A figura (b) apresenta o ma
pa de bits correspondente a memória. Segmento é uma área de memória al
ocada a um processo ou uma área livre de memória entre dois processos.
Por exemplo, na primeira partição da memória representada por 8 bits, foi a
locado o processo A com cinco unidades de alocação (bits igual a 1) e três u
nidades de memória livre (bits igual a 0).
Na partição seguinte, o processo B alocou seis unidades e o processo C som
ente 2, uma vez que as partições foram divididas em 8 bits cada e não comp
ortava todo o processo.
O processo C utilizou duas unidades de alocação da próxima partição, duas
unidades de memória livre e o processo D utilizou 4 unidades.
Na última partição do exemplo, o processo D utilizou duas unidades de aloc
ação, o processo E três unidades e três unidades de memória livre. Quanto
menor for a unidade de alocação, maior será o mapa bits.

Mapa de bits e uma parte da memória. Fonte: Tanenbaum (2003, p. 146).


A vantagem do mapa de bits é a simplicidade do gerenciamento de alocaçã
o de memória, uma vez que o tamanho do mapa depende somente do tama
nho da memória e da unidade de alocação.

A desvantagem surge quando é necessário carregar um processo com um d


eterminado número de unidades consecutivas, necessitando que o gerenci
ador de memória procure essa sequência no mapa de bits, cujo processo é l
ento.
Gerenciamento de Memória com Listas Encadeadas
Segundo Tanenbaum (2003), este método consiste em manter uma lista en
cadeada de segmentos alocados e livres na memória. A figura “Lista encad
eada e uma parte da memória (a)” mostra uma parte da memória com cinc
o segmentos alocados a processos (A, B, C, D e E) e três segmentos de mem
ória livre (espaços vazios).

A figura (c) apresenta a lista encadeada e a memória dividida em unidades


de alocação. Cada elemento dessa lista especifica um segmento de memóri
a disponível (H) ou de memória alocada ao processo (P), o endereço onde se
inicia o segmento e um ponteiro para o próximo elemento da lista.
Por exemplo, o processo A possui memória alocada (P), inicia na posição 0 (
zero), tem o tamanho de cinco unidades de alocação e possui um ponteiro p
ara o próximo elemento. O próximo elemento é um segmento de memória d
isponível (H), inicia na posição 5, possui o tamanho de três unidades e apon
ta para o próximo segmento.

A vantagem deste método é que a lista está ordenada por endereço facilita
ndo a rápida atualização após o término do processo.

Lista encadeada e uma parte da memória. Fonte: Tanenbaum (2003, p. 146).

Algoritmos de Troca de Processos


Segundo Machado e Maia (2007), existem estratégias ou algoritmos para de
finir em qual área livre os processos serão executados por meio da lista enc
adeada. Estes algoritmos reduzem ou evitam a fragmentação externa.

Confira a seguir os algoritmos de alocação de memória (TANENBAUM, 200


3).

• First Fit (primeiro que couber): é o algoritmo mais simples e que cons
ome menos recurso do sistema. O gerenciador de memória procura a
o longo da lista por um segmento livre que seja suficientemente gran
de para esse processo.
• Next Fit (próximo que couber): este algoritmo é uma variação do Firs
t Fit. A posição em que encontra o segmento de memória disponível
é memorizada, não precisando percorrer toda lista quando se quer al
ocar.
• Best Fit (melhor que couber): percorre toda lista e escolhe o menor se
gmento de memória livre suficiente ao processo. Este algoritmo é ma
is lento uma vez que procura em toda a lista.
• Worst Fit (pior que couber): sempre é escolhido o maior segmento de
memória disponível de maneira que, quando dividido, o segmento di
sponível restante fosse suficientemente grande para ser útil depois.
Simulações mostram que este algoritmo não é uma boa ideia a ser us
ado.
• Quick Fit (mais rápido que couber): É um algoritmo rápido e mantém
listas separadas por tamanhos de segmentos de memória mais solici
tados disponível.

______
🔁 Assimile

Vimos nesta aula como funcionam os algoritmos de troca de processos. Ele


s são usados para escolher em qual segmento de memória livre será alocad
o o processo que será executado. A estratégia a ser usada pelo gerenciador
de memória para a escolha de qual algoritmo utilizar irá depender de fatore
s, como o tamanho dos processos executados no ambiente e das áreas livre
s disponíveis.

______

A figura “Algoritmos de alocação de memória” exemplifica o funcionament


o dos algoritmos Best Fit, Worst Fit e First Fit.
O processo F (com tamanho de 1 kb) está aguardando para ser executado na
memória principal. Na memória principal está em execução os processo
s C e A e contém três segmentos de memória livres com os tamanhos de 4
kb, 5 kb e 3 kb, respectivamente.
Antes do processo F iniciar a execução na memória principal, o algoritmo B
est Fit seleciona na lista o menor segmento de memória livre. Assim, a part
ição com o tamanho 3 kb foi selecionada para executar o processo, deixand
o 2 kb de espaço vazio.

Utilizando o algoritmo Worst Fit que escolhe o maior segmento de memóri


a disponível, a partição com o tamanho 5 kb foi selecionada para executar
o processo, deixando 4 kb de espaço vazio. Se for utilizado o algoritmo First
Fit que procura na lista pelo primeiro segmento livre que seja suficienteme
nte grande para esse processo, será selecionada a partição com o tamanho
4 kb para executar o mesmo, deixando 3 kb de espaço vazio.

Nos algoritmos First Fit e Best Fit ocorre a fragmentação externa.

Algoritmos de alocação de memória. Fonte: Machado e Maia (2007, p. 155).

Conclusão
Agora que você já conheceu o funcionamento do swapping e dos algoritmo
s de troca de processos, vamos voltar ao nosso contexto. Você é um gerente
de T.I. de uma empresa de infraestrutura e está representando-a numa feir
a de tecnologia. Um representante de T.I. de uma empresa de digitalização
de documentos visita o seu stand e relata que digitaliza e gerencia diversos
documentos de pessoas físicas e de outras empresas, preservando e preven
indo a perda de documentos importantes.

Ele ainda relatou que os computadores ficavam cada vez mais lentos, apes
ar de diminuírem o uso de memória física.

• Por que ocorre este problema?

• Aumentar a memória RAM é sempre a melhor solução para evitar

o swapping e a lentidão do computador?


• Quais as sugestões você dará para resolvê-lo?

• Qual o melhor algoritmo para definir em qual área livre o processo d


everá ser executado na memória?

Os sistemas operacionais quando possuem pouca memória RAM utilizam o


disco ou um arquivo para processar os programas, carregando-os na memó
ria principal, executando-os e, logo após a execução, o retorna para o disco.
Esse método evita que os programas travem, porém impacta diretamente n
o desempenho do sistema operacional.

O swapping não pode ser utilizado como solução para a questão da falta de
memória RAM. No caso do estudante, ele reservou uma partição do HD par
a ser utilizada como uma área de swapping. A utilização do swapping deix
a a máquina mais lenta, porque o processador precisa procurar no disco as
informações necessárias.

A memória RAM auxilia o processador, gravando as informações que são u


sadas frequentemente pelos processos e auxiliando na transferência dos d
ados entre memória e disco (DAQUINO, 2018). Nem sempre adicionando ma
is memória será resolvido o problema do swapping e performance, pois out
ros fatores como, HD e a CPU antigos, influenciaram o desempenho da máq
uina. No caso do representante de T.I. da empesa de digitalização de docum
entos, é necessário que ele adquira mais memória RAM para o seu computa
dor de forma que um maior número de processos consiga executar diretam
ente nela, reduzindo o uso do swapping.

Além disso, ele deve reduzir o tamanho da área do swapping para permitir
que a maioria dos processos executem diretamente na memória principal,
e somente quando necessário seja realizada a troca de processos. A estraté
gia utilizada pelo gerenciador de memória para a escolha de qual algoritmo
utilizar irá depender de fatores, por exemplo, o tamanho dos processos exec
utados.

O algoritmo First Fit (primeiro que couber) é o que consome menos recurso
do sistema por escolher a primeira partição livre que comporte a execução
do processo, porém existe um grande desperdício de espaço livre.

O algoritmo Best Fit (melhor que couber) verifica em toda a memória a mel
hor partição que comporte a execução do processo, o que o torna mais lento
.
Nos algoritmos First Fit e Best Fit ocorre a fragmentação externa.

Já o algoritmo Worst Fit (pior que couber) escolhe a maior partição livre pa
ra a execução do processo, porém não é recomendado o seu uso.

Em casos que seja necessário criar mais espaço na memória é recomendad


o o uso do algoritmo Worst Fit. Já para agilidade do processo é recomendad
o que seja utilizado o algoritmo Best Fit.

Unidade 4 / Aula 3

Memória virtual

Introdução da aula

Qual é o foco da aula?

Nesta aula, vamos apresentar os conceitos de memória virtual e suas carac


terísticas, como se dá a paginação, a tabela de páginas e a segmentação, alé
m de entender o funcionamento dos algoritmos de substituição de páginas.
Objetivos gerais de aprendizagem
Ao longo desta aula, você irá:

• descrever os conceitos e as características da técnica memória virtu


al;
• explicar os objetivos e o funcionamento dos algoritmos de substituiç
ão de páginas;
• analisar os espaços de endereçamento independentes chamados de
segmentos.

Situação-problema

A memória virtual é um espaço reservado no disco rígido do computador p


ara ser utilizado quando a memória RAM não é suficiente para executar os
processos. Neste caso, uma parte dos processos ficam em disco aguardand
o a liberação da memória para executar enquanto outros processos estão e
m execução.

Para entendermos melhor o conceito de memória virtual, observe o seguint


e exemplo: suponha que você quer executar um aplicativo de restauração d
e imagens que possui um tamanho de 100 MB e um programa de edição de
textos com um tamanho de 60 MB, porém a memória RAM do seu computa
dor tem espaço para comportar programas de até 145 MB.

Neste caso, seria carregado na memória RAM o aplicativo de restauração d


e imagens (com 100 MB) e uma parte do programa de edição de textos (45
MB) e o restante ficaria em disco para serem executados posteriormente a
medida que a memória fosse liberada.

Relembrando nosso contexto, você trabalha em uma empresa de infraestru


tura como gerente de T.I. e irá representá-la em uma importante feira de te
cnologia. Durante a feira, um proprietário de uma loja de jogos digitais está
à procura de ajuda para resolver o problema de baixa memória virtual dos c
omputadores de sua loja e procura o seu stand.
Ele alega que quando os computadores executam vários programas de uma
vez e o consumo de memória é mais elevado, os mesmos chegam no limite
do consumo e travam, além de fechar os programas que estão abertos. Assi
m surgem os seguintes questionamentos:

• o que aconteceu no computador neste caso?


• qual a solução que você dará para este problema?
• quais são os algoritmos de substituição de páginas mais eficientes e
m relação ao desempenho do sistema?

Para que você consiga responder a esses e a outros questionamentos sobre


memória virtual, vamos conhecer mais sobre eles, e, assim, você conseguir
á entregar um relatório para o seu gestor, com os anteprojetos elaborados d
urante a feira.

Bons estudos!

Técnicas de gerência de memória


Segundo Tanenbaum (2003), um dos grandes desafios dos programadores e
ra lidar com programas maiores que a memória física disponível. Neste cas
o, a técnica de overlay (sobreposição) era utilizada para dividir o programa
em módulos em que cada um destes era carregado em memória ou perman
ecia em disco à medida que eram solicitados.

Porém, a divisão do programa em overlay era feita pelo programador, o que


ocasionava demora em seu trabalho. Com isso, foi desenvolvida uma técni
ca cuja divisão do programa era feita pelo sistema operacional, chamada m
emória virtual.
Memória Virtual

Segundo Tanenbaum (2003), um computador que utiliza memória virtual p


ermite que o volume de informações de um programa como código dado e
pilha ultrapasse a quantidade total de memória física disponível para ele,
mantendo as partes ativas na memória e as demais no disco rígido. A mem
ória virtual é um arquivo dinâmico e de tamanho variável na maioria dos s
istemas operacionais.

Segundo Machado e Maia (2007), a memória virtual permite que vários pro
cessos compartilhem a memória principal, uma vez que, somente algumas
partes dos processos estarão ativas na mesma, possibilitando uma utilizaç
ão eficiente do processador e reduzindo a fragmentação da memória princi
pal. Em sistemas com memória virtual é utilizada uma técnica chamada p
aginação que será descrita a seguir.

______
➕ Pesquise mais

A utilização da memória virtual permite o compartilhamento da memória f


ísica entre vários aplicativos ao mesmo tempo. Além disso, cada programa
enxerga uma versão virtual própria da memória.
Para saber mais sobre esse assunto indicamos o artigo Como funciona a m
emória virtual?, do autor Gabriel Gugik.
______
Paginação e tabela de páginas

Segundo Machado e Maia (2007), a paginação é a técnica de gerência de me


mória em que o endereçamento virtual e o espaço de endereçamento real s
ão divididos em blocos do mesmo tamanho, chamado páginas. Foi criada p
ara fornecer um espaço de endereçamento linear sem a necessidade de adq
uirir mais memória física.

Segundo Tanenbaum (2003), os programas geram endereços virtuais e con


stituem o espaço de endereçamento virtual. Nos sistemas operacionais que
não possuem memória virtual, o endereço virtual e o endereço físico são os
mesmos.

Já nos sistemas operacionais que trabalham com a memória virtual, o end


ereço virtual é enviado para a MMU (memory management unit, em que u
m chip está localizado na CPU (Central Processing Unit ou unidade central
de processamento) que mapeia (estrutura) os endereços virtuais em endere
ços físicos, conforme apresentado na figura a seguir.

A CPU gera os endereços virtuais e os envia a MMU, que por sua vez envia
os endereços físicos para a memória.
Localização da MMU e sua função. Fonte: Tanenbaum (2003, p. 150).
Ainda segundo Tanenbaum (2003), a figura “MMU – mapeamento de ender
eço virtual em físico” apresenta o funcionamento do mapeamento de ender
eços virtuais para endereços físicos realizado pela MMU. O computador pos
sui uma memória virtual de 64 KB (gerando endereços virtuais de 16 bits de
0 a 64 K) e uma memória física de 32 KB.

Programas podem ser maiores que o tamanho da memória física, mas não
podem ser totalmente carregados nela, devendo permanecer em disco. O en
dereço virtual divide-se em unidades conhecidas como páginas e sua refer
ência na memória física são as molduras de página. As páginas e as moldu
ras de páginas têm o mesmo tamanho e a movimentação entre disco e me
mória são sempre realizadas em unidades de página.
MMU – mapeamento de endereço virtual em físico. Fonte: Tanenbaum (2003, p. 151).
Na figura acima existem 16 páginas virtuais e oito molduras de página. Qua
ndo um programa tenta acessar o endereço 0, o endereço virtual 0 é enviad
o a MMU, que o localiza na página virtual (0 a 4 K) e que corresponde a mol
dura de página 2 (8 K a 12 K).

A MMU então transforma o endereço virtual 0 no endereço físico 8 K e o en


via à memória por meio do barramento. Como existem apenas oito moldur
as de página física, somente oito páginas virtuais podem ser mapeadas.

Se um programa acessar uma página que não esteja mapeada (como a pági
na entre 32 k e 36 k), a MMU faz esta validação e desvia para o sistema ope
racional. Esta interrupção (trap) é chamada de falta de página.

Segundo Tanenbaum (2003), na falta de página o sistema operacional selec


iona uma moldura de página para salvar no disco (por exemplo, a moldura
1), marca na tabela de páginas virtuais a entrada escolhida como não mape
ada (marcando com um X), carrega a página virtual referenciada pela instr
ução na moldura de página recém liberada (substituindo o X pela moldura
1), e marca na tabela de páginas virtuais a entrada da nova página virtual (
página 8) como mapeada (moldura 1).
Ou seja, a MMU transformará o endereço virtual 32 K no endereço físico 4
K. O mapeamento realizado pela MMU dá-se por meio da tabela de páginas.
O objetivo da tabela é mapear páginas virtuais em molduras de página físic
a.

Segundo Silberschatz, Galvin e Gagne (2015), a tabela de páginas contém o e


ndereço virtual de cada moldura de página na memória física, e o número
da página é utilizado como um índice na tabela. Cada processo possui sua t
abela própria e cada página possui uma entrada nela.

Segundo Tanenbaum (2003), cada página na tabela possui um bit presente/


ausente. Se o bit for 0 (zero), indica uma interrupção por falta de página e c
aso o bit tenha o valor 1, a página está mapeada na memória. O número da
moldura deve ser concatenado com os bits de deslocamento formando o en
dereço físico.

A figura “Operação interna da MMU com 16 páginas” apresenta um exempl


o de como a MMU trabalha junto comatabela de páginas.

O endereço virtual, 8196 (0010000000000100), é mapeado para o endereço fí


sico 24580 (endereço físico de saída). O endereço virtual de 16 bits (0010000
000000100) que chega a MMU é dividido num número de página de 4 bits (
0010) mais significativos e um deslocamento de 12 bits (000000000100) me
nos significativos. O número da página (0010 = 2) é usado como índice para
a tabela de páginas.

Se o bit presente/ausente for 1, o número da moldura de página encontrado


na tabela será copiado para os três bits (110) mais significativos concatenad
os ao deslocamento de 12 bits do endereço virtual que não sofreu alteração (
110000000000100). O registrador envia para a memória o endereço físico via
barramento, conforme apresentado na figura.
Operação interna da MMU com 16 páginas. Fonte: Tanenbaum (2003, p. 152).

Algoritmos de substituição de
páginas

Segundo Machado e Maia (2007), um dos maiores desafios na gerência de


memória virtual por paginação é decidir quais as páginas devem ser libera
das. Quando uma falta de página ocorre, o sistema operacional precisa esco
lher uma a ser removida da memória, a fim de liberar espaço para uma nov
a ser trazida. Quanto menor for o tempo gasto com as recargas de páginas,
mais eficiente será o algoritmo.

Segundo Tanenbaum (2003), se na memória a página teve alteração, ela de


verá retornar ao disco rígido e atualizar a cópia da página virtual que está l
á. Senão, não é preciso retornar com a página para o disco. Nos casos em qu
e ocorre falta de página, pode ser escolhido de forma aleatória uma página
a ser removida, porém é melhor escolher uma página que não foi muito usa
da.

Segundo Machado e Maia (2007), os algoritmos de substituição de páginas t


êm o objetivo de selecionar as páginas com as menores chances de serem r
eferenciadas (utilizadas) no futuro. A seguir veremos os algoritmos de subs
tituição de páginas.

• Algoritmo de substituição de página ótimo

Segundo Machado e Maia (2007), o algoritmo de substituição de página óti


mo seleciona uma página que não será referenciada no futuro ou aquela qu
e demorará a ser utilizada novamente. Este algoritmo garante uma menor
paginação, porém é impossível de ser implementado, uma vez que o sistem
a operacional não consegue prever o futuro das aplicações e saber quando c
ada página será referenciada novamente.

• Algoritmo de substituição de página não recentemente utilizada (N


UR)

Segundo Tanenbaum (2003), muitos computadores que utilizam a memória


virtual possuem dois bits R (referenciada) e M (modificada) associados a ca
da página virtual para identificar quais páginas físicas estão sendo usadas
e quais não estão. No algoritmo NUR, quando um processo é iniciado os bits
R e M são colocados em 0 para todas as páginas. Periodicamente, o bit R é li
mpo de modo que diferencie as páginas que não foram referenciadas recen
temente daquelas que foram.

Quando acontece uma falta de página, o sistema operacional verifica todas


as páginas e as separa em quatro categorias, com base nos bits R e M.

• Classe 0: não referenciada, não modificada.


• Classe 1: não referenciada, modificada.
• Classe 2: referenciada, não modificada.
• Classe 3: referenciada, modificada.

O algoritmo remove aleatoriamente uma página de classe de ordem mais b


aixa que não esteja vazia, ou seja, remove uma página modificada, mas não
referenciada. O algoritmo NUR é simples e de fácil implementação.

Por exemplo, suponha que as páginas virtuais 0, 1, 2 e 3, iniciaram todas co


m os valores zero. Num determinado momento foram associados aos bits r
eferenciada e modificada os seguintes valores:

Como o algoritmo retira a página de ordem mais baixa, que esteja vazia e q
ue tenha sido modificada, mas não referenciada, as páginas 0 e 2 poderiam
ser removidas segundo o algoritmo NUR.

• Algoritmo de substituição de página FIFO


Segundo Machado e Maia (2007), no algoritmo de substituição de páginas F
IFO (first in first out), a primeira página utilizada será a primeira a ser escol
hida para ser removida. As páginas são inseridas em uma fila sendo que as
mais antigas estão no início e as mais recentes no final. É um algoritmo de
baixo custo, porém quase não é implementado em função de escolher pági
nas antigas que sempre são referenciadas.

______
📝 Exemplificando

Para exemplificar o funcionamento do algoritmo FIFO, suponha que as pági


nas virtuais 0, 1, 2 e 3, iniciaram todas com os valores zero e estão em fila.
A página 0 foi a primeira página a ser utilizada no tempo 10, logo em seguid
a a página 1 no tempo 30, depois a página 2 no tempo 40 e por último a pági
na 3 no tempo 80.

Como o algoritmo FIFO desconsidera as páginas que foram referenciadas n


a última utilização, independentemente de sua importância, a página 0 seri
a removida.

______

• Algoritmo de substituição de página de segunda chance (SC)


O algoritmo FIFO não leva em consideração a retirada de uma página usad
a constantemente. Segundo Tanenbaum (2003), uma alteração simples evit
aria a eliminação de uma página muito usada. Basta verificar o bit de refer
ência da página mais antiga.

Se o bit R for 0, a página não está sendo usada e pode ser substituída. Se o b
it R for 1 será colocado em 0, e essa página será inserida no final da lista co
mo se ela tivesse acabado de ser carregada na memória.

A figura “Algoritmo segunda chance”(a) apresenta uma lista com as página


s de A até H ordenadas por ordem de chegada na memória (a página A che
gou no instante 0, a página B no instante 3, a página C no instante 7, e assi
m por diante).

Caso ocorra uma falta de página no instante 20, o bit R da página A (que é a
mais antiga) é verificado. Se o valor do bit R for 0 (zero) a página é retirada
da memória, caso contrário A será inserida no final da fila no instante 20 (f
igura (a)) e R receberá o valor 0. O algoritmo continua a percorrer a lista a p
artir da página B para encontrar uma página que possa ser substituída.

Algoritmo segunda chance. Fonte: Tanenbaum (2003, p. 162).

• Algoritmo de substituição de página relógio


Este algoritmo mantêm todas as páginas em uma lista circular em forma d
e relógio e um ponteiro apontando para a ‘cabeça’ da lista, ou seja, para a pá
gina mais antiga. A figura “Algoritmo de substituição de página relógio”apr
esenta o funcionamento do algoritmo, (TANENBAUM, 2003).

Quando ocorre uma falta de página, o ponteiro aponta para a página mais a
ntiga e o bit R é verificado (página C). Se o valor do bit R for 0 (zero) a págin
a é retirada da memória e o ponteiro avança uma posição. Caso contrário, R
receberá o valor 0 e o ponteiro avançará para a página mais antiga. A difere
nça entre o algoritmo SC para o algoritmo relógio está na implementação.

O algoritmo SC é implementado através de fila e o relógio através de uma li


sta circular.

Algoritmo de substituição de página relógio. Fonte: Tanenbaum (2003, p. 162).

• Algoritmo de substituição de página menos recentemente utilizada (


MRU)

Segundo Tanenbaum (2003), este algoritmo é baseado na observação de qu


e páginas referenciadas intensamente nas últimas instruções provavelme
nte serão novamente utilizadas, e páginas que não foram referenciadas nã
o serão utilizadas na próxima instrução.
Este algoritmo aproxima- se do desempenho do algoritmo ótimo e possui u
ma implementação onerosa, pois mantem uma lista encadeada na memóri
a com as páginas mais utilizadas no início da lista e as menos utilizadas n
o final, sendo necessário a sua atualização a cada referência de memória.

______
🔁 Assimile

Para melhor assimilação dos algoritmos de substituição de páginas, segue


um resumo apresentando as características de cada um:

• o algoritmo ótimo possui um bom desempenho, porém não é implem


entável.
• o algoritmo NUR é simples e de fácil implementação.
• já o algoritmo FIFO não leva em consideração páginas que são const
antemente utilizadas.
• o algoritmo SC é o algoritmo FIFO melhorado.
• o algoritmo relógio é realista e o algoritmo MRU é um bom algoritmo
porém difícil de ser implementado.

Segmentação
Segundo Tanenbaum (2003), a memória virtual é unidimensional, uma vez
que inicia da posição 0 e vai até um endereço máximo. Em alguns casos iss
o pode ser um problema. Por exemplo, durante a execução de um compilad
or são gerados o texto fonte pré-processado, uma tabela de símbolos, uma t
abela de constantes, uma árvore sintática e uma pilha.

O texto fonte, a tabela de símbolos, a tabela de constantes e a árvore sintáti


ca crescem continuamente durante a compilação, enquanto a pilha varia d
e tamanho. Se um programa possui um número grande de variáveis, o espa
ço reservado para elas na tabela de símbolos pode se esgotar à medida que
o compilador é executado e sobrará espaço nas outras tabelas.

Para resolver este problema, basta fornecer ao computador vários espaços


de endereçamento independentes chamados de segmentos. O segmento é u
ma unidade lógica que pode ser um vetor ou uma pilha, por exemplo, sendo
de conhecimento do programador.

Cada segmento tem um tamanho dinâmico e independente dos outros (que


varia de 0 a um valor máximo), conforme apresentado na figura “Memória
segmentada”, permitindo que o segmento aumente ou diminua durante a e
xecução. Os endereços são compostos pelo número do segmento e um desl
ocamento dentro do segmento.
Memória segmentada. Fonte: Tanenbaum (2003, p. 187).
A segmentação facilita o compartilhamento de procedimentos ou dados en
tre vários processos, por exemplo, o uso de uma biblioteca compartilhada, e
vitando que estas bibliotecas sejam replicadas em cada endereçamento de
cada processo.

Segmentos podem ter diferentes proteções, como um segmento que armaze


na código pode ser definido apenas para execução, um segmento que arma
zena constantes, somente leitura e um segmento de pilha como leitura/esc
rita. As tentativas de acesso indevido podem ser capturadas e tratadas pel
o hardware ou pelo sistema operacional.

______
💭 Reflita

Levando em consideração os computadores atuais em relação a quantidad


e de memória principal disponível, qual a melhor técnica a ser utilizada: pa
ginação ou segmentação? Em relação à proteção qual a complexidade de i
mplementação da segmentação? E da paginação?

______
Para finalizarmos, seguem as principais diferenças entre paginação e segm
entação:

Critérios de segmentação e paginação. Fonte: elaborado pela autora (2018).


Pronto! Agora você já conhece os principais aspectos acerca da memória vi
rtual! Encerramos aqui nossa disciplina e esperamos que a tenha aproveita
do ao máximo! Em caso de dúvidas, não deixe de consultar os conteúdos já
estudados!

Conclusão
Agora que você já aprendeu sobre os conceitos de memória virtual, paginaç
ão e segmentação, vamos relembrar o nosso contexto. Durante a feira, um p
roprietário de uma loja de jogos digitais está à procura de ajuda para resolv
er o problema de baixa memória virtual dos computadores de sua loja e pro
cura o seu stand.

Diante dos problemas relatados por ele, surgem os seguintes questionamen


tos:

• o que aconteceu no computador neste caso?


• qual a solução que você dará para este problema?
• quais são os algoritmos de substituição de páginas mais eficientes e
m relação ao desempenho do sistema?

Neste caso, quando a mensagem de memória virtual baixa aparece é porqu


e vários programas estão executando e consumindo memória, e o computa
dor está no limite do seu uso, ou seja, pouca memória física disponível para
processar o número de processos. Em alguns casos, ao iniciar o computado
r, nenhum processo consegue ser executado, e todos os programas abertos
pelo usuário são fechados, uma vez que, dependendo da quantidade de me
mória e se existirem programas pesados sendo executados, isso irá acontec
er.

A memória virtual, por ser um arquivo e funcionar como uma extensão da


memória RAM, deve ser configurado de forma a atender a falta de memória
física. O recomendado é que o arquivo de memória virtual tenha 1,5 o tama
nho da memória física do computador. O tamanho do arquivo pode ser alter
ado manualmente para corrigir os problemas de travamento nos sistemas
operacionais Linux e Windows.

Os algoritmos de substituição de páginas têm o objetivo de selecionar as pá


ginas com as menores chances de serem referenciadas (utilizadas) no futu
ro, e escolher uma página a ser removida da memória a fim de liberar espa
ço para uma nova a ser trazida. Quanto menor for o tempo gasto com as rec
argas de páginas, mais eficiente será o algoritmo.

A escolha do melhor algoritmo a ser utilizado dependerá dos pré-requisitos


definidos pelo kernel do sistema operacional. O algoritmo ótimo possui um
bom desempenho, porém não é implementável. O algoritmo NUR é simples
e de fácil implementação. Já o algoritmo FIFO não leva em consideração pá
ginas que são constantemente utilizadas. O algoritmo SC é o algoritmo FIF
O melhorado. O algoritmo relógio é realista e o algoritmo MRU é um bom al
goritmo, porém difícil de ser implementado.

O relatório com os anteprojetos elaborados durante a feira e entregue para o


gestor levou em consideração a necessidade de cada cliente e a solução pro
posta para eles. Para o cliente que possui pouca memória física em seu com
putador e não conseguem processar os dados da empresa foi sugerido ao cl
iente a aquisição de mais memória RAM para suportar o volume de dados.

Mesmo aumentando a quantidade de memória da empresa se as máquinas


não conseguirem processar os dados corretamente, será necessário trocar
o computador para um mais potente. Em relação ao estudante de tecnologi
a que questionou sobre o uso do swap que deixava a máquina lenta, foi sug
erido que o swapping não pode ser utilizado como solução para a questão d
a falta de memória RAM.

Assim ele deve adquirir mais memória e reduzir a área de swap para melh
or o desempenho do computador. Em relação ao cliente com a mensagem d
e memória virtual baixa o mesmo foi orientado a aumentar o tamanho do a
rquivo de memória virtual para auxiliar a execução dos programas.

Referências

BARTLETT, D. Por dentro do gerenciamento de memória. Disponível em: <


https:// www.ibm.com/developerworks/br/library/l-memory/l-memory-p
df.pdf/>. Acesso em: 14 jun. 2018.
DAQUINO, F. Adicionar memória RAM sempre vai deixar o meu PC mais rá
pido? Disponível em: <https://www.tecmundo.com.br/memoria-ram/48168
-adicionar-memoria-ram-sempre-vai-deixar-o-meu-pc-mais-rapido-.htm>.
Acesso em: 04 jul. 2021.
FILHO, R. G. N. Hierarquia de memórias. Disponível em: <http://www.di.ufp
b.br/ raimundo/Hierarquia/Hierarquia.html>. Acesso em: 11 jun. 2018.
GUGIK, G. Como funciona a memória virtual? Disponível em: <https://www
.tecmundo.com.br/internet/2190-como-funciona-a-memoria-virtual-.htm>.
Acesso em: 04 jul. 2021.
JUNIOR, L. A. P. L. Gerência de memória. Disponível em: <http://www.ppgi
a.pucpr. br/~laplima/ensino/so/materia/03_memoria.html/>. Acesso em: 1
2 jun. 2018.
KLEINA, N. Como funcionam as diferentes memórias quando o computado
r está em uso. Disponível em: <https://www.tecmundo.com.br/armazenam
ento/9415-como-funcionam-as-diferentes-memorias-quando-o-computado
r-esta-em-uso.htm>. Acesso em: 04 jul. 2021.
MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 4. ed. R
io de Janeiro: LTC, 2007.
MORIMOTO, C. E. Hardware para iniciantes, parte 3. Disponível em: <https:
//www.hardware.com.br/tutoriais/hardware-iniciantes-3/pagina3.html>.
Acesso em: 04 jul. 2021.
SALES E. Memória virtual. Disponível em: <https://www.oficinadanet.com.
br/ artigo/730/memoria_virtual>. Acesso em: 04 jul. 2021.
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G. Fundamentos de sistemas op
eracionais. 9. ed. Rio de Janeiro: LTC, 2015.
SIMIONI, D. O que é a memória SWAP? Disponível em: <https://www.diolin
ux.com.br/2014/09/o-que-e-memoria-swap.html>. Acesso em: 04 jul. 2021.
SOUZA, P. S. L.; BRUSCHI, S. M. Por que estudar a hierarquia de memória? D
isponível em: <http://amnesia.lasdpc.icmc.usp.br/hierarquia-de-memoria/
>. Acesso em: 04 jul. 2021.
TANENBAUM, A. S. Sistemas operacionais modernos. 2. ed. São Paulo: Pea
rson, 2003.

Questão 1
Correta
Questão com problema?

Segundo Tanenbaum (2003), o Algoritmo de Substituição de Página menos


Recentemente Utilizada (MRU) é baseado na observação de que páginas referenciadas
intensamente nas últimas instruções provavelmente serão novamente utilizadas e páginas
que não foram referenciadas não serão utilizadas na próxima instrução.
Sobre o MRU, avalie as seguintes asserções e a relação entre elas.

Este algoritmo aproxima-se do desempenho do algoritmo ótimo e possui uma


implementação .

POR
QUE
Mantém uma lista encadeada na memória com as páginas mais utilizadas no início da
lista e as menos utilizadas no final, sendo necessário à sua atualização a cada referência
de memória.

A respeito dessas asserções, assinale a alternativa correta.

Sua resposta
Correta
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

Comentário

Alternativa Correta: As asserções I e II são proposições verdadeiras, e a II é uma


justificativa da I. Segundo Tanenbaum (2003), o algoritmo de Substituição de Página
menos Recentemente Utilizada (MRU) é baseado na observação de que páginas
referenciadas intensamente nas últimas instruções provavelmente serão novamente
utilizadas e páginas que não foram referenciadas não serão utilizadas na próxima
instrução. Este algoritmo aproxima-se do desempenho do algoritmo ótimo e possui uma
implementação onerosa, pois mantem uma lista encadeada na memória com as páginas
mais utilizadas no início da lista e as menos utilizadas no final, sendo necessário à sua
atualização a cada referência de memória.

Questão 2
Correta
Questão com problema?

Segundo Machado e Maia (2007), a memória virtual permite que vários processos
compartilhem a memória principal, uma vez que, somente algumas partes dos processos
estarão ativas na mesma, possibilitando uma utilização eficiente do processador e
reduzindo a fragmentação da memória principal. Um dos maiores desafios na gerência de
memória virtual por paginação é decidir quais as páginas devem ser liberadas.

Quando uma falta de página ocorre, o sistema operacional precisa

Sua resposta
Correta
escolher uma a ser removida da memória, a fim de liberar espaço para uma nova ser
trazida.

Comentário

Alternativa Correta: escolher uma a ser removida da memória, a fim de liberar


espaço para uma nova ser trazida. Segundo Machado e Maia (2007), um dos
maiores desafios na gerencia de memória virtual por paginação é decidir quais as
páginas devem ser liberadas. Quando uma falta de página ocorre, o sistema operacional
precisa escolher uma a ser removida da memória, a fim de liberar espaço para uma nova
ser trazida.

Questão 3
Correta
Questão com problema?
o esquema conhecido como alocação particionada dinâmica ou variável, consiste em
ajustar dinamicamente o tamanho das partições de memória quando os processos chegam
para serem executados. Além disso, cada processo utiliza um espaço necessário para
executar, não acontecendo a fragmentação interna.

MACHADO, F. B.; MAIA, L. P. Arquitetura de Sistemas Operacionais. 4.ed. Rio de


Janeiro: LTC, 2007.

De acordo com o contexto apresentado, o esquema que possui essas características é o/a

Sua resposta
Correta
Multiprogramação com partições variáveis.

Comentário

Alternativa Correta: Multiprogramação com partições variáveis. O nome do


esquema que possui tais características é multiprogramação com partições
variáveis. As demais alternativas incorretas são: Paginação é a técnica de gerencia de
memória em que o endereçamento virtual e o espaço de endereçamento real são
divididos em blocos do mesmo tamanho, chamados páginas. Monoprogramação sem
troca de processos é o método de gerenciamento de memória mais simples, pois
somente um programa é executado por vez e a memória é compartilhada entre o sistema
operacional e o programa. Multiprogramação com partições fixas é um método, em que
a memória é dividida em n partições de tamanhos diferentes, podendo ser definida
quando o sistema for iniciado. Realocação é um problema essencial da
multiprogramação. É a transferência de um código de um local para outro de forma que
um programa não escreva na área de outro programa sendo necessária uma vez que
processos executam em diferentes endereços na memória física.
Questão 4
Correta
Questão com problema?

Segundo Machado e Maia (2007), desde os primeiros sistemas operacionais a memória


do computador era considerada como um recurso caro e escasso. Mesmo com a redução
de custo e aumento da capacidade de armazenamento das memórias, gerenciar o seu uso
é fundamental e complexo.

MACHADO, F. B.; MAIA, L. P. Arquitetura de Sistemas Operacionais. 4.ed. Rio de


Janeiro: LTC, 2007.

Considerando o contexto, avalie as afirmativas a seguir.

I. Memória é o local de armazenamento de informações no computador e o seu


gerenciamento em um sistema operacional é importante para garantir a eficiência das
aplicações que rodam no computador, uma vez que a tendência das aplicações dos
usuários é consumir cada vez mais esse recurso durante sua execução. (TANENBAUM,
2003).

II. O gerenciamento de memória permite que vários processos sejam executados ao


mesmo tempo, mantendo um bom desempenho do sistema. (TANENBAUM, 2003).

III. A memória é um recurso importantíssimo para um bom funcionamento de um


computador.

Agora, assinale a alternativa correta.

Sua resposta
Correta
As afirmativas I, II e III estão corretas.

Comentário

Alternativa Correta: As afirmativas I, II e III estão corretas. A afirmativa I está


correta porque memória é o local de armazenamento de informações no computador e o
seu gerenciamento em um sistema operacional é importante para garantir a eficiência
das aplicações que rodam no computador, uma vez que a tendência das aplicações dos
usuários é consumir cada vez mais esse recurso durante sua execução. (TANENBAUM,
2003). A afirmativa II está correta porque o gerenciamento de memória permite que
vários processos sejam executados ao mesmo tempo, mantendo um bom desempenho
do sistema. (TANENBAUM, 2003). A afirmativa III está correta porque a memória é
um recurso importantíssimo para um bom funcionamento de um computador.

Questão 5
Correta
Questão com problema?

A utilização da memória virtual permite o compartilhamento da memória física entre


vários aplicativos ao mesmo tempo. Além disso, cada programa enxerga uma versão
virtual própria da memória.

Com relação a utilização de memória virtual, complete as lacunas da sentença a seguir.

Segundo Tanenbaum (2003), um computador que utiliza ____________ permite que o


volume de informações de um programa como código dado e ____________ ultrapasse
a quantidade total de ____________ disponível para ele, mantendo as partes ativas na
memória e as demais no ____________. A memória virtual é um arquivo dinâmico e de
tamanho ____________ na maioria dos sistemas operacionais.

Assinale a alternativa que completa as lacunas corretamente.

Sua resposta
Correta
memória virtual / pilha / memória física / disco rígido / variável.

Comentário

Alternativa Correta: memória virtua l/ pilha / memória física / disco rígido /


variável. Segundo Tanenbaum (2003), um computador que utiliza memória virtual
permite que o volume de informações de um programa como código dado e pilha
ultrapasse a quantidade total de memória física disponível para ele, mantendo as partes
ativas na memória e as demais no disco rígido. A memória virtual é um arquivo
dinâmico e de tamanho variável na maioria dos sistemas operacionais.

Você também pode gostar