Estrutura
Um sistema Unix
consiste, basicamente, de duas partes:
Núcleo - o núcleo do
sistema operacional, a parte que relaciona-se diretamente com o hardware, e que
executa num espaço de memória privilegiado. Agenda processos, gerencia a
memória, controla o acesso a arquivos e a dispositivos de hardware (estes, por
meio dos controladores de dispositivo - drivers - e
interrupções). O acesso ao núcleo é feito por chamadas de sistema, que são
funções fornecidas pelo núcleo; essas funções são disponibilizadas para as
aplicações por bibliotecas de sistema C (libc).
Programas de sistema - são
aplicações, que executam em espaços de memória não privilegiados, e que fazem a
interface entre o usuário e o núcleo. Consistem, principalmente, de:
Conjunto de
bibliotecas C (libc)
Shell - um ambiente
que permite que o usuário digite comandos.
Programas utilitários
diversos - são programas usados para manipular arquivos, controlar
processos, etc.
Ambiente gráfico (GUI) graphics
user interface - eventualmente utiliza-se também um ambiente gráfico
para facilitar a interação do usuário com o sistema.
Em um sistema Unix, o
espaço de memória utilizado pelo núcleo é denominado espaço do núcleo ou
supervisor (em inglês: kernel space); a área de memória para
os outros programas é denominada espaço do usuário (user space). Essa
separação é um mecanismo de proteção que impede que programas comuns interfiram
com o sistema operacional.
Processos
Um processo, na visão
mais simples, é uma instância de um programa em execução. Um programa, para ser
executado, deve ser carregado em memória; a área de memória utilizada é
dividida em três partes: código (text), dados inicializados (data)
e pilha (stack).
Por ser um sistema
multitarefa, o Unix utiliza uma estrutura chamada tabela de processos, que
contém informações sobre cada processo, tais como: identificação do processo
(PID), dono, área de memória utilizada, estado (status). Apenas um
processo pode ocupar o processador em cada instante - o processo encontra-se no
estado "executando" (running). Os outros processos podem estar
"prontos" (ready), aguardando na fila de processos, ou então
estão "dormindo" (asleep), esperando alguma condição que
permita sua execução.
Um processo em
execução pode ser retirado do processador por duas razões: (i) necessita
acessar algum recurso, fazendo uma chamada de sistema - neste caso, após sua
retirada do processador, seu estado será alterado para "dormindo",
até que o recurso seja liberado pelo núcleo; (ii) o núcleo pode interromper o
processo (preempção) - neste caso, o processo irá para a fila de processos
(estado "pronto"), aguardando nova oportunidade para executar - ou
porque a fatia de tempo esgotou-se, ou porque o núcleo necessita realizar
alguma tarefa.
Existem quatro
chamadas de sistema principais associadas a processos: fork, exec, exit e wait. fork é usada para criar um
novo processo, que irá executar o mesmo código (programa) do programa chamador
(processo-pai); exec irá determinar o código a ser executado pelo processo chamado
(processo-filho); exit termina o processo; wait faz a sincronização entre a finalização do processo-filho e o
processo-pai.
Sistema de arquivos
Sistema de arquivos é
uma estrutura lógica que possibilita o armazenamento e recuperação de arquivos.
No Unix, arquivos são contidos em diretórios (ou pastas), os quais são
conectados em uma árvore que começa no diretório raiz (designado por /). Mesmo os arquivos que se encontram em dispositivos de armazenamento
diferentes (discos rígidos, disquetes, CDs, DVDs, sistemas de arquivos em rede)
precisam ser conectados à árvore para que seu conteúdo possa ser acessado. Cada
dispositivo de armazenamento possui a sua própria árvore de diretórios.
O processo de
conectar a árvore de diretórios de um dispositivo de armazenamento à árvore de
diretórios raiz é chamado de "montar dispositivo de armazenamento"
(montagem) e é realizada por meio do comando mount. A montagem associa o dispositivo a um subdiretório.
Estrutura de diretórios
A árvore de diretórios do Unix é dividida em várias ramificações
menores e pode variar de uma versão para outra. Os diretórios mais comuns são
os seguintes:
Diretório
raiz - este é o diretório principal do sistema. Dentro dele estão todos os
diretórios do sistema.
bin — Contém arquivos, programas do sistema, que
são usados com freqüência pelos usuários.boot — Contém arquivos necessários para a
inicialização do sistema.dev — Contém arquivos usados para acessar
dispositivos (periféricos) existentes no computador.etc — Arquivos de configuração de seu computador
local.home — Diretórios contendo os arquivos dos usuários.lib — Bibliotecas compartilhadas pelos programas
do sistema e módulos do núcleo.mnt — Diretório de montagem de dispositivos.mnt/cdrom — Subdiretório onde são montados os CDs. Após
a montagem, o conteúdo do CD se encontrará dentro deste diretório.mnt/floppy — Subdiretório onde são montados os
disquetes. Após a montagem, o conteúdo do disquete se encontrará dentro deste
diretório.proc — Sistema de arquivos do núcleo. Este
diretório não existe, ele é colocado lá pelo núcleo e usado por diversos
programas.root — Diretório do usuário root.sbin — Diretório de programas usados pelo
superusuário (root) para administração e controle do funcionamento do sistema.tmp — Diretório para armazenamento de arquivos
temporários criados por programas.usr — Contém maior parte de seus programas.
Normalmente acessível somente como leitura.var — Contém maior parte dos arquivos que são
gravados com freqüência pelos programas do sistema.
Aplicações
O Unix permite a execução de
pacotes de softwares aplicativos para apoio às diversas atividades
empresariais. Dentre estes pacotes destacam-se:
<!--[if !supportLists]-->·
<!--[endif]-->geradores gráficos
<!--[if !supportLists]-->·
<!--[endif]-->planilhas eletrônicas
<!--[if !supportLists]-->·
<!--[endif]-->processadores de textos
<!--[if !supportLists]-->·
<!--[endif]-->geradores de aplicações
<!--[if !supportLists]-->·
<!--[endif]-->linguagens de 4° geração
<!--[if !supportLists]-->·
<!--[endif]-->banco de dados
O Unix possui recursos de apoio à comunicação de dados, que
proporcionam sua integração com outros sistemas Unix, e até com outros sistemas
operacionais distintos. A integração com sistemas heterogêneos permite as seguintes
facilidades:
<!--[if !supportLists]-->·
<!--[endif]-->compartilhamento de recursos e informações
<!--[if !supportLists]-->·
<!--[endif]-->transferência de informações
<!--[if !supportLists]-->·
<!--[endif]-->comunicação entre usuários remotos
<!--[if !supportLists]-->·
<!--[endif]-->submissão de programas para serem executados em computadores
remotos
<!--[if !supportLists]-->·
<!--[endif]-->utilização dos terminais de uma máquina Unix como terminais de
outras máquinas remotas, mesmo com sistemas operacionais distintos.
Para última, o Unix oferece um ambiente integrado e amigável,
voltado para a gestão automatizada de escritório, com serviços que atenderão às
seguintes áreas:
<!--[if !supportLists]-->·
<!--[endif]-->arquivamento eletrônico de informações
<!--[if !supportLists]-->·
<!--[endif]-->processador de documentos
<!--[if !supportLists]-->·
<!--[endif]-->agenda e calendário
<!--[if !supportLists]-->·
<!--[endif]-->calculadora
<!--[if !supportLists]-->·
<!--[endif]-->correio eletrônico
X Window System
Além do shell, o Unix suporta interface gráfica para o usuário. Nas primeiras versões do Unix as interfaces do usuário eram baseadas apenas em caracteres (modo texto) e o sistema compunha-se apenas do núcleo, de bibliotecas de sistema, do shell e de alguns outros aplicativos. As versões mais recentes do Unix, além de manterem o shell e seus comandos, incluem o X Window System que, graças ao gerenciador de exibição e ao gerenciador de janelas, possui uma interface atraente e intuitiva que aumenta em muito a produtividade do usuário.
Desenvolvido no MIT (Massachussets Institute of Technology), o X Window System (também pode ser chamado de Xwindow) tornou-se o sistema gráfico do Unix. O Xwindow funciona como gerenciador de exibição e por si só, não faz muita coisa. Para termos um ambiente gráfico produtivo e completo, precisamos também de um gerenciador de janelas.
O gerenciador de janelas proporciona ao ambiente gráfico a aparência e as funcionalidades esperadas incluindo as bordas das janelas, botões, truques de mouse, menus etc. Como no sistema Unix o gerenciador de exibição (X Window System) é separado do gerenciador de janelas, dizemos que seu ambiente gráfico é do tipo cliente-servidor. O Xwindow funciona como servidor e interage diretamente com o mouse, o teclado e o vídeo. O gerenciador de janelas funciona como cliente e se aproveita dos recursos disponibilizados pelo Xwindow.
O fato de o Unix possuir o gerenciador de exibição (Xwindow) separado do gerenciador de janelas tornou possível o surgimento de dezenas de gerenciadores de janelas diferentes. Os gerenciadores de janelas mais comuns no mundo Unix são o Motif, Open Look, e o CDE. Também existem outros gerenciadores de janelas que são bastante utilizados no Unix, principalmente nos sistemas Unix-Like (versões gratuitas e clones do Unix). São eles: KDE, Gnome, FVWM, BlackBox, Enlightenment, WindowMaker etc.
Nenhum comentário:
Postar um comentário