Top30 Brasil - Vote neste site!

Webmasters! Top30

  

acessem meu blog  http://dyney-3.blogfacil.net/diney-b1/Dica-de-manutencao-b1-p1.htm

 

acesse MEU OUTRO SITE DE ASSISTENSIA  http://dyney-cs.wix.com/manutensao-de-pc-jrn

Usuários online usuários online



Conhecimento h4rk3r

Conhecimento h4rk3r

 

| H4CK3R |

É fácil imaginar um automóvel.Tão fácil quanto perceber que,parado,é apenas dinheiro
mal-empregado – caro e inútil. Imóvel, ele serve apenas para ocupar espaço na garagem
ou, no máximo, para guardar pequenos objetos no porta-luvas. Mas quando há um
motorista no assento apropriado, com treinamento para operá-lo e conhecimento das
ruas da cidade, o veículo passa a ter utilidade e desempenhar a função para a qual foi
projetado e construído (e, claro, comercializado): transportar passageiros e cargas.

Os computadores, nesse ponto, são muito parecidos com os automóveis: desligados,
são caixas metálicas inúteis. Mesmo ligados, se não houver quem diga a eles o
que fazer, continuarão a ser caixas metálicas inúteis, barulhentas e devoradoras de
energia elétrica. É preciso que haja alguém ou alguma coisa que tome o controle da
máquina e a guie até que o trabalho que se espera dela esteja terminado. Essa “alguma
coisa” chama-se Sistema Operacional.
Sistema Operacional.Sistema Operacional.Sistema Operacional.Sistema Operacional.Sistema Operacional.

Quê? Sistema Operacional?

Um Sistema Operacional é, portanto, um programa que controla o hardware
da máquina para que o trabalho seja feito, servindo de mediador entre o usuário,
o software aplicativo, o hardware da máquina e periféricos associados.
Ainda usando a alegoria do automóvel, podemos dizer que o sistema operacional
é o “motorista” de nossa máquina.

Por que tenho de aprender isso?

Se você está lendo este livro, é porque quer progredir em seus estudos de
segurança e vulnerabilidades. Tanto para atacar quanto para se defender, é necessário
saber o que está acontecendo. Para explorar as brechas de um sistema,
basta utilizar programas que as detectam e depois aplicar o exploit apropriado.
Mas isso qualquer criança pode fazer com um pouco de pesquisa. Se você quer
se tornar um especialista de verdade, seu aprendizado passa pelo conhecimento
da estrutura e funcionamento dos sistemas operacionais.

Dissecando o bicho

Um computador é composto de três partes: hardware, software e (opcionalmente)
usuários. Os aparelhos, dispositivos e máquinas malucas que você pode tocar (e
chutar) são o que chamamos de hardware. É a parte do computador que efetivamente
realiza os cálculos, interações, processa os dados e controla o fluxo de entrada
e saída. Software é o conjunto de instruções passadas ao computador para
que ele faça alguma coisa. É a lista ordenada de tarefas que o hardware tem de
executar. Já o usuário... bem, o usuário é quem usa o computador.

Existem computadores de todos os tamanhos. Em casa, podemos ter computadores
poderosos, pequenos e baratos. Para usuários das áreas científica e militar,
existem os supercomputadores, grandes máquinas que realizam cálculos
avançados, simulações e controlam grandes operações militares. E, no meio do

Apêndices

caminho, computadores de vários tamanhos para atender às mais diversas necessidades
empresariais, comerciais, corporativas ou institucionais.

(Espere um pouco: se você não entendeu os parágrafos anteriores, leia cuidadosamente
o apêndice A, no qual os conceitos básicos utilizados em todo este livro
estão “mastigados”. Um breve histórico sobre computadores pode ser encontrado
no apêndice B, que está incluso no CD-ROM que acompanha o livro).

Mas afinal, o que faz essa coisa?

Bem, um sistema operacional, basicamente, controla tudo o que o usuário quer que o
hardware faça. Controla inclusive coisas que o usuário não precisa sequer tomar conhecimento
de que estão sendo feitas.Ainda confuso? Não desanime: verdadeiramente
entender a função de um SO (vamos chamar os sistemas operacionais de SO,daqui pra
frente) é coisa de doido.Talvez uma pequena alegoria possa esclarecer melhor o tema.

