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.
[editar]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.
[editar]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.
[editar]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.
Nenhum comentário:
Postar um comentário