Universidade Federal Rural de Pernambuco
Departamento de Física e Matemática
Sistemas Operacionais
Professor: Jones Albuquerque
Aluna: Fernanda Rodrigues Vilarim
Sistema Operacional Unix
Gerência
de Processo, Memória, Entrada e Saída, e Sistema de Arquivos
Introdução
Esse trabalho tem como objetivo apresentar algumas características do Sistema Operacional UNIX: Gerência de Processo, memória, entrada e saída e sistemas de Arquivos. Embora existam algumas versões do Unix, esse trabalho não é específico a nenhum padrão.
O Unix é um sistema operacional “aberto”, de estrutura coerente e disponível em várias plataformas de Hardware. Boa parte dos sistemas operacionais atuais é baseada ou influenciada pelo UNIX.
O projeto do Unix segue um conjunto de princípios que vem se mostrando efetivos em quaisquer projetos, baseados na decomposição de qualquer sistema em partes simples, que por sua vez são combinadas através de um conjunto de mecanismos de composição também simples.
A flexibilidade oferecida pelos serviços do Unix possibilitou a criação
de novos conceitos em várias áreas da computação. A área de redes em geral foi
muito beneficiada. O protocolo TCP/IP, por exemplo,
foi desenvolvido por um grupo que trabalhava na implementação de uma das
primeiras versões free do Unix.
Gerência de Processo
O Unix é multitarefa (permite a execução de vários processos ao mesmo tempo) e multi-usuário (permite o compartilhamento dos recursos entre diversos usuários).Um processo no Unix é identificado por um PID único (identificador de processo).
Para manter o estado de um processo o Unix utiliza, entre outras, as
estruturas proc e user. A estrutura proc é
utilizada para manter informações que têm que ficar na memória durante toda a
vida do processo, e a user contem o restante do estado do processo, e
pode ser paginada para o disco. Essas estruturas mantêm estado de software
independente da máquina, mas o sistema tem que manter o estado de hardware
dependente da máquina. Para isso, o Unix utiliza uma estrutura chamada process control block (pcb).
O Unix funciona em processos seqüenciais com uma única linha (thread) de controle e com daemons, que são processos em background
que sempre estão executando (cron , mail, printer
e finger ).
Como os processos surgem de outros processos, o sistema Unix tem uma
primitiva (system call) fork que é a chamada de sistema para criar
processos - cria uma cópia do processo existente. Por exemplo, um shell Unix cria uma
cópia dele mesmo cada vez que você quer executar um programa e uma cópia espera
enquanto a outra executa o comando. O fork funciona
da seguinte forma:
Uso de FORK pelos filhos possibilita criar uma árvore de processos.
Como os dois processos são idênticos (pai e filho), para executar um
programa diferente o Unix usa o exec , que troca a imagem do programa corrente com o
código e dados do novo programa.
Um processo "normal" consiste em um Thread
e em um Espaço de Endereçamento. O Espaço de Endereçamento é representado pela
tabela de páginas e o estado da Thread é representado
pelo resto. A maioria das estruturas proc e user
são consideradas parte do Espaço de Endereçamento.
A comunicação entre processos é
implementada através de troca de mensagens (pipes)
e de interrupções de software (signal).
Um pipe ocorre quando a saída de um
comando é direcionada como entrada para outro. Um processo pode enviar um signal para outro processo, e o processo informa ao
sistema o que fazer se um signal chegar:
Se o processo aceitar o sinal ele tem que prover um procedimento de manipulação do sinal (signal handling procedure). Um processo só pode enviar um sinal para processos do seu process group: ascendentes irmãos e descendentes
Gerência de Memória
A maioria de sistemas UNIX modernos executam Swap preemptivo, em que os índices de páginas mudadas são copiadas no disco enquanto o disco se torna inativo. A página também é mantida na memória principal de modo que possa ser acessada se necessário. Porém, se uma falha de página ocorrer, o sistema pode imediatamente recuperar as páginas em que houve swap preemptivo somente no tempo necessário para ler a página nova. Isto economiza tempo, visto que escrever no disco leva geralmente duas a quatro vezes mais tempo do ler.
Gerência de Entrada e Saída
Como regra geral, uma chamada ao sistema de I/O retornará 1 bit de informação sobre o status da chamada, significando sucesso ou fracasso. O UNIX utiliza uma variável inteira adicional para retornar um código de erro – entre aproximadamente 100 valores possíveis – indicando a natureza geral da falha.
O kernel utiliza muitas estruturas semelhantes para rastrear as conexões de rede, as comunicações de dispositivos de caracteres e outras atividades de I/O. O Unix fornece acesso a várias entidades via sistema de arquivos, como arquivos de usuário, dispositivos brutos (raw devices) e espaços de endereçamento dos processos. Embora cada uma dessas entidades suporte uma operação read, a semântica difere. Para ler um disco bruto (acesso direto à estrutura fixa do disco), o kernel precisa garantir que o tamanho do pedido é um múltiplo do tamanho do setor e está alinhado em um limite de setor. Para ler uma imagem do processo, basta copiar dados da memória. O Unix encapsula essas diferenças em uma estrutura uniforme usando uma técnica orientada a objetos. O registro de arquivos abertos contém uma tabela de vetores que mantém ponteiros para as rotinas adequadas, dependendo do tipo de arquivo.
Os serviços de nome normais do sistema de arquivos são fornecidos automaticamente, pois o espaço de nomes de dispositivos é incorporado ao espaço de nomes do sistema de arquivos. É dessa forma que ocorre a conexão do nome de arquivo para a controladora de disco.
O Unix representa os nomes de dispositivos no espaço de nomes regular do
sistema de arquivos, mas nenhuma parte do nome de caminho corresponde ao nome
de um dispositivo. Ele possui uma tabela de montagem que associa prefixos de
nomes de caminho a nomes de dispositivos específicos. Para resolver um nome de
caminho, o Unix pesquisa o nome na tabela de montagem para encontrar o prefixo
correspondente mais longo; a entrada correspondente na tabela de montagem
fornece o nome do dispositivo. Esse nome de dispositivo também tem a forma de
um nome no espaço de nomes do sistema de arquivos. Quando o Unix pesquisa esse
nome nas estruturas do diretório do sistema de arquivos, em vez de localizar um
número de inode, o Unix encontra um número de
dispositivo <principal, secundário>. O número de dispositivo principal
identifica um driver de dispositivo que deve ser
chamado para lidar com as operações de I/O nesse
dispositivo. O número de dispositivo secundário é passado para o driver de dispositivo como índice em uma tabela de
dispositivos.A entrada na tabela de dispositivos correspondente fornece o
endereço de porta ou o endereço mapeado em memória da controladora de
dispositivo.
Sistema de Arquivo
Todo sistema operacional UNIX é organizado em uma série de sistema de arquivos hierárquicos, como uma estrutura de arquivo que se parece com uma árvore invertida, estando a raiz no topo, e ramificando-se para baixo.O sistema de arquivo root é o que está localizado no topo da hierarquia da árvore de sistema de arquivos.
Tudo neste sistema é considerado
um arquivo, até mesmo os dispositivos de I/O são
tratados como arquivo pelo sistema.
Os arquivos do Unix são armazenados em meios auxiliares, como disco
rígido ou disquete. Cada arquivo do disco tem um inodo
único, ou nodo de informação. Um inodo contém
informações usadas pelos processos, como informações de acesso que incluem
permissões a arquivo, tamanho do arquivo em caracteres, a informação de
propriedade do arquivo, e a sua localização (endereço como disco, cilindro,
trilha e setor) da área de dados do arquivo no sistema de arquivos do Unix. Vários
campos compõem um inodo, tais como: de Propriedade do
Arquivo, de Tipo de Arquivo, de Permissões do Arquivo, de Datas e Horas do
Arquivo, de Ligações, de TOC, de Tamanho de Arquivo.
Um diretório no sistema Unix é um tipo especial de arquivo que contém como dados números de inodos e nomes dos arquivos contidos no diretório. Cada registro do diretório tem 16bytes de tamanho; 2 bytes para o número do inodo e 14 bytes para o nome do arquivo. (No sistema Unix os nomes de arquivos estão limitados a um máximo de 14bytes e podem ter um mínimo de 1 byte).
A base de funcionamento do Unix é a Alocação Indexada.
Considerações Finais
O Unix é um sistema de propósito geral, multitarefa, multiusuário e multithreaded, com proteção total entre processos. Por utilizar memória virtual (paginação sob demanda), fornece muita rapidez e mais memória aparente do que o real As duas grandes entidades são processos e arquivos e suas peculiaridades de dispositivos de I/O são ocultadas do grosso do sistema operacional propriamente dito pelo subsistema de I/O.
O Unix em geral é criticado por ser baseado numa estrutura concebida há mais de 30 anos e que não acompanhou a evolução na área de Sistemas Operacionais. Existe pelo menos um conceito importante posterior à concepção inicial do Unix e que tem sido apontado como uma necessidade para a melhoria do sistema que é o conceito de micro kernel. A arquitetura baseada em micro kernel, porém, é totalmente compatível ao padrão Unix, tanto que já existem implementações do Unix que se aproveitam desse conceito.
Referências Bibliográficas
Silberschatz, Abrahan e Galvin, Peter e Gagne, Greg. Sistemas Operacionais – Conceitos e aplicações. Editora Campus.
Vanini, Fernando. Inf 511. Disponível na Internet via WWW.URL: http://www.ic.unicamp.br/~vanini/inf512/Aula1.ppt . Arquivo capturado em 22 de janeiro de 2005.
CANAL HTML O sistema de arquivos, Inodos e Diretórios. Disponível na Internet via WWW.URL: http://www.htmlstaff.org/unix/unix02.php . Arquivo capturado em 22 de janeiro de 2005.
BORBA, Paulo O Sistema de Arquivos do UNIX. Disponível na Internet via WWW.URL: http://www.cin.ufpe.br/~phmb/sysadm/sistarquivos.html . Arquivo capturado em 22 de janeiro de 2005.
OLIVEIRA, Rômulo Silva de e CARISSIMI, Alexandre da Silva e TOSCANI, Simão Sirineu. Sistemas Operacionais. Disponível na Internet (transparência) via WWW.URL: http://www.inf.ufrgs.br/~asc/livro/transparencias/cap5.pdf , http://www.inf.ufrgs.br/~asc/livro/transparencias/cap8.pdf . Arquivo capturado em 22 de janeiro de 2005.
ÁRABE, José Nagib Cotrim. Sistemas Operacionais - Introdução a Processos. Disponível na Internet via WWW.URL: http://www.dcc.ufmg.br/~arabe/so97/aulas/aula02.html . Arquivo capturado em 22 de janeiro de 2005.
Sauvé, Jacques Philippe Introdução e Organização Básica do UNIX. Disponível na Internet via WWW.URL: http://jacques.dsc.ufcg.edu.br/cursos/progsh/intro.htm . Arquivo capturado em 22 de janeiro de 2005.