Imagine que você mora na região amazônica, no meio da floresta, próximo à
fronteira com a Bolívia, e mantém o único equipamento de telefonia via satélite
num raio de 600 quilômetros. Esse telefone pertence ao governo e serve a todas as
comunidades (européias e indígenas) dentro da sua jurisdição.Todos os dias, vários
representantes dessas comunidades solicitam o uso do telefone ou mesmo o envio
do aparelho. Essa situação lhe apresenta um dilema muito interessante e complicado.
Como decidir a ordem em que o telefone será utilizado por cada comunidade?
Quanto tempo o telefone ficaria à disposição de cada comunidade? E se alguma
comunidade demorasse a devolver o aparelho? Como fazer para que as conversações
secretas tenham privacidade e segurança? Como dar prioridade a ligações
urgentes? O que você faria se alguém pedisse um registro das ligações efetuadas
ou a gravação e armazenamento de uma conversação em particular? E se algum
garimpeiro insano se apoderasse do telefone, como recuperá-lo?

Os problemas de um sistema operacional são parecidos. Existem muitas solicitações
(de múltiplos programas ou mesmo de múltiplos usuários) para o mesmo recurso da
máquina (por exemplo, seu programa de e-mail e seu editor de textos podem querer usar
a impressora ao mesmo tempo). Deve existir, portanto, um programa-mestre que controle
os outros programas e organize as coisas para o usuário; do contrário, uma grande
confusão pode se armar, ou mesmo sérios conflitos que resultariam em aniquilação de
dados, de programas, do próprio hardware e, por conseqüência, do seu rico dinheirinho.

No geral, um SO deve desempenhar as seguintes funções:

Or
OrOrOrOrOrganizar o acesso dos pr
ganizar o acesso dos prganizar o acesso dos prganizar o acesso dos prganizar o acesso dos prganizar o acesso dos prog
ogogogogogr
rrrrramas aos r
amas aos ramas aos ramas aos ramas aos ramas aos recur
ecurecurecurecurecursos do har
sos do harsos do harsos do harsos do harsos do hard
dddddw
wwwwwar
ararararare
eeeee

Conforme você viu no exemplo do telefone via satélite, é necessário fazer uma lista
de prioridades para o uso do aparelho, atualizar essa lista sempre que as prioridades
mudarem e cuidar para que todos os usuários usem o sistema igualmente. O SO deve,
de maneira similar, controlar as solicitações do usuário e organizar o acesso à impressora,
à unidade de disco, à memória, ao modem, à tela...A complexidade é um
pouco maior, pois são múltiplos usuários, cada um executando múltiplos programas,
cada programa tentando acessar todos os recursos da máquina.

Sistemas Operacionais


Sistemas Operacionais



| H4CK3R |


Esconder o har
Esconder o harEsconder o harEsconder o harEsconder o harEsconder o hard
dddddw
wwwwwar
ararararare dos pr
e dos pre dos pre dos pre dos pre dos prog
ogogogogogr
rrrrramas e do usuár
amas e do usuáramas e do usuáramas e do usuáramas e do usuáramas e do usuário
ioioioioio

Tanto o usuário como os programas não devem saber2 o que está disponível em
termos de dispositivos eletrônicos, muito menos como usá-los. Do contrário, eles
devem solicitar tal coisa ao SO, e este fará a tradução entre o que o usuário quer e

o que o hardware pode fazer.
Contr
ContrContrContrContrControlar o f
olar o folar o folar o folar o folar o fluxo de dados entr
luxo de dados entrluxo de dados entrluxo de dados entrluxo de dados entrluxo de dados entre os pr
e os pre os pre os pre os pre os prog
ogogogogogr
rrrrramas,
amas,amas,amas,amas,amas, entr
entrentrentrentrentre o softw
e o softwe o softwe o softwe o softwe o softwar
ararararare e o
e e oe e oe e oe e oe e o

hardware e as interfaces de E/S
hardware e as interfaces de E/Shardware e as interfaces de E/Shardware e as interfaces de E/Shardware e as interfaces de
E/Shardware e as interfaces de E/S

