segunda-feira, 4 de abril de 2011

Principais Serviços de um Sistema UNIX

init

O mais importante serviço isolado disponível em um sistema UNIX é denominado init. O init é o primeiro processo iniciado em todos os sistemas UNIX, apos a carga do kernel do sistema. Quando o init é disparado, ele continua o processo de inicialização do sistema, executando diversas tarefas necessárias ao funcionamento do UNIX (checando e montando sistemas de arquivos, iniciando serviços,etc).

A lista exata de tarefas que o init realiza depende do estado em que ele esta. O init provê o conceito de modo monousuário, no qual ninguém, além do root, pode entrar no sistema, sendo utilizado somente o shell do console do sistema, ou o modo multiusuário, o modo padrão de inicio do sistema. Algumas versões generalizam isso, denominando-os níveis de execução; sendo os modos mono e multiusuário considerado como níveis, podendo existir diversos outros, como por exemplo , aquele que permite a execução do X (interface gráfica) na console.

Em uma operação normal, o init certifica-se que o getty esta sendo executado (permite acesso aos usuários) e adota processos órfãos (processos cujos programas que o iniciaram (chamado de pais) morreram (não esta sendo mais executado)). No UNIX todos os processos devem estar em uma estrutura do tipo árvore, devendo todos eles terem um “pai”.

Quando um sistema é desligado, é o init que se encarrega de finalizar todos os outros processos, desmontar todos os sistemas de arquivos e parar o processador junto com tudo o mais que esteja sendo executado.

Acesso a partir de terminais

Os acessos a partir de terminais (via linhas seriais) e através do console (quando não esta sendo executado o X), são disponibilizados pelo getty. o init inicia uma instancia distinta do getty para cada terminal, no qual o acesso é permitido. O getty lê o nome do usuário e executa o programa de acesso login, o qual por sua vez processa a validação da senha do usuário. Caso usuário e senha sejam validos, o login inicia o shell do usuário. Quando um shell é finalizado, isto é, o usuário sai do sistema, ou quando o login é finalizado porque usuário ou senha são incorretos, o init inicia uma nova instancia do getty. O kernel não tem conhecimentos dos acessos, pois tudo isso é controlado pelos programas de sistema.

Syslog

O kernel e muitos programas do sistema produzem vários avisos, mensagens de erros, e outros alertas. É importante que estas mensagens possam ser lidas outra hora, mesmo que isto demore muito tempo desde o ocorrido. Para que isso seja possível elas devem ser gravadas em um arquivo. O programa responsável por este arquivamento é o syslog. Ele pode ser configurado para gravar as mensagens em diferentes arquivos de acordo com o nível de importância ou origem. As mensagens do kernel são frequentemente direcionadas para arquivos distintos, pois estas mensagens são normalmente mais importantes e necessitam ser lidas com amis frequência para se evitar/sanar problemas.

Comandos periódicos: cron e at

Tanto administradores do sistema como usuários comuns necessitam executar periodicamente determinados programas. O administrador do sistema quer executar um comando para limpar os diretórios que contenham arquivos temporários antigos ( /tmp e /var/tmp ), evitando assim que os discos rígidos fiquem cheios de arquivos sem utilidade, uma vez que nem todos os programas apagam os arquivos temporários após a sua execução.

o cron foi criado para atender a essa demanda. Cada usuário tem uma tabela do  cron (crontab) à sua disposição, onde se inclui os comandos desejados e a frequência com que eles devem ser executados. O daemon do cron encarrega-se de executar os comandos nos dias e horários definidos.

O comando at é similar ao cron, mas esta limitado a uma única execução: o comando é executado em um determinado horário fornecido, mas não repedidas vezes.

Interface Gráfica

O UNIX e o Linux não incorporam a interface do usuário ao kernel. Ela é implementada pelos programas a nível de usuário, tanto no modo texto como no ambiente gráfico.

Esta solução gera uma maior flexibilidade para o sistema, mas, pela facilidade de implementação, pode-se ter uma multiplicidade exagerada de interfaces, uma para cada programa, tornando o sistema mais complexo de ser utilizado.

O ambiente gráfico usado com o Linux é chamado de X Window (X). O X na verdade não implementa a interface gráfica, somente disponibiliza um sistema de janelas, onde outros programas podem implementar um ambiente gráfico. Algumas interfaces gráficas mais populares para o Linux são: KDE, GNOME, WINDOWS MAKER.
No ambiente UNIX sendo o CDE.

