Buscar

História e Arquitetura do Sistema Operacional Linux

Prévia do material em texto

O SO Unix foi concebido em 1969, pela AT&T, nos EUA, por Ken Thompson, Dennis Ritchie, Douglas Mcllroy e Joe Ossanna, e foi lançado em 1971, escrito ainda em assembly, sendo reescrito para a linguagem C somente em 1973, pelo proprio Dennis Ritchie. Sua implementação feita em linguagem de alto nível, tornou mais facil ser compatível com várias plataformas, o que era muito importante, já que a maioria dos programas na época funcionavam por meio de cartões perfurados, tendo que ser inseridos em lotes em mainframes. 
AT&T não podia entrar no negócio de computadores devido a uma lei antitruste (de regulação comercial), então, teve que licenciar o código fonte do Unix para quem quisesse, o que acabou ajudando-o a crescer rápido, sendo usado bastante em instituições academicas entre outras empresas. 
Linus Torvalds, inspirado por um sistema Unix (Minix), começou a desenvolver o Linux juntamente a vários programadores voluntários. 
Em 5 de outubro de 91, Linuz anunciava a primeira versão oficial do Linux, e em 92, mudou sua licença de própria para livre, incentivando a comunidade a desenvolver o SO e fazer do Linux o sucesso que é hoje. 
Quando Linux desenvolveu Linux, queria um SO para seu uso pessoal, não ganhar dinheiro, mas sim atender suas necessidades. Milhares de pessoas contribuiram para o Linux ser do jeito que é hoje, e o objetivo era exatamente esse. Os programas podem até ser vendidos, mas não são comercializados de um jeito fixo, são pelo contrário disponibilizados para compra com o código aberto a modificações. 
A compatibilidade do Linux com diferentes tipos de hardware é algo admirável. Sua flexibilidade o permite abordar do maior supercomputador ao menor dispositivo integrado. Onde está o Linux pode ser mais difícil de responder do que onde ele não está. O SO é encontrado em desktops, servidores, clusters, mainframes, supercomputadores, tablets, entre muitos outros. É difícil citar aqui algo sobre hardware devido a essa possibilidade gigante de portabilidade. 
Linux suporta leitura e ecrita de vários sistemas de arquivos, de vários Sistemas Operacionais. Por isso ele pode ser instalado juntamente a outros SOs, no caso de recuperação e manutenção, por exemplo no caso de um Windows instalado na mesma máquina (Dual Boot). 
3. Arquitetura do Sistema (monolítico? em camadas? micro-kernel? outro? explicar no maior nível possível de detalhe) 
Linux é um núcleo monolítico, e suas funções são executadas no espaço de núcleo. Alguns exemplos de funções são o escalonamento de processos, gerenciamento de memória, operações de E/S, acesso ao sistema de arquivos, entre outros. Porém, algo interessante do Núcleo Linux, é que algumas funções podem ser compiladas e executadas como módulos, ou seja, bibliotecas compiladas separadamente da parte principal do núcleo, que podem ser carregadas e descarregadas após o núcleo estar em execução. 
Como funciona: 
A Arquitetura é dividida em hardware, Kernel, Biblioteca de funções padrão, Shell e Aplicações. 
O Kernel é o responsável também pela manutenção do sistema de arquivos e gerenciamento de memória e swapping. 
Biblioteca de funções padrão é a camada que permite o acesso a recursos através da execução de chamadas feitas por processos, geradas por funções padrão. Tal biblioteca habilita funções padrão como open, read, write e close. 
O Shell é um processo que executa funções de leituras de comandos de entrada de um terminal, interpreta estes comandos e gera novos processos, sempre que requisitados. É conhecido também como interpretador de comandos. O Shell que diz quando o SO está pronto para lr e executar comandos. Vamos supor: o usuário digita um comando, então o Shell identifica o programa, procura por um arquivo com o mesmo nome desse programa e o inicia. 
Por último, aplicações, são programas com os quais interagimos ao usar o sistema operacional Linux, como editores de texto, compiladores, gerenciador de arquivos, entre outros. 
Linux usa uma série de interrupções, para que o hardware sinalize que ele requer tempo do processador, ou que ele tenha terminado sua tarefa. 
Durante o processamento, o SO lida com todos componentes de um computador ao mesmo tempo, ou seja, todas operações de E/S, como memória e cálculo, ocorrem juntas. Como elas levam um tempo para terminar, isso pode gerar um problema quando um recurso exige tempo de processamento prolongado, como entrada e saída. Então, quando um dispositivo de E/S está pronto para está pronto para liberar o controle dos recursos , o sistema operacional continua com outras tarefas até que a E /S envia um pedido de interrupção (IRQ - Interrupt Request Line) para sinalizar a sua condição. 
No Linux, existem Threads ("instâncias" que um processo abre para executar uma ou mais funções em paralelo). A diferença básica entre um processo e uma thread é que apesar de no Linux os dois serem reconhecidos através de um PID (Identificador de Processo), o que torna uma thread conceitualmente também um processo, é que as threads na verdade são filhas de um único processo pai. Ou seja, uma thread nunca irá rodar sozinha, ela é totalmente relacionada a um processo. 
O Linux possui diversas formas de realizar comunicação entre processos, também conhecido com IPC - Interprocess Communications. Estas formas de comunicação se referem a processos em execução na mesma máquina. 
Algumas formas de comunicação são: 
Por memória compartilhada: Disponibiza-se uma área de memória comum à diversos processos, e quando um quer enviar dados a outro, coloca tais dados na memória. 
Por pipes: Cria-se um canal bidirecional na tabela de descritores, parecido realmente com um arquivo, mas funcionando de uma maneira diferente, e sem E/S. 
Por sinais: Quando um processo quer conversar com um segundo processo. Nesse caso não são enviados dados, mas sim um valor numérico. 
Existem ainda outras formas, como por exemplo: 
Por Semáforos: Onde o acesso é gerido por exemplo em modo de exclusividade, de modo que, o semáforo "permanece aberto" apenas para um utilizados do processamento. Porém, essa exclusividade, deve ser a mais rápida possível, para que o tempo de espera dos outros processos não chegue a ser severamente prejudicado. 
 
O último modo citado será a fila de mensagens, que permite criar uma zona de intercâmbio de mensagens de tamanho fixo ao nível do sistema operativo, oferecendo um maior nível de segurança sobre quais os processos que a ela podem aceder. A fila de mensagens é criada com uma chave que deverá ser apenas do conhecimento dos utilizadores deste recurso. 
Uma das característica deste mecanismo é que as mensagens podem ser retiradas selectivamente, já que cada uma é identificada por um tipo de mensagem. A extração pode ser por tipo ou do tipo FIFO (First In First Out). 
 
 
 
Bibliografia: 
https://pt.wikipedia.org/wiki/Linux https://brasilescola.uol.com.br/informatica/historia-do-linux.htm https://www.ibm.com/developerworks/br/library/l-linuxuniversal/index.html https://www.portalgsti.com.br/2017/01/arquitetura-do-linux.html http://ptcomputador.com/Sistemas/linux/203778.html https://www.vivaolinux.com.br/artigo/Sinais-em-Linux https://pt.wikipedia.org/wiki/Comunicação_entre_processos

Continue navegando