Nenhum programa, periférico nem mesmo o usuário está autorizado a enviar
ou coletar dados diretamente das interfaces de entrada e saída. Tudo deve
passar pelo crivo do SO, que decide quem faz o que, quais dados entram ou
saem e que tipo de informação trafega dentro do computador.

Or
OrOrOrOrOrganizar os pr
ganizar os prganizar os prganizar os prganizar os prganizar os prog
ogogogogogr
rrrrramas par
amas paramas paramas paramas paramas para que não interf
a que não interfa que não interfa que não interfa que não interfa que não interfir
iririririram uns com os outr
am uns com os outram uns com os outram uns com os outram uns com os outram uns com os outros
ososososos

O SO deve construir “muralhas” em volta dos programas, para que estes não
invadam a área de outros programas.Também devem cuidar para que os dados
de um programa não sejam misturados aos dados de outros. Por exemplo, você
está enviando e-mails e navegando na Internet. O SO deve garantir que o conteúdo
da página não se misture com o texto de sua mensagem, embora ambos
os programas (de e-mail e seu navegador Web) estejam trocando dados com a
Internet simultaneamente através do mesmo modem.

F
FFFFFacilitar a cooper
acilitar a cooperacilitar a cooperacilitar a cooperacilitar a cooperacilitar a cooperação entr
ação entração entração entração entração entre os pr
e os pre os pre os pre os pre os prog
ogogogogogr
rrrrramas
amasamasamasamasamas

Programas devem ser capazes de trocar informações entre si e cooperar para
que uma tarefa qualquer seja feita em conjunto. O SO deve gerenciar o
compartilhamento de informações e ainda assim manter a integridade das demais
informações, conforme o item anterior.

Criar uma interface legível para que o usuário possa
Criar uma interface legível para que o usuário possaCriar uma interface legível para que o usuário possaCriar uma interface
legível para que o usuário possaCriar uma interface legível para que o usuário possaCriar uma interface legível para que o
usuário possa

operar o computador
operar o computadoroperar o computadoroperar o computadoroperar o computadoroperar o computador

Por último, mas não menos importante, um SO deve criar uma camada de abstração
para que o usuário não tome conhecimento de como as coisas realmente são.
Não se trata de enganar o usuário: é muito mais fácil convencer a secretária da
presidência que o seu texto está guardado na seqüência de ícones Ambiente de
Rede > Servidor > Presidência > Carta.doc3 do que no inode #345877123 do servidor
cujo IP:Porta é 192.168.1.165:139. O sistema deve criar uma área de fantasia
na qual o usuário possa emitir comandos em língua humana ou operar uma interface
visual que represente algo palpável, como uma estante ou uma escrivaninha. Deve
também ser capaz de responder às solicitações do usuário e tratar de maneira
inteligível os erros que possivelmente ocorrerão.

2 É óbvio que o usuário deve saber que possui impressora,scanner,mouse,monitor,teclado...O que
deve ser escondido dele (e dos programas) são os detalhes técnicos inerentes a cada periférico. Por
exemplo, o usuário deve ser capaz de usar o mouse sem entender nada sobre comunicação serial e o padrão
RS-232. Quem deve entender essas coisas é o sistema operacional.

3Ou seja, a distância de apenas oito cliques...

Apêndices


Vários computadores, vários
Sistemas Operacionais


Há diversos tipos e tamanhos de computadores. Existem, também, diversos
tipos de problemas a serem resolvidos e variados tipos de usuários. Portanto,
nada mais natural que existam diversos tipos de sistemas operacionais.

Dependendo da aplicação, é suficiente que um sistema operacional receba a solicitação
do usuário e a responda “quando der”. Em outras, o usuário talvez queira ou
precise das respostas rapidamente. Em algumas situações, o SO deve decidir, independente
da ordem de entrada, qual resposta tem prioridade e parar as outras tarefas
para responder a esta em um curto intervalo de tempo.Temos ainda os problemas
que vimos anteriormente, como a necessidade de se ter mais de um programa
rodando ao mesmo tempo ou a de ter diversos usuários simultâneos na máquina.

Sistemas Monotarefa

