Escolar Documentos
Profissional Documentos
Cultura Documentos
03/19/01
1
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
03/19/01
2
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
1 Sistemas Operacionais
1.1 INTRODUÇÃO
03/19/01
3
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
Estes módulos envolvem a camada básica (kernel). As funções disponibilizadas por estes
módulos, algumas vezes escritas em linguagens de baixo nível e na maioria das vezes não
documentadas propositalmente, exigem camadas mais externas de interface. Estas
camadas são então usadas por um conjunto de aplicações auxiilares. Este conjunto (kernel,
modulos, interfaces e aplicações) denominamos de Sistema Operacional.
03/19/01
4
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
Didaticamente, o Kernel pode ser estudado segundo uma estrutura modular. Cada módulo
apresenta-se como responsável pelo gerenciamento de alguma atividade: Memória,
Periféricos, Tarefas, Usuários, Rede, etc
Tais estratégias estabelecem recursos de software para que as aplicações tenham acesso
ao hardware do equipamento. Para entendermos isto, vejamos um exemplo do antigo
Sistema Operacional DOS 3.1 para uma plataforma IBM-PC. Naquele sistema operacional o
kernel (ou cerne) é representado pelo arquivo IBMDOS.COM e as partes associadas aos
periféricos pelo arquivo IBMIO.SYS. As funções são acessadas via interrupção usando
certos registradores como formas de passagem de parâmetros. Vamos assumir a condição
de acessar o arquivo A:\EXEMPLO.TXT.
Uma função básica de leitura é a INT 25H: A função INT 25H transfere o controle de leitura
diretamente para os drivers de periféricos. Os parâmetros são passados via registradores
AL (informado o driver A: ou B: través de números), CX (o número de setores a serem lidos),
DX (o número do setotr logico a ser lido), e DS:BX (um buffer para a transferencia dos
dados). Esta é uma função árdua para o usuário pois exige o conhecimento da posição do
arquivo no disco. Por outro lado, outras funções de Kernel foram inseridas e para facilitar o
acesso ao tal arquivo, basta chamar uma outra função, mais amigável, INT 21H com os
argumentos certos:
Registros de Entradas:
AH = 3DH
DS:DX = Apontador para o nome do arquivo.
AL = Código de Acesso (=0 abrir para leitura, =1 abrir para escrita, =2
abrir para leitura e escrita).
Com esta última função ficou muito mais fácil a abertura do arquivo, certo? O que acontece,
realmente, pode ser "deslumbrado" usando um processo de DEBUG. Nesta condição,
vemos que esta função chamará a função INT25H após o acesso dos setores de diretório, a
busca pelo nome do arquivo e o reconhecimento do setor lógico. Incrível!!!!
03/19/01
5
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
autenticação para o uso de recursos perféricos, tais como discos, impressoras, modens
(exemplo: DOS, Windows NT e Novell).
Memória! Sem ela não há processamento. Só foi possível chegar aos níveis de
computabilidade atuais graças ao desenvolvimento tecnológico. Este possibilitou a redução
(em todos os sentidos) dos chips de memória. Dizemos aqui todos os sentidos pois a
velocidade de memória é medida em tempo de acesso e não em frequência de clock.
Podemos ter uma CPU ultra rápida e bancos de memória ultra lentos. O resultado?
Lentidão, atrasos, tempos de espera para a memória poder recuperar os dados. Podemos
ter também, uma CPU muito mais lenta e bancos de memória rapidíssimos. O resultado
desta comparaçao pode não ser tão óbvio assim. Podemos ter uma máquina com GigaBytes
03/19/01
6
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
de memória com um desempenho muito pior que outra com apenas 128MBytes numa
mesma CPU. Neste último caso, onde estaria o problema?
Sempre que a máquina realiza alguma tarefa ela precisa de memória para armazenar, em
caracter temporário, os resultados parciais obtidos. Assim, o módulo de gerenciamento de
memória é indispensável em qualquer kernel de sistema operacional.
Como sabemos, a quantidade de memória física disponível é limitada, quer pelo custo ou
por limitações de acesso do próprio hardware ou software operacional. É daí que surgem as
dúvidas: Como é possível a execução de um sistema operacional inteiro em alguns
kilobytes (ou de forma mais otimista, alguns megabytes)?
03/19/01
7
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
X é escrito em Y(i)
X é lido de Y(i+1)
Então Y(k) é uma Memória Virtual
Mas, na memória física, teremos códigos que devem ser executados permanentemente para
controlar outras tarefas. A duplicidade destes códigos resultaria em disperdício. Assim, uma
opção é a divisão da memória física. Uma parte para tais códigos e dados permanentes, e
outra para as aplicações. Além da "economia de espaço" também há uma economia na
carga.
03/19/01
8
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
Tanto a área de códigos residentes quanto a de aplicações não consomem todo o espaço
reservado à elas. Então ainda há formas de otimizar o uso do espaço em disco.
Nesta condição, seria melhor que a reserva fosse feita em "partes" menores, pois assim
estaríamos otimizando tal espaço. Logo, é dedutível que a unidade de memória a ser
reservada apresente um menor número de bytes. Repare que neste conceito, código, dados
e "stack" (ou pilha) podem usar a mesma parte de memória indistintamente, dependendo
do que está sendo processado. Uma pequena aplicação, por exemplo, pode requerer a
reserva de uma pequena quantidade de bytes, mas a reserva será do tamanho de um bloco.
03/19/01
9
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
O MÉTODO E CONSEQÜÊNCIAS
Cada página reservada deve identificar seu "dono" que, certamente, será um processo ou
uma thread criada (veremos as definições de thread e processo no módulo de
gerenciamento de tarefas). Esta identificação recebe o nome de PID (Process Identifition
Code, ou, Código de Identificação do Processo). Assim, para o controle destas páginas,
deve haver alguma tabela que armazenará ao número da página e o PID do "processo
proprietário". Esta tabela pode ficar em disco ou em memória reservada ao sistema.
Obviamente, o tamanho desta tabela dependerá do tamanho da página (do número de
páginas mapeáveis).
Cada sistema operacional define um tamanho de página segundo algum critério: Tamanho
de memória física, capacidade de endereçamento mínimo e máximo real da CPU, tamanho
da alocação mínima do disco, etc. Isto facilita o desenvolvimento de aplicações,
dispensando o conhecimento do tamanho do bloco pelo usuário do sistema.
No método de controle por páginação não há como identificar o que é código, dados ou
pilha, uma vez que há um mapeamento direto ou linear da memória física para o arquivo de
pagina virtual. Assim, neste caso, protegemos páginas, ou seja, se ela pode ser acessada
por outros processos, está intimamanete relacionada ao processo proprietário daquele
espaço, e não é possível proteger dados ou códigos diferenciadamente, dificultando, por
exemplo, o compartilhamento destes com outras tarefas.
As páginas reservadas podem não ser contíguas, tanto em disco quanto na seqüência de
mapeamento, o que denominamos de fragmentação. Esta fragmentação é tão prejudicial
quanto a fragmentação de arquivos em disco, implicando em maior tempo de acesso.
Alguns sistemas operacionais quando estão em tempo de espera (IDLE) executam uma
tarefa tida como (NULL). Ela, na verdade, não é tão NULL assim! Há tempo de sobra para
uma desfragmentação.
Uma vez que os tamanhos de reserva podem ser quaisquer, este método de controle
possibilita a fragmentação da área de memória em um nível alto.
03/19/01
10
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
03/19/01
11
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
"Tem algo estranho e curioso aqui!!! Parece que uma estratégia atende bem ao sistema
operacional e a outra atende bem às aplicações!!!!
As duas técnicas tem seus prós e contras. Consideremos um sistema operacional que
empregue apenas o controle por segmentação. Em pouco tempo, a memória virtual estaria
tão fragmentada que não seria mais possivel reservar espaço contínuo de código ou dado
gerando atrasos no acesso a disco e na transferencia para a memória física. Mantendo
dados e códigos juntos, a troca de posição entre memória virtual e memória física,
agilizamos a execução da aplicação.
Por outro lado, vejamos o caso de programas que exigem uma grande área de memória
para código e stack e uma pequena área para dados, sendo estes compartilhados por
outros processos. Na técnica de paginação isto seria inviável. A segmentação seria a mais
adequada.
03/19/01
12
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
método de segmentação. E como o sistema operacional sabe qual a melhor técnica? Uma
das formas é o tipo de extensão do nome do arquivo, identificadores embutidos no
cabeçalho, outra é através de parâmetros definidos em tempo de compilação ou link,
criando assim, um código de programa, ou um número mágico!!!!
Para que ele prgrame prevendo a disposição de códigos e dados de forma adequada,
permitindo sua separação. Consideremos o caso de um software "device-driver". Ele atuará
diretamente no hardware acoplado ao equipamento. Os dados lidos ficarão armazenados
em buffers temporários na região do próprio código. Isto otimiza a forma de acesso
permitindo o uso de apontadores relativos, resultando numa execução mais rápida
(característica indispensável para um device-driver). Num sistema que emprega somente
segmentação, este device-driver necessitaria ser reescrito usando apontadores absolutos,
reduzindo o seu desempenho quanto ao acesso e execução . Pelo visto, algumas
aplicações exigem uma programação de baixo nível!
1.5.2.1 - Definições
Para evitar "confusão" de nomes adotaremos, aqui, como TAREFA a abstração (genérica)
de um procedimento em execução. Uma tarefa pode ser executada em forma de um
PROCESSO ou de uma THREAD.
03/19/01
13
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
• Um Processo PAI pode criar processos FILHOS, e este é uma cópia dos Dados e
códigos do Processo PAI naquele instante de sua criação e, a partir deste momento,
as execuções são independentes (vidas próprias!)
• Os processos podem ser dos tipos:
“Blocked” (Bloqueáveis) - Aguardam por um evento, interrupção, mensagem…
“Suspended” (Suspensos). Um código é interrompido até que outra parte seja
processada totalmente.
Exemplos de sistemas operacionais que operam com THREADS: Windows (9x, NT), BeOS,
Unix, OpenVMS.
OBS: Sistemas WINDOWS e BeOS tem como PROCESSO o próprio Sistema Operacional.
São sistemas MULTI-THREADs. Os outros operam basicamente com processos e, nestes
casos, as THREADS criadas por um determinado processo não interagem com as
THREADS criadas por um outro PROCESSO.
03/19/01
14
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
De qualquer modo, toda tarefa em execução pode ser identificada por um número (PID) e
este é usado para o controle destas tarefas.
Transição 3 - A tarefa está pronta, aguardando sua vez, e todos as demais da fila já foram
executadas;
Transição 4 - A tarefa foi interrompida pelo escalonador devido ao término de uma atividade
crítica de outra tarefa. Ex; uma operação de I/O. Caso não exista nenhuma outra tarefa
ocupando a CPU então a transição 3 é acionada, ao invéz de 4.
A distribuição das tarefas (quem pára, quem roda, quem aguarda) usa a estratégia de
ESCALONAMENTO PREEMPTIVO. Caso as tarefas sejam executadas até o seu término, a
estratégia é denominada de ESCALONAMENTO NÃO-PREEMPTIVO.
03/19/01
15
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
03/19/01
16
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
Reparem que neste exemplo deparamos com condições de igualdade de pesos aparentes e
adotamos uma estratégia de decisão baseada nas prioridades reais. O que aconteceria caso
T3 executasse um código de região crítica? A estratégia adotada seria a mais adequada?
A comunicação entre tarefas podem acontecer utilizando uma ou mais técnicas abaixo:
- MAILBOX
- INTERRUPÇÃO
- EVENTOS
03/19/01
17
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
Considere duas tarefas acessando a mesma posição de memória de modo que o valor final
seja diferente depedendo da ordem de execução das tarefas envolvidas. Denominamos este
"fenômeno" de CONDIÇÃO DE CORRIDA. Em certas condições, a Condição de Corrida
torna-se um "problema", não um "fenômeno"!
a) INIBIÇÃO DAS INTERRUPÇÕES - Uma vez que o escalonamento de tarefas pode ser
feito via interrupção, a inibição destas poderia ser considerada? É alternativa válida, mas
não é apropriada. As interrupções devem ser usadas para a execução de outras tarefas.
Teríamos uma tarefa com 100% de CPU e as outras tarefas ficariam em espera por
tempo indeterminado, o que não é recomendável!
e) INSTRUÇÃO TSL (TEST & SET LOCKED) - É uma opção aplicável para ambiente com
mais de uma CPU e dotados de instrução TSL. Ao ser ativada, esta instrução toma o
barramento de memória tornando-o exclusivo do processo ativo até que ele termine a
execução da instrução. Este tipo de solução pode levar ao problema de PRIORIDADE
INVERTIDA, onde um processo de alta prioridade permanece inativo eternamente.
Então não tem solução para isto? Que tal o uso de dois SEMÁFOROS, uma variável inteira
que conta o número de sinais armazenados para uso futuro. A atualização deles feita por
uma rotina de sistema que não pode sofrer interrupção. Caso a plataforma seja multi-
procesada, complementa-se com TSL.
"Ninguém disse, nem pode dizer, que explorar recursos operacionais é simples! Antes de
explorá-los precisamos saber se existem! Se existirem então vamos buscar 'como' . Se não
existem ou selecionamos outra plataforma e SO ou implementamos o recurso. Só aí
03/19/01
18
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
Não exatamente. Para os sistemas com processamento paralelo foi criada uma primitiva de
alto nível chamada MONITOR para ajudar no sincronismo das tarefas. Esta diretiva pode ser
chamada pelas tarefas sempre que precisarem. Alocando as regiões críticas dentro do
monitor não haverá possibilidade de mais de uma tarefa executar sua região crítica
simultaneamente. Tomemos agora um ambiente envolvendo processamento distribuído.
Para estes, a solução proposta se baseia em troca de mensagens. Nestes sistemas há mais
um problema: podemos perder as mensagens. Neste caso, podemos "contornar" o problema
usando métodos tais que o envio e o recebimento delas sejam GARANTIDAS.
MODERADO: Cada processador executa sua própria cópia de sistema operacional, mas
um deles coordena certas atividades dos outros processadores.
03/19/01
19
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
2) Crie um segundo programa, idêntico ao primeiro, com outra string " Programa 2, %d".
4) Substitua a função exec* do ex. 3 pela função "system" e compare os resultados com a
questão 3. A parte do código de impressão do programa 1 foi executada?
5) Substitua a função exec* do ex. 3 pela função "fork" e compare os resultados com as
questões anteriores. Como ficou a impressão dos resultados?
6) Crie um programa que envie uma mensagem qualquer, fornecida como argumento de
chamada, para um outro programa usando as funções adequadas. Verifiquem as
funções "msgsend" e "msgrcv".
7) Fazer um programa que imprima a hora do sistema, permaneça inativo por um tempo de
5 segundos e depois imprima novamente a hora. Para confirmar a parada de 5
segundos, imprima o instante da parada e reinicio.
9) Criar um programa que use o recurso de memória compartilhada. Use a função mmap e
correlatas. Para usar este recurso no Linux, informe-se sobre a quantidade de memória
física da máquina (ex: 64Mbytes). Em tempo de boot entre com: "linux mem=63m" (retire
1 Mega. Este espaço será utilizado como área de memória compartilhada.)
10) Repita as questões de 1 a 7 usando uma máquina com o sistema operacional diferente
(se vc usou Linux, agora use o Windows, e vice-versa).
03/19/01
20
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
Evidentemente, não há uma "filosofia única" de implementação do sistema de I/O. Ela está
fortemente associada aos recursos disponíveis por hardware (CHIPSET da placa e dos
periféricos) usados nas plataformas
Usamos, ao longo deste texto certos termos como CHIPSET, Irq, Portas de I/O e DMA. Siga
os links!!!
1.5.3.1 CHIPSET:
O controle de todos componentes que constituem um computador jamais poderia ser feito
usando somente a CPU central. Que controle são esses? Tempo de resfresh de RAM,
prioridade de resposta, controle dos barramentos de expansão (ISA, EISA, PCI, etc), portas
de comunicação, controladores de disco, teclado, vídeo, som, etc. Para se ter uma idéia da
importância dos co-processadores e dispositivos auxiliares, se construíssemos um
computador dotado de CPU de 700 MHZ sem eles, este computador teria um desempenho
muitas vezes pior que um PC XT rodando em 4 Mhz (exagerando, é claro!).
Para se ter uma idéia das atividades desempenhadas por estes componentes consulte os
ítens existentes na BIOS de seu computador e leia os manuais que acopanham a placa
mãe.
03/19/01
21
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
sobre os recursos disponíveis na BIOS. Outros fazem sua própria varredura (pesquisa)
acionando recursos do CHIPSET em busca de novos periféricos realocando parâmetros
para proporcionar o máximo desempenho em atividades críticas (acesso a disco, vídeo,
placas de som, etc), tais como: Capacidade de DMA, acesso a disco em multi-setores,
tamanho das memórias cache nos níveis 1 e 2, etc.
OUT OF TOPIC
Falando em PnP, seu computador IBM-PC desktop é mesmo do tipo PnP? E o Notebook? E um
Apple? O que é preciso para um sistema ser, realmente, PnP?
Dizemos que um sistema é PnP quando o trio BIOS, PERIFÉRICO e SISTEMA OPERACIONAL é
PnP e trabalham integrados.. Linux é PnP? Se não, como ele é capaz de detectar os periféricos
existentes? E o NT é PnP? E o Windows 2000?
Por que destas perguntas? Muitas vezes a configuração de certos periféricos e sistemas são
traumáticas justamente por "considerar um recurso disponível", enquanto que, na verdade, não está!
A solução exige uma interferencia manual. Uma placa de rede quando está aos cuidados do PnP
pode não ser explorada adequadamente (modo de operação, velocidade, etc). Drivers deficientes
podem não permitir que se explore tais recursos, mesmo que o periférico seja PnP.
Busquem informações sobre um BUG da CPU Intel, conhecido como F00F (F, zero, zero, F) e como
os fabricantes de sistemas operacionais resolveram o problema.Por ser um problema antigo esta
informação pode estar indisponível
Já que estamos estudando periféricos, há mais algum bug de data (como o Y2K)? Para quando e por
que?0
OBS: O fato de uma CPU ser RISC não implica, necessariamente, que ela possua
um menor número de instruções. Processadores PowerPC 601 tem mais instruções
que um processador Pentium!
03/19/01
22
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
OBS: NADA IMPEDE QUE UMA PLATAFORMA QUE USE UMA CPU TIPO CISC
TRABALHE USANDO BARRAMENTOS DE ENDEREÇOS.
03/19/01
23
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
Exemplos:
1.5.3.3 IRQ
03/19/01
24
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
Qualquer periférico que use uma (ou mais) destas linhas de interrupção, normalmente
periférico de entrada, pode usufruir deste recurso para tomada de decisão (um evento, por
exemplo), ou sinalizar que a tarefa incumbida a ele terminou e os dados estão prontos para
serem "aproveitados".
Há certas situações onde o procedimento que está sendo executado precisa sinalizar algum
evento e gerar uma interrupção de hardware não mascarada ou NMI (Interrupção não-
mascarada). Está aqui uma outra excelente fonte de implementação de alguns serviços do
Kernel para controle de atividades.
Que tal esta outra? Seu computador tem um relógio RTC (Real-Time Clock). Este relógio
tem despertador. Se tem este recurso voce pode usá-lo para sincronizar o relógio do
sistema. Onde se aplica? Programas de Tempo Real (Real-Time Simulation). Normalmente,
os sistemas operacionais apresentam uma taxa de sincronismo entre estes relógios em
tempos, relativamente, grande demais para este tipo de aplicação.
03/19/01
25
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
Com este recurso a CPU não se envolve com a transferência de dados, aumentando a
velocidade de operação .
Para reduzir o bloqueio de acesso podemos utilizar recursos de DMA, desde que disponível.
Neste caso a transferência de dados se dá diretamente entre a memória e periféricos. Os
dados são transferidos em blocos (ou bancos) e não mais byte a byte. Enquanto há a
transferência tanto a CPU quanto demais periféricos não envolvidos com a ação e presentes
no barramento são impedidos de acessarem o barramento de memória (modo suspenso),
porém, o tempo é muito menor. Através de recursos de cache de nível 2 (cache externo), a
CPU poderá continuar com a execução de algum código, mesmo que o barramento de
memória principal esteja suspenso.
03/19/01
26
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
03/19/01
28
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
1) Faça o teste de múltiplas sessões em outros sistemas operacionais: OS/2, HP-UX, AIX,
OpenVMS (tem uma conta disponível para testes em OpenVMS, Linux e Windows NT em
máquinas com acesso controlado. Informe-se com o professor).
03/19/01
29
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
usuário, o número de indentificação do grupo que ele pertence, shell utilizado, diretório
inicial, etc.
A senha é cifrada segundo algum método. Uma forma seria o emprego de one-way-hash-
function. O usuário fornece a senha em modo aberto (plain/text) e esta função gera a
informação na forma cifrada (ciphertext), comparando-a com aquela armazenada em
arquivo. A alteração de um bit na senha fornecida gerará um valor completamente diferente.
Isto quer dizer que a entrada de uma senha no formato cifrado não gerará o mesmo valor.
Uma referencia recomendada para se iniciar na área de criptografia é o documento do PGP
disponível em www.pgp.com. As referências, abaixo, são recomendadas por Philip
Zimmermann, criador do PGP no tutorial da aplicação.
03/19/01
30
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
----------------------------------------------------
OUT OFF TOPIC, BUT NOT SO MUCH!
Existem certos aplicativos disponíveis por aí (na Internet) que são usados para quebrar
senhas. Para terem uma idéia, em alguns minutos, com um destes aplicativos rodando em
um Pentium de 300 Mhz em um certo sistema operacional, foi possível capturar e quebrar
mais de 10 senhas de usuários. (não quebrou mais pois foi desativado!). Isto indica que o
método usado para o armazenamento das senhas ou transmitidas pela rede (mesmo
cifradas) não apresenta uma cifragem adequada (o que chamamos de criptografia fraca).
Este é o motivo pelo qual os métodos de autenticação implementam recursos de senhas
com tempo de expiração. A atualização de senhas é fundamental para a segurança de
um sistema e de qualquer rede, e qualquer que sejam os Sistemas Operacionais das
máquinas envolvidas. Nos cursos seguintes, veremos que NÃO EXISTE SISTEMA
OPERACIONAL SEGURO.
Este "shell" (ambiente de comando) pode ser em linha de comando (prompt) permitindo a
execução de aplicativos sem requintes gráficos, ou mesmo um ambiente gráfico, quer seja
como "casca" ou aplicações gráficas dedicadas.
Na forma dedicada , o shell disponibiliza grande parte dos comandos de forma gráfica
executando-os em processos separados com a saída direcionada para aquele assento ou
terminal do usuário. Na forma de "casca", o usuário habilita as opções desejadas e o shell
executa o procedimento em linha de comando, com os parâmetros de entrada selecionados
pelo usuário, em um outro processo/thread.
03/19/01
31
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
no diretório /usr/bin. Numa versão de outro fabricante as mesmas aplicações (até mesmo
com nomes idênticos), estão num diretório diferente.
O recurso de estabelecer a conexão entre máquinas não é recente. Sempre foi uma
preocupação desde que se comprovou a viabilidade dos computadores. O módulo de Rede
veio, portanto, propiciar este requinte, hoje, "tão comum".
O sistema Operacional precessor de quase todos era o Unix. Quando foi criado buscava
atender um grande número de usuários conectados via terminais "burros" ligados através de
linhas seriais e protocolos de baixo nível. Em 1972 iniciavam estudos de um protocolo que,
mais tarde viria revolucionar e interligar o mundo: o TCP/IP. O objetivo era possibilitar a
execução remota, impressão, compartilhamento de arquivos, mensagens, etc, entre
máquinas e entre redes diferentes.
Como estamos vendo, a implementação do módulo de rede tem um acoplamento muito forte
com os objetivos do sistema operacional, e é o responsável por disponibilizar funções e
serviços de sistema que propiciem a interligação das máquinas.
Por ser um módulo que exige desempenho, ele requer uso exaustivo de memória e
programações otimizadas para minimizar o uso de CPU. Quanto maior for a velocidade
usada no meio físico (meio usado para interligar as máquinas), mais rápido deve a CPU,
barramentos internos, acesso à memória, enfim o hardware envolvido. A chegada de um
03/19/01
32
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
O módulo de rede, como se observa, é um grande cliente dos outros módulos e o provedor
de serviços (funções básicas) para as aplicações de rede.
Com a internet iniciou-se uma corrida para a inserção do protocolo TCP/IP nos módulos de
rede. E foi justamente aí que começaram os problemas de segurança, exigindo atualização
constante deste módulo (especificamente, das funções de serviço que ele proporciona).
Vamos nos aprofundar neste módulo de rede, com o objetivo de entender o "fenomeno
rede", suas aplicações, serviços, operação, características, etc no próximo capítulo
03/19/01
33
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS - SISTEMAS OPERACIONAIS
03/19/01
34
Ulisses Thadeu V Guedes