Prática em Sistemas Operacionais Sistemas Operacionais Contempla: visão geral de sistemas operacionais, DOS e Windows Versão 2.7 Agosto de 2014 Prof. Jairo [email protected] [email protected] http://www.jairo.pro.br/ Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 1 / 45 Prática em Sistemas Operacionais Sistemas Operacionais O conteúdo apresentado em "Sistemas Operacionais" tem como finalidade servir de guia didático e visa fornecer conhecimentos básicos em sistemas operacionais. Sua origem vem das notas de aula do Prof. Jairo, portanto é um conteúdo acadêmico com intenção de auxiliar no ensino da disciplina "Prática em Sistemas Operacionais" ministrado nos cursos de Ciência da Computação, Sistemas de Informação e Tecnólogos (curso técnicos). O conteúdo aqui exposto pode ser livremente redistribuído e usado como apoio de aula, desde que mantendo a sua integridade original. O arquivo "jairo­so.pdf" está em: http://www.jairo.pro.br/praticas_em_sist_oper/jairo­so.pdf Qualquer crítica ou sugestão, favor entrar em contato com o Prof. Jairo no endereço eletrônico "[email protected]" ou "[email protected]". São Paulo, 10 de agosto de 2014. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 2 / 45 Prática em Sistemas Operacionais SISTEMAS OPERACIONAIS Sumário 1 ­ Introdução............................................................................................................................................5 2 – Tipos de Sistemas Operacionais..........................................................................................................7 2.1 – Sistema monotarefa.....................................................................................................................7 2.2 – Sistema multitarefa......................................................................................................................8 2.3 ­ Sistema multiusuário....................................................................................................................8 2.4 – Sistema de programas em lote.....................................................................................................8 2.5 – Sistema de tempo real..................................................................................................................9 2.6 – Sistema descentralizado...............................................................................................................9 2.7 – Sistema centralizado....................................................................................................................9 2.8 – Sistema distribuído....................................................................................................................10 2.9 – Sistema cliente­servidor............................................................................................................11 2.10 – Sistema baseado na WWW......................................................................................................12 3 – Conceitos Gerais...............................................................................................................................12 3.1 ­ Arquitetura de computador.........................................................................................................12 3.2 – IBM­PC.....................................................................................................................................15 3.3 ­ Arquitetura de sistema operacional............................................................................................17 3.3.1 ­ Chamadas de sistema (system calls)...................................................................................17 3.3.2 ­ Programas de sistema.........................................................................................................17 3.3.3 ­ Interpretador de comandos (shell)......................................................................................18 3.4 ­ Arquivos.....................................................................................................................................18 3.5 – Ambiente gráfico.......................................................................................................................19 4 ­ Principais Sistemas Operacionais......................................................................................................20 4.1 ­ Histórico.....................................................................................................................................20 4.2 ­ DOS............................................................................................................................................20 4.2.1 – Origem...............................................................................................................................20 4.2.2 – DOS Compatible................................................................................................................21 4.2.3 – Versões DOS......................................................................................................................23 4.2.4 ­ FAT.....................................................................................................................................25 4.2.5 – Comandos básicos DOS.....................................................................................................28 4.2.6 – Exemplo de uso da linha de comando...............................................................................29 4.3 ­ Windows.....................................................................................................................................32 4.3.1 ­ Histórico.............................................................................................................................33 4.3.2 – Versões Windows..............................................................................................................34 4.3.3 – Windows NT......................................................................................................................35 4.3.4 – Sistema de arquivo do NT.................................................................................................39 4.3.5 – Organização da rede Windows..........................................................................................40 4.3.6 – Árvore de domínio [Domain tree].....................................................................................41 4.3.7 – Registro do Windows.........................................................................................................41 4.3.8 – Interface do Windows........................................................................................................43 4.4 ­ OS/2............................................................................................................................................43 4.5 ­ UNIX..........................................................................................................................................43 Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 3 / 45 Prática em Sistemas Operacionais 4.6 ­ Linux..........................................................................................................................................44 Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 4 / 45 Prática em Sistemas Operacionais 1 - Introdução A palavra computador vem do inglês computer, que tem sua origem no verbo to compute (computar, calcular). Ou seja, computer é a entidade que realiza cálculos eficazmente pois foi construída para tal. Inicialmente voltado para as Universidades e Institutos de pesquisa, onde sempre houve a necessidade de resolver problemas matemáticos, o computador foi criado com a intenção de agilizar a solução numérica de equações. Nesse início de século 21, diferentemente dos primórdios há várias décadas atrás, o computador já está bem inserido tanto no mercado de trabalho corporativo quanto ambiente doméstico, chegando ao ponto de ser considerado uma máquina indispensável à sociedade científica/tecnológica em que vivemos. Diferente das outras máquinas, para um computador funcionar é necessário duas partes complementares: o hardware e o software. Hardware é a parte física (aquelas partes que podem ser jogadas na parede...), já software é a parte lógica (a parte que normalmente é xingada...). Por exemplo, um disquete é hardware, já os arquivos e diretórios (pastas) que ele contém são software. Mas nem sempre foi assim. No passado os computadores eram mecânicos e, é claro, não tinham circuitos eletro/eletrônicos nem software. Nesse caso, a sua operação era totalmente manual. Mesmo depois do surgimento do computador digital como conhecemos hoje, nas suas fases iniciais ainda não havia software. Com a evolução e conseqüente aumento da complexidade do computador, foi necessário introduzir o conceito de software que representa, basicamente, uma técnica para permitir programar logicamente a máquina para que ela efetue determinada tarefa. Programar usualmente consiste em codificar um conjunto de instruções numa dada linguagem de programação ­ semelhante à linguagem humana, por isso chamada de linguagem de alto nível ­ e posteriormente traduzir essas instruções para a linguagem da máquina (linguagem de baixo nível), que passa então a poder executar essas intruções. Hoje em dia o computador é tão complexo que existe até um software básico, chamado Sistema Operacional, que serve de interface entre o software aplicativo (por exemplo, o processador de textos OpenOffice1) e a máquina física (hardware) onde ele roda. O sistema operacional é o primeiro software a ser instalado num computador. Os demais softwares ­ de um modo geral os aplicativos ­ são escritos para rodar sobre esse sistema operacional. Podemos também imaginar o sistema operacional como uma estrutura composta de gerentes lógicos encarregados de organizar e otimizar o funcionamento do computador. O sistema operacional é composto de um kernel (núcleo) que faz a interface de comunicação entre o hardware e software aplicativo. Nos sistemas modernos, esse núcleo é 1 Nota do autor: "Práticas em Sistemas Operacionais" foi escrito integralmente com o processador de texto Open Office – http://www.openoffice.org/. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 5 / 45 Prática em Sistemas Operacionais representado por uma camada (casca) que envolve o hardware, isolando­o completamente do acesso direto pelos demais aplicativos. Nessa sistuação, o núcleo se comporta como um "árbitro" entre software aplicativo e hardware, e um dos benefícios é que todo o acesso aos recursos são intermediados pelo núcleo. Com isso os conflitos – e conseqüentes travamentos da máquina – são minimizados. Entre outras funções, o núcleo gerencia o processador (CPU ­ Central Process Unit), o uso da memória, os processos, o Input e Output (I/O – Entrada/Saída) de dados, o armazenamento e acesso aos dispositivos. Além do núcleo, também faz parte do sistema operacional um conjunto de utilitários que têm por função básica facilitar essa comunicação com o computador. Em muitos sistemas modernos desenvolvidos para trabalharem como estação de trabalho existe uma interface gráfica através da qual o usuário interage com o sistema usando um dispositivo apontador (mouse). No caso de um sistema operacional servidor, normalmente não existe a figura do usuário interativo pois o acesso é feito pela rede, então em muitos casos também não existe uma interface gráfica nem teclado, mouse e/ou monitor. Mas mesmo nesse caso o software servidor (aquele que atende aos processo clientes na rede) precisa se comunicar eficientemente com o hardware que hospeda (host) esse serviço, daí a necessidade do sistema operacional com características de servidor. Por outro lado, explicitar vantagens não implica em dizer que o computador moderno não possa funcionar sem sistema operacional, mas apenas que ficaria muito mais difícil programar e operar essa máquina sem a presença de um sistema. Por exemplo, num computador sem sistema operacional, o software aplicativo precisaria ter embutido todo um conjunto de funções de comunicação com o hardware, que por sua vez "engordaria" excessivamente o código desse aplicativo. Além disso, toda a interface de comunicação com o usário (o operador) também precisaria estar embutida nesse aplicativo. Para piorar, um outro programa aplicativo escrito para esse mesmo computador também precisaria ter embutido todo esse conjunto de bibliotecas de comunicação. Logo, fica evidente que a criação e subseqüente desenvolvimento dos sistemas operacionais partiu de uma necessidade de racionalização de uso de recursos e padronização de interface usuário/máquina. Como o próprio hardware evolui ao longo do tempo – a cada instante surgem máquinas novas mais rápidas e com mais recursos – é correto concluir que o sistema operacional também deva evoluir acompanhando essa tendência. Como o sistema operacional é um software básico, a sua evolução também implica em fornecer novos recursos às novas gerações de software aplicativo – que é o que o usuário/operador de fato vê e utiliza no computador. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 6 / 45 Prática em Sistemas Operacionais 2 – Tipos de Sistemas Operacionais Existe uma grande variedade de tipos de sistemas operacionais, onde cada qual é escrito para atender a um conjunto de necessidades operacionais. Por exemplo, um sistema de tempo real é utilizado naqueles casos onde o processamento da informação e conseqüente tomada de decisão deva ocorrer muito rapidamente, como é o caso de um sistema de direcionamento de um míssel. Nesse exemplo, se a resposta não retornar rapidamente nada mais restará a fazer depois. Já um sistema servidor não necessariamente precisa atender a seus clientes em tempo real, mas ainda assim não deve deixá­los esperando muito tempo. Os usuários ou operadores de computador nem percebem essa gama diversificada de sistemas específicos, pois tudo que necessitam ­ e mais gostam ­ é de uma interface gráfica padronizada para interagir com o sistema e a partir daí desenvolver seu trabalho usando alguns softwares aplicativos. Nesse caso, o sistema operacional propriamente dito está posicionado numa camada (casca) abaixo do ambiente gráfico, transparente para o usuário. Outro aspecto interessante está na rede de computadores, onde muitas vezes recursos remotos (isto é, não locais) aparentam ser locais para o usuário. Mesmo por razões históricas, uma compreensão apropriada dos tipos de sistemas operacionais envolve classificá­los considerando recursos locais e remotos. Inclusive, a célebre frase de Scott McNealy "a rede é o computador" nos anos 1980 nunca foi tão verdadeira quanto atualmente. Merece também destaque o fato de que muitos equipamentos os quais usamos hoje, que nitidamente não podem ser tratados como computadores, possuem sistema operacional. É o caso de equipamentos de rede (por exemplo, routers e switches), celulares e disposistivos de TV como o WebTV, que permite acesso à internet a partir de um aparelho de televisão. Tirando o aspecto rede, podemos classificar os sistemas em monotarefa, multitarefa, multiusuário, programas em lote e de tempo real. Apesar do paradoxo, podemos ter um sistema multiusuário num conceito de terminais burros, onde todos os recursos, incluindo o processamento, é centralizado e a comunicação entre os terminais e o computador central não caracteriza necessariamente uma rede de computadores. Já considerando­se a rede temos os sistemas descentralizados, centralizados, distribuídos, cliente­servidor e baseado na WWW. Embora alguns desses conceitos aparentemente estejam relacionados apenas ao tipo do acesso em rede, na verdade eles têm implicações na própria arquitetura do sistema operacional (Item 3.3). 2.1 – Sistema monotarefa É aquele sistema que somente consegue executar uma tarefa de cada vez. Ou seja, o usuário precisa esperar o sistema concluir uma tarefa para poder executar outra. A monotarefa também é chamada de monoprogramação. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 7 / 45 Prática em Sistemas Operacionais Um exemplo clássico é o MS­DOS, sistema que foi construído no início dos anos 1980 para equipar um computador pessoal bastante simples, econômico e sem recursos de rede, o então IBM­PC. 2.2 – Sistema multitarefa O sistema multitarefa consegue executar mais de uma tarefa simultaneamente. Num exemplo, o usuário pode abrir determinado software aplicativo, minimizá­lo, abrir outro aplicativo e continuar trabalhando normalmente, ora lendo/escrevendo num, ora no outro. Nesse caso, o sistema precisa implementar algum método de escalonamento, que consiste em arbitrar quando um aplicativo irá usar os recursos de CPU (processamento) e por quanto tempo será esse uso. Num sistema multitarefa, o usuário tem a impressão de que as suas tarefas estão sendo realizadas simultaneamente, mas na verdade a CPU somente pode processar uma atividade (processo) de cada vez, daí a necessidade do escalonador ceder tempo de uso de CPU para determinado processo e depois retirar. A multitarefa também é chamada de multiprogramação. Exemplo: Windows NT 4.0 workstation. 2.3 ­ Sistema multiusuário O sistema é multiusuário quando consegue atender mais de um usuário simultaneamente. A idéia do sistema multiusuário vem de algumas décadas atrás, quando o custo do hardware ainda era muito elevado, então nessa época todos os recursos computacionais precisavam ser compartilhados para diminuir (ou diluir) esse custo. É dessa época que vem o conceito de terminais burros, ou seja, os recursos computacionais (CPU, memória RAM, disco, impressora, etc.) estão num computador central e os usuários acessam esse computador através de terminais remotos, ditos "burros" por não terem capacidade computacional nem disco. Convém notar que esse acesso via terminal, embora remoto, não se encaixa na definição de rede de computadores. Atualmente, os sistemas multiusuários normalmente atendem seus usuários num acesso em rede, geralmente usando o protocolo padrão TCP/IP. 2.4 – Sistema de programas em lote O sistema de programas em lote (batch programs) dominou a computação desde a década de 1950 até o começo da década de 1970 e tinha por característica codificar os comandos (instruções para o sistema) em cartões ou fita perfurados que eram então colocados em uma leitora para que o sistema operacional pudesse ler e interpretar seqüencialmente. Embora ultrapassado, esse modo de processamento em lote ainda é muito útil e existe hoje no conceito batch: um usuário escreve num arquivo de texto os comandos do sistema que quer executar, submete essa tarefa e então pode até se desconectar que o sistema irá seguir executando Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 8 / 45 Prática em Sistemas Operacionais seqüencialmente a lista de tarefas. A utilidade prática então é permitir executar em background tarefas repetitivas que não necessitem do usuário interativo. Mais interessante, agora o sistema operacional tem a liberadade de não precisar mais fornecer uma resposta rápida, poupando então recursos computacionais para os usuários interativos que não querem enfrentar a resposta lenta que ocorre quando o sistema está sobrecarregado. 2.5 – Sistema de tempo real O sistema de tempo real é necessário quando se exige respostas imediatas. Os usuários interativos preferem respostas rápidas, mas no caso do sistema de tempo real uma resposta muito rápida é necessária. Por exemplo, um sistema de controle de tráfego aéreo deve ser capaz de processar e manter a localização, altitude, velocidade e direção de todos os aviões nas cercanias de um aeroporto: qualquer atraso nessa resposta poderá ir além de um simples inconveniente e se tornar um sério acidente. Um outro exemplo clássico é o caso do direcionamento automático da trajetória de um míssil, que deve acionar comandos rapidamente e não depois que o míssel já destruiu o alvo errado. 2.6 – Sistema descentralizado Em um ambiente descentralizado, cada usuário cuida do seu sistema, dos seus aplicativos e dos seus dados (arquivos). Contudo, essa independência pode levar a duplicação de dados e inconsistências, além de redundâncias desnecessárias. Além dos problemas já citados, essa implementação também implica em maiores custos de hardware, manutenção, suporte e operação. O sistema descentralizado somente está sendo citado aqui para efeito de comparação com o próximo item, que é o sistema centralizado. Afinal, sistema descentralizado está relacionado ao ambiente de trabalho adotado em determinada organização, e não especificamente a um tipo de sistema operacional. 2.7 – Sistema centralizado No sistema centralizado, um único computador acomoda os dados e recursos computacionais da organização. Neste caso, o acesso ao computador central se dá a partir de terminais remotos que formam um conjunto chamado de rede de terminais. Porém, tecnicamente em alguns casos essa construção não pode ser classificada como rede de computadores. A sua principal vantagem reside na economia obtida pela aquisição de um único sistema centralizado ao invés de vários computadores descentralizados, além de facilitar as operações de gerenciamento, suporte e comunicação entre os usuários. No passado esse sistema era chamdo de "terminal burro da IBM", mas hoje em dia ­ apesar de quase extinto ­ esse conceito está renascendo justamente pela redução de custos que proporciona quando comparado com o sistema descentralizado. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 9 / 45 Prática em Sistemas Operacionais Convém citar que esse "renascimento" ocorre agora dentro de um conceito de ambiente em rede, através de um protocolo padronizado de comunicação. Aqui, redução de custos não significa apenas economia de hardware e software, mas também está sendo levado em conta o fato de que máquinas completas (inclusive com um sistema operacional e aplicativos instalados no disco rígido) estão mais suscetíveis a problemas que acarretam custos de help desk e suporte técnico. A única desvantagem reside no próprio sistema centralizado, que é um ponto de falha único: se ele parar, toda a organização irá parar também. 2.8 – Sistema distribuído Um sistema distribuído consiste de computadores independentes conectados uns aos outros via rede, mas com a diferença de que os recursos são disponibilizados na rede de forma transparente ao usuário. Teoricamente, implica em dizer que os usuários nem percebem que esses recursos estão disponíveis na rede e não na máquina local. Aliás, é essa a diferença entre sistema distribuído e rede de computadores: no primeiro caso o usuário vê um único sistema e acha que todos os recursos são locais, no segundo caso o usuário precisa explicitamente solicitar pelo recurso na rede. Numa definição resumida, um sistema distribuído representa um caso especial de rede, e a principal distinção entre eles está no software de comunicação e não no hardware. Este software é usualmente denominado de sistema operacional de rede. Dessa definição conclui­se que o sistema operacional de rede é independente do sistema operacional nativo naquele computador, ou seja, trata­se de uma "casca" adicional que fornece acesso em rede baseado num protocolo específico. Como exemplo temos o NetWare da Novell. No caso dos sistemas Sun Solaris, HP­UX e reencarnações do Windows 2000 (só para citar alguns exemplos), eles já possuem "embutido" esse suporte à rede oferecido pelo sistema operacional de rede, então nesse contexto eles são considerados como sistemas operacionais compatíveis com redes. Do ponto de vista do acesso em rede, o sistema distribuído é dito ponto­a­ponto pelo acesso ser um para um, diferente do modelo cliente­servidor (item 2.9) que é muitos para um. Nesse caso, como cada estação se comporta simultaneamente tanto como cliente quanto servidor, é necessário que os recursos que possam ser acessados em determinada estação sejam antes marcados como disponíveis nessa rede. Por exemplo, temos o MacOS da Apple e os Windows 9.x/NTs, onde os recursos a serem disponibilizados precisam ser antes compartilhados. A vantagem desse sistema é justamente a simplicidade e facilidade de instalação, administração e uso. Contudo, o sistema distribuído é menos confiável que o sistema cliente­servidor, Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 10 / 45 Prática em Sistemas Operacionais e em geral requer estações de trabalho mais poderosas para algumas atividades, como é o caso de compartilhar uma base de dados ao invés de disponibilizá­la num servidor de banco de dados. Nesse exemplo específico, não apenas as estações envolvidas no compartilhamento sofrem, como também a rede fica sobrecarregada pelo tráfego de dados excessivos e desnecessários. Parece claro que o aspecto dimensão da rede afeta a melhor escolha do sistema a ser implantado, de um modo geral se a rede for pequena (poucas estações de trabalho) o sistema distribuído é ideal, já se a rede for grande deve­se partir para o sistema cliente­servidor. E até a obrigatoriedade da instalação do mesmo sistema operacional de rede pode ser relaxada no caso de se conhecer o protocolo de comunicação em rede. É o caso do compartilhamento de recursos do Windows que usa o SMB (server message block), que por ser conhecido permite aos sistemas Unix instalarem o servidor (serviço) e/ou cliente Samba que permite a comunicação tipo sistema distribuído entre Windows e Unix. 2.9 – Sistema cliente­servidor Atualmente, a maioria das aplicações em rede ocorre num paradigma cliente­servidor. Como o próprio nome diz, nessa transação existem duas partes envolvidas: a do cliente, na forma de um processo cliente gerado por algum aplicativo (por exemplo, navegador da internet), e a parte do servidor, também na forma de um processo (por exemplo, serviço ou servidor web). No caso do processo cliente, ele é gerado para conectar e transferir os dados para o processo servidor, que precisa estar o tempo todo "escutando" por alguma requisição do cliente. Um exemplo clássico é a impressora de rede: o cliente usa determinado aplicativo que, ao solicitar que imprima, gera um processo cliente que conecta no processo servidor, esse último já na impressora. Aqui, a rede é um veículo que transporta os dados da estação de trabalho do cliente para o servidor de impressão através de um protocolo de comunicação comum às duas partes envolvidas nessa transação. Convém notar que esse acesso é diferente do caso já citado acima, sistema distribuído, pois agora o usuário precisa manifestar a intenção em imprimir em determinada impressora, nitidamente fora do seu computador desktop. Outro aspecto do modelo cliente­servidor é o protocolo de comunicação (normalmente TCP/IP) padronizado tanto para o cliente quanto servidor, além da porta de acesso (porta TCP) no servidor, que também deve se padronizada e por isso mesmo conhecida do aplicativo cliente. Com isso, tanto cliente quanto servidor têm a liberade de usar o sistema operacional que for mais eficiente para a tarefa em questão, pois toda a comunicação está baseada num protocolo de comunicação em rede que é comum às duas partes envolvidas. É por essas características de comunicação em rede, além do desejo de otimizar o uso de recursos de hardware, que são construídos sistemas operacionais voltados para tarefas específicas em rede, e é daí que vem o conceito de sistema operacional desktop (estação de trabalho) e servidor. Por exemplo, o Windows98 descende do MS­DOS, um sistema tipicamente desktop, já os sistemas Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 11 / 45 Prática em Sistemas Operacionais operacionais da famíla Unix (Linux, FreeBSD, SunOS, etc.) de um modo geral estão tipicamente voltados para a tarefa de servidores. 2.10 – Sistema baseado na WWW O conceito de aparelho de rede, aparelho de informação ou aparelho de internet engloba uma grande quantidade de equipamentos que normalmente difere dos computadores pessoais por suportar geralmente uma aplicação única como navegador web ou correio eletrônico e, em muitos casos, nem ao menos possuirem teclado, mouse ou monitor. Esses equipamentos são muito úteis para aqueles usuários que querem ter acesso à internet sem ter de arcar com os problemas e custos de um computador normal. Como exemplos temos computadores de mão como o PalmPilot, aparelhos telefônicos avançados, convencionais ou celulares que dão acesso à internet e dispositivos de TV como o WebTV. Existe também o conceito de computadores de rede, similares a estações de trabalho Unix sem disco (X­terminal diskless), que são sistemas reduzidos e usam a rede para acessar as aplicações e guardar arquivos e pastas de trabalho. Por serem bem simples, os computadores de rede exigem muito pouca manutenção, suporte e help desk, daí o crescente interesse neles atualmente. Por exemplo, pode­se imaginar determinada empresa que, para economizar custos de hardware, software e help desk, adota computadores de rede e contrata os serviços de um provedor de serviço de aplicação (ASP ­ Application Service Provider) para fornecer tanto o acesso à internet quanto a disponibilização de aplicativos como editores de texto e espaço em disco para que seus funcionários possam trabalhar e salvar seus arquivos. Os funcionários podem então rodar todos os aplicativos disponibilizados pelo ASP, além de disporem de algum espaço em disco para salvar seu trabalho. Paradoxalmente, o sistema baseado na WWW nos remete de volta ao quadro antigo do sistema centralizado, só que agora com uma cara nova quando comparado com o teminal burro. 3 – Conceitos Gerais 3.1 ­ Arquitetura de computador Os componentes básicos de um computador são CPU, memória e dispositivos de Entrada e Saída (Input/Output – I/O). O processador (CPU) é a unidade principal do computador, ele controla o fluxo dos programas, executa operações lógicas e aritméticas, acessa a memória e faz solicitações aos periféricos. A arquitetura do computador é dada pela tecnologia do seu processador. Atualmente, as Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 12 / 45 Prática em Sistemas Operacionais principais arquiteturas são: • • • • • RISC (Reduced Instruction Set Computer) CISC (Complex Instruction Set Computer) EPIC (Explicitly Parallel Instruction Computing) X86­64 (X86 extended) ARM (Advanced RISC Machine) O ENIAC (Eletronic Numerical Integrator and Calculator) construído em 1946, serviu de inspiração para todas as arquiteturas de computador atuais. Estas são chamadas de Máquinas de Von Neumann ou Arquitetura de Von Neumann em homenagem a John Von Neumann pelo seu pioneirismo no computador digital. Porém, o ENIAC era imenso, pesava 27 toneladas e ocupava completamente uma sala grande. E ao invés dos atuais chips compactos com milhões de transistores microscópicos, o ENIAC usou cerca de 18000 tubos de vácuo e relés elétricos para construir sua CPU e circuitos de entrada/saída (input/output). Foi somente em 1971, na Intel Corporation, que Ted Hoff conseguiu construir um processador que tinha todas as unidades reunidas em um só chip, o 4004, que foi o primeiro microprocessador. A diferença básica entre o processador tradicional e o microprocessador é o fato deste último poder ser produzido em larga escala na linha de montagem, com isso diminuindo drasticamente o custo de produção. Atualmente o microprocessador está tão difundido que chega a ser tratado também por processador. Todo processador trabalha em linguagem binária, pois é assim que funcionam os circuitos digitais da máquina e, dada uma arquitetura de computador, define a linguagem de máquina. Atualmente, a programação normalmente é feita em linguagem de alto nível, daí a necessidade de traduzir essas intruções para a linguagem de máquina para poder rodar os programas. E normalmente é o compilador que faz essa tradução. O problema é que até o início dos anos 1970 não havia ainda compiladores capazes de fazer eficientemente essa tradução, então houve a necessidade de incluir microcódigo no processador, que deu origem ao conceito CISC. Microcódigo ou microprograma consiste de uma série de microinstruções que controlam a CPU num nível muito fundamental. Do ponto de vista da linguagem de programação, o microcódigo provê um conjunto de instruções muito grande que, de certa maneira, "eleva" o nível da linguagem de máquina. Para facilitar a programação, os arquitetos de computador criaram muitas instruções complexas (microcódigo), as quais eram representações de funções de alto nível de linguagem de programação. Por outro lado, o microcódigo deixa o processador mais lento. Em 1974, na IBM, John Cocke teve a idéia de construir um processador mais simples, que não necessitasse de microcódigo, deixando então o trabalho pesado para os programas e compiladores. Estava criada a filosofia do computador com conjunto reduzido de instruções (RISC), um processador menor, mais barato, mais frio. John Cocke teve essa idéia por acreditar que a utilização de sub­rotinas ou microcódigos no processador fossem contraproducentes. No RISC, as instruções mais freqüentes são expressas em termos de operações simples possibilitando selecionar e executar uma instrução a cada ciclo de clock (os processadores CISC levam vários ciclos de clock para selecionar uma única instrução), porém nesse caso o tempo de acesso à Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 13 / 45 Prática em Sistemas Operacionais memória é crítico e por isso o uso de memória cache torna­se obrigatório. Além disso, existe maior dependência do compilador na otimização de desempenho da aplicação. Com o tempo, o termo RISC acabou por se generalizar e denominar toda máquina que obedece a um conjunto específico de princípios de arquitetura. Como era preciso identificar os outros computadores não RISC, foi cunhado o termo CISC. Porém, um produto RISC só chegou ao mercado em 1985, pelas mãos da Sun Microsystems, com o processador Sparc. Pela inexistência de microcódigo no processador, a complexidade agora está no compilador. Por isso, as máquinas RISC só se tornaram viáveis depois de avanços de software que resultaram no aparecimento de compiladores otimizados. Como exemplos de CISC temos os processadores X86 da Intel e compatíveis da AMD. No caso da Intel a linha CISC vai desde os processadores tradicionais (386,486, etc.) até os atuais Pentiums e Xeons. Atualmente, a linha X86 é de 32 bits, embora alguns processadores já tenham extensão de 64 bits para permitir alocar memória além de 4 GB RAM. Como exemplos de processadores RISC temos o PowerPC (IBM), MIPS (Silicon Graphics), PA­RISC (HP), Sparc (Sun Microsystems) e Alpha (Digital Equipment Corporation, DEC), cada qual com seu chip RISC. Os processadores citados acima são todos atualmente de 64 bits. E a DEC (hoje ex­DEC pois foi comprada pela Compaq que posteriomente foi adquirida pela HP) já tinha processador Alpha de 64 bits desde meados dos anos 1990. A arquitetura EPIC teve origem no projeto IA­64 cujo nome original era Merced, e foi criado pelas empresas Intel e HP (Hewlett Packard) em1994. Posteriormente foi rebatizado para Itanium. O Itanium é um processador de 64 bits voltado para funções de servidores corporativos (médio e grande porte) que tem por objetivo competir num espaço tradicionalmente ocupado por servidores RISC. Discute­se hoje qual o destino das arquiteturas de computador tradicionais. O IA­64 vem confirmar a tendência de convergência das arquiteturas RISC e CISC. A arquitetura X86­64 (X86 extended) foi desenvolvida inicialmente pela AMD e deu origem aos processadores Athlon e Opteron. Ao contrário do Itanium, tem a vantagem de permitir compatibilidade de aplicações 32 bits numa CPU de 64 bits. Atualmente a própria Intel, na sua linha Xeon e P4 EM64T (Extended Memory Technology), adiciona extensões de 64 bits que torna esses processadores também compatíveis com o X86­64. A única vantagem da extensão de 64 bits é a capacidade de alocar mais de 4 GB de memória RAM, e que já é uma necessidade no segmento de médios e grandes sistemas servidores. A arquitetura ARM é de 32 bits e usada principalmente em sistemas embarcados. É muito usada na indústria e na informática. As principais características são tamanho reduzido do chip processador e baixo consumo de energia. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 14 / 45 Prática em Sistemas Operacionais Processadores ARM são muito usados em celulares (98% dos celulares atuais usam pelo menos um processador ARM), calculadoras, PDA2 e periféricos de compuador, entre outros. Sobre sistemas operacionais, outro aspecto importante a ser notado é que, de um modo geral, temos a segmentação da arquitetura de computadores em dois grandes mundos: do lado CISC temos a dobradinha Windows/Intel, do lado RISC temos uma diversidade muito grande de processadores e fabricantes Unix, todos com compiladores C. A exceção a essa regra está principalmente nos sistemas operacionais Linux e FreeBSD, que têm o código fonte aberto e por isso são efetivamente multiplataforma por serem facilmente portáveis. Arquitetur a Processador Fabricante Sistema Operacional RISC Sparc PowerPC PA­RISC Sun Microsystems IBM HP Solaris AIX HP­UX CISC x86 [IA­32] Intel Windows, Linux, Mac OS EPIC Itanium Intel + HP3 HP­UX, Linux X86­64 Opteron e Athlon, entre outros AMD Windows, Linux ARM ARM7, ARM9, ARM11 e Cortex, Acorn Computers (no iOS, Android, Symbian, entre outros início). ARM Windows Phone, Holdings (atualmente) BlackBerry OS [RIM] Tabela 1 – Arquitetura de computador relacionada a processadores, fabricantes e sistemas operacionais 3.2 – IBM­PC O IBM­PC é o Computador Pessoal da IBM, e foi lançado em 1981 com um processador Intel 8088 (arquitetura CISC). Nesse lançamento, a intenção da IBM era entrar também no mercado de computadores pessoais, que nessa época era dominado pelo Apple II e também por um conjunto de máquinas que rodavam o sistema operacional CP/M (Control Program/Monitor ou Control Program for Microcomputers), tais como o Intel 8080/85 e o Zilog Z80. Portanto, o IBM­PC não foi o primeiro computador pessoal a fazer sucesso. A IBM desenvolveu o IBM­PC e decidiu torná­lo uma arquitetura aberta, isso como estratégia para baratear o preço desse computador pela livre competição entre fornecedores de componentes. Afinal, o IBM­PC foi construído a partir de uma grande variedade de partes fornecidas por diferentes fabricantes. 2 3 PDA: Personal Digital Assistant (handheld ou palmtop). Intel e HP iniciaram e desenvolveram esse processador. Atualmente a Intel não participa mais. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 15 / 45 Prática em Sistemas Operacionais Devido a isso, a IBM publicou as especificações de sua ROM BIOS (Basic Input/Output System ou Basic Integrated Operating System) na expectativa de atrair fabricantes a produzir IBM­PCs compatíveis (IBM­PC compatibles) e cobrar royalties das licenças dessa BIOS, e assim manter na própria mão o domínio dessa máquina e à frente da competição. Mas para infelicidade da IBM, alguns fabricantes, a partir de engenharia reversa nessa BIOS, passaram a produzir as suas próprias versões de IBM­PCs compatíveis, agora livres de Figura 1 – O IBM­PC em 1981 royalties ou simplesmente clones. Desse modo, o mercado escapou das mãos da IBM. E para se ter uma idéia da importância do lançamento do IBM­PC, os projetistas da IBM documentaram a viabilidade do desenvolvimento dessa máquina prevendo a venda de 240.000 unidades em 5 anos. Antes do final desse prazo, já vendiam 240.000 unidades por mês! E isso tendo que enfrentar a concorrência desleal dos clones, que já a partir de 1987 passaram a dominar o mercado, ou seja, vendiam mais IBM­PCs do que a própria IBM. Numa tentativa de retomar esse mercado, em abril de 1987 a IBM lançou o Personal System/2 ou PS/2, que era uma arquitetura proprietária avançada em relação ao IBM­PC. Entre as novidades do PS/2 estavam o disquete de 3,5" com 1440 KB, portas PS/2 para teclado e mouse e o padrão de vídeo VGA. Anteriormente o padrão de vídeo era EGA, Enhanced Graphics Adapter, com apenas 16 cores e resolução 640x350 pixels. O sistema operacional OS/2 foi introduzido junto com o PS/2, na intenção de se tornar o sistema "nativo" dessa máquina. O PS/2 foi desenvolvido para manter a compatibilidade de software com PC/AX/XT, e isso num hardware levemente diferente. Porém, o PS/2 não foi sucesso de vendas devido ao alto custo dessa arquitetura fechada. No entanto, muitas das inovações do PS/2 posteriormente se tornaram padrão no mercado aberto do IBM­PC. Figura 2 – O PS/2 em abril de 1987 Então, a partir de 1987 perdeu o significado termos como IBM­PC compatible ou clone, pois o mercado passou a ser orientado pela livre competição de diferentes fabricantes de componentes de um lado e as grifes (Compaq, HP, Dell, IBM, etc) do outro. Nesse caso, a grife pode ser melhor entendida como uma grande montadora de IBM­PCs. E esse mercado é tão vasto que oferece oportunidade até aos populares "xing­ling", que são máquinas montadas a partir de componentes sem muito controle de qualidade para baixar mais ainda o preço final. E o mais surpreendente de tudo é ver a realidade do IBM­PC hoje: após conquistar mais de 90% do mercado de Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 16 / 45 Prática em Sistemas Operacionais computador pessoal, essa máquina já é oferecida em configurações que atendem ao segmento servidor de pequeno e até médio porte. Por exemplo, um típico servidor CISC pode ter 4 CPUs Intel Xeon, 4 G de memória RAM e 5 discos SCSI, e nesse caso não pode de maneira alguma ser tratado pejorativamente por "computador pessoal". Outra prova da popularidade e predomínio do IBM­PC é a diversidade de sistemas operacionais que foram criados ou posteriormente portados para essa arquitetura. Como principais exemplos temos DOS, Windows, Linux, FreeBSD e Solaris. 3.3 ­ Arquitetura de sistema operacional A arquitetura de um sistema operacional corresponde à visão que se tem desse sistema, na forma de uma interface formada pelas chamadas de sistema (system calls) e pelos programas do sistema. 3.3.1 ­ Chamadas de sistema (system calls) As chamadas do sistema constituem a interface entre programas aplicativos e o sistema operacional. Essas chamadas do sistema são funções que podem ser ligadas com os aplicativos para prover serviços como leitura do relógio interno, operações de entrada/saída (Input/Output – I/O) e obter comunicação entre processos. É uma forma dos programadores fazerem solicitação de serviços ao sistema operacional, similar à chamada de sub­rotinas. As chamadas de sistema transferem a execução para o sistema operacional, e o retorno dessas chamadas fazem com que a execução do programa seja retomada. Por exemplo, a chamada write(fd, buffer, n_to_write) na linguagem C permite escrever num arquivo previamente aberto. Além de acessar o sistema de arquivo, as chamadas de sistema também permitem o controle de processos. Por exemplo, fork(), exit() e kill() atuam em processos. Em linguagens de alto nível, as chamadas de sistema são encapsuladas na biblioteca do compilador. Por exemplo, printf() não é chamada de sistema, mas sim uma rotina de biblioteca (library routine). sistema. O responsável pela implementação das chamadas de sistema é o kernel ou núcleo do 3.3.2 ­ Programas de sistema Os programas de sistema são algumas vezes chamados de utilitários, pois são programas executados fora do núcleo e que implementam tarefas básicas para facilitar a utilização do sistema. Como exemplo temos uma grande variedade de utilitários para a manipulação de arquivos e pastas, que permitem listar, visualizar, criar, excluir, etc. O programa de sistema mais importante é o interpretador de comandos (shell), que define Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 17 / 45 Prática em Sistemas Operacionais uma interface entre os usuários e o núcleo do sistema. 3.3.3 ­ Interpretador de comandos (shell) O interpretador de comandos é um processo que perfaz a interface do usuário com o sistema operacional. Este processo espera pelos comandos enviados via teclado (entrada padrão), interpreta e passa seus parâmetros ao núcleo do sistema e depois envia o resultado do comando para a saída padrão (monitor). À exceção dos sistemas operacionais gráficos, o shell é ativado sempre que o usuário inicia uma sessão. A interpretação é normalmente feita através de uma linguagem de comandos, porém shells modernos podem utilizar interfaces gráficas. Servicos como login e logout, manipulação de arquivos e execução de programas são solicitados através do interpretador de comandos. Alguns sistemas operacionais (por exemplo, Linux, Solaris, AIX, etc) permitem ao usuário escolher entre vários shells, como por exemplo Bourne Shell [sh], C shell [csh], Korn Shell [ksh], Bourne Shell Again [bash]. Versões mais antigas do Windows (Windows 3.X – ambiente operacional) eram essencialmente shells de substituição ao interpretador de comandos COMMAND.COM do DOS. 3.4 ­ Arquivos Uma das funções associadas a sistemas operacionais é esconder os detalhes de hardware do usuário. O conceito de arquivos oferece um nível de abstração que é adequado para manipular grupos de dados armazenados em discos e periféricos de entrada e saída. O sistema operacional também tem a incumbência de transferir dados entre discos e/ou periféricos, além de organizar os dados do disco em diretórios. Os arquivos estão no sistema de arquivo, que é estrutura que determina como os dados podem ser gravados, lidos, alterados e até removidos do disco. O sistema de arquivo facilita na manipulação dos dados. Exemplos de sistemas de arquivos: ● ● ● ● ● FAT: File Allocation Table (DOS) ext2, ext3: Extended File System (padrão ou nativo do Linux) UFS: Unix File System (originalmente padrão no BSD e Solaris) NTFS: New Technology Filesystem (padrão ou nativo dos Windows NTs) NFS (Network File System) Outra função importante diz respeito à segurança dos dados, na forma de integridade, disponibilidade e controle de acesso, que depende do sistema de arquivo em uso no sistema. Por exemplo, FAT não tem segurança local, já o sistema de arquivo ext3 (Linux) implementa essa Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 18 / 45 Prática em Sistemas Operacionais segurança. 3.5 – Ambiente gráfico Uma das funções do sistema operacional é oferecer uma interface amigável com o usuário, que é importante em sistemas desktop ou estações de trabalho onde existe o conceito de usuário interativo. O ambiente gráfico é um mero aplicativo (ou conjunto de aplicativos) com a intenção de facilitar o uso do desktop por parte do usuário interativo, e não deve ser confundido com o sistema operacional. Por exemplo, o Windows3.X é um ambiente gráfico que roda sobre o DOS, de forma análoga temos o caso dos sistemas da família Unix, onde o ambiente gráfico é aplicação e não sistema. Aliás, nos sistemas da família Unix a concepção cliente­servidor está tão arragaida que até o ambiente gráfico é obtido à custa de um servidor: o servidor X (X­server). Inclusive, o servidor X pode atender tanto a um cliente local quanto remoto, e a sua função é prover uma interface gráfica amigável para o cliente. Aqui, local e remoto diz respeito à origem da aplicação X que irá rodar na estação do usuário. Normalmente o terminal diskless (sem disco) obtém o servidor X remotamente. Já no caso do Macintoshi (Apple) e dos Windows9.X e posteriores ao NT (1993), entre os quais aparece o XP, a própria constituição do sistema operacional é inteiramente gráfica, dispensando totalmente a linha de comando. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 19 / 45 Prática em Sistemas Operacionais 4 - Principais Sistemas Operacionais 4.1 ­ Histórico Numa rápida cronologia dos principais sistemas operacionais que deixaram sua marca nas últimas décadas, temos os seguintes eventos: 1969: Nascimento do Unix; 1976: Apple ­ Primeiro micro computador pessoal popular; 1981: IBM­PC ­ Micro computador pessoal de arquitetura aberta; 1985: Macintosh ­ Interface Gráfica; 1990: Windows 3.0 – Ambiente gráfico para o DOS; 1991: Linux – Sistema operacional de código fonte aberto; 1993: Windows NT: Sistema operacional gráfico e desvinculado do DOS A Apple, que introduziu quase todas as novidades em micro computadores pessoais, não conseguiu transformar suas idéias em grande participação de mercado, em parte por manter o monopólio sobre sua plataforma. Atualmente a Apple continua inovando, e desde 2000 o sistema MacOS X usa um núcleo chamado Darwin por baixo da primorosa interface gráfica. Esse núcleo é derivado do BSD4 e outros projetos de software livre, portanto o Darwin está na categoria open source. Tecnicamente, o Darwin também é membro da família Unix. Por outro lado, a IBM sofreu com a concorrência dos clones (IBM­PC compatible) por ter aberto a arquitetura do seu PC, mas foi justamente isso que permitiu a popularização do computador pessoal devido à redução do preço. O mercado do computador pessoal é dominado pela Microsoft com o Windows e pela Intel com a sua linha de processadores x86. Numericamente, ambos têm hoje algo em torno de 90% desse mercado. Já no caso do sistema servidor de médio e grande porte a presença da Microsoft e da Intel não é tão marcante quanto no PC. No segmento servidor marca presença também a plataforma RISC com sistemas Unix, num mercado dividido entre vários fabricantes. Entre os mais polulares sistemas operacionais estão DOS, Windows, OS/2, Unix e Linux. Dessa lista, alguns não são mais usados, porém foram escolhidos por razões históricas e/ou didáticas. 4.2 ­ DOS 4.2.1 – Origem 4 BSD: Berkeley Software Distribution Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 20 / 45 Prática em Sistemas Operacionais O conceito DOS (Disk Operating System) teve sua origem nos anos 1960 como uma variação de TOS (Tape Operating System), e foi usado nos mainframes IBM System/360. Nessa máquina o sistema operacional era o OS/360 e podia ser instalado em disco, e nesse caso também era chamado de DOS/360 para diferenciar de TOS/360 (na fita). A história do DOS no IBM­PC inicia em 1978 quando a Intel lançou o seu processador 8086 que é o primeiro de 16 bits. Logo na seqüência, a IBM anunciou que lançaria o seu computador pessoal (IBM­PC) com o processador 8086. Então este novo computador necessitava de um sistema operacional, e o mais próximo que existia à época era o CP/M (Control Program for Microprocessors) da Digital Research que rodava nos processadores Z80 (Zilog) e 8080/85 (Intel), que são de 8 bits. E do Zilog Z80 pode­se dizer que foi o processador de 8 bits mais popular na sua época, além de ser compatível com o 8080/85. À época, a Digital Research prometeu uma versão do CP/M para o 8086, porém sabemos que posteriormente a IBM desistiu do 8086, que foi substituído pelo 8088. E isso tirou momentaneamente a possibilidade da Digital fornecer o sistema operacional em tempo para o lançamento do IBM­PC. Aproveitando a lacuna deixada pela Digital Research, Jim Paterson da Seattle Computer Products criou rapidamente um sistema operacional baseado no CP/M, que foi chamado de QDOS (Quick and Dirty Operating System, em alusão ao número de bugs no código) e que rodava no 8088. Posteriormente, o QDOS foi rebatizado para 86­DOS. O lançamento do IBM­PC ocorreu em 1981 com o processador Intel 8088, que é idêntico ao 8086 exceto quanto ao BUS (barramento), que foi reduzido para 8 bits para reduzir o preço. Ou seja, o 8088 internamente é de 16 bits, porém o barramento externo é de 8 bits. Para o lançamento do IBM­PC, a Microsoft ­ que nessa época ainda era uma pequena empresa desenvolvedora de software – comprou todos os direitos do QDOS da Seattle Computer Products. E foi a partir do QDOS que a Microsoft atendeu à requisição da IBM e forneceu o PC­DOS para equipar essa nova máquina. Pode­se considerar que o precursor do DOS no IBM­PC foi o CP/M da Digital Research, porém sem esquecer das influências e contribuições do Unix e de outros sistemas operacionais usados à época. Numa análise mais rigorosa, podemos até afirmar que o QDOS foi uma imitação do CP/M. Comercialmente o DOS inicialmente foi disponibilizado ao mercado de duas formas: PC­ DOS, embutido nos equipamentos fabricados pela IBM, e MS­DOS, vendido pela Microsoft para os demais fabricantes de hardware IBM­PC compatíveis (clones). Do ponto de vista técnico, a diferença entre PC­DOS e MS­DOS era muito pequena. Convém notar que, à medida que os clones do IBM­PC foram dominando o mercado, o MS­DOS foi alavancado a uma condição de plena popularidade. 4.2.2 – DOS Compatible Embora o conceito DOS seja muito anterior ao IBM­PC, foram seus descendentes MS­ DOS e PC­DOS que se destacaram na sua época. E posteriormente, à medida que o IBM­PC se popularizou, apareceram diversos outros fabricantes de sistemas operacionais para disputar algum espaço nesse mercado. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 21 / 45 Prática em Sistemas Operacionais Sabemos que a popularidade das aplicações para IBM­PC cresceu junto com essa máquina, assentado nas definições da arquitetura de sistema operacional que originalmente equipou o IBM­PC. E devido a isso ficou muito difícil ter sucesso qualquer tentativa de impor uma nova arquitetura de sistema operacional para o IBM­PC. Como exemplo da força do mercado de aplicativos, mesmo hoje o Linux – que foi criado originalmente para o IBM­PC – é muito usado no segmento servidor mas não é popular no desktop, e isso devido à carência de aplicações típicas de desktop quando comparado com o Windows. Desse modo, os fabricantes de sistema operacional que elegeram o IBM­PC como alvo de suas investidas tiveram de tornar o seu sistema compatível com o PC­DOS e assim rodar as aplicações típicas dessa arquitetura. Esses sistemas operacionais foram classificados como DOS compatibles. Ao longo dos últimos 20 anos eles foram surgindo (e desaparecendo!) à medida que o IBM­PC se popularizava cada vez mais. Merecem destaque os seguintes DOS compatibles: ● ● ● ● ● MS­DOS: Microsoft – 1982 até 2000 OS/2: IBM e Microsoft – 1987 a 2005 (Microsoft abandonou em 1990) DR­DOS: Digital Research – 1988 a 1993 NW­DOS: Novell – 1993 a 1996 (é o sucessor do DR­DOS) FreeDOS: www.freedos.org – 1994 até hoje (inicialmente era chamado de PD­DOS) Desses sistemas operacionais, sobrevive hoje o FreeDOS, por ser um projeto aberto. O principal responsável pela quase completa aniquilação do DOS compatible foi a própria Microsoft, que a partir do Windows95 embutiu a interface gráfica (isto é, o Windows) no MS­DOS, tornando­os indissociáveis. Com isso, não foi mais possível rodar aplicações para Windows num sistema operacional DOS compatible. E para completar, a atual linha de produtos Windows Figura 3 – O prompt do DOS está baseada no NT e não mais no DOS como foi o caso do Windows95. Convém lembrar que até o lançamento do Windows95 o Windows era uma aplicação gráfica que rodava sobre qualquer DOS compatible. E que no início dos anos 1990 empresas como a Novell, com seu NW­DOS, ofereciam soluções muito atraentes para o ambiente corparativo baseado em PCs, e isso por aliar um sistema operacional com bom suporte à rede a aplicações para Windows. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 22 / 45 Prática em Sistemas Operacionais Outra observação importante é que no conceito DOS compatible não existe a necessidade de drivers para dispositivos, pois a aplicação acessa diretamente recursos de hardware, e isso devido à concepção original do DOS de não ser multitarefa. À parte o aspecto segurança e robustez desse sistema5, essa abordagem libera a indústria do hardware da necessidade de se aliar a um sistema operacional específico, isso pela meta em reduzir o custo de desenvolvimento de drivers de dispositivos. Atualmente os Figura 4 ­ Desktop do OS/2 Warp (1994) fabricantes de componentes para IBM­PC no desktop, por uma questão de economia no desenvolvimento, criam drivers de dispositivos apenas para o sistema operacional mais popular, que por sua vez fecha completamente o círculo hardware/aplicação em torno do desktop Windows. A conclusão é que a partir do lançamento do Windows95, a Microsoft finalmente consolidou seu monopólio no desktop do IBM­PC, e com isso pôde se dar ao luxo de abandonar o aprimoramento do DOS em detrimento do Windows. No caso do OS/2, que foi o sistema operacional mais avançado para o PC na sua época, o fracasso teve início em 1990 quando a Microsoft abandonou a parceria com a IBM. Com isso, o desenvolvimento a partir de então ficou nas mãos apenas da IBM. O fato é que em 1990 o OS/2 tinha problemas técnicos que precisariam ser resolvidos, o Windows 3.0 começava a fazer sucesso e a Microsoft já estava envolvida no desenvolvimento do NT. Nessa época, o NT era um projeto que aproveitava a base do desenvolvimento do OS/2. 4.2.3 – Versões DOS Ao longo da história do DOS compatible, o mais popular e mais duradouro foi o MS­ DOS, que sobreviveu de 1982 a 2000, quando foi descontinuado pela Microsoft. Porém, de um modo geral, ao longo da história cada DOS compatible acompanhou ou forçou o lançamento de novas versões tanto do PC­DOS quanto do MS­DOS. Atualmente, o DOS sobrevive apenas como projeto de código fonte aberto, como é o caso do FreeDOS. A tabela 1 abaixo mostra a competição entre esses dois sistemas operacionais, e inclui as melhorias que cada um introduziu a seu tempo. É nítido a existência de uma luta acirrada entre PC­ DOS e MS­DOS, onde cada um não quer ficar para trás. Então, considerando­se a semelhança entre eles, não é errado tratá­los simplesmente por DOS. Numa análise mais abrangente, também não é 5 Tecnicamente esse problema poderia ser equacionado, fosse este o rumo da roda da história. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 23 / 45 Prática em Sistemas Operacionais errado tratar qualquer DOS compatible simplesmente por DOS. Outro aspecto importante a ser notado da tabela 1 é o rápido desenvolvimento do hardware, isso devido principalmente ao mercado aberto e à livre competição entre fabricantes. Mas também não se pode esquecer da imensa demanda proporcionada pelos usuários do IBM­PC, ávidos por novos recursos. Outro ponto importante que também pode ser notado a partir da tabela 1 é que desenvolvimento de hardware (no caso, o IBM­PC) e software (no caso, o DOS), são atividades interligadas. Desde o lançamento do DOS, cada nova versão foi seguida de atualizações de menor porte. Na primeira versão, que suportava somente discos flexíveis de 160KB, o sistema operacional estava num disquete (o disco de boot) e ocupava 10 KB da RAM, que era de apenas 64 KB. Posteriormente, com o HD, o sistema operacional passou a ser instalado no disco rígido. Versão DOS Data Suporte a hardware Lançamento do IBM­PC, com disco flexível (disquete) de 8" e 160KB PC­DOS Ago/1981 PC­DOS 1.1 Mai/1982 Disquete de 320KB (double sided floppy) Sistema de arquivo FAT12, 1 único diretório, máximo de 4096 clusters de 4KB, partição máxima de 16MB MS­DOS 1.25 Mai/1982 Lançamento para hardware clone IBM­PC MS­DOS 2.0 Mar/1983 IBM­XT (PC/XT), HD de 10MB e disquete de 360KB PC­DOS 2.1 Out/2003 IBM­PCjr (máquina mais simples e de baixo custo) Estrutura de diretórios MS­DOS 3.0 Ago/1984 IBM­AT (PC/AT – 80286 de 6MHz), disquete de 5" e 1.2MB MS­DOS 3.2 Jan/1986 Disquete de 3,5" e 720KB PC DOS 3.3 Abr/1987 IBM PS/2: Personal System/2 com disquete de 3,5" e 1.44MB PC DOS 4.0 Jul/1988 HDs maiores que 32MB MS­DOS 6.0 Mar/1993 Compressão de dados (DoubleSpace) PC DOS 7.0 Abr/1995 Compressão de dados (Stacker) MS­DOS 7.0 Ago/1995 Suporte a nomes de arquivos longos (Windows 95) MS­DOS 7.1 Ago/1996 FAT32 (Windows 95B ­ OSR2) MS­DOS 8.0 Set/2000 PC DOS 2000 2000 FAT16, partição máxima de 32MB Última versão do MS­DOS ("embarcado" no Windows Millennium ­ Me) Última versão do PC­DOS Tabela 2 – Versões PC­DOS e MS­DOS Com a chegada dos micros AT, em 1984, a versão 3.0 do DOS foi lançada para suportar o novo drive de 1,2 MB e o utilitário RAMDISK que possibilitava utilizar a memória além dos 640 KB, Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 24 / 45 Prática em Sistemas Operacionais que até então era o limite suportado por este sistema. Em 1985 foi disponibilizada uma atualização para a versão 3.0, para suportar hardware e software de redes locais. Em 1991 a versão 5.0 permitiu a inclusão de uma interface gráfica mais elaborada que possibilitou ao usuário carregar diversos programas na memória do computador e ainda conseguir alternar entre um aplicativo e outro, sem precisar abandonar um dos programas. Estamos falando do ambiente gráfico Windows já na sua versão 3.1, que teve uma grande aceitação. Como nessa época o Windows não passava de uma ambiente gráfico que rodava sobre o sistema operacional DOS – um sistema operacional monousuário e monotarefa – para oferecer multitarefa foi necessário usar a multitarefa cooperativa, onde os aplicativos escritos para o Windows cooperativamente se alternavam no uso de recursos computacionais: o processo era carregado na CPU, rodava e, na sequência, devolvia a CPU para outro aplicativo que estivesse na fila. Nesse esquema, se determinado aplicativo não devolvesse mais a CPU o sistema travava, fato esse muito comum. 4.2.4 ­ FAT Desde o início, devido à simplicidade, o sistema de arquivo do DOS foi a FAT, que acompanhou a evolução desse sistema operacional chegando a três versões: até o DOS 3.0 foi usada a FAT12, para as versões do DOS posteriores a 3.0 temos a FAT16, já a FAT32 surge com a versão 7.1 do DOS "embarcado " no Windows 95B ­ OSR2 de 1996 (MS­DOS 7.1). Para entender a FAT (ou qualquer outro sistema de arquivo), é necessário saber antes como as informações são gravadas num disco. Como exemplo temos um disquete (floppy) formatado6 com 80 trilhas (tracks), 18 setores (sectors) por trilha e 1024 bytes por bloco (cluster7), então a capacidade total desse disco é 80x18x1024=1440KB. Antes da criação do sistema de arquivo no disco não há como ler nem escrever nele, e para criar sistema de arquivo é necessário antes criar partição8. Conforme a figura 5 abaixo, pode ser visto que as trilhas são regiões circulares concêntricas onde o cabeçote é posicionado em cima para a leitura ou escrita. Os setores são as regiões delimitadas pela interseção entre uma trilha e duas linhas em formato de "fatia de bolo". Em qualquer disco um setor tem 512 bytes e, se esse disco for um HD, tipicamente gira a alguns milhares de rotações por minuto. Já o bloco (cluster) é a unidade de alocação constituída de múltiplos de 512 bytes, ou seja, um bloco é constituído por no mínimo um setor. Se o bloco for maior que 512 bytes, os setores que o compõem são contíguos. Para entender porque foi criada a entidade bloco, vamos analisar o caso de uma partição em HD de 2GB em FAT16: se estamos em 16 bits, o número máximo possível endereçável nesse sistema de arquivo é 216=65536, porém se formos multiplicar 512 bytes por 65536 chegaremos apenas a 32MB, muito inferior à real capacidade dessa partição. Se fosse FAT32, esse número seria 2TB. 6 7 8 O termo "formatar" vem do comando DOS "FORMAT", e significa criar sistema de arquivo. Neste exemplo está sendo usado apenas um lado (side) do disquete. No caso real, os dois lados do disco são usados, daí o cabeçote ter duas cabeças (heads). No DOS, à cada partição em disco atribui­se uma letra, por exemplo C, D e E, que são tratadas por unidade de disco e que podem inclusive estar todas no mesmo disco. O sistema de arquivo está na partição e não no disco todo, à exceção dos casos em que há somente uma partição, como é o caso dos disquetes. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 25 / 45 Prática em Sistemas Operacionais Desse modo, numa partição de 2GB em FAT16, 64 setores são tratadas como um único bloco de 32KB, que possibilita ocupar todo o espaço possível. É interessante notar que quando um arquivo está num sistema de arquivo, ele tem seu conteúdo dividido pelo tamanho do bloco de alocação, e assim ocupa um determinado número desses blocos. Por exemplo, se um arquivo tem 2,5KB e o tamanho do bloco de alocação é 1KB, o conteúdo desse arquivo irá ocupar 3 blocos. E mesmo que o arquivo tivesse apenas 1 byte, ainda assim ocuparia 1 bloco, pois essa é a menor unidade de alocação. Trilha 0 Setor Cabeçote Diante disso, um bloco de alocação Figura 5 – Disco com formatação de 18 setores grande – e 32 KB é muito grande para um bloco – implica em perda de espaço real na partição pois praticamente para cada arquivo existe um "resto" que não preenche completamente um bloco, e que acarreta desperdício de espaço nesse sistema de arquivo. Por esse motivo no DOS em FAT16 a partição máxima estava limitada a 2GB. Pelo mesmo motivo, em FAT32 essa limitação está em 2TB. Um discussão interessante nesse ponto diz respeito à necessidade de aumentar o tamanho do bloco em FAT16 devido à limitação no espaço de endereçamento, porém essa limitação inexiste em 32 bits, mesmo para uma partição de 2TB (ou maior), e que poderia usar blocos de 4KB. Mas mesmo assim, em FAT32 o tamanho do bloco também aumenta à medida que aumenta o tamanho da partição. Na tabela 2 abaixo, aparece o tamanho máximo da partição, do bloco e número de setores para FAT16 e FAT329. FAT16 Partição Tamanho do bloco FAT32 Nº de setores Partição Tamanho do bloco Nº de setores Até 255 MB 4 KB 8 Até 8 GB 4 KB 8 255 a 512 MB 8 KB 16 8 GB a 16 GB 8 KB 16 512 a 1024 MB 16 KB 32 16 GB a 32 GB 16 KB 32 1024 a 2048 MB 32 KB 64 32 GB a 2 TB 32 KB 64 Tabela 3 – Tamanhos de bloco em função do tamanho da partição Se por um lado quanto menor o tamanho do bloco menor o desperdício de disco, por outro existe um tamanho médio de dados que é conveniente guardar num único bloco, isso para agilizar tanto a escrita quanto a leitura no disco. Esse tamanho é função do tamanho médio dos 9 O Windows 95B – OSR2, Windows 98 e Millennium usam a FAT32 no DOS "embarcado". Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 26 / 45 Prática em Sistemas Operacionais arquivos, onde atualmente um bloco de alocação típico tem 4096 bytes10. Outro problema relacionado a um bloco muito pequeno é a fragmentação dos dados, que ocorre pela falta de espaço contíguo para guardar os blocos de determinado arquivo. A fragmentação ocorre à medida que mais e mais arquivos vão sendo guardados e excluídos na partição, e se tornaria um problema mais grave do que já é caso o tamanho do bloco fosse muito pequeno. Além do tamanho do bloco, outra limitação importante da FAT está no tamanho máximo de um arquivo, que em FAT16 é de 2GB e em FAT32 é de 4GB. Outra mudança que ocorre da FAT16 para a FAT32 é finalmente permitir nomes de arquivos extensos ao invés do tradicional "8.3", como por exemplo o nome de arquivo "ARQUIVO2.TXT". Mas pouco antes disso, no lançamento do Windows95 (MS­DOS7.0), a solução foi usar VFAT (Virtual File System) para garantir nomes extensos em FAT16. Uma visão mais adequada da FAT vem da figura 6, abaixo, que mostra um arquivo de 2,5KB gravado em 3 blocos de 1K cada. A disposição desses blocos ocupados (o conteúdo do arquivo) podem não ser contíguos, embora cada bloco contenha apenas setores contíguos. A característica mais marcante da FAT é usar a trilha 0 (a trilha mais externa do disco) para guardar a tabela de alocação, que têm entradas para permitir chegar aos blocos de conteúdo dos arquivos. Numa visão simples, quando se escreve um arquivo no disco o conteúdo desse arquivo é quebrado em determinado número de blocos que vão em setores em trilhas diferentes da trilha 0, e para posteriormente poder acessar esse arquivo na trilha 0 vai uma FAT entrada que leva a eses blocos. A tabela de alocação é simples e possivelmente foi escolhida como sistema de arquivo do DOS pela economia de recursos de hardware que proporciona. O 86­DOS (de quem o PC­DOS deriva) é basicamente um clone do CP/M que incorpora a FAT11. Por outro lado, toda essa simplicidade da FAT implica no risco de perda de todo conteúdo do sistema de arquivo caso seja danificada a trilha 0. 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K 1K Figura 6 – Sistema de arquivo FAT com blocos de alocação de 1K, onde 3 blocos estão ocupados com o arquivo "ARQ.TXT" de 2,5 KB. Outro problema é a insegurança local da FAT. Um usuário no console da máquina acessa qualquer arquivo pois não existe o conceito de permissão no acesso, e pode excluir/modificar arquivos que foram criados por outro usuário. Nesse aspecto, as novas versões de FAT também não prezaram pela melhoria da segurança local. No setor 0 (primeiro setor da trilha 0) vai o setor de boot MBR (Master Boot Record), e a tabela de alocação segue a partir do segundo setor, que é o de número 1. 10 11 Um bloco de 4096 bytes ocupa 8 setores contíguos. O sistema de arquivo do CP/M era inferior à FAT. Grosso modo, a principal diferença entre CP/M e PC­DOS estava na FAT. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 27 / 45 Prática em Sistemas Operacionais Quantos aos setores, uma partição FAT é dividida em dados administrativos (administrative data: MBR, tabela de alocação e diretório raiz) e área de dados (data storage). Sempre a área de dados é a que tem o maior número de setores. Devido ao uso da FAT em equipamentos tais como pendrives, a Microsoft criou também a FAT64 ou exFAT. Esse sistema de arquivo tem um tamanho máximo de partição de 64 ZB [Zettabyte12] e tamanho máximo de arquivo de 16 ZB. A FAT64 é sistema de arquivo suportado no Windows Vista SP113 e Windows 7. 4.2.5 – Comandos básicos DOS Conforme já foi dito, o DOS é um sistema operacional baseado na linha de comando, onde as intruções são dadas a partir de um shell (interpretador de comandos). No DOS, tanto faz usar caixa alta ou baixa. Por exemplo, o comando DIR pode ser dado como dir, Dir ou mesmo dIr. Para qualquer comando, a ajuda (help) sobre o uso vem ao digitar uma barra direita e o caracter interrogação após o comando. Exemplo: Para obter a ajuda do comando dir, deve ser comandado C:\> DIR /? Os comandos DOS mais comuns seguem na lista abaixo. ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 12 13 cd (chdir) – muda de um diretório para outro. chkdsk – verifica a integridade de um sistema de arquivo. cls – limpa a tela. copy – copia arquivos de um local para outro. del (erase) – exclui arquivos. deltree – exclui um diretório, subdiretórios e arquivos que ele contém. dir – mostra o conteúdo de um diretório. echo – permite enviar strings de texto para a saída padrão. exit – finaliza, sai do shell. fdisk – cria partição. find – encontra arquivos. format – cria sistema de arquivo. md (mkdir) – cria diretório. more – mostra a saída paginada. move – movimenta ou renomeia arquivos. Difere da cópia por excluir o original. msd – provê informação técnica a respeito sobre o hardware e software. rd (rmdir) – exclui diretórios vazios. ren – renomeia arquivos. tree – mostra em formato de árvore os diretórios do diretório corrente. type – mostra o conteúdo de um arquivo de texto. undelete – tenta recuperar arquivos que foram acidentalmente excluídos. ZB: 1021 bytes. A título de comparação, TB [Tera]: 1012 bytes, PB [Peta]: 1015 bytes e EB [Exa]: 1018 bytes. SP: Service Pack Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 28 / 45 Prática em Sistemas Operacionais ● ● ver – mostra a versão do sistema operacional xcopy – copia diretórios e todo seu conteúdo. 4.2.6 – Exemplo de uso da linha de comando A seguir, alguns exemplos de comandos DOS. Para abrir o interpretador de comandos, abrir o prompt do DOS [nos Windows baseados no NT, o comando é CMD]. C:> DIR C:> DIR "C:\Arquivos de programas" C:> CD \ C:> DIR /o:d C:> DIR "C:\Arquivos de programas > lista.txt C:> DIR *.TXT C:> type lista.txt C:> more lista.txt C:> type lista.txt | more C:> ver C:> set | more C:> echo %Path% C:> echo %teste% C:> set teste=juca <= carrega uma variável local C:> echo %teste% <= abrir outro CMD e dar o comando lá C:> setx teste2 joca <= carrega uma variável global C:> CMD <= aqui, está abrindo outro CMD <= está saindo do outro CMD C:> echo %teste2% C:> exit Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 29 / 45 Prática em Sistemas Operacionais SCRIPTS Para criar scripts, vamos usar o editor de texto EDIT. Inicialmente, vamos criar o script ola.bat, que quando executado apenas apresenta a mensagem “Ola”: C:> edit ola.bat @echo off echo Ola Para executar o script, basta comandar: C:> ola.bat Para criar o script nome_idade.bat com o editor de texto edit, escreva as instruções abaixo no arquivo de texto nome_idade.bat. No editor edit, para salvar o texto use a barra de menus, com as teclas <ALT><ENTER>. C:> edit nome_idade.bat @echo off set /p nome=Qual o seu nome ? set /p idade=Qual a sua idade ? echo seu nome é %nome e sua idade é %idade% rem essa é apenas uma linha comentada Depois, é só disparar o script: C:> nome_idade.bat Para usar o recirecionamento da entrada padrão, criar o arquivo entrada.txt: C:> edit entrada.txt juca 286 Por fim, disparar redirecionando a entrada e saída padrão: C:> nome_idade.bat < entrada.txt > saida.txt C:> type saida.txt Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 30 / 45 Prática em Sistemas Operacionais C:> del saida.txt C:> mkdir teste C:> dir C:> copy *.bat teste C:> rmdir teste <= usar /S, pois o diretório não é vazio C:> rmdir /S teste COMANDOS EM GERAL Aqui, vamos conhecer um pouco mais sobre a linha de comando. C:> systeminfo C:> tasklist C:> notepad <= abre o bloco de notas C:> tasklist <= aparece a tarefa notepad.exe C:> taskkill ­pid PID <= PID é o número da task notepad.exe COMANDOS DE REDE O objetivo é aprender comandos para ver as configurações da rede. C:> hostname C:> ipconfig /all C:> ping 192.168.1.10 C:> route print C:> netstat ­n ­a | more C:> nslookup www.jairo.pro.br Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 31 / 45 Prática em Sistemas Operacionais O exemplo a seguir cria sistema de arquivo na unidade de disco "D" e depois copia o arquivo "ARQ.TXT" na raiz da unidade "C" para o diretório "ARQS" na raiz dessa nova unidade. ATENÇÃO: vai destruir o sistema de arquivo na unidade de disco C, portanto em caso de dúvida não execute. Os pré­requisitos são que já exista o arquivo "ARQ.TXT" na raiz da unidade de disco "C" e que um novo HD tenha sido instalado e reconhecido pelo sistema. No novo HD ainda não há partição nem sistema de arquivo, e será atribuído a essa nova partição a unidade de disco "D". ● ● ● ● ● ● ● Antes de criar sistema de arquivo é necessário criar C:> FDISK uma partição14, para isso usa­se o comando FDISK. Através do menu do comando FDISK, basta escolher a unidade de disco na qual queremos criar uma nova partição e o espaço que ela irá ocupar; Depois de criada a partição, cria­se o sistema de C:> FORMAT D: arquivo na nova unidade (D) com o comando FORMAT; Depois de criado o novo sistema de arquivo, pode­ C:> D: se mudar para a unidade "D"; Depois de ter mudado para a unidade "D", cria­se o D:> MKDIR ARQS diretório "ARQS" na raiz de "D"; Depois de criado o diretório "ARQS" na raiz de "D" D:> COPY C:ARQ.TXT D:\ARQS copia­se o arquivo "ARQ.TXT" da raiz de "C" para dentro do diretório "ARQS" na raiz de "D"; Com o comando "DIR" é feita a verificação se o D:> DIR \ARQS arquivo está mesmo lá; A seguir, o arquivo "ARQ.TXT" é movido da D:> MOVE D:\ARQS\ARQ.TXT A: unidade "D" para o disquete. É interessante notar que, num caso típico em que uma parte do conteúdo do arquivo "ARQ.TXT" fosse guardado num bloco danificado (bad block) na unidade "D", o comando "DIR" não acusaria o erro e mostraria o arquivo íntegro no diretório "D:\ARQS". Nesse caso, o comando "DIR" estaria tendo acesso ao nome do arquivo a partir da tebela de alocação, mas quando tentasse mover esse arquivo para a unidade "A" precisaria resgatar todos os blocos, e então é que apareceria um erro informando que o arquivo está danificado. Isso esclarece também como o sistema operacional chega até o conteúdo de um arquivo: a partir da trilha 0 lê a tabela de alocação que tem os endereços que permitem chegar aos blocos que compõem o arquivo. 4.3 ­ Windows 14 Não se pode criar partições em disquetes, apenas em HDs (hard disks). Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 32 / 45 Prática em Sistemas Operacionais 4.3.1 ­ Histórico Em 1985 a Microsoft lançou a primeira versão do Windows, que não era sistema operacional mas sim interface gráfica que rodava sobre o DOS. Em novembro de 1987 veio a versão 2.0, que ao contrário da versão 1.0, era capaz de sobrepor janelas. Foi na versão 2.0 que vieram pela primeira vez as aplicações Word e Excel para Windows, porém de início não foram sucesso quando comparadas com suas versões para DOS, de linha de comando. O Windows começou a fazer sucesso na versão 2.1, mas ficou popular mesmo a partir da versão 3.0, disponibilizada em 1990, já relativamente leve mesmo para os PCs mais básicos da época. A versão 4.0 do Windows, conhecida como Figura 7 – Windows 1.0 (1985) Windows 95, foi disponibilizada ao mercado em 1995 e rapidamente tornou­se um dos sistemas operacionais mais populares devido a sua facilidade de uso, compatibilidade e principalmente devido à grande disponibilidade de software aplicativo que rodava sobre ele. Embora fosse um sistema multitarefa e com estrutura de 32 bits, grande parte do seu código era baseado no Windows 3.11. Para o ambiente corporativo foi desenvolvido o NT (New Technology), que foi o primeiro sistema operacional de 32 bits da Microsoft. A primeira versão do NT foi a 3.1, de 1993, e que tinha a aparência da interface gráfica do ambiente operacional Windows 3.1. Ao longo da sua história o Windows, basicamente, passa por três fases15 distintas: ● ● ● FASE 1 (1985 a 1995): É ambiente gráfico sobre o DOS. As versões vão da 1.0 até 3.1; FASE 2 (1995 a 2000): O DOS está "embarcado" (embutido) no ambiente gráfico. As versões vão da 4.0 (Windows95) até 4.9 (Millennium); FASE 3 (1993 até hoje): São baseados no NT. O controle de versão é diferente das anteriores, inicia em 3.1 e atualmente está em 6.1 (Windows 7). É da FASE 3 a origem dos atuais sistemas Windows2000, XP e 2003 Server, que são sistemas operacionais gráficos e não tem mais nenhuma relação com o DOS16. Estes sistemas são ditos "baseados no NT". Outra diferença é que a FASE 3 já inicia em 32 bits, ao contrário das anteriores que sempre mantiveram pelo menos alguma relação original com os 16 bits. 15 16 Ver tabela 3 abaixo. Atualmente os sistemas baseados no NT apenas oferecem alguma compatibilidade com o DOS. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 33 / 45 Prática em Sistemas Operacionais Outro aspecto interessante está relacionada à multitarefa no Windows, na FASE 1 é cooperativa pois o Windows é ambiente gráfico que roda sobre o DOS, nas demais fases já é multitarefa real ou preemptiva. Na multitarefa cooperativa as aplicações para Windows precisam cooperar para garantir a multitarefa, na preemptiva17 os processos são escalonados e cada um recebe determinado tempo de CPU. 4.3.2 – Versões Windows Figura 8 – Desktop do Windows 3.11 (1993) Numa análise das versões do Windows desde o lançamento em 1985 até hoje (ver tabela 3, abaixo), fica nítida uma seqüência. Porém, é importante notar que a linha atual nasce com a versão NT 3.1 de 1993, enquanto a linha original (baseada no DOS) é descontinuada em 2000. 17 Porém, as aplicações escritas para Windows3.x ainda causam erro de proteção geral. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 34 / 45 Prática em Sistemas Operacionais Versão Windows Data Nome N° de bits FASE 1.0 Nov/1985 Windows 1.0 16 Ambiente gráfico sobre o DOS 2.0 Nov/1987 Windows 2.0 16 Ambiente gráfico sobre o DOS 3.0 Mai/1990 Windows 3.0 16 Ambiente gráfico sobre o DOS 3.1 Mar/1992 Windows 3.1 16 Ambiente gráfico sobre o DOS NT 3.1 Jul/1993 Windows NT 3.1 32 Sistema operacional gráfico for Workgroups 3.11 Dez/1993 Windows for Workgroups 3.11 16 Ambiente gráfico sobre o DOS NT 3.5 Set/1994 Windows NT 3.5 32 Sistema operacional gráfico NT 3.51 Mai/1995 Windows NT 3.51 32 Sistema operacional gráfico 4.0 Ago/1995 Windows 95 NT 4.0 Jul/1996 Windows NT 4.0 4.1 Jun/1998 Windows 98 NT 5.0 Fev/2000 Windows 2000 4.9 Set/2000 Windows Millennium NT 5.1 Out/2001 Windows XP NT 5.2 Abr/2003 NT 6.0 16/32 32 16/32 32 16/32 DOS "embutido" no ambiente gráfico Sistema operacional gráfico DOS "embutido" no ambiente gráfico Sistema operacional gráfico DOS "embutido" no ambiente gráfico 32 Sistema operacional gráfico Windows 2003 Server 32/64 Sistema operacional gráfico Nov/2006 Windows Vista, Windows 2008 Server 32/64 Sistema operacional gráfico NT 6.1 Out/2009 Windows 7, Windows 2008 Server SP1 32/64 Sistema operacional gráfico NT 6.2 Out/2012 Windows 8, Windows 2012 Server, Windows RT18 32/64 Sistema operacional gráfico NT 6.3 Out/2013 Windows 8.1, Windows 2012 R2 Server 32/64 Sistema operacional gráfico Tabela 4 – Versões do Windows 4.3.3 – Windows NT O desenvolvimento do Windows NT iniciou em 1988, após a Microsoft contratar um grupo de programadores experientes que veio da Digital Equipment Corporation (DEC). O projeto foi conduzido por David Cutler, também ex­projetista da DEC. A intenção inicial do projeto NT era ser a nova versão do OS/2, versão 3.0, desenvolvida em parceria com a IBM. Porém, o grande sucesso do Windows 3.0 de 1990 encorajou a Microsoft a seguir seu próprio rumo, isso após romper a parceria no desenvolvimento do OS/2. O projeto NT deveria contemplar sistemas servidores e estações de trabalho totalmente 32 bits para o ambiente corporativo em redes de computadores, e foi considerado ambicioso na medida em que podia ser utilizado em arquiteturas de computador desenvolvidas por diferentes fabricantes, 18 Windows RT (RunTime) é a versão para dispositivos portáteis, roda na arquitetura ARM. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 35 / 45 Prática em Sistemas Operacionais como as da Digital (Alpha), IBM (Power PC), Intel (Pentium), Silicon Graphics (MIPS), entre outros. O objetivo da Microsoft era desenvolver um sistema operacional multitarefa para ser utilizado tanto em ambientes monousuário como multiusuário. O NT também se caracterizaria por ser compatível com o sistema operacional MS­DOS. O lançamento do NT ocorreu em 1993 e contemplou versões para servidores e para estações de trabalho, além de ser multiplataforma e de fato totalmente 32 bits. O nome Windows NT vem de New Technology, escolhido de propósito para descolar do antigo Windows 3.1 que, por rodar sobre o DOS, apresentava um número muito grande de problemas e jamais poderia ser imaginado como servidor de rede. Surpreendentemente, na escolha da versão inicial para o NT foi invocada a versão do Windows 3.1. Inclusive, a primeira versão do NT tinha a interface gráfica do Windows 3.1 e não mais a original do OS/2. Logo na seqüência, a versão 4.0 alterou essa interface para ser igual a do recém lançado Windows 95. A proposta inicial do NT era ofertar estações de trabalho suficientemente confiáveis e competitivas a ponto de serem adotadas em larga escala nos diversos ambientes corporativos, além do servidor de rede para atender a essas estações. Na versão 3.1 do NT havia apenas workstation e server, mas posteriormente nas novas versões essas subdivisões foram aumentando, conforme pode ser visto na tabela 4, abaixo. A diferença básica entre workstation e server estava no modo de operação (cliente e servidor), nos serviços oferecidos e aos segmentos para os quais cada um deles foi desenvolvido, além do número de processadores suportados. Como pode ser visto na tabela 4, abaixo, tanto o NT 5.0 quanto NT 5.2 oferecem 4 subdivisões que indicam uma maior diversificação da linha quando comparados como o NT 3.1. Essa diversificação ocorre para melhor atender aos diferentes segmentos de servidores dos ambientes corporativos, diversificação essa que aparentemente continuará a aumentar nas futuras versões caso continue a boa aceitação do Windows nesse segmento. É também interessante notar que a partir do NT 5.2 o conceito original de estação de trabalho wokstation, que passou a ser chamado de professional no NT 5.0, passa a ter uma linha independente baseada no XP19. A partir do Windows Server 2003, a Microsoft adotou a nomenclatura X64 para especificar os sistemas e edições de sistemas que suportam processadores com tecnologia de memória extendida. São sistemas que internamente trabalham em 32 bits e externamente em 64, por isso têm compatibilidade com aplicações para 32 bits. Alguns exemplos desse processadores são AMD Athlon 64, AMD Opteron, Intel Xeon e Pentium com EM64T (Extended Memory Technology). Da tabela 4 abaixo pode ser notado que os NT 5.2 e 6.1 oferecem também versões verdadeiramente20 de 64 bits quando estiver sobre a arquitetura EPIC. 19 20 O nome XP vem da palavra eXPierence, indicando que agora a linha de estações de trabalho Windows estão melhores devido à maior experiência da Microsoft nesse segmento. De qualquer modo, é com o XP que ficaram unificadas as linhas de servidores e estações de trabalho, que a partir de então passaram a ser todos baseados no NT. Muito da propaganda sobre os 64 bits é enganosa, como por exemplo o atual anúncio "Windows XP 64 bits" que na verdade tem apenas extensões de 64 bits para poder alocar um espaço de memória além dos tradicionais 4 GB limitado pelos 32 bits. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 36 / 45 Prática em Sistemas Operacionais Versão/Edição NT Nome Bits CPU RAM Descrição NT 3.1 workstation Windows NT 3.1 32 Estação de trabalho NT 3.1 server Windows NT 3.1 32 Servidor de rede NT 4.0 workstation Windows NT 4 32 2 NT 4.0 server Windows NT 4 32 4 21 4 G Estação de trabalho 4 G Servidor de rede 4 G Servidor NT 4.0 enterprise Windows NT 4 32 8, 32 NT 5.0 professional Windows 2000 32 2 4 G Estação de trabalho NT 5.0 server Windows 2000 32 4 4 G Servidor de rede NT 5.0 advanced server Windows 2000 32 8 8 G Servidor NT 5.0 datacenter server Windows 2000 32 32 64 G Servidor NT 5.1 Windows XP NT 5.2 XP 64­bit Edition22 32/64 64 NT 5.2 web server edition Windows 2003 server 32 NT 5.2 standard edition 32 Windows 2003 server X86: 4 G, X64: 128 GB Estação de trabalho ? 23 Estação de trabalho 2 2 G Servidor web hosting 4 4 G Servidor de rede 8 X86: 8 G, EPIC: 64 G NT 5.2 enterprise edition Windows 2003 server 32/64 NT 5.2 datacenter edition Windows 2003 server 32/64 NT 6.0 Windows Vista 32/64 NT 6.1 Windows 7 32/64 NT 6.1 Windows web server 2008 32/64 NT 6.1 Windows server 2008 32/64 foundation NT 6.1 Windows server 2008 32/64 standard NT 6.1 Windows server2008 Enterprise NT 6.1 Windows server 2008 32/64 datacenter NT 6.1 Windows HPC24 server 2008 NT 6.1 Windows server 2008 for Itanium based systems 64 64 2 T Servidor NT 6.2 Windows server 2012 32/64 32/64 4 T Servidor NT 6.2 Windows 8 32/64 32/64 512 G NT 6.2 Windows RT (Phone) 32/32 32/32 4 G (ARM) 21 22 23 24 32/64 8 a 64 Servidor X64: 64 G, EPIC: 512 G Servidor X86: 4 G, X64: 128 GB Estação de trabalho X86: 4 G, X64: 192 G Estação de trabalho X86: 4 G, X64: 32 G Servidor web hosting X86: 4G, X64: 32 G Servidor 4 X86: 4G, X64: 32 G Servidor 8 X86: 64, X64: 2 T Servidor 32,64 X86: 32, X64: 2 T Servidor 4 128 G ? Estação de trabalho Portátil Standard: 8 CPUs, Special: 32 CPUs. É a versão do XP para Itanium, que é baseado no Windows 2003 Server. Nâo confundir com XP Professional x64 Edition, que é para x86­64 e por isso tem apenas extensões de memória de 64 bits. 64 bits apenas na arquitetura EPIC (Itanium). HPC: High Performance Computing Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 37 / 45 Prática em Sistemas Operacionais NT 6.3 Windows server 2012 32/64 R2 32/64 4 T NT 6.3 Windows 8.1 32/64 32/64 512 G NT 6.3 Windows Phone 8.1 32/32 32/32 4 G (ARM) Servidor Estação de trabalho Portátil Tabela 5 ­ subdivisão das versões/edições NT A linha de processadores da Intel (x86) atualmente ainda está nos 32 bits. Porém, devido à necessidade de endereçamento de memória além dos 4 GB, a partir do Pentium Pro seus chips incorporam a tecnologia PAE (Intel Physical Addressing Extensions), que permite endereçar até 64 GB (236) de memória RAM numa CPU de 32 bits. A tecnologia PAE extende para 36 bits o endereçamento de memória, mas para que o sistema operacional lance mão dessa solução é necessário também suporte no chipset (placa mãe). Num caso típico de estação de trabalho Windows, raramente se torna necessário ir além de poucos giga bytes de memória, porém num sistema servidor mesmo de médio porte é imprescindível ir bem além do limite de 4 GB imposto pela arquitetura de 32 bits. Desse modo, num x86 [X86, 32/32], para atingir limites acima de 4 GB é necessário habilitar PAE. E tendo em vista a necessidade de permitir maior alocação de memória para servidores baseados no x86, a Intel lançou também a extensão de 64 bits. Essa é a tecnologia EM64T (Extended Memory), que é uma extensão de 64 bits para a alocação de memória numa CPU de 32 bits. Como produtos, estão o P4 (Pentium 4) e Xeon, que são CPUs típicas em servidores baseados em CISC. No entanto, ao contrário do PAE, a tecnologia EM64T25 não está disponível em toda a linha de CPUs, mas apenas naqueles destinados ao segmento servidor. Antes da Intel lançar a tecnologia EM64T, a AMD já tinha essas extensões na sua arquitetura X86­64. Outra conclusão importante a partir da tabela 4, acima, é que com o EPIC (Itanium) o NT 5.2 finalmente chegou aos 64 bits e voltou a ser multiplataforma. No lançamento do NT (1993) havia o suporte a RISC, que posteriormente foi retirado. A geração dos sistemas operacionais Windows XP (NT 5.1) foi idealizada com o objetivo de unificar em torno de um único produto o mercado corporativo e o de usuários domésticos. Nesse sentido foram desenvolvidas duas versões: ● ● 25 Windows XP Personal Edition, voltado para o mercado doméstico e com a proposta de substituir os Windows 9.X, Millennium e NT Workstation; Windows XP Professional Edition, para o mercado corporativo e cuja proposta original era substituir o NT inclusive nas versões server. Celeron D, Pentium 4 e Xeon CPUs tem 36 bits de endereçamento de memória, que suporta apenas 64 GB de RAM. Xeon DP CPUs suportam até 1 TB (terabyte) Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 38 / 45 Prática em Sistemas Operacionais Sabemos hoje que o XP server não vingou, e que em seu lugar veio o Windows 2003 Server (NT 5.2). Desse modo, as 4 edições do NT 5.2 apresentadas na tabela 4 são todas de sistemas operacionais servidores. Já o NT 5.0 também tem 4 edições, porém uma delas é o Windows 2000 professional que é estação de trabalho, desse modo confirmando mais uma vez o aumento na diversificação da linha NT a cada nova versão. 4.3.4 – Sistema de arquivo do NT Uma das grandes melhorias que o NT introduziu no ambiente Windows foi a segurança local, necessária no ambiente corporativo. Basicamente, segurança local envolve a garantia de que os dados de um usuário não sejam acessados ou mesmo modificados por outro, isso no console da máquina. E como sabemos, a FAT não oferece segurança local, já o NTFS foi desenvolvido tendo em vista a segurança local. É interessante notar que no acesso pela rede (compartilhamento Windows), tanto FAT quanto NTFS são seguros. O NTFS (New Technology File System) é o sistema de arquivo padrão dos Windows baseados no NT. Esse sistema de arquivo trás várias melhorias em relação à FAT, tais como melhor performance, facilidade de recuperação de dados, confiabilidade, melhor utilização do espaço em disco, segurança local (ACL26) e journaling27. A especificação exata do NTFS é um segredo da Microsoft, mas sua origem está no sistema de arquivo HPFS (High Performance File System) que foi criado especificamente para o sistema operacional OS/2. A intenção do HPFS era superar as principais limitações da FAT, tais como suporte a nome de arquivos extensos (até 256 caracteres) e maior eficiência no uso do espaço em disco. O NTFS tem 5 versões, como pode ser visto na tabela 5 abaixo. Versões NTFS Windows v1.0, v1.1 e v1.2 NT 3.1, NT 3.5, NT 3.51 e NT 4.0 v3.0 Windows 2000 v3.1 XP, Server 2003, Windows Vista, Windows 7, Server 2008 Melhorias Observação Conhecidos por NTFS3 e NTFS4 Quota e criptografia dos dados Conhecido por NTFS5.0 Conhecido por NTFS5.1, NTFS5.2 e NTFS6.0 Tabela 6 – Versões NTFS Ainda sobre sistema de arquivo, na versão 4 do NT havia o NTFS4 (New Technology File System), que ao contrário da FAT garantia segurança local. No NT 5 veio a NTFS5 que implementa criptografia28 dos dados (aumenta a segurança dos arquivos no disco) e gerenciamento de cotas (quota), que permite o controle do uso do espaço em disco por usuário. 26 27 28 Access Control List. Journaling: guarda informação de alterações nos dados que podem ser recuperadas em caso de acidentes tais como travamento da máquina ou queda de energia. Serviço EFS: Encrypting File System. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 39 / 45 Prática em Sistemas Operacionais Além do NTFS, que é nativo, o NT suporta também FAT e HPFS. O suporte à File Allocation Table é FAT16 até o NT4, já FAT16 e FAT32 são suportadas do NT5 em diante. Porém, o HPFS somente é suportado pelos Windows NT versões 3.1, 3.5 e 3.51. A versão seguinte ao NT 3.x, Windows NT 4.0, não suporta e não pode acessar as partições com sistema de arquivo HPFS. Uma partição FAT pode ser convertida para NTFS sem perda dos dados. Para isso, pode ser usado o comando "CONVERT". O inverso não é possível sem formatar a partição. 4.3.5 – Organização da rede Windows A organização da rede Windows pode ser workgroup ou domain. Workgroup é uma organização descentralizada cuja principal meta está no compartilhamento de recursos tais como impressoras, aplicações, arquivos, etc. Essa organização é apropriada para redes pequenas, tipicamente com no máximo 10 computadores, porém fica impraticável se o número de máquinas nessa rede for muito grande. Por exemplo, a descentralização implica em que o usuário deva ter uma conta de acesso em todas as máquinas às quais deseja ter acesso a algum recurso, pois as autenticações são sempre locais. Quanto ao acesso, o workgroup provê um modelo descentralizado de rede ponto­a­ponto. Domain é uma organização centralizada que necessita pelo menos um Windows NT server na função de controlador do domínio. Nesse caso, a rede pode ser grande que continua sendo administrável, isso devido à centralização das tarefas administrativas no controlador de domínio. Por exemplo, basta que o usuário tenha sua conta aberta no controlador de domínio que terá acesso a recursos com autenticação em toda a rede domain. Até o NT4 havia o conceito PDC (Primary Domain Controller) e BDC (Backup Domain Controller), que no NT5 foram substituídos pelo Active Directory. Ou seja, o Active Directory também é um controlador de domínio, e que é conhecido por serviço de diretórios. No caso do PDC, era usado o serviço WINS29 e o protocolo NetBIOS para que o usuário pudesse acessar o recurso no domínio. Além disso era necessário pelo menos outra máquina NT server para a função de BDC, e que deveria ser manualmente promovida a PDC caso o controlador primário ficasse indisponível. No NT5, o Active Directory usa o serviço DNS30 e protocolo LDAP31, que são padronizados e amplamente utilizados em quase todas as redes. Desse modo, o conceito controlador de domínio ficou mais interoperável em relação aos sistemas operacionais não Windows. No Active Directory, em lugar do PDC existe o controlador de domínio do esquema mestre32, que é o único que pode realizar operações de escrita no esquema do Active Directory. E no lugar do BDC está outro NT 5 server que assume também a função de controlador de domínio, porém com o compromisso de replicar atualizações junto ao mestre. Em caso de falha do mestre, outro servidor de domínio assume 29 30 31 32 WINS: Windows Internet Name Service. DNS: Domain Name System, que é um serviço de localização. LDAP: Lightweight Directory Access Protocol, que é um protocolo padronizado no serviço de acesso. Esquema mestre: Schema Master. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 40 / 45 Prática em Sistemas Operacionais automaticamente essa função. No Active Directory os objetos são computadores, usuários, senhas, discos, impressoras, compartilhamentos, etc. O esquema do Active Diretory (Active Directory Schema) contém a lista mestre das classes e atributos desses objetos. O Active Directory é constituído de pelo menos um domínio Windows, onde cada domínio tem sua própria política de segurança e confiança em relação aos outros domínios. Quando múltiplos domínios estão conectados por relações de confiança e compartilham um esquema comum, configuração e catálogo global33, eles constituem uma árvore de domínio34. Múltiplas árvores de domínio podem se conectar para formar uma floresta35. O controlador de domínio responsável pelo esquema mestre é o único controlador de domínio que pode realizar operações de escrita no esquema Active Directory, e as atualizações desse esquema são replicações de leitura apenas do mestre para todos os outros controladores de domínio na floresta. 4.3.6 – Árvore de domínio [Domain tree] A árvore de domínio existe quando um domínio é filho de outro domínio, com espaço de nome [namespace] contíguo. Namespace contíguo significa que o objeto em cada domínio filho na árvore tem o nome do seu domínio pai prefixado ao seu nome distinto. Floresta Árvore de domínio Árvore de domínio sp.acme.br a1.sp.acme.br a2.sp.acme.br ab.a1.sp.acme.br pr.acme.br d1.pr.acme.br d2.pr.acme.br df.d1.pr.acme.br gh.d2.pr.acme.br Figura 9 – Floresta e árvores de domínio 4.3.7 – Registro do Windows O Windows, como qualquer outro sistema operacional proprietário, é um produto 33 34 35 Global Catalog (GC): contém uma réplica parcial de cada domínio NT5 no diretório. Torna mais fácil encontrar os objetos numa árvore de domínio. Árvore de domínio: Domain tree. Floresta: Forest. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 41 / 45 Prática em Sistemas Operacionais comercial onde o código fonte é mantido bem guardado e o software comercializado é constituído basicamente de arquivos binários. Desse modo, os binários a serem instalados no computador são o resultado de uma compilação genérica do sistema operacional. Porém, do ponto de vista do hardware, um computador como o IBM­PC é muito diversificado e o sistema operacional precisa reconhecer os dispositivos que vai usar. Por isso a instalação do sistema operacional é feita a partir de uma aplicação chamada "Instalador", que faz o reconhecimento do hardware e guarda essa informação numa base de dados. Isso para que o sistema operacional, após instalado, não precise mais perder tempo tentando reconhecer o hardware toda vez que der um boot. E após levantar o sistema operacional recém instalado, normalmente criam­se usuários, instalam­se aplicações, criam­se relações de confiança, etc. Todas essa informações também vão para uma base de dados, que no caso do Windows é chamada de registro. Portanto, registro do Windows é base de dados com informações sobre hardware, software instalado, usuários, etc. O registro existe desde o Windows 3.11, mas foi com o lançamento do Windows 95 que ele atingiu o status de base de dados conforme descrito acima. Essa base de dados está estocada em alguns arquivos, e dependendo da versão do Windows haverá diferentes nomes e locais para encontrar esses arquivos. Tipicamente num Windows baseado no NT esses arquivos estão nos sub­diretórios Sam, Security, Software, System, Default e Userdiff do diretório \WinNT\System32\Config\. Nos Windows9.x e Me estão nos arquivos classes.dat, user.dat e system.dat no diretório \Windows\. No Windows3.11 está no arquivo reg.dat no diretório \Windows\. Sempre que se está atualizando, instalando ou configurando o Windows via Painel de Controle, o registro está sendo editado. Só que nesse caso são as aplicações do painel de controle que de forma transparente fazem a alteração no registro. Uma maneira direta de alterar o registro é via REGEDIT (ver figura 10), que altera as chaves do registro. Porém, antes de executar a aplicação REGEDIT é recomendável guardar cópias dos arquivos que compõem o Figura 10 – O editor REGEDIT registro, pois se alguma coisa der errada basta voltar esses arquivos. Um aspecto interessante do registro do Windows é justamente a centralização da base de dados em alguns arquivos, que se por um lado agiliza na busca pela informação, por outro corre o risco de poder perder completamente o sistema caso algum desses arquivos seja perdido. Como comparação, nos membros da família Unix o equivalente ao registro do Windows são centenas de arquivos de texto no diretório /etc. E nesse caso pode­se até perder alguns deles que o sistema continua funcionando Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 42 / 45 Prática em Sistemas Operacionais normalmente. 4.3.8 – Interface do Windows Desde o seu lançamento em 1985, o Windows vem experimentando interfaces diferentes. Duas delas merecem destaque: ● ● Windows 3.0: de 1990 até 1995; Windows 95: de 1995 até hoje. Desse modo, podemos considerar que toda versão Windows anterior a 1995 tem a interface do Windows 3.0, e toda versão posterior a 1995 tem a interface do Windows 95. Um exemplo de mudança de interface ocorreu na linha baseada no NT, que em 1996 (NT4), abandonou a interface do Windows 3.0 e passou a ter a mesma interface gráfica padronizada do Windows 95. 4.4 ­ OS/2 Antes de partir para o desenvolvimento do Windows, a Microsoft lançou em 1986, em conjunto com a IBM, as primeiras versões do sistema operacional OS/2. Mas a partir de 1990 as duas empresas optaram por seguir caminhos separados. Lançada no primeiro semestre de 1992, a versão 2.0 apresentava uma série de recursos de compatibilidade, entre os quais a possibilidade de rodar programas do Windows e do DOS, além de adotar a tecnologia de 32 bits que aproveitava melhor a potencialidade dos IBM­PCs 386. A interface do OS/2 era muito semelhante à do Windows 95, apresentando área de trabalho composta por janelas e ícones. Em 1992, a IBM lançou o OS/2 WARP, que integrava a tecnologia orientada a objeto. Porém, o OS/2 não vingou tanto pela carência de aplicações quanto por ser muito "pesado" para os computadores da época. É fato que a parceria da Microsoft no desenvolvimento do OS/2 influenciou na posterior concepção do Windows NT. 4.5 ­ UNIX Precursor de muitos sistemas operacionais, o UNIX comegou a ser desenvolvido por volta dos anos 1960, resultante de um projeto conjunto da AT&T, Honeywell, GE e o MIT (Massachussets Institute of Techonology), batizado de MULTICS (Multiplexed Information and Computing Service). Tratava­se de um sistema modular, montado em uma bancada de processadores, memórias e equipamentos de comunicação de alta velocidade. Pelo desenho, partes do computador poderiam ser desligadas para manutenção, sem que outras partes ou os usuários fossem afetados. No Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 43 / 45 Prática em Sistemas Operacionais entanto, devido a atrasos no cronograma do projeto, a AT&T decidiu abandoná­lo em 1969, mas o MIT continuou trabalhando no seu desenvolvimento. Nesse mesmo ano, alguns pesquisadores que haviam trabalhando no projeto do MULTICS se uniram para desenvolver um outro projeto na Bell Laboratories, surgindo em 1971 a primeira versão do Unix. Inicialmente, o Unix foi utilizado em máquinas da DEC e em mainframes. Mas em 1973 o Unix foi reescrito em linguagem C, mantendo apenas uma pequena parte do núcleo escrita em linguagem Assembly, o que lhe permitiu ser utilizado em outras arquiteturas de computador. O Unix começou a se popularizar a partir de 1975, quando foi lançada a versão V6, a primeira disponibilizada fora dos domínios da Bell Laboratories. Nessa época, a Universidade de Berkley (EUA) comprou os códigos fontes do Unix, possibilitando aos alunos realizarem modificações no sistema. Em 1979 o Unix foi portado para máquinas VAX, da Digital, e a partir de 1992 foi adaptado para a arquitetura RISC, como as da HP, Sun, IBM, DEC, entre outras. A partir dos anos 1980 diferentes fabricante de Unix começaram a divergir das características iniciais do sistema, então foi criado o comitê POSIX (Portable Operating System Unix) que especificou todas as características que um sistema operacional devia possuir para pertencer ao padrão Unix. Desde então tornou­se tecnicamente mais correto tratar o Unix como uma família de sistemas operacionais, ou seja, considera­se membro dessa família todo sistema operacional que apresentar determinadas características na interface e conjunto de biblioteca de sistema. Atualmente existem cerca de 30 "sabores" de Unix, alguns exemplos de membros dessa grande família são SunOS (Solaris), HP­UX, AIX, BSD, FreeBSD e Linux. Hoje o Unix é popular nas Universidades, Institutos de Pesquisa e nos CPDs do ambiente corporativo, rodando principalmente sob a arquitetura RISC e atendendo ao médio e grande porte. As exceções são Linux e FreeBSD, que lentamente estão conquistando também o segmento desktop. 4.6 ­ Linux Originalmente escrito por Linus Torvalds, do Departamento de Ciência da Computação da Universidade de Helsinki, na Finlândia, e contando com a colaboração de vários programadores voluntários que trabalharam em conjunto através da Internet, o Linux teve sua primeira versão oficial lançada em 5 de outubro de 1991. O sistema foi desenvolvido como um hobby por Torvalds que se inspirou no Minix, o mini sistema Unix desenvolvido por Andy Tanenbaum. Depois da versão 0.10, muitas pessoas do mundo todo começaram a trabalhar no sistema, que sempre teve como principal característica a de ser um software livre (Open Source), ou seja, ser distribuído sem restrição de instalação, de forma gratuita e junto com o código fonte, que permite a qualquer desenvolvedor fazer modificações e adaptações conforme suas necessidades específicas. Muito utilizado no ambiente acadêmico e sistema servidor voltado para a Internet (web server, DNS server, mail server) no ambiente corporativo, o Linux teve várias revisões e atualmente Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 44 / 45 Prática em Sistemas Operacionais pode ser considerado como um clone completo do Unix. Um ponto importante a ser dito sobre o Linux é que se trata de um núcleo de sistema operacional, e que o pacote vendido ou ofertado gratuitamente pelas distribuições é o resultado da união desse núcleo com utilitários e aplicativos, geralmente também na condição Open Source. Muitas fornecedoras de software e soluções estão investindo em aplicativos que rodam sobre o Linux e apostam no seu crescimento. Inclusive, todas as grandes empresas fornecedoras de sistemas Unix (IBM, Sun, HP, etc.) já ofertam também servidores com o sistema operacional Linux devidamente homologado. Existem atualmente centenas de distribuições Linux, entre as quais podemos destacar CentOS, Mandriva (ex­Conectiva + ex­Mandrake), RedHat, SUSE, Slackware, Debian e Ubuntu. O Linux foi desenvolvido originalmente para a arquitetura CISC (X86 – 32 bits), mas hoje já foi portado para Alpha [DEC, Digital Equipment Corporation], Sparc [Sun Microsystems], UltraSparc, Motorola 68000, PowerPC [IBM], PowerPC 64, MIPS [MIPS Technologies], PA­RISC [HP], IA­64 [Itanium], AMD X86­64 e ARM, entre outros. Sem dúvida alguma o modelo de desenvolvimento aberto que teve origem em Torvalds se mostrou muito produtivo. Prática em Sistemas Operacionais – agosto/2014 – Prof. Jairo – http://www.jairo.pro.br/ 45 / 45