Quando o computador pessoal foi imaginado, na década de 70, ninguém pensava
que as pessoas pudessem querer rodar mais de um programa ao mesmo tempo.
Assim,os sistemas operacionais da época só conseguiam lidar com um programa de
cada vez. Os grandes computadores das décadas de 40 e 50 também possuíam
sistemas operacionais simples que executavam apenas um programa por vez.

Basicamente, um sistema operacional monotarefa (ou single tasking) serve para
esconder do programa em execução e do usuário os detalhes do hardware. É ele que
cuida da manipulação dos periféricos, controla os dispositivos de E/S e mantém o
sistema de arquivos. Possui ainda um rudimentar gerenciamento de memória.

Para algumas aplicações,
isso é suficiente. Um SO que
controle uma cafeteira, por
exemplo. Mas, para um computador
pessoal, um sistema
monotarefa possui algumas
desvantagens. Quando foi lançado,
em 1981, o IBM PC (e
posteriormente seus clones)


vinha de fábrica com o DOS,
sistema operacional produzido pela então pequena Microsoft. Apesar do excelente
impacto que isso teve na popularização dos computadores domésticos, o DOS apresentava
um problema irritante. Como era monotarefa, apenas um programa podia ser
executado de cada vez. Por ser um sistema simples, os programas, quando em execução,“
apoderavam-se” do hardware. Se você estivesse imprimindo um texto longo, só
ganharia controle sobre o computador novamente quando a impressão terminasse. Se
fosse necessário acessar com urgência os dados daquela planilha importante, porque
seu chefe estava“no seu pé”, seria necessário parar a impressão e reiniciá-la mais tarde.

Sistemas Operacionais Sistemas Operacionais


| H4CK3R |


Sistemas Multitarefa

Sistemas que podem executar vários programas ao mesmo tempo são chamados
de multitarefa (ou multi tasking). Este ambiente cria o conceito de planos
de execução. O programa que você está operando no momento está em primeiro
plano. Os outros programas, operando sem que o usuário intervenha, estão
em segundo plano. Por exemplo, enquanto você está acessando à Internet com
seu navegador, seu programa de e-mail pode estar baixando suas mensagens em
segundo plano. Mesmo um único aplicativo pode disparar várias tarefas simultâneas:
você pode mandar imprimir um texto e, ao mesmo tempo, continuar
trabalhando nele.


“Ao mesmo tempo” não é bem a expressão correta. O que um SO multitarefa
faz é delegar “fatias” de tempo a cada programa. Como normalmente há apenas
um processador disponível, apenas um programa pode ser executado por vez.
O sistema, então, aloca uma certa quantidade de tempo de processamento para
cada programa, numa velocidade tão alta que torna o chaveamento imperceptível.
Esse conceito é chamado de time shar
time shartime shartime shartime shartime sharing
inginginginging.
.....

Assim como seu irmão monotarefa, um sistema operacional multitarefa (ou
multi tasking) também esconde o hardware do usuário e dos programas que
estão sendo executados. Ele ainda faz a manipulação dos periféricos, controla
os dispositivos de E/S e mantém o sistema de arquivos. A diferença é que, agora,
o SO deve cuidar para que todos os programas utilizem os recursos da
máquina (CPU, memória e periféricos) sem que haja conflitos.

O gerenciamento de memória também é muito mais complexo. Como muitos
programas devem existir simultaneamente na memória, o SO deve cuidar para
que um programa não invada a área do outro. Quando isso acontece, há o que
chamamos de Falha de Proteção. A próxima vez que seu computador travar e
aparecer alguma mensagem indicando Falha de Proteção, saiba que a culpa foi do
Sistema Operacional, que não soube separar corretamente os dados de todos os
programas na memória. SOs bem escritos não apresentam esse tipo de falha.

Apêndices

Alguns programas entram em modo de espera, estejam eles em primeiro plano
ou não. Por exemplo, um editor de textos fica esperando que o usuário digite
alguma coisa ou clique em algo. O sistema operacional deve gerenciar também
esses eventos.Vários programas podem estar requisitando a ação do usuário, e o
SO deve decidir quais ações do usuário correspondem a quais programas. Dois
exemplos de sistemas operacionais multitarefa são o Microsoft Windows e o
Apple Mac OS.

