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.