Rede

Rede pode ser definida como a conexão entre dois ou mais computadores,s de forma que eles possam comunicar-se entre si. Os métodos de conexão e comunicação são um tanto complexo, porem os resultados são muito uteis.

Os sistemas UNIX tem muitas características de rede. Os serviços básicos de impressão, copias de segurança, sistemas de arquivos, etc, podem ser realizadas através da rede. Isso pode tornar a administração do sistema mais simples, uma vez que permite a suas administração de forma centralizada, mantendo os benefícios do processamento distribuído e do uso de microcomputadores, gerando menores custos e melhor tolerância a falhas.

Acesso via Rede

Os acessos via rede são um pouco diferentes dos acessos normais, onde há uma linha serial distinta para cada terminal, através da qual  é possível acessar o sistema. Nos casos de acessos via rede, para cada usuário que conecta-se ao sistema, há uma conexão virtual separada, podendo haver um numero ilimitado delas. Não é mais possível executar um getty para cada conexão virtual possível. Existem muitas formas diferentes de conectar-se via rede, sendo o telnet e rlogin  os mais utilizados em redes TCP/IP, hoje sendo o ssh um serviço mais utilizado e mais seguro.

Acessos via rede tem, ao invés de inúmeros getty, um servidor controlando o acesso ( o telnet o rlogin e o SSH utilizam servidores distintos), o qual monitora as tentativas de conexão. Quando algum usuário tenta conectar-se, o servidor inicia uma nova instancia de si próprio para controlar esta conexão enquanto o servidor original continua monitorando novas tentativas. As novas instancias funcionam de maneira similar ao getty.

Sistemas de arquivos em Rede (NFS)

Uma das maiores facilidades disponibilizadas pelos serviços de rede é o compartilhamento de arquivos através de sistemas de arquivos em rede. O mais usado é conhecido como NFS (Network File System), tendo sido desenvolvido pela Sun.

Com um sistema de arquivos em rede, qualquer operação com arquivos executados por um programa em uma maquina, é enviada pela rede para outro computador. Esse procedimento faz o programa “pensar” que todos os arquivos encontram-se no mesmo equipamento onde ele esta sendo executado. Isto torna o compartilhamento de informações muito simples, já que não requer nenhuma modificação nos programas utilizados.

Correio Eletrônico

O correio eletrônico é normalmente o mais importante meio de comunicação entre os usuários. Uma mensagem eletrônica é armazenada em um arquivo, formatada de maneira especial, e programa de correio específicos são utilizados para ler e enviar mensagens.

Cada usuário tem uma caixa de entrada de mensagens ( um arquivo com um formato especial) onde todas as novas mensagens são armazenadas. Quando alguém envia uma nova mensagem, o programa de correio localiza a caixa do destinatário e adiciona a nova mensagem ao arquivo de mensagens. Caso a caixa de entrada esteja em outra maquina, a mensagem é enviada através da rede para o equipamento que mantem os arquivos de correio do destinatário.

O sistema de correio é constituído por uma serie de programas. A entrega de mensagens para usuários remotos é realizada por uma programa especifico ( o agente de transferência de mensagens ou MTA, como por exemplo o sendmail ou qmail), enquanto os programas de usuários são também distintos (agente de correio de usuário MUA, por exemplo: pine, elm, evolution). As caixas postais são normalmente armazenadas no diretório /var/spool/mail.

Impressão

Somente um usuário pode utilizar uma impressora a cada vez, mais seria anti-econômico não compartilhar esse recurso entre os demais usuários da rede. A impressora é gerenciada por um software que implementa o conceito de fila de impressão: todos os trabalhos são colocados em uma fila e todas vez que a impressora finaliza um trabalho de impressão, o seguinte é iniciado automaticamente. Isso evita que os usuários tenham que organizar esta fila ou que haja problemas no controle de uso da impressora.

O software de fila de impressão também trava os trabalhos de impressão em disco, ou seja os textos são mantidos em um arquivo enquanto estejam na fila de impressão. Isso permite que uma aplicação transfira rapidamente os trabalhos de impressão para o software gerenciador da fila, não tendo que esperar que o trabalho de impressão seja finalizado para continuar a sua execução.

Nenhum comentário:

Postar um comentário