Sistemas Multiusuários

Um degrau acima na escala
evolutiva dos sistemas multitarefa
são os SOs com suporte simultâneo
a múltiplos usuários4 . Com ele, vários
usuários podem operar o computador
ao mesmo tempo, compartilhando
recursos e programas. É possível,
por exemplo, que dois usuários
utilizem o mesmo programa (por
exemplo, um software de folha de
pagamento) ou algum periférico
(como uma impressora) sem que
isso cause alguma falha ou
corrupção de dados.


Isso traz novos desafios no projeto do
sistema operacional. Deve haver um
gerenciamento de usuários, que podem
ser cadastrados, alterados ou removidos.
Deve haver dispositivos de segurança,
para que um usuário não consiga acessar
arbitrariamente os dados confidenciais
de outro. O SO também deve providenciar
meios para que dados possam ser
compartilhados, caso o proprietário
deles assim deseje. Como proprietário, entenda-se tanto usuários como programas. O
usuário Jonas pode querer compartilhar seus relatórios com toda a equipe do setor de
engenharia; o programa de folha de pagamento pode disponibilizar alguns dados sobre
a produtividade dos funcionários para o programa de gerenciamento de RH.

4A ênfase na palavra simultâneo aqui não émero preciosismo. Alguns sistemas operacionais permitem
que vários usuários operem o computador,mas não ao mesmo tempo.Este é o caso,por exemplo,de
sistemas como MicrosoftWindows 9x e Me.Mesmo algumas versões dos sistemasWindows multiusuário
(como oWindows NT,2k e XP nas versõesWorkstation,Professional e Home,respectivamente) possuem
suporte limitado a logins simultâneos.

Sistemas Operacionais Sistemas Operacionais

Sistemas operacionais multiusuários eram originalmente destinados apenas
a grandes máquinas. Desde o início da década de 60, instituições de ensino, o
governo e grandes empresas utilizam computadores de grande porte chamados
mainframes, que fazem todo o processamento de forma centralizada. Os usuários
operam o computador através de terminais de acesso remoto, que podem
estar muito longe do computador, algumas vezes até em outra cidade, ou mesmo
em outro país! Tais sistemas devem gerenciar centenas (às vezes milhares)
de usuários, com milhares de acessos e programas simultâneos.

Mesmo os chamados minicomputadores possuem SOs multiusuários. O Unix,
por exemplo, foi desenvolvido em minicomputadores PDP-7 e PDP-11 (em 1969)
e possui capacidade multiusuário nativa, além de ser altamente portável: roda
em qualquer computador com pouquíssimas modificações.

Mas nem só de número de usuários e de programas simultâneos vive um
sistema operacional. Para cada aplicação, existe uma modalidade de funcionamento
que se reflete na forma como o computador responde ao usuário. Lembram
do problema do telefone via satélite na Amazônia? Pois bem, o sistema
operacional também tem de colocar prioridades em seus programas. Alguns
devem ter prioridade mais alta, pois o usuário espera uma resposta imediata
deles. Outros possuem prioridade mais baixa, porque o usuário não está sequer
prestando atenção ao programa. O sistema tenta, então, fazer um
escalonamento de todas as tarefas e dar mais poder de processamento àquelas
com prioridade maior, mesmo que isso signifique congelar por alguns instantes
as tarefas de menor prioridade.

Processamento em lote

No início da era da computação, as poucas requisições de processamento
chegavam como solicitações por escrito ao CPD, e o programa era montado
sob medida. Com o crescimento do número de pessoas que queriam usar o
computador, ficou difícil para os engenheiros da década de 50 elaborar programas
para todos o tempo todo. Para facilitar as coisas, começaram a ser
utilizados cartões perfurados5 . O computador era alimentado todos os dias
com os cartões contendo os programas dos usuários, e estes eram processados,
um por vez, sem intervenção humana.

