Description: Introdução a Sistemas Operacionais
Sistemas Operacionais – Tecnologias de Informação – Aula 1
1. Apresentação Professor Cid Rodrigues de Andrade e-mail: cid@uninove.br Sítios: Blog em http://cidandrade.blogspot.com e notas de aula em http://aulas.cidandrade.pro.br. Fazer inscrição utilizando-se do RA como nome de usuário e senha criada pelo aluno. Problemas com o cadastro podem ser reportados no e-mail. O código de inscrição na disciplina é "Snape", com a inicial maiúscula 2.1. Bibliografia Básica: SILBERSCHATZ, A.; GALVIN, P.; GAGNE, G. Sistemas Operacionais: Conceitos e Aplicações. Tradução de Adriana Ceschin Rieche. Rio de Janeiro: Campus, 2000. 585 p. 2.2. Bibliografia Complementar: DEITEL, H.M.; DEITEL, P.J.; CHOFFNES, D.R. Sistemas Operacionais. Tradução de Arlete Simille Marques. São Paulo: Pearson Prentice Hall, 2005. 760 p. MACHADO, F.B.; MAIA, L.P. Arquitetura de Sistemas Operacionais. Rio de Janeiro: LTC, 2002. 311 p. TANENBAUM, A.S. Sistemas Operacionais Modernos. Tradução de Ronaldo A.L. Gonçalves. São Paulo: Prentice Hall, 2003. 695 p. 3. Conteúdo: ● Histórico e Introdução ● Tipos de Sistemas Operacionais ● Estruturas de Sistemas Operacionais ● Processos ● Threads ● Escalonamento de Processadores ● Sincronização de Processos ● Deadlock ● Gerência de Memória ● Estudos de Caso: Windows e Unix. 4. Avaliações: AV1 – 27 a 31 de agosto, 24 a 28 de setembro, 8 a 11 de outubro e avaliações online A marcar: ● AV2 ● Integrada ● 2oGQ ● Substitutiva ● Exame
5. Critérios de Avaliação e de Verificação de Presença 6. Breve histórico A primeira geração ocorreu de 1945 a 1955 e tinha como principal características o uso de válvulas e painéis de programação. Eram enormes e ocupavam salas inteiras com dezenas de milhares de válvulas. Projeto, construção, programação, operação e manutenção eram realizados por um mesmo grupo de pessoas. A programação era feita diretamente em código de máquina, geralmente pela conexão de plugs em painéis. Não existiam as linguagens de programação, nem sistemas operacionais. O operador obtinha autorização para uso do computador, inseria seu programa e esperava a conclusão do mesmo, se nenhuma válvula queimasse. Geralmente os programas eram cálculos numéricos diretos. No final da geração surgiu o cartão perfurado substituindo os painéis de programação. CURIOSIDADE: É considerado o primeiro computador digital e eletrônico o ENIAC (Eletronic Numerical Integrator And Calculator). Desenvolvido por J. Presper Eckert e John W. Mauchly, da Universidade da Pensilvânia. Realizou cálculos balísticos e foi utilizado no projeto da bomba de hidrogênio. Possuia 17 mil válvulas, 10 mil capacitores, 70 mil resistores, pesava 30 toneladas, consumia 140 quilowatts e era capaz de executar 5 mil adições por segundo. Seu painel de programação continha 6 mil conectores. A segunda geração (1955-1965) era baseada em transistores e sistemas em lote (batch). Os transistores forneciam confiabilidade maior aos sistemas. As equipes passaram a desempenhar papéis específicos entre o projeto à manutenção do sistema. As máquinas desta geração eram conhecidas como mainframes ou computadores de grande porte. Custavam milhões de dólares. Um uso comum era o programador levar um conjunto de cartões perfurados com programas em Fortran ou Assembly (Linguagem de Montagem) que seriam processados por um operador e esperar a impressão resultante. O sistema em lote foi uma solução para a otimização do tempo dos caros mainframes. Como exemplo um IBM 1401 era utilizado para ler cartões e gravar suas tarefas (jobs) em uma fita que seria lida por um IBM 7094 que processaria o job propriamente dito, gerando uma fita de saída. Esta seria lida e impressa por outro IBM 1401. A terceira geração (1965-1980) é caracterizada pelos Circuitos Integrados e pela multiprogramação. No início da geração os computadores tinham duas linhas distintas e incompatíveis (científicos e orientados a caractere – utilizados para ordenação e impressão). Também era comum uma organização ter problemas para migrar suas aplicações para máquinas maiores, conforme crescia a demanda. A IBM tentou resolver estes problemas com a série System/360, com máquinas compatíveis entre si. Esta série foi a primeira a utilizar circuitos integrados. O sistema operacional destas máquinas era o OS/360. Como este sistema operacional tinha de executar em máquinas com requisitos muito distintos, o OS/360 tinha de ser eficiente em situações extremamente diferentes. Era grande, complexo e com milhares de erros. Cada nova versão corrigia alguns e adicionava outros.
CURIOSIDADE: Um livro de Fred Brooks descrevia a experiência do autor com este sistema e a capa do mesmo ilustrava um rebanho de animais préhistóricos presos em um fosso. A técnica mais importante introduzida pelo OS/360 foi a multiprogramação. A memória era dividida em várias partes e cada job era alocado em uma destas partes. Se um job espera-se uma operação de Entrada/Saída (E/S), outro job poderia ser executado. Outro aspecto importante era a capacidade de transferir jobs de cartões perfurados para discos magnéticos. Quando um job terminasse o computador lia o próximo do disco para a memória. Esta técnica é denominada spooling, de Simultaneous Peripheral Operation OnLine. Os programadores procuravam por respostas mais rápidas, com diversos usuários conectados por terminais. Para isso foi introduzido o compartilhamento de tempo ou timesharing. O primeiro sistema operacional que o implementou foi o CTSS (Compatible Time Sharing System), desenvolvido pelo Massachusetts Institute of Technology (MIT). Depois dele MIT, Bell Labs e General Eletrics (G&E) decidiram desenvolver um sistema em conjunto. Ele ficou conhecido como MULTICS (Multiplexed Information and Computing Service). Sua implementação sofreu dificuldades decorrentes da ambiciosidade do projeto. Ele foi concluído apenas pelo MIT e adquirido pela empresa que adquiriu a área de computadores da G&E, a Honeywell. Foi utilizado até os anos 90 do século passado por empresas como General Motors, Ford e U.S. National Security Agency. Neste período foram lançados os mini-computadores, iniciado com o DEC PDP-1, em 1961. Custava US$ 120 mil (aproximadamente 5% do preço de um IBM 7094) e vendia muito bem. A série seguiu até o PDP-11. Problemas legais da AT&T levaram o Bell Labs a um período ocioso. Ken Thompson, em 1969, utilizou um PDP-7 para escrever uma versão do MULTICS que deu origem ao Unix. Estamos na quarta geração (desde 1980). Baseados em circuitos integrados em larga escala (LSI), muito larga escala (VLSI) e ultra larga escala (ULSI), permitiram o desenvolvimento de computadores pessoais ou microcomputadores. Em 1974 a Intel lançou o processador 8080, para o qual foi desenvolvido o CP/M (Control Program for Microcomputers). Este processador foi utilizado pelo Altair, o primeiro microcomputador. Este sistema operacional serviu de origem para a Digital Research. Quando a IBM desenvolveu o PC (Personal Computer), entrou em contato com Bill Gates para licenciar a linguagem de programação Basic. Ele sugeriu à IBM utilizar o sistema operacional da Digital Research, mas não foi possível realizar o negócio. Gates então adquiriu por US$ 50 mil um sistema operacional (DOS – Disk Operational System da Seattle Computer Products), contratou o dono da empresa, Tim Paterson como funcionário da Microsoft e licenciou o pacote com DOS (Agora denominado PC-DOC e futuramente MS-DOS) e Basic para a IBM. Concomitantemente, a Apple vinha comercializando seus microcomputadores. A Apple é uma empresa criada por Steve Jobs e Steve Wozniak. O Apple II, de 1976,
foi um grande sucesso. Um importante avanço foi o uso das interfaces gráficas com o usuário (GUI – Graphical User Interface). Desenvolvida pelo Palo Alto Research Center da Xerox, fez sucesso ao ser implementada no Macintosh, da Apple, em 1984. 7. Definições Um sistema operacional é um conjunto de programas e arquivos que atua como intermediário entre o usuário, aplicativos e o hardware de um sistema computacional. Seu objetivo é tornar conveniente o uso dos sistemas computacionais. De acordo com Silberschatz, Galvin e Gagne, um sistema computacional é composto por hardware, sistema operacional, programas aplicativos e usuários. O hardware é composto pela Unidade de Processamento Central (UPC ou CPU, de Central Processing Unit), memória e dispositivos de entrada e saída de dados. Silberschatz, Galvin e Gagne dizem que os sistemas operacionais são como os governos, que não executam (ou não deveriam executar) nenhuma função útil por si mesma, mas fornece um ambiente para o os outros componentes do sistema computacional.