b'\n_START_ARTICLE_\nUnix\n_START_SECTION_\nHist\xc3\xb3ria\n_START_PARAGRAPH_\nEm 1965 formou-se um grupo de programadores, incluindo Ken Thompson, Dennis Ritchie, Douglas McIlroy e Peter Weiner, num esfor\xc3\xa7o conjunto da AT&T (Laborat\xc3\xb3rios Bell), da General Electric (GE) e do MIT (Massachussets Institute of Technology) para o desenvolvimento de um sistema operacional chamado Multics._NEWLINE_O Multics deveria ser um sistema de tempo compartilhado para uma grande comunidade de usu\xc3\xa1rios. Entretanto, os recursos computacionais dispon\xc3\xadveis \xc3\xa0 \xc3\xa9poca, particularmente os do computador utilizado, um GE 645, revelaram-se insuficientes para as pretens\xc3\xb5es do projeto. Em 1969, a Bell retirou-se do projeto. Duas raz\xc3\xb5es principais foram citadas para explicar a sua sa\xc3\xadda. Primeira: tr\xc3\xaas institui\xc3\xa7\xc3\xb5es com objetivos d\xc3\xadspares dificilmente alcan\xc3\xa7ariam uma solu\xc3\xa7\xc3\xa3o satisfat\xc3\xb3ria para cada uma delas (o MIT fazia pesquisa, AT&T monopolizava os servi\xc3\xa7os de telefonia americanos e a GE queria vender computadores). A segunda raz\xc3\xa3o \xc3\xa9 que os participantes sofriam da s\xc3\xadndrome do segundo projeto e, por isso, queriam incluir no Multics tudo que tinha sido exclu\xc3\xaddo dos sistemas experimentais at\xc3\xa9 ent\xc3\xa3o desenvolvidos._NEWLINE_Ainda em 1969, Ken Thompson, usando um ocioso computador PDP-7, come\xc3\xa7ou a reescrever o Multics num conceito menos ambicioso, batizado de Unics, usando linguagem de montagem assembly. Mais tarde, Brian Kernighan rebatizou o novo sistema de UNIX._NEWLINE_Um marco importante foi estabelecido em 1973, quando Dennis Ritchie e Ken Thompson reescreveram o Unix, usando a linguagem C, para um computador PDP-11. A linguagem C havia sido desenvolvida por Ritchie para substituir e superar as limita\xc3\xa7\xc3\xb5es da linguagem B, desenvolvida por Thompson._NEWLINE_Finalmente, ao longo dos anos 70 e 80 foram sendo desenvolvidas as primeiras distribui\xc3\xa7\xc3\xb5es de grande dimens\xc3\xa3o como os sistemas BSD (na Universidade de Berkeley na Calif\xc3\xb3rnia) e os System III e System V (na AT&T)._NEWLINE_Em 1977, a AT&T come\xc3\xa7ou a fornecer o Unix para institui\xc3\xa7\xc3\xb5es comerciais. A abertura do mercado comercial para o Unix deve muito a Peter Weiner - cientista de Yale e fundador da Interactive System Corporation. Weiner conseguiu da AT&T, ent\xc3\xa3o j\xc3\xa1 desnudada de seu monop\xc3\xb3lio nas comunica\xc3\xa7\xc3\xb5es e liberada para atua\xc3\xa7\xc3\xa3o no mercado de software, licen\xc3\xa7a para transportar e comercializar o Unix para o computador Interdata 8/32 para ambiente de automa\xc3\xa7\xc3\xa3o de escrit\xc3\xb3rio. O Unix sa\xc3\xada da linha das m\xc3\xa1quinas PDP, da Digital Equipament Corporation (DEC), demonstrando a relativa facilidade de migra\xc3\xa7\xc3\xa3o (transporte) para outros computadores, e que, em parte, deveu-se ao uso da linguagem C. O sucesso da Interactive de Weiner com seu produto provou que o Unix era vend\xc3\xa1vel e encorajou outros fabricantes a seguirem o mesmo curso. Iniciava-se a abertura do chamado mercado Unix._NEWLINE_Com a crescente oferta de microcomputadores, outras empresas transportaram o Unix para novas m\xc3\xa1quinas. Devido \xc3\xa0 disponibilidade dos fontes do Unix e \xc3\xa0 sua simplicidade, muitos fabricantes alteraram o sistema, gerando variantes personalizadas a partir do Unix b\xc3\xa1sico licenciado pela AT&T. De 1977 a 1981, a AT&T integrou muitas variantes no primeiro sistema Unix comercial chamado de System III. Em 1983, ap\xc3\xb3s acrescentar v\xc3\xa1rios melhoramentos ao System III, a AT&T apresentava o novo Unix comercial, agora chamado de System V. Hoje, o Unix System V \xc3\xa9 o padr\xc3\xa3o internacional de fato no mercado Unix, constando das licita\xc3\xa7\xc3\xb5es de compra de equipamentos de grandes clientes na Am\xc3\xa9rica, Europa e \xc3\x81sia._NEWLINE_Atualmente, Unix (ou *nix) \xc3\xa9 o nome dado a uma grande fam\xc3\xadlia de Sistemas Operativos que partilham muitos dos conceitos dos Sistemas Unix originais (GNU/Linux, embora compartilhe conceitos de sistemas da fam\xc3\xadlia Unix, n\xc3\xa3o faz parte desta fam\xc3\xadlia por n\xc3\xa3o compartilhar de c\xc3\xb3digo derivado de algum sistema da fam\xc3\xadlia Unix e n\xc3\xa3o possuir o mesmo objetivo e filosofia no qual o Unix se originou e, em grande parte, mant\xc3\xa9m at\xc3\xa9 hoje), sendo todos eles desenvolvidos em torno de padr\xc3\xb5es como o POSIX (Portable Operating System Interface) e outros. Alguns dos Sistemas Operativos derivados do Unix s\xc3\xa3o: BSD (FreeBSD, OpenBSD e NetBSD),  Solaris (anteriormente conhecido por SunOS), IRIX, AIX, HP-UX, Tru64, SCO, e at\xc3\xa9 o Mac OS X (baseado em um n\xc3\xbacleo Mach BSD chamado Darwin).  Existem mais de quarenta sistemas operacionais *nix, rodando desde celulares a supercomputadores, de rel\xc3\xb3gios de pulso a sistemas de grande porte.\n_START_SECTION_\nSistema operacional multitarefa\n_START_PARAGRAPH_\nMultitarefa significa executar uma ou mais tarefas ou processos simultaneamente. Na verdade, em um sistema monoprocessado, os processos s\xc3\xa3o executados sequencialmente de forma t\xc3\xa3o r\xc3\xa1pida que parecem estar sendo executados simultaneamente. O Unix escalona sua execu\xc3\xa7\xc3\xa3o e reserva-lhes recursos computacionais (intervalo de tempo de processamento, espa\xc3\xa7o em mem\xc3\xb3ria RAM, espa\xc3\xa7o no disco r\xc3\xadgido, etc.)._NEWLINE_O Unix \xc3\xa9 um sistema operacional de multitarefa preemptiva. Isso significa que, quando esgota-se um determinado intervalo de tempo (chamado quantum),  o Unix suspende a execu\xc3\xa7\xc3\xa3o do processo, salva o seu contexto (informa\xc3\xa7\xc3\xb5es necess\xc3\xa1rias para a execu\xc3\xa7\xc3\xa3o do processo), para que ele possa ser retomado posteriormente, e coloca em execu\xc3\xa7\xc3\xa3o o pr\xc3\xb3ximo processo da fila de espera. O Unix tamb\xc3\xa9m determina quando cada processo ser\xc3\xa1 executado, a dura\xc3\xa7\xc3\xa3o de sua execu\xc3\xa7\xc3\xa3o e a sua prioridade sobre os outros._NEWLINE_A multitarefa, al\xc3\xa9m de fazer com que o conjunto de tarefas seja executado mais rapidamente, ainda permite que o usu\xc3\xa1rio e o computador fiquem livres para realizarem outras tarefas com o tempo economizado.\n_START_SECTION_\nSistema operacional multiutilizador\n_START_PARAGRAPH_\nUma caracter\xc3\xadstica importante do Unix \xc3\xa9 ser multiusu\xc3\xa1rio (multiutilizador). Bovet e Cesati [4] definem um sistema multiusu\xc3\xa1rio como "aquele capaz de executar, concorrente e independentemente, v\xc3\xa1rias aplica\xc3\xa7\xc3\xb5es pertencentes a dois ou mais usu\xc3\xa1rios". O Unix possibilita que v\xc3\xa1rios usu\xc3\xa1rios usem um mesmo computador simultaneamente, geralmente por meio de terminais. Cada terminal \xc3\xa9 composto de um monitor, um teclado e, eventualmente, um mouse. V\xc3\xa1rios terminais podem ser conectados ao mesmo computador num sistema Unix. H\xc3\xa1 alguns anos eram usadas conex\xc3\xb5es seriais, mas atualmente \xc3\xa9 mais comum o uso de redes locais, principalmente para o uso de terminais gr\xc3\xa1ficos (ou terminais X),  usando o protocolo XDMCP._NEWLINE_O Unix gerencia os pedidos que os usu\xc3\xa1rios fazem, evitando que um interfira com outros. Cada usu\xc3\xa1rio possui direitos de propriedade e permiss\xc3\xb5es sobre arquivos. Quaisquer arquivos modificados pelo usu\xc3\xa1rio conservar\xc3\xa3o esses direitos. Programas executados por um usu\xc3\xa1rio comum estar\xc3\xa3o limitados em termos de quais arquivos poder\xc3\xa3o acessar._NEWLINE_O sistema Unix possui dois tipos de usu\xc3\xa1rios: o usu\xc3\xa1rio root (tamb\xc3\xa9m conhecido como superusu\xc3\xa1rio), que possui a miss\xc3\xa3o de administrar o sistema, podendo manipular todos os recursos do sistema operacional; e os usu\xc3\xa1rios comuns, que possuem direitos limitados._NEWLINE_Para que o sistema opere adequadamente em modo multiusu\xc3\xa1rio, existem alguns mecanismos: (i) um sistema de autentica\xc3\xa7\xc3\xa3o para identifica\xc3\xa7\xc3\xa3o de cada usu\xc3\xa1rio (o programa login, p.ex., autentica o usu\xc3\xa1rio verificando uma base de dados, normalmente armazenada no arquivo /etc/passwd); (ii) sistema de arquivos com permiss\xc3\xb5es e propriedades sobre arquivos (os direitos anteriormente citados); (iii) prote\xc3\xa7\xc3\xa3o de mem\xc3\xb3ria, impedindo que um processo de usu\xc3\xa1rio acesse dados ou interfira com outro processo. Esse \xc3\xbaltimo mecanismo \xc3\xa9 implementado com a ajuda do hardware, que consiste na divis\xc3\xa3o do ambiente de processamento e mem\xc3\xb3ria em modo supervisor (ou modo n\xc3\xbacleo) e modo usu\xc3\xa1rio.\n_START_SECTION_\n\xc2\xa0Arquivos de dispositivo\n_START_PARAGRAPH_\nUma caracter\xc3\xadstica singular no Unix (e seus derivados) \xc3\xa9 a utiliza\xc3\xa7\xc3\xa3o intensiva do conceito de arquivo. Quase todos os dispositivos s\xc3\xa3o tratados como arquivos e, como tais, seu acesso \xc3\xa9 obtido mediante a utiliza\xc3\xa7\xc3\xa3o das chamadas de sistema open, read, write e close._NEWLINE_Os dispositivos de entrada e sa\xc3\xadda s\xc3\xa3o classificados como sendo de bloco (disco, p.ex.) ou de caractere (impressora, modem, etc.) e s\xc3\xa3o associados a arquivos mantidos no diret\xc3\xb3rio /dev (v. detalhamento mais adiante).\n_START_SECTION_\nProcessos\n_START_PARAGRAPH_\nUm processo, na vis\xc3\xa3o mais simples, \xc3\xa9 uma inst\xc3\xa2ncia de um programa em execu\xc3\xa7\xc3\xa3o. Um programa, para ser executado, deve ser carregado em mem\xc3\xb3ria; a \xc3\xa1rea de mem\xc3\xb3ria utilizada \xc3\xa9 dividida em tr\xc3\xaas partes: c\xc3\xb3digo (text), dados inicializados (data) e pilha (stack)._NEWLINE_Por ser um sistema multitarefa, o Unix utiliza uma estrutura chamada tabela de processos, que cont\xc3\xa9m informa\xc3\xa7\xc3\xb5es sobre cada processo, tais como: identifica\xc3\xa7\xc3\xa3o do processo (PID), dono, \xc3\xa1rea de mem\xc3\xb3ria utilizada, estado (status). Apenas um processo pode ocupar o processador em cada instante - o processo encontra-se  no estado "executando" (running).  Os outros processos podem estar "prontos" (ready),  aguardando na fila de processos, ou ent\xc3\xa3o est\xc3\xa3o "dormindo" (asleep), esperando alguma condi\xc3\xa7\xc3\xa3o que permita sua execu\xc3\xa7\xc3\xa3o._NEWLINE_Um processo em execu\xc3\xa7\xc3\xa3o pode ser retirado do processador por duas raz\xc3\xb5es: (i) necessita acessar algum recurso, fazendo uma chamada de sistema - neste caso, ap\xc3\xb3s sua retirada do processador, seu estado ser\xc3\xa1 alterado para "dormindo", at\xc3\xa9 que o recurso seja liberado pelo n\xc3\xbacleo; (ii) o n\xc3\xbacleo pode interromper o processo (preemp\xc3\xa7\xc3\xa3o) - neste caso, o processo ir\xc3\xa1 para a fila de processos (estado "pronto"), aguardando nova oportunidade para executar - ou porque a fatia de tempo esgotou-se, ou porque o n\xc3\xbacleo necessita realizar alguma tarefa._NEWLINE_Existem quatro chamadas de sistema principais associadas a processos: fork, exec, exit e wait. fork \xc3\xa9 usada para criar um novo processo, que ir\xc3\xa1 executar o mesmo c\xc3\xb3digo (programa) do programa chamador (processo-pai);  exec ir\xc3\xa1 determinar o c\xc3\xb3digo a ser executado pelo processo chamado (processo-filho); exit termina o processo; wait faz a sincroniza\xc3\xa7\xc3\xa3o entre a finaliza\xc3\xa7\xc3\xa3o do processo-filho e o processo-pai.\n_START_SECTION_\nSistema de  arquivos\n_START_PARAGRAPH_\nSistema de arquivos \xc3\xa9 uma estrutura l\xc3\xb3gica que possibilita o armazenamento e recupera\xc3\xa7\xc3\xa3o de arquivos. No Unix, arquivos s\xc3\xa3o contidos em diret\xc3\xb3rios (ou pastas), os quais s\xc3\xa3o conectados em uma \xc3\xa1rvore que come\xc3\xa7a no diret\xc3\xb3rio raiz (designado por /). Mesmo os arquivos que se encontram em dispositivos de armazenamento diferentes (discos r\xc3\xadgidos, disquetes, CDs, DVDs, sistemas de arquivos em rede) precisam ser conectados \xc3\xa0 \xc3\xa1rvore para que seu conte\xc3\xbado possa ser acessado. Cada dispositivo de armazenamento possui a sua pr\xc3\xb3pria \xc3\xa1rvore de diret\xc3\xb3rios._NEWLINE_O processo de conectar a \xc3\xa1rvore de diret\xc3\xb3rios de um dispositivo de armazenamento \xc3\xa0 \xc3\xa1rvore de diret\xc3\xb3rios raiz \xc3\xa9 chamado de "montar dispositivo de armazenamento" (montagem) e \xc3\xa9 realizada por meio do comando mount. A montagem associa o dispositivo a um subdiret\xc3\xb3rio.\n_START_SECTION_\nParticularidades\n_START_PARAGRAPH_\nUm sistema Unix \xc3\xa9 orientado a arquivos, quase tudo nele \xc3\xa9 arquivo. Seus comandos s\xc3\xa3o na verdade arquivos execut\xc3\xa1veis, que s\xc3\xa3o encontrados em lugares previs\xc3\xadveis em sua \xc3\xa1rvore de diret\xc3\xb3rios, e at\xc3\xa9 mesmo a comunica\xc3\xa7\xc3\xa3o entre entidades e processos \xc3\xa9 feita por estruturas parecidas com arquivos. O acesso a arquivos \xc3\xa9 organizado atrav\xc3\xa9s de propriedades e prote\xc3\xa7\xc3\xb5es. Toda a seguran\xc3\xa7a do sistema depende, em grande parte, da combina\xc3\xa7\xc3\xa3o entre as propriedades e prote\xc3\xa7\xc3\xb5es definidas em seus arquivos e suas contas de usu\xc3\xa1rios.\n_START_SECTION_\nX Window System\n_START_PARAGRAPH_\nAl\xc3\xa9m do shell, o Unix suporta interface gr\xc3\xa1fica para o usu\xc3\xa1rio. Nas primeiras vers\xc3\xb5es do Unix as interfaces do usu\xc3\xa1rio eram baseadas apenas em caracteres (modo texto) e o sistema compunha-se apenas do n\xc3\xbacleo, de bibliotecas de sistema, do shell e de alguns outros aplicativos. As vers\xc3\xb5es mais recentes do Unix, al\xc3\xa9m de manterem o shell e seus comandos, incluem o X Window System que, gra\xc3\xa7as ao gerenciador de exibi\xc3\xa7\xc3\xa3o e ao gerenciador de janelas, possui uma interface atraente e intuitiva que aumenta em muito a produtividade do usu\xc3\xa1rio._NEWLINE_Desenvolvido no MIT (Massachussets Institute of Technology), o  X Window System (tamb\xc3\xa9m pode ser chamado de Xwindow) tornou-se o sistema gr\xc3\xa1fico do Unix. O Xwindow funciona como gerenciador de exibi\xc3\xa7\xc3\xa3o e por si s\xc3\xb3, n\xc3\xa3o faz muita coisa. Para termos um ambiente gr\xc3\xa1fico produtivo e completo, precisamos tamb\xc3\xa9m de um gerenciador de janelas._NEWLINE_O gerenciador de janelas proporciona ao ambiente gr\xc3\xa1fico a apar\xc3\xaancia e as funcionalidades esperadas incluindo as bordas das janelas, bot\xc3\xb5es, truques de mouse, menus etc. Como no sistema Unix o gerenciador de exibi\xc3\xa7\xc3\xa3o (X Window System) \xc3\xa9 separado do gerenciador de janelas, dizemos que seu ambiente gr\xc3\xa1fico \xc3\xa9 do tipo cliente-servidor. O Xwindow funciona como servidor e interage diretamente com o mouse, o teclado e o v\xc3\xaddeo. O gerenciador de janelas funciona como cliente e se aproveita dos recursos disponibilizados pelo Xwindow._NEWLINE_O fato de o Unix possuir o gerenciador de exibi\xc3\xa7\xc3\xa3o (Xwindow) separado do gerenciador de janelas tornou poss\xc3\xadvel o surgimento de dezenas de gerenciadores de janelas diferentes. Os gerenciadores de janelas mais comuns no mundo Unix s\xc3\xa3o o Motif, Open Look, e o CDE. Tamb\xc3\xa9m existem outros gerenciadores de janelas que s\xc3\xa3o bastante utilizados no Unix, principalmente nos sistemas Unix-Like (vers\xc3\xb5es gratuitas e clones do Unix). S\xc3\xa3o eles: KDE, Gnome, FVWM, BlackBox, Enlightenment, WindowMaker etc.\n_START_SECTION_\nComandos\n_START_PARAGRAPH_\nEsta \xc3\xa9 uma lista de programas de computador para o sistema operacional Unix e os sistemas compat\xc3\xadveis, como o Linux. Os comandos do Unix tornam-se acess\xc3\xadveis ao usu\xc3\xa1rio a partir do momento em que ele realiza o login no sistema. Se o usu\xc3\xa1rio utiliza tais comandos, ent\xc3\xa3o ele se encontra no modo shell, tamb\xc3\xa9m chamado de modo texto (ou Unix tradicional). Quando estiver utilizando o modo gr\xc3\xa1fico, o usu\xc3\xa1rio tamb\xc3\xa9m poder\xc3\xa1 se utilizar de tais comandos desde que abra uma janela de terminal (Xterm)._NEWLINE_A linha de comando do sistema operacional Unix permite a realiza\xc3\xa7\xc3\xa3o de in\xc3\xbameras tarefas atrav\xc3\xa9s de seus comandos, de manipula\xc3\xa7\xc3\xa3o de arquivos a verifica\xc3\xa7\xc3\xa3o do tr\xc3\xa1fego em rede. Para exibir uma descri\xc3\xa7\xc3\xa3o detalhada de cada comando abra uma console ou xterm e digite  man comando, onde comando \xc3\xa9 o comando em quest\xc3\xa3o.'