Cartões perfurados não são mais usados hoje em dia. Entretanto, o
processamento em lote (ou batch processing) resiste. Uma das características
principais desse tipo de processamento é a exclusividade de recursos. O programa
sendo rodado é o único, não divide o tempo de processamento com
nenhum outro. Assim, todos os recursos da máquina são alocados para ele,
detalhe importante para determinadas aplicações, como, por exemplo, simulação
de explosões nucleares.

5 Os cartões perfurados existem desde 1890, mas apenas na década de 40 foram adaptados pela IBM para trabalhar
em computadores digitais. Mais informações sobre cartões perfurados podem ser encontradas nos apêndices A e B.

Apêndices


Os usuários desse tipo de sistema não esperam pelas respostas. Pelo contrário:
o processamento em lote permite que o usuário envie seu programa para o
mainframe e depois se desconecte dele. Se o terminal de acesso estiver longe
do computador central (por exemplo, em outro bairro), a empresa pode economizar
muito dinheiro com linhas de transmissão de dados, que são cobradas
por tempo de uso. No outro dia, o usuário conecta-se novamente e recupera o
resultado do processamento de seu programa. Por essa razão, os SOs dão prioridade
mais baixa a esse tipo de processamento. Como o usuário não está online
esperando pelo resultado, atrasos e paralisações não serão prejudiciais.

Interpretação de comandos

Em oposição ao processamento em lote, temos a interpretação de comandos. Nessa
modalidade de operação, o usuário interage o tempo todo com o sistema. O sistema,
por sua vez, fica em estado de espera, aguardando que o usuário lhe dê uma
ordem. Esse estado de espera é simbolizado pelo prompt6 do sistema. O prompt
pode conter dados sobre onde você está, o nome da máquina, hora local, ou mesmo
não conter nada, apenas o cursor esperando que se digite algo.Assim que o usuário
digita alguma coisa e pressiona a tecla Enter, um programa chamado interpretador
de comandos traduz o que o usuário quer em ação, e, se aplicável, apresenta o resultado
na tela. Um exemplo prático de interatividade é o comando para listar arquivos:

$ ls
Adm Dicts Babytrans licq.tar.gz plugin131_02.trace
amsn_received Documentos Compartilhados Mail Programas Linux
bookmarks.html doll.html mnt sequestro.jpg
BSGloss evolution MP3-BlueCurve.html Temas para KDE
crossover gotmail mpg123.playlist terra20030102.png
Desktop komba2ui.rc msn wav
$

Observe: $ é o prompt do sistema, no caso um GNU/Linux rodando em um
Pentium 4. Um comando foi emitido (ls) e, como resultado, temos os nomes dos
arquivos da área pessoal do usuário. Depois que o resultado do comando foi
apresentado na tela, o sistema operacional volta a mostrar o prompt $.

Entender o comando, neste momento, não é importante. Procure entender o
mecanismo de estimulação e resposta desta modalidade de operação. O usuário
emite comandos no prompt e espera que esse comando seja rapidamente executado.
Uma demora de alguns segundos pode irritar o usuário, pois ele espera que o
sistema o responda assim que perguntado. É por esse motivo que os programas
operando nesse modo possuem prioridade maior do que os programas em lote.

6 Não há tradução exata em português para prompt, nesse contexto.Traduções aproximadas, usadas por outros
autores, incluem o pronto do sistema e o sinal de prontidão. Para este caso preferimos o termo original em inglês,
embora empreguemos normalmente a terminologia aceita em português.

Sistemas Operacionais Sistemas Operacionais

Note que, quando o prompt está sendo mostrado na tela, o sistema não está
parado: muitas tarefas de vários usuários podem estar sendo executadas em
segundo plano.

Interfaces Gráficas Interativas

Na verdade, essa modalidade é uma evolução dos sistemas interativos operados por
comandos.As interfaces gráficas são, na realidade,“cascas” que criam um ambiente de
fantasia para que o usuário possa, mais facilmente, operar o sistema. De fato, é menos
penoso aprender a empurrar o mouse e clicar em alguns botões do que decorar uma
lista interminável de comandos. Entretanto, a própria interface gráfica é um programa
muito pesado, que consome recursos às vezes desnecessários do computador. Os usuários
acostumados com linhas de comando costumam dizer que, uma vez que você os
aprende, a utilização do computador torna-se muito mais rápida e direta. De qualquer
forma, os sistemas baseados em GUI (Graphical User Interface) são, também, sistemas
interativos como os baseados em interpretadores de comandos: os usuários estimulam

