Buscar

Introdução ao Linux: História, Hardware e Aplicações

Prévia do material em texto

Linux
Introdução
propósito do sistema operacional
Em 1991, em Helsinki, Linus Torvalds começou o projeto que mais tarde se tornaria o núcleo Linux. Era inicialmente um emulador de terminal, o qual Torvalds usava para acessar os grandes servidores UNIX da universidade. Ele escreveu um programa especificamente para o hardware que estava usando e independente de um sistema operacional porque queria usar as funções de seu novo computador com um processador 80386. O desenvolvimento foi feito no MINIX usando o GNU C compiler, o qual é ainda hoje a escolha principal para compilar o Linux (embora o código possa ser construído com outros compiladores, como o Intel C Compiler).
No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versão "oficial" do núcleo Linux, versão 0.02. No ano de 1992, Linus Torvalds mudou a licença do núcleo Linux, de uma licença própria para uma licença livre compatível com a GPL do projeto GNU. Desde então, muitos programadores têm contribuído com o desenvolvimento, ajudando a fazer do Linux o núcleo de enorme sucesso colaborativo que é hoje. No início era utilizado por programadores ou só por quem tinha conhecimentos e usava linhas de comando. Hoje isso mudou e existem diversos grupos que criam ambientes gráficos para as diversas distribuições GNU/Linux, que são cada vez mais amigáveis, de forma que, uma pessoa com poucos conhecimentos consegue usar o Linux, através de uma distribuição GNU/Linux, por exemplo. Hoje o Linux é um núcleo estável e consegue reconhecer muitos periféricos sem a necessidade de que o usuário precise instalar drivers de som, vídeo, modem, rede, entre outros.
Descreva o hardware subjacente deste SO
Embora Linus Torvalds não tivesse como objetivo inicial tornar o Linux um sistema portátil, ele evoluiu nessa direção. Linux é hoje um dos núcleos de sistemas operativos mais portáteis, correndo em sistemas desde o iPaq (um computador portátil) até o IBM S/390 (um denso e altamente custoso mainframe).
Os esforços de Linus foram também dirigidos a um diferente tipo de portabilidade. Portabilidade, de acordo com Linus, era a habilidade de facilmente compilar aplicações de uma variedade de código fonte no seu sistema; consequentemente, o Linux originalmente tornou-se popular em parte devido ao esforço para que os códigos-fonte GPL ou outros favoritos de todos corressem em Linux.
O Linux hoje funciona em dezenas de plataformas, desde mainframes até um relógio de pulso, passando por várias arquitecturas: x86(Intel, AMD), x86-64 (Intel EM64T, AMD64), ARM, PowerPC, Alpha, SPARC e etc, com grande penetração também em sistemas embarcados, como handhelds, PVR, console de videogames, celulares, TVs e centros multimídia, entre outros.
quais tipos de aplicação este SO atende
O sistema operacional Linux, atende vários tipos de necessidade para diversas áreas de conhecimento, um sistema interativo com usuário e executa diversas aplicações em tempo real. Alguns exemplos de aplicações são:
Engenharia civil e engenharia mecânica: As engenharias civil e mecânica requerem, usualmente, aplicativos que simplifiquem as rotinas correntes dos projetistas quando do desenvolvimento de modelos computacionais associados a estruturas reais. Esses aplicativos devem permitir, inclusive, que os engenheiros possam visualizar todas as etapas do processo. Dessa forma, destacam-se os programas de CAD (Computer Aided Design).
Engenharia de sistemas e computação: A engenharia de sistemas e computação atua basicamente na área de criação de sistemas (software) capazes de interagir com equipamentos (hardware). Faz-se necessário, então, que esse segmento da engenharia lance mão de aplicativos capazes de projetar esse tipo de sistema. Os aplicativos empregados para produzir esse tipo de sistema (softwares) recebem a designação de compiladores. No sistema operacional Linux existem inúmeros tipos de compiladores, cada um com a sua característica própria. Os compiladores utilizados de forma corrente, geralmente estão associados às linguagens de programação, C, PASCAL, FORTRAN e Java.
GRETL: Gretl (acrônimo de Gnu Regression, Econometrics and Time-series Library) é um software livre que compila e interpreta dados econométricos. O programa é escrito na linguagem C e usa o Gnuplot para gerar gráficos.
quais os requisitos do tipo de aplicação do SO 
Tempo de resposta baixo – consulta segmentada e com um tempo baixo de retorno; Visual minimalista — sem propagandas e usando as cores padrão do seu terminal, por exemplo Tudo começa no terminal – depois de feito a consulta, é possível abrir, o conteúdo do resultado, no navegador web de sua preferência Interação com os resultados obtidos Suporte estendido – keywords da Engine de pesquisa da Google, tais como ‘filetype:pdf’, ‘site:linuxdescomplicado’ e outras. Além disso, abrir o primeiro resultado no navegador ; tal como, o famoso “Estou com sorte”. Continua sendo um terminal – suporte ao recurso de auto completar do shell. Esses teste foram ralizado no Linux em algumas ferramentas oferecida por ele. No entanto pode variar em algumas aplicações.
como este SO atende esses requisitos
O Linux possui suporte de leitura e escrita a vários sistema de arquivos, de diversos sistemas operacionais, além de alguns sistemas nativos. Por isso, quando o Linux é instalado em dual boot com outros sistemas (Windows, por exemplo) ou mesmo funcionando como Live CD, ele poderá ler e escrever nas partições formatadas em FAT e NTFS. É por isso que os Live CDs Linux são muito utilizados na manutenção e recuperação de outros sistemas operacionais.
Entre os sistemas de ficheiros suportados pelo Linux, podemos citar UFS (Unix), FAT, NTFS, JFS, XFS, HPFS, Minix e ISO 9660 (sistema de ficheiros usado em CD-ROMs), este último também com as extensões RRIP (IEEE P1282) e ZISOFS. Alguns sistemas de ficheiros nativos são, entre outros, Ext2, Ext3, Ext4, ReiserFS e Reiser4. Alguns sistemas de ficheiros com características especiais são SWAP, UnionFS, SquashFS, Tmpfs, Aufs e NFS, dentre outros.
Arquitetura do Sistema
O Linux é um núcleo monolítico: as funções do núcleo (escalonamento de processos, gerenciamento de memória, operações de entrada/saída, acesso ao sistema de arquivos) são executadas no espaço de núcleo. Uma característica do núcleo Linux é que algumas das funções (drivers de dispositivos, suporte à rede, sistema de arquivos, por exemplo) podem ser compiladas e executadas como módulos (em inglês: LKM - loadable kernel modules), que são bibliotecas compiladas separadamente da parte principal do núcleo e podem ser carregadas e descarregadas após o núcleo estar em execução.
O termo Linux refere-se ao núcleo (em inglês: "kernel") do sistema operativo que inicia e gerencia outros programas que fornecem o acesso aos recursos do sistema como os vários software livres de shells, compiladores, bibliotecas-padrão e os comandos que fazem parte do Projeto GNU. O Projeto GNU, por sua vez, foi criado pela Free Software Foudation com o intuito de criar um sistema operacional completo, totalmente livre e compatível com o Unix. O principal compilador do Linux C, gcc, é um pedaço do projeto GNU.
sistema de interrupção deste SO
Existem dois tipos básicos de interrupções: as usadas por dispositivos (para a comunicação com a placa mãe) e programas (para obter a atenção do processador). As interrupções de software são mais usadas por programas, incluindo o sistema operacional, e as interrupções de hardware são mais usadas por periféricos. Daqui para frente, serão explicados somente os detalhes sobre as interrupções de hardware.
Os antigos computadores 8086/8088 (XT) usavam somente 8 interrupções de hardware, operando a 8 bits. Com o surgimento do AT, foram incluídas 8 novas interrupções, operando a 16 bits. Os computadores 286 e superiores tem 16 interrupções de hardware, numeradas de 0 a 15. No kernel 2.4 e superiores do Linux, a função APIC (Advanced Programmable Interruption Controller) permite gerenciar de forma avançada mais de 15 interrupções no sistema operacional. Estasinterrupções oferecem ao dispositivo associado a capacidade de interromper o que o processador estiver fazendo, pedindo atenção imediata.
As interrupções do sistema podem ser visualizadas no kernel com o comando cat /proc/interrupts. Cada IRQ no sistema tem um número que identifica a prioridade que será atendida pelo processador. Nos antigos sistemas XT, as prioridades eram identificadas em sequência de acordo com as interrupções existentes:
Suporte a threads
O Linux não faz distinção entre threads e processos, pois todos os threads são implementados como um processo-padrão. A diferença consiste em que apenas os threads são capazes de compartilhar os recursos disponíveis.
Existem ainda os threads do kernel que são úteis para o kernel executar operações em segundo plano. Esses threads existem apenas no espaço do kernel e não tem um endereço, mas são programáveis e antecipados como processos normais, além de serem invocados apenas a partir de um outro thread através da função kernel threads().
Intercomunicação entre Processos
O Linux possui diversas formas de realizar comunicação entre processos, também conhecido com IPC. Estas formas de comunicação se referem a processos em execução na mesma máquina, o que não inclui sockets ou RPC (são para comunicação entre máquinas distintas). 
Dentre as técnicas de comunicação entre processos fornecidas pelo Linux, convém citar: 
por memória compartilhada: através de diretivas shm* pode-se disponibilizar uma área de memória comum à vários processos. Simples: quando um processo quer enviar dados ao outro, põe na memória. 
pipes: um método muito interessante onde se cria um canal bidirecional na tabela de descritores, como se fosse arquivo, mas não é (e não tem I/O). Quando você faz um ls -la | sort está usando pipe! 
sinais: quando um processo quer sinalizar algo a outro processo. Ao contrário das demais nesta não se envia dados mas apenas um valor numérico. 
Existem outras formas de comunicação como semáforos, fila de mensagens e até mesmo morte de filho, que é considerada uma comunicação. Se você digitar ipcs na linha de comando irá ver os canais de comunicação atualmente em uso (não sinais). Minha idéia é falar dos principais tipos de comunicação em diversos artigos, começando por sinais, até para desmistificar o comando kill. Usarei exemplo em C para Linux. 
REFERÊNCIA:
O famoso software livre Linux: https://www.infoescola.com/informatica/linux/. Acessado em 08 Agosto 2018.
História do Linux: https://pt.wikipedia.org/wiki/Hist%C3%B3ria_do_Linux#A_cria%C3%A7%C3%A3o_do_Linux. Acessado em 08 Agosto 2018.
Linux: https://pt.wikipedia.org/wiki/Linux#Arquitetura. Acessado em 08 Agosto 2018.
Requisitos mínimos pro Linux: https://www.hardware.com.br/comunidade/requisitos-linux/767857/. Acessado em 08 Agosto 2018.
Visão Geral sobre o Linux, o Sistema Operacional que é uma Plataforma Universal: https://www.ibm.com/developerworks/br/library/l-linuxuniversal/index.html. Acessado em 08 Agosto 2018.
Informações sobre Hardware no GNU/Linux - Guia Geral e Prático: https://www.vivaolinux.com.br/artigo/Informacoes-sobre-Hardware-no-GNULinux-Guia-Geral-e-Pratico. Acessado em 08 Agosto 2018.
Pre requisitos do Linux: https://developer.mozilla.org/pt-BR/docs/Mozilla/Developer_guide/Intrucoes_Build/Pre_requisitos_Linux. 
Guia do Linux/Avançado/Hardware/Barramento: https://pt.wikibooks.org/wiki/Guia_do_Linux/Avan%C3%A7ado/Hardware/Barramento. Acessado em 08 Agosto 2018.
Linux, Entenda o Sistema:https://www.hardware.com.br/livros/entendendo-linux/. Acessado em 08 Agosto 2018.
terminal Linux: https://www.linuxdescomplicado.com.br/2016/12/saiba-como-fazer-pesquisas-no-google-diretamente-pelo-terminal-linux.html. Acessado em 08 Agosto 2018.
22 aplicações científicas para Linux – Eletrônica, Estatística, Física e mais: https://www.linuxdescomplicado.com.br/2016/01/22-aplicacoes-cientificas-para-linux-eletronica-estatistica-fisica-e-mais.html. Acessado em 08 Agosto 2018.
Arquitetura do Linux: https://www.portalgsti.com.br/2017/01/arquitetura-do-linux.html. Acessado em 08 Agosto 2018.
Linux: Requisitos mínimos para o servidor Linux x86_64: https://www.ibm.com/support/knowledgecenter/pt-br/SSEQVQ_8.1.4/srv.install/r_srv_lnx_sysreq_inst_x-linux.html. 
Guia do Linux/Iniciante+Intermediário/Hardware/Configuração de Hardware: https://pt.wikibooks.org/wiki/Guia_do_Linux/Iniciante%2BIntermedi%C3%A1rio/Hardware/Configura%C3%A7%C3%A3o_de_Hardware. Acessado em 08 Agosto 2018.
Threads no Linux: http://escalonamentoprocessos.blogspot.com/2010/10/threads-no-linux.html.
COMUNICAÇÕES ENTRE PROCESSOS: https://www.vivaolinux.com.br/artigo/Sinais-em-Linux. Acessado em 08 Agosto 2018.

Continue navegando