INTRODUÇÃO AOS SISTEMAS OPERACIONAIS agosto/2013 SEMANA 03 Surgimento, desenvolvimento e evolução dos sistemas operacionais até os sistemas modernos. 1 - Introdução A evolução dos sistemas operacionais segue numa via paralela a da evolução dos computadores, em suas diversas gerações desde o início do anos 1940. Não que o computador tenha iniciado nessa época, pois sabemos que é muito anterior, mas o que chamamos de computador moderno tem início com a arquitetura de Von Neumann. A visão histórica do surgimento e evolução do sistema operacional precisa então partir dos conhecimentos das gerações de computadores, desde a primeira geração até os dias de hoje. O surgimento e evolução do sistema operacional teve por propósito aproveitar melhor os recursos da máquina, e para cada geração de hardware foi desenvolvida uma nova geração de sistemas operacionais. Essa evolução continua em curso. 2 - Gerações de computadores 2.1 - A primeira geração de computador (1940-1956) Os computadores usavam válvulas, painéis e relés. Comparadas com as tecnologias atuais, as válvulas eram muito grandes, custavam caro, eram muito pesadas, muito lentas, consumiam muita energia, esquentavam muito e queimavam com facilidade. A programação era manual, feita ligando circuitos em painéis. Não havia sistema operacional nem o conceito de linguagem de programação. No início dos anos 1950 passaram a usar cartão perfurado para codificar instruções para o computador, que dispensou o uso de ligar circuitos em painéis. Isso agilizou a tarefa de programar a máquina, pois as instruções nos cartões perfurados eram submetidas como jobs para o computador. 2.2 - A segunda geração de computador (1956-1963) Introdução aos Sistemas Operacionais - www.jairo.pro.br 1/9 A segunda geração é marcada pelo uso do transistor ao invés da válvula, e foi uma grande evolução: os transistores aumentaram em muito a velocidade de processamento, não queimavam frequentemente e possibilitaram reduzir as dimensões e consumo de energia do computador. Nessa geração, os computadores se tornaram confiáveis a ponto de serem comercializados e adotados por algumas empresas. Com isso, o computador não ficou mais restrito às universidades e institutos de pesquisa. Ainda assim, apenas grandes empresas e órgãos governamentais podiam pagar por um computador, pois o preço era excessivamente alto. Surgiu a programação, em linguagem assembly (montagem) ou Fortran (1956, compilação), porém a forma de submeter o job continuava em cartão perfurado e ainda havia uma equipe de técnicos para operar e fazer manutenção no computador. A melhoria veio na técnica de programação com o uso da linguagem de programação, que facilitava na criação dos cartões perfurados. O computador lia uma pilha de cartões perfurados com as instruções e dados do programador, e então processava a informação. Nessa época, na maior parte do tempo o processador ficava ocioso, pois muito tempo era gasto pelos operadores preparando os recursos necessários para a execução de cada job. Para melhorar o uso do processador nessa geração criaram o sistema batch1, que possibilitou criar uma fila de jobs a ser executada sequencialmente, onde ao final de processamento de um job o próximo já estava quase pronto para iniciar o processamento. Mas convém lembrar que a máquina continuava processando apenas um programa de cada vez, e o que reduziu substancialmente foi o tempo perdido entre a leitura de entrada do programa e posterior processamento, pois o sistema batch inicialmente lia as instruções dos programas, criava uma fila de jobs e posteriormente executava sequencialmente um a um. Em 1963 foi lançado o IBM-7094, a um custo de US$ 3,134,500.00 [três milhões de dólares]. Fig 1 - O mainframe IBM-7094 2.3 - A terceira geração de computador (1964-1971) A terceira geração é marcada pelo início do uso de circuitos integrados (CI) e multiprogramação. O uso do CI garante melhor performance e menor custo que o transistor na segunda geração, pois inclui numa única pastilha (chip) muitos transistores. Ao invés de produzir transistores separados e depois ligá-los numa placa (circuito), o chip trás isso pronto em dimensões bem reduzidas. Além disso, na segunda geração, o grande número de transistores usados produzia calor a 1 Batch: processamento em lote de jobs. Introdução aos Sistemas Operacionais - www.jairo.pro.br 2/9 ponto de danificar partes internas do computador. Um CI contendo alguns transistores dissipa bem menos calor que uma placa de circuito de transistores, para fazer a mesma função desse CI. A multiprogamação foi desenvolvida para ler um programa enquanto processava outro. Desse modo, ao contrário da segunda geração, agora simultaneamente processava um programa enquanto lia outro para processar posteriormente. Continuava um sistema batch, porém com melhor aproveitamento do processador, que não ficava ocioso. A multiprogamação exigiu separação de jobs na memória, pois agora poderia haver mais de um. Não confundir multiprogramação com multitarefa, que é um conceito possível somente no início dos anos 1970. Fig 2 - IBM mainframe System/360 Como exemplo, a figura ao lado mostra o IBM System/360 [mainframe]. Nessa geração, os cartões perfurados e perfuradoras de cartão foram substituídos por teclados e monitores. Além disso, os computadores ficaram menores e mais baratos e surgiram os primeiros minicomputadores, fatores que contribuiram para iniciar a popularização do computador. 2.4 - A quarta geração de computador (1971 em diante) As técnicas de CI levaram à construção do microprocessador em 1971. A partir de então, o processamento ficou reunido num único chip. O primeiro microprocessador foi o Intel 4004, de 4 bits. Nesta geração surgiu o processamento paralelo, onde o computador é equipado com mais de uma CPU. Surgiram diversas arquiteturas de computador, como CISC, RISC, EPIC e ARM. Fig 3 - Intel 4004, de 4 bits Em 1981 a IBM criou o IBM-PC, máquina muito difundida e usada atualmente. 2.5 - A quinta geração de computador (iniciando agora?) A característica da quinta geração é o surgimento de máquinas que trabalhem eficientemente fazendo uso de inteligência artificial e reconhecimento de voz. Introdução aos Sistemas Operacionais - www.jairo.pro.br 3/9 Espara-se que a computação quântica e a nanotecnologia mudem radicalmente a arquitetura dos computadores nas próximas décadas. É de se prever que o computador se torne mais miniaturizado ainda, e que de fato acompanhe o usuário aonde quer que ele vá, mantendo o acesso à rede. 3 - Gerações de sistemas operacionais Nesta visão histórica dos sistemas operacionais, é feita uma associação direta com as gerações de computadores. Muitos autores preferem descrever a história dos sistemas operacionais década a década. Na primeira geração de computadores a programação era realizada em código absoluto, através da fiação para controlar as funções básicas da máquina. Nessa época não havia o conceito de software, não havia linguagem de programação e nem sistema operacional. 3.1 - Primeira geração de sistema operacional A primeira geração de sistema operacional surge na segunda geração de computador. O principal uso destas máquinas era para realizar cálculos científicos e de engenharia. A programação era feita em linguagem assembly (montagem), Fortran2 ou Cobol3. Os sistemas operacionais comuns à época eram o FMS (Fortran Monitor System) e o IBSYS, que foram desenvolvidos pela IBM para rodar no IBM-7094. 3.2 - Segunda geração de sistema operacional A segunda geração de sistemas operacionais surge na terceira geração de computadores. Nesta geração, os sistemas operacionais suportam multiprogramação, spool e timesharing. A multiprogramação envolve dividir a memória em diversas partes, para alocar um job em cada uma dessas partes. Apenas um job processa até o final, enquanto os demais aguardam a sua vez de processamento. Isso melhorou o desempenho do sistema pois podia processar um job após o outro sem necessitar parar para realizar operações de entrada/saída [I/O]. O spool [Simultaneous Peripheral Operation On Line] dava a capacidade de ler jobs de 2 A linguagem Fortran foi a primeira a ser criada, e é voltada para a solução de problemas matemáticos e científicos. Apesar de ter sido criada em 1957, está em uso até hoje. O nome é um acrônimo da expressão "IBM Mathematical FORmula TRANslation System". 3 COBOL, Common Business Oriented Language [linguagem orientada aos negócios], foi criada em 1959 e está em uso até hoje. Introdução aos Sistemas Operacionais - www.jairo.pro.br 4/9 cartão direto para o disco. Desse modo, assim que o job ativo [processando] terminasse, o sistema operacional carregava um novo job na partição livre de memória, proveniente do disco. A leitura do cartão era muito lenta quando comparada com a leitura do disco. Timesharing [tempo compartilhado] surgiu ao final da terceira geração de computadores, e permitia que usuários interativos acessassem o sistema simultaneamente, através de um terminal. Nesta geração surgiu o TOS, Tape Operating System, ou Sistema Operacional de Fita. Como exemplo, em 1964 veio o TOS/360, que era o sistema operacional da IBM para o System/360. Esse sistema operacional era armazenado em fita e não mais em cartão. O DOS/360, Disk Operating System [Sistema Operacional de Disco], veio em 1966. O Unix começou a ser desenvolvido a partir do final do projeto MULTICS4, em 1969, mas só passou a ser usado no início dos anos 1970. 3.3 - Terceira geração de sistema operacional A terceira geração de sistemas operacionais surge na quarta geração de computadores. A grande disponibilidade de poder computacional dessa geração levou ao crescimento da indústria de software, que ganhou independência dos fabricantes de computadores. Isso levou ao surgimento de novos sistemas operacionais, alguns dos quais ainda em uso atualmente. Em meados dos anos 1980 surgiram os sistemas operacionais para redes e sistemas operacionais distribuídos. Essa última categoria permite que aplicações rodem em diversos processadores ao mesmo tempo, usando a rede. A computação distribuída é computação paralela e descentralizada, realizada por dois ou mais computadores conectados através de uma rede com o objetivo de concluir uma tarefa comum. Normalmente, um sistema distribuído é coleção de computadores independentes que se apresentam ao usuário como um sistema único e consistente. Em outras palavras, nesse caso o usuário tem a impressão que tudo se passa no computador dele. A partir do final dos anos 1980 e início dos anos 1990 surgiram computadores com monitores gráficos, que levaram ao desenvolvimento de sistemas operacionais com interfaces gráficas. Isso popularizou o computador, pois possibilitou que qualquer usuário leigo operasse a máquina, sem necessidade de aprender comandos específicos de sistema. Inicialmente, antes da chegada da internet comercial [no início dos anos 1990], a ênfase estava nos sistemas operacionais para estações de trabalho e computadores pessoais. Posteriormente, a rede se tornou onipresente e surgiram os sistemas operacionais servidores, aplicações servidoras, sistemas clientes e aplicações clientes. Mais interessante, nos últimos anos têm surgido equipamentos portáteis que permitem o 4 MULTICS [Multiplexed Information and Computing Service] era um sistema operacional mainframe timesharing que iniciou em 1965 e terminou em 2000. Introdução aos Sistemas Operacionais - www.jairo.pro.br 5/9 acesso à internet. Como exemplos de portáteis temos smartphone, tablet e ultrabook. Além disso, equipamentos como PDA [Personal Digital Assistant, Palm] e smart TV também permitem navegar na internet. O vigoroso crescimento desse segmento mostra que a era do desktop com função de acesso à internet está com os dias contados. Por sistema operacional moderno (ou atual) entendemos aqueles que atendem à demanda de recursos exigida pelos usuários. Por exemplo, se determinado sistema operacional de smartphone não suporta ou tem problemas com touchscreen, então ele precisa ser atualizado ou está a caminho da obsolecência. Exemplos de sistemas operacionais modernos: Linux5 Windows Mac OS X Solaris AIX HP-UX FreeBSD6 OS/400 FreeDOS7 Android iOS Windows phone 8 Open source. Usado em todas as arquiteturas de computador; Microsoft. Usado basicamente em Intel x86; Apple. Usado em x86. Recentemente era usado em RISC Power; Sun Microsystems. Usado em arquitetura RISC Sparc e x86; IBM. Usado em arquitetura RISC Power; HP. Usado em arquitetura RISC PA-RISC e EPIC Itanium; Open source. Usado em quase todas as arquiteturas de computador; IBM. Usado no AS/400, arquitetura RISC Power; Open source. Usado em x86; Open source, mantido pela Google. Usado em portáteis; Apple. Baseado no Mac OS X (FreeBSD). Usado em portáteis; Microsoft. Usado em smartphones. 4 – Famílias de sistemas operacionais Um sistema operacional, para ser bem sucedido, precisa estabelecer um ecossistema. Um ecossistema envolve fabricantes de hardware, desenvolvedores de software e principalmente uma massa crítica de usuários do sistema. Os usuários têm preferências por sistemas simples e amigáveis que disponham de uma ampla base de software aplicativo disponível. Como estabelecer e manter um ecossistema é tarefa difícil, porém fundamental para a sobrevivência do sistema operacional, então é usual o sistema pertencer a uma família. O conceito de família envolve sistemas com as mesma características e que compartilhem uma mesma base de softwares aplicativos, então os sistemas que pertencem a uma mesma família se fortalecem mutuamente. Existem duas grandes famílas de sistemas operacionais: família Windows e família Unix. 4.1 – Família Windows 5 Linux, tecnicamente falando, é só um kernel (núcleo) de sistema operacional open source (de código fonte aberto). O código está disponível em http://www.kernel.org. 6 O sistema operacional FreeBSD está disponível em http://www.freebsd.org/. 7 O sistema operacional FreeDOS está disponível em http://www.freedos.org/. Introdução aos Sistemas Operacionais - www.jairo.pro.br 6/9 A família Windows atual está baseada na tecnologia NT8. As principais versões são: Versão Windows Data Nome NT 3.19 1993 NT 3.1 NT 4.0 1996 NT 4.0 NT 5.0 2000 Windows 2000 NT 5.1 2001 XP (eXPerience) NT 5.2 2003 Windows 2003 Server NT 6.0 2006 Windows Vista NT 6.0 2007 Windows 2008 Server NT 6.1 2009 Windows 7 NT 6.1 2009 Windows 2008 Server Release 2 NT 6.2 2012 Windows 8 NT 6.2 2012 Windows 2012 Server ??? 2013 (a ser lançado no final do ano) Windows 8.1 4.2 – Família Unix A primeira versão do Unix veio em 1971, e rodava em máquinas DEC10 e Mainframes. Em 1973 o Unix foi reescrito em C, linguagem essa criada especificamente para reescrever o código fonte do Unix. Atualmente não existe mais o sistema Unix, mas sim sistemas baseados naquele conceito, e Unix é uma marca registrada do The Open Group11. Os sistemas Unix se dividem em vários ramos de sistemas criados e suportados por diversos fabricantes. Inicialmente o Unix era um sistema aberto, apropriado ao ambiente acadêmico, daí a sua popularidade. Posteriormente diversas empresas surgiram, cada uma suportando o seu Unix. E para garantir a não fragmentação da arquitetura Unix em diversos sistemas operacionais incompatíveis entre si, foi criado o padrão ou comitê POSIX. O POSIX, Portable Operating System Interface for Unix, de 1988, é um conjunto de definições e convenções que padroniza a interface [linha de comando], o conjunto de bibliotecas dos sistemas Unix e as suas chamadas de sistema [system calls]. A partir do POSIX, é mais correto classificar os sistemas Unix como membros de uma família, isto é, família Unix. 8 NT vem de New Technology (nova tecnologia) que foi criada pela Micrososft no início dos anos 1990 para contrapor-se ao antigo Windows baseado no MS-DOS. 9 O lançamento foi na versão 3.1. 10 DEC: Digital Equipment Corporation, posteriormente adquirida pela Compaq, que foi comprada pela HP. 11 The Open Group: É um consórcio da indústria de software para prover padrões abertos e neutros para a infraestrutura de informática. Introdução aos Sistemas Operacionais - www.jairo.pro.br 7/9 Posteriormente o padrão POSIX foi extendido pelo The Open Group, pela publicação da Single Unix Specification, que é uma família de padrões para sistemas operacionais qualificados para o nome Unix. Os sistemas não qualificados em acordo com a Single Unix Specification são chamados de Unix-like. Por exemplo, os sistemas AIX, HP-UX e Mac OS X são sistemas Unix registrados, já Linux e FreeBSD são Unix-like. Após o POSIX, tecnicamente o Unix passa a ser tratado como uma família de sistemas operacionais. Essa família é composta tanto por membros proprietários quanto membros de código fonte aberto. Os principais membros dessa grande família são: Sistema Operacional Fabricante Arquitetura do computador Solaris [SunOS] Sun12 Microsystems [proprietário] RISC - processador Sparc AIX IBM [proprietário] RISC - processador PowerPC HP-UX HP [proprietário] RISC - processador PA-RISC Linux Código fonte aberto [open source] todas FreeBSD Código fonte aberto [open source] todas Mac OS X Apple [proprietário]. Porém, o kernel XNU Atual: x8613. Anterior: RISC é open source PowerPC Da tabela acima, a arquitetura do computador vem da época da adaptação do Unix para a arquitetura RISC, porém atualmente temos também Solaris rodando em CISC [x86] e HP-UX em EPIC [Itanium]. Apesar da definição de Unix como família de sistemas, no ambiente corporativo costuma-se ainda usar o termo "Unix" para os membros proprietários e Linux/FreeBSD para os de código fonte aberto. Mais recentemente, novos sistemas operacionais surgiram baseados nos sistemas Unix-like de código fonte aberto. É o caso do iOS e Android. Sistema Operacional Fabricante Arquitetura do computador ARM15 iOS [iPhone OS] Apple [proprietário]. Porém, o kernel XNU14 é open source Android Open Handset Alliance16 [open source] ARM, x86 12 13 14 15 Em 2010 a Sun Microsystems foi comprada pela Oracle. x86: é a linha de processadores da Intel, que é de arquitetura CISC. XNU: é um acrônimo e significa X is Not Unix. ARM: significa Advanced RISC Machine e pertence à empresa ARM Holdings. Difere do RISC tradicional por ter apenas 32 bits e consumir pouca energia. É uma arquitetura específica para equipamentos portáteis. 98% dos celulares do mundo usam processador ARM. 16 Open Handset Alliance: Google, HTC, Dell, Intel, Motorola, Qualcomm, Texas Instruments, LG, Samsung, TMobile e Nvidia. Introdução aos Sistemas Operacionais - www.jairo.pro.br 8/9 O iOS é baseado no Mac OS X. O kernel [núcleo do sistema operacional] do Mac OS X é XNU, que é um híbrido entre kernel FreeBSD e kernel Mach. Darwin também é considerado kernel, porém trata-se do kernel XNU acrescido de outras porções do sistema. Tanto FreeBSD quanto Mach são Unix-like, já o Mac OS X é um sistema Unix registrado. Por sua vez, o iOS é Unix-like. O Android usa o kernel Linux. No entanto, Android não é Unix-like, mas pode-se dizer que é baseado no Linux. Tanto iOS quanto Android são sistemas desenvolvidos para equipamentos portáteis como celulares, tablets e ultrabooks17. Voltando ao Unix e considerando a popularidade dos novos sistemas derivados e baseados nele, é fácil concluir que essa família continua bem atual, embora tenha mais de 40 anos de idade. 5 - Panorama para os sistemas operacionais no futuro A associação de reconhecimento de voz com inteligência artificial poderia permitir a comunicação direta (natural) entre seres humanos e máquinas. Comando de voz já existe, porém é muito limitado e defeituoso ainda. O que se espera do futuro é efetivamente interagir com a máquina, como se estivesse falando com uma pessoa. Além de se tornarem cada vez mais tranparentes para o usuários, os sistemas operacionais precisarão adaptar-se rapidamente à demanda por novas funcionalidades. E a época em que o usuário precisava conhecer o sistema operacional para usar eficientemente o computador, também vai passar a fazer parte da história. Outro aspecto a ser levado em consideração, é a extinção em massa de sistemas nascidos no início da terceira geração de sistemas operacionais: CP/M, PC-DOS, MS-DOS, NW-DOS, DRDOS, OS/2, e Digital Unix, só para citar alguns que não tem mais suporte por parte dos fabricantes. O ponto em comum entre eles é que são proprietários, o que mostra que essa categoria de sistema tem um ciclo de vida curto. Em contraste, os de código fonte aberto parecem ser mais adaptáveis e por isso mais resistentes às rápidas mudanças originadas na demanda de novos recursos por parte dos usuários. 17 Ultrabook é um conceito de notebook/netbook mais fino, leve, de baixo consumo de energia e armazenamento de dados em memória flash. Introdução aos Sistemas Operacionais - www.jairo.pro.br 9/9