o SO com solicitações e esperam que sejam prontamente respondidos.
Processamento em tempo real

O processamento em tempo real, apesar do que possa parecer à primeira
vista, não é uma evolução do processamento interativo. Neste, o usuário precisa
de respostas rápidas a seus comandos. No processamento em tempo real, as
respostas não devem ser rápidas, mas imediatas. Quem já não teve um chefe
que entrou correndo em sua sala gritando “pare tudo e faça isto” ?

Em alguns aspectos, os sistemas de tempo real são exatamente o oposto dos
sistemas interativos. Nos sistemas interativos, os programas obedecem a uma ordem
de prioridades ditada pelo sistema operacional. Nos de tempo real, as prioridades
são deixadas de lado em favor das interrupções – estímulos que devem ser
respondidos prontamente. Os sistemas em tempo real devem saber o que fazer
mesmo que não haja um usuário atendendo ao sistema naquele momento.

Sistemas que operam em tempo real normalmente controlam atividades críticas
que devem responder imediatamente a eventos. O sistema ABS computadorizado
do seu carro é um bom exemplo: se o sistema não responder imediatamente à sua
solicitação de freagem, fazendo os cálculos de velocidade, aderência e tipo de terreno,
a curva ali adiante talvez não possa ser vencida. Note que, apesar da primeira
solicitação ter sido do usuário (o motorista), o sistema teve de responder imediatamente
a diversos eventos, como consulta aos sensores de velocidade, gravidade e
vibração. Outros exemplos de sistemas em tempo real são o controle de reatores
nucleares, sistemas de controle de tráfego aéreo e sistemas de suporte à vida. Imagine
o estrago causado por um atraso no sistema de controle de fissão nuclear ou
num coração artificial. Se houver um incidente enquanto o sistema operacional
está ocupado com outras coisas (o reator superaquece ou o coração pára), é possível
que não haja mais usuários depois que o sistema resolver atender ao evento...

Apêndices


Estrutura básica de um
Sistema Operacional


Há usuários diferentes para computadores diferentes, e isso resulta, na prática,
em projetos diferentes de sistemas operacionais. Mas há uma teoria aceita e
estabelecida que guia o projeto de qualquer SO, funcionando como um ponto
de partida e como padrão a ser seguido.Você não pode esperar que o MS-DOS
e um Bull G-COS sejam sistemas parecidos, embora tenham em comum as partes
mais básicas de sua estrutura.

Camadas de abstração

Um SO pode ser dividido em diversas camadas, cada uma
com sua função específica. As camadas de mais alto
nível SEMPRE encapsulam as de nível mais baixo.


Observe o nível mais externo, que chamamos de
interface com o usuário
interface com o usuáriointerface com o usuáriointerface com o usuáriointerface com o usuáriointerface com o usuário. É com
ela, e apenas com
ela, que o usuário interage, e é a única coisa que

o usuário vê e aprende. Essa interface pode ser
um painel de controle verdadeiro, com chaves e
botões reais, pode ser uma interface gráfica como
a do Macintosh, ou pode ser um interpretador
de comandos, como o shelldo Unix ou o prompt
do DOS.A função da interface é criar um ambiente
em que o usuário possa trabalhar. Quando o usuário
solicita alguma coisa à interface, esta aciona os recursos
correspondentes e devolve ao usuário uma resposta.
Entretanto, a interface com o usuário realmente não executa nenhuma das
tarefas que o usuário solicitou. Do contrário, ela delega essa função aos pr
prprprprprog
ogogogogogr
rrrrra-
a-a-a-a-amas,
mas,mas,mas,mas,mas, que são, como vimos, listas ordenadas de tarefas, que “ensinam” ao computador
como fazer alguma coisa. Os programas podem ser tanto utilitários simples (por
exemplo, um comando para mostrar o conteúdo de um arquivo) como aplicativos
extremamente complexos (como sua planilha eletrônica favorita).

