1. UNIVERSIDADE FEDERAL DO CEARÁ
BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO
RONILDO OLIVEIRA DA SILVA
SISTEMAS OPERACIONAIS:
CONCEITOS BÁSICOS SOBRE SISTEMAS OPERACIONAIS
PRFESSOR LUIS RODOLFO REBOUÇAS COUTINHO
QUIXADÁ
2014
2. SUMÁRIO
INTRODUÇÃO.......................................................................................................................2
PROCESSOS........................................................................................................................2
ESPAÇOS DE ENDEREÇOS................................................................................................2
SISTEMAS DE ARQUIVOS..................................................................................................3
SISTEMAS DE ENTRADA E SAIDA....................................................................................4
SISTEMAS DE PROTEÇÃO.................................................................................................4
Hardware...........................................................................................................................4
Software.............................................................................................................................4
LINHAS DE COMANDO (SHELL)........................................................................................5
SISTEMAS OPERACIONAIS MONOLITICOS.....................................................................5
SISTEMAS OPERACIONAIS EM CAMADAS......................................................................5
MICROKERNELS..................................................................................................................6
CLIENTE SERVIDOR............................................................................................................6
MÁQUINAS VIRTUAIS..........................................................................................................6
EXOKERNELS......................................................................................................................7
REFERÊNCIAS BIBLIOGRÁFICAS.....................................................................................7
3. 3
INTRODUÇÃO
Um sistema operacional, ou software base é um conjunto de rotinas que
desempenham o papel de controle de recursos, como o compartilhamento de memórias,
escalonamento de processos, gerência de dispositivos de E/S (entrada e saída),
interrupções, etc.
Além de se responsabilizar pela gerência, o sistema operacional é também visto
como uma camada de abstração entre o computador e o usuário, fornecendo facilidade, e
segurança ao se manusear softwares aplicativos.
Vejamos alguns conceitos básicos sobre os sistemas operacionais, características,
seus subsistemas e mecanismos.
PROCESSOS
Um processo pode ser entendido como a execução ou parte da execução de um
programa. Sabemos que um sistema operacional moderno é multitarefa baseado em
ciclos de tempo (clock), ou seja, várias instâncias e processos podem estar aptos a serem
executadas em uma pilha de execução na memória principal. Esse espaço na memória
reservado para o processo é denominado espaço de endereçamento.
O sistema operacional utiliza do clock para controlar de modo periódico e temporal
o acesso dos processos ao processador. Um exemplo comum é quando cada processo
empilhado tem alguns microssegundos para permanecer em execução. Quando um
processo é desempilhado para dar “visibilidade” a outro, ele precisa salvar seu estado (um
dos principais serviços do espaço de endereçamento) antes da troca para que se possa
continuar quando o mesmo voltar à atividade.
É válido considerar também que processos podem ser dependentes de outros,
automaticamente podemos enxergar uma hierarquia onde processos raízes podem criar
e/ou chamar outros processos nós como uma ramificação. Como dificilmente essas
estruturas são lineares, o sistema operacional usa de mecanismos de escalonamento
com o objetivo de não deixar o processador ocioso e nem permitir que apenas alguns
processos cheguem à execução.
ESPAÇOS DE ENDEREÇOS
O espaço de endereçamento contém o programa executável, os dados e sua
pilha de execução. Cada processo possui um conjunto de registradores, um ponteiro que
aponta para a pilha e várias informações necessárias para executar e retomar a execução
um programa após uma parada seja ela confirmada ou não.
4. 4
Todos os sistemas computacionais possuem uma memória principal, e
eventualmente, os processos que dão atividade ao sistema são armazenados nesse
dispositivo de armazenamento temporário. Quando falamos de processos, citamos os
espaços alocados para cada um deles e suas particularidades.
Na gerência desses processos, podemos encontrar alguns conflitos como: dois
processos acessando o mesmo espaço de memória, ou necessidade de mais espaço
ocupado por outras instâncias. Hoje, as memórias principais são de tamanhos elevados,
mas se acontecesse de um ou mais processos utilizarem todo o espaço de
endereçamento e mais um pouco?
Esse problema seria resolvido com o gerenciamento de espaços de endereços por
meio do uso de uma Memória Virtual, que é um espaço alocado no disco, de grande
capacidade, porém mais lenta.
SISTEMAS DE ARQUIVOS
Além dos processos, memórias e dispositivos, o sistema operacional também
gerencia arquivos.
O sistema de arquivos se atrela aos outros vários subsistemas, por exemplo:
Quando um arquivo é lido, ele precisa ser inicialmente localizado em uma memória,
normalmente na secundária, e para isso, é necessário que o sistema de E/S faça a busca
no disco, carregado nos espaço de endereços da memória principal, e assim, ser aberto,
editado e salvo novamente no disco.
Um pouco diferente do sistema de blocos do disco, o sistema operacional adota
uma hierarquia de diretórios para a manipulação mais organizada de arquivos. Esse
conceito é bem similar ao visto no tópico de processos, onde um diretório raíz pode
possuir vários subdiretórios, e esses subdiretórios serem pais de outros diretórios, um
exemplo de árvore.
A princípio, um sistema em árvore, é mais lento (por conta das buscas por
subdiretórios) que um linear (onde todos os arquivos estão em um único lugar), porém, o
sistema operacional usa de um parâmetro denominado path, que é o endereço do arquivo
a ser processado, um processo recebe esse parâmetro e não mais precisa efetuar buscas
para encontrar sua localização a cada iteração, o que torna o nível de organização, muito
superior.
Outra vantagem é que ao inserir uma unidade de disco removível, o sistema de
arquivos considera e trata esse dispositivo de armazenamento como um diretório, ou seja,
a hierarquia e o acesso continuarão sendo o mesmo e pertencerá a mesma árvore de
diretórios.
5. 5
SISTEMAS DE ENTRADA E SAIDA
Num sistema computacional, se fossemos resumi-lo, poderíamos dizer que é um
sistema com entrada, processamento e saída. Esse é um modelo adotado para simplificar
como as operações manipuladas pelo usuário interagem com o sistema operacional e
retorna um resultado referente ao processamento dessas instruções. À medida que os
sistemas computacionais se tornam mais complexos novos dispositivos vêm surgindo e é
de responsabilidade de o sistema operacional gerenciá-los.
Todo sistema operacional possui um sistema de E/S. Em um sistema
computacional de dispositivos on-board, podemos verificar que alguns ou todos eles
possuem uma compatibilidade com o programa de E/S do sistema operacional, ou seja,
eles são considerados independentes de dispositivos. Outros, normalmente off-board, se
comportam de maneira diferente e necessitam de um programa “tradutor” que abstraia a
camada física (dispositivo), e forneça uma boa comunicação com o sistema operacional.
Esses softwares são denominados drivers de dispositivos específicos.
SISTEMAS DE PROTEÇÃO
Vejamos alguns exemplos de artifícios utilizados pelo sistema operacional para
evitar acessos indevidos durante o funcionamento de um sistema computacional.
Hardware
Quem tem prioridade de acesso à memória? Quem pode ser deixado em segundo
plano numa chamada de E/S?
Essas e outras “perguntas-conflito” podem ser solucionadas pelo fato do sistema
operacional trabalhar em modo supervisor, ou seja, o usuário e suas rotinas não podem
ter privilégios e acessos superiores às chamadas de sistema ou interrupções de E/S.
Se isso ocorresse, o usuário poderia escrever em locais de memória não
permitidos ou não existentes, modificaria o temporizador da CPU, etc.
Software
Qual seria a vantagem de qualquer usuário ter acesso aos arquivos do sistema
operacional e acesso aos seus arquivos pessoais? Ambas as perguntas podem ser
respondidas com “nenhuma”. Uma modificação de arquivos do sistema pode trazer
grandes problemas futuros ou imediatos e seus arquivos pessoais talvez não fossem para
serem vistos por qualquer pessoa.
Para isso, o sistema operacional toma conta da segurança própria e do seu
usuário, foi com esse propósito que nos sistemas Unix, por exemplo, temos um sistema
6. 6
de segurança baseado em cadeia de bits, denominados bits rwx, onde a cadeia de bits
representada por:
R – Permissão de leitura;
W – Permissão de escrita;
X – Permissão de execução;
Essas permissões são aplicadas aos níveis de usuário do sistema:
U – Usuários;
G – Grupos;
O – Outros;
Exemplo de permissão de arquivo:
LINHAS DE COMANDO (SHELL)
Figura 1: Arquivo com permissões totais para usuário,
permissões negadas para outros, e negação de escrita
para grupos.
Disponível em: http://pt.wikipedia.org/wiki/Chmod
O shell é um software aplicativo responsável pela interpretação de comandos via
terminal, em sistemas sem interfaces gráficas, o shell é considerado o meio por onde o
usuário escreve instruções (em texto no próprio terminal), que são então interpretadas a
cada linha de prompt, e assim é iniciada a execução do processo ou da árvore de
processos.
Só com a finalização da execução, o shell estará apto novamente para o
recebimento de novas instruções.
SISTEMAS OPERACIONAIS MONOLITICOS
Podemos considera um sistema operacional monolítico como uma aplicação
composta por diversos módulos que são compilados separadamente e depois “linkados”
de forma que possa interagir livremente uma com as outras constituindo um grande e
único programa executável em modo supervisor.
7. 7
Seu desempenho é bem maior que as demais estruturas de sistemas, porém como
são aplicações unidas, uma falha pode paralisar todo o núcleo. Por não possuir
separação de funcionalidades, essa liberdade de controle em demasia torna o sistema
vulnerável.
SISTEMAS OPERACIONAIS EM CAMADAS
Essa arquitetura de organização trata os possíveis erros dos sistemas monolíticos,
pois define hierarquicamente o sistema operacional em subsistemas sobrepostos, tal
quais as camadas do protocolo TCP/IP. Cada módulo oferece um conjunto de funções
que pode ser usado por outros módulos de camadas superiores.
Fazendo uma analogia a interação usuário-computador, a vantagem da
estruturação em camadas é isolar o sistema operacional (núcleo), facilitando sua
alteração, depuração, e prevenção. Como são camadas dispostas uma sobre as outras
(do menor ao maior nível), os níveis mais internos, por exemplo, os que se comunicam
diretamente com o núcleo ou hardware são mais protegidos.
MICROKERNELS
Assim como os computadores, processadores e quaisquer dispositivos, o kernel
também vem aumentando seu desempenho e diminuindo de tamanho. As camadas dos
serviços são agora dispostas em processos.
Cada processo agora tem a responsabilidade de gerenciar um conjunto específico
de funções (em modo usuário, o que previne erros no núcleo) como: gerência de
memória, gerência de arquivos, gerência de processos etc.
O núcleo que nessa arquitetura é minúsculo, o que torna um mecanismo muito
complexo, porém eficiente. Sem esse novo paradigma, o kernel fornecia o controle e a
abstração de camadas mais baixas do sistema operacional. Como microkernel, apenas
gerencia a comunicação entre esses processos específicos como sua principal função.
CLIENTE SERVIDOR
Constituidora da parte da arquitetura de microkernels, o modelo Cliente Servidor é
bem similar ao detalhado anteriormente. Alguns processos denominados servidores,
recebem as solicitações de serviços (leitura e/ou escrita de bloco, por exemplo) enviadas
pelos processos clientes (ambos, processos no microkernel).
8. 8
Como o kernel é muito pequeno e mais livre de códigos e operações de núcleo, a
sua funcionalidade se resume em coordenar a comunicação coerente entres os processos
clientes e servidores.
MÁQUINAS VIRTUAIS
Um exemplo de máquina virtual bastante utilizada é a Java Virtual Machine, criada
pela Sun Microsystems, que objetivava o suporte a linguagem Java. Quando se executa
um código Java, o interpretador da máquina virtual se encarrega de gerar os próprios
bytecodes, que são cadeias de bytes próprios do Java. Uma das vantagens de utilizar
uma máquina virtual, é que será gerado o mesmo bytecode, o que torna a aplicação em
Java altamente portátil.
Como é dependente de uma máquina virtual, o desempenho da aplicação é
considerada visivelmente inferior a um código compilado em uma máquina real.
EXOKERNELS
É um caso especial de microkernel, com menos mecanismos em modo supervisor,
ou seja, ainda beneficiados pelos acessos em modo usuário, os processos em modo de
exokernel podem ter acesso ao hardware mais diretamente ao invés de ter de obter
confirmações de biblioteca ou de núcleo.
REFERÊNCIAS BIBLIOGRÁFICAS
MACHADO, F. B. Maia, L. P. Arquitetura de Sistemas Operacionais. 3. Ed. LTC. 2002.
TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 2. Ed. Prentice Hall
(Pearson), 2003.