É óbvio que ambas as camadas (interface e programas) podem ser subdivididas em
subcamadas, dependendo do projeto do sistema operacional. Um programa pode chamar
outro para que, juntos, executem uma tarefa. Mas nenhum dos programas dessa
camada pode operar o hardware diretamente. Isso inclui não só acesso a periféricos
como também uso de CPU e memória. Para tanto, os programas trocam mensagens
com a camada mais interior do sistema operacional, chamada de kernel
kernelkernelkernelkernelkernel.

O kernel (ou núcleo) manipula o hardware. O ponteiro do seu mouse corre pela tela
quando você o movimenta, porque há uma rotina no kernel que trata disso. Outra
rotina é responsável por gerenciar o que é mandado para a impressora. É o kernel,
ainda, que cuida do gerenciamento de memória e promove a correta separação entre
as áreas de cada programa. No geral, os aplicativos preparam os dados e as interações
entre eles, e entregam as coisas mastigadas para que o kernel faça o “trabalho sujo”.

Sistemas Operacionais Sistemas Operacionais


Processos

Alguns parágrafos atrás, quando falamos em ambiente multitarefa, deixamos
implícito que cada programa seria uma tarefa. Na verdade, é um pouco mais
complicado que isso. Seu editor de textos pode estar aplicando o corretor ortográfico
em um arquivo, imprimindo outro texto e permitindo que você continue
escrevendo em um terceiro. Cada uma dessas atividades podem disparar
outras, de forma que um sistema rodando poucos programas pode possuir centenas
de tarefas sendo executadas.

Processo é o termo correto para designar o que normalmente chamamos de
tarefa7 . Um processo pode ser entendido como um miniprograma, que executa
uma tarefa específica e requisita alguns recursos do sistema para si. Como
normalmente há centenas de processos rodando e os recursos do computador
são limitados, percebe-se que os processos competem
competemcompetemcompetemcompetemcompetem entre si pela posse do
hardware. É nesse ambiente que o kernel do sistema trabalha. No mundo virtual
do kernel, não existem usuários nem mesmo programas. O que existe são processos
a serem gerenciados, e é função primordial do kernel evitar que os
processos conflitem entre si.

As palavras-chave aqui são concorrência e sincronização. Processos concorrentes
são os processos que, num dado momento, disputam a atenção da CPU. O
kernel deve cuidar para que dois processos não tentem acessar o mesmo recurso
simultaneamente. Caso seja necessário que vários processos utilizem um mesmo
recurso, o kernel deve organizar uma “fila”, definindo propriedades; e evitar que
um processo destrua o trabalho do outro. Em alguns casos, um processo deve
utilizar dados fornecidos por outro processo. O kernel deve levar isso em conta
quando define as prioridades, fazendo com que o segundo processo não acesse
esses dados antes que o processo anterior os tenha produzido.

O maior problema do kernel é quanto ao uso da CPU. Como só é possível
trabalhar com um processo por CPU, o kernel tem de definir prioridades para
todos e controlar o quinhão de CPU a que cada um tem direito.

7Apesar de a Microsoft ainda chamar seus processosde tarefas,o termo técnico correto utilizado pelos
desenvolvedores é, mesmo, processo.

Apêndices

Outro problema grave é o uso da memória. O kernel deve distribuir espaço suficiente
a todos os processos, não deixando que um interfira na memória do outro; e zelar
para que um processo não“inche”tanto a ponto de ocupar toda a memória disponível.

O acesso a dispositivos e arquivos encerra um problema parecido. Vários
processos podem tentar escrever em um mesmo recurso (por exemplo, dois
usuários incluindo dados no mesmo banco ou dois programas acessando a
mesma impressora). Cabe ao kernel decidir quem vai usar o recurso primeiro
e vigiar para que um processo não destrua os dados do outro.

Mas e na prática?

O mundo da computação é hoje dominado por quatro grandes grupos de
sistemas operacionais: os baseados em Unix, os sistemas Windows da Microsoft,

o servidor Novell Netware e a plataforma Apple Macintosh.Obviamente estamos
falando de estações de trabalho e servidores. Grandes sistemas, como os
mainframes e os supercomputadores, bem como sistemas de cluster e de computação
distribuída, possuem sistemas operacionais específicos.