1. ESTRUTURA DOS SISTEMAS OPERACIONAIS Existe uma grande dificuldade em compreender a estrutura e o funcionamento de um sistema operacional, pois ele não é executado como uma aplicação tipicamente sequencial, com início, meio e fim. As rotinas do sistema são executadas sem uma ordem predefinida, baseada em eventos dissociados do tempo eventos assíncronos . Muitos desses eventos estão relacionados ao hardware e tarefas internas do próprio sistema operacional.
2. processos I/O-Bound
3. A operação de E/S controlada por interrupção é muito mais eficiente que a operação de E/S controlada por programa, já que elimina a necessidade de a UCP esperar pelo término da operação além de permitir que várias operações de E/S sejam executadas simultaneamente. Apesar disso essa implementação ainda sobrecarregava a UCP, uma vez que toda transferência de dados entre memória e periféricos exigia a intervenção da UCP a solução desse problema foi a implementação,por parte do controlador, de uma técnica de transferência de dados denominada DMA (Direct Memory Access).
3.1. Sistemas Monoprogramáveis Multiprogramaveis Devido a limitações dos sistemas monoprogramaveis surgiram os sistemas operacionais multiprogramaveis. No tipo de sistema monoprogramavel, existe bastante desperdício de processador, o tempo de espera entre uma instrução e outra é longo se comparada com a velocidade do processador em executar as instruções.
4. Um processo é definido como CPU-Bound (ligado à CPU), quando passa a maior parte do tempo no estado de execução, ou seja, utilizando o processador. Este tipo de processo realiza poucas operações de leitura e gravação e é encontrado em aplicações científicas que efetuam muitos cálculos.
5. Buffering A técnica de buffering consiste na utilização de uma área de memória para a transferência de dados entre os periféricos e a memória principal denominada buffer o buffering veio permitir que, quando um dado fosse transferido para o buffer após uma operação de leitura, o dispositivo de entrada pudesse iniciar uma nova leitura. Neste caso enquanto a UCP manipula o dado localizado no buffer, o dispositivo de entrada pudesse iniciar uma nova leitura. Neste caso, enquanto a UCP manipula o dado localizado no buffer o dispositivo realiza outra operação de leitura no mesmo instante. O mesmo raciocínio pode ser aplicado para operações de gravação, onde a UCP coloca o dado no buffer para um dispositivo de saída manipular.
6. três as formas de se implementar estruturas de espaços livres.
7. Gerência de espaço livre
8. Processos CPU-Bound
9. tempo no estado de espera, pois realiza grande número de operações de E/S. Aplicações comerciais, que se baseiam em leitura,processamento e gravação são exemplos de processos deste tipo, assim como também os processos interativos, pela forma de comunicação entre o usuário e o sistema, normalmente lenta, devido ao uso de terminais.
10. pode-se projetar aplicações concorrentes de forma eficiente, pois um processo pode ter diferentes partes de seu código sendo executadas em paralelo. Como os threads de um mesmo processo compartilham o mesmo espaço de endereçamento, a comunicação entre threads não envolve mecanismos lentos de intercomunicação entre processos, aumentando assim o desempenho da comunicação.
11. Um processo é definido como CPU-Bound (ligado à CPU) quando passa a maior parte do tempo no estado de execução, ou seja, utilizando o processador. Este tipo de processo realiza poucas operações de leitura e gravação e é encontrado em aplicações científicas que efetuam muitos cálculos.
12. Fornecer uma interface com o usuário gerenciar a operação dos dispositivos de hardware do computador gerenciar e manter o sistema de arquivos dar suporte aos programas que são executados.
13. CONCORRÊNCIA Sistemas Operacionais podem ser vistos como um conjunto de rotinas executadas de forma concorrente e ordenada. O processador pode executar instruções ao mesmo tempo,como por exemplo, operações de entrada e saída, permite que diversas tarefas sejam executadas concorrentemente. O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas multiprogramados.
14. Fornecer uma interface com o usuário gerenciar a operação dos dispositivos de hardware do computador gerenciar e manter o sistema de arquivos dar suporte aos programas que são executados.
15. Entrada/Saída Em sistemas mais primitivos, a comunicação entre a UCP e os periféricos era controlada por um conjunto de instruções especiais, denominadas instruções de entrada e saída executadas pela própria UCP. Essas instruções continham detalhes específicos de cadaperiférico como quais trilhas e setores de um disco deveriam ser lidos ou gravados emdeterminado bloco de dados.
16. Spooling A técnica de spooling foi introduzida no final dos anos 50 para aumentar a produtividade e a eficiência dos sistemas operacionais. Naquela época, os programas dos usuários eram submetidos um a um para processamento pelo operador, como a velocidade de operação dos dispositivos de entrada/saída é muito lenta se comparada à do processador, era comum que a UCP ficasse ociosa à espera de programas e dados de entrada ou pelo término de uma impressão.
17. Reentrância É comum em sistemas multiprogramáveis, vários usuários executarem os mesmos utilitários do sistema operacional simultaneamente, como, por exemplo, um editor de textos. Se cada usuário que utilizasse o editor trouxesse o código do utilitário para a memória, haveria diversas cópias de um mesmo programa na memória principal, o que ocasionaria um desperdício de espaço.Reentrância é a capacidade de um código de programa código reentrante poder ser compartilhado por diversos usuários, exigindo que apenas uma cópia do programa estejana memória.
18. System Calls Uma preocupação que surge na grande maioria dos projetos de sistemas operacionais é a implementação de mecanismos de proteção ao núcleo do sistema e de acesso aos seus serviços. Caso uma aplicação, que tenha acesso ao núcleo, realize uma operação que o danifique, todo o sistema poderá ficar comprometido e inoperante.
19. Arquiteturas do núcleo A arquitetura do sistema é bastante complexa e deve atender aos requisitos de confiabilidade, portabilidade, fácil manutenção, flexibilidade e desempenho a estrutura do núcleo do sistema operacioanal, ou seja, a maneira como o código do sistema é organizado e o inter-realcionamento entre seus diversos dispositivos, pode variar conforme o projeto, conforme veremos à seguir.
20. Sistemas em Camadas Um sistema em camadas divide o sistema operacional em camadas sobrepostas Cada módulo oferece um conjunto de funções que podem ser utilizadas por outros módulos Módulos de uma camada podem fazer referência apenas a módulos das camadas inferiores O primeiro sistema com base nesta abordagem foi o sistema THE (Techinische Hogeschool Eindhoven), construído por Dijkstra na Holanda em 1968 e que utilizava seis camadas. Posteriormente, os sistemas MULTICS e VMS também implementaram o conceito de camadas, sendo estas concêntricas. Neste tipo de implementação, as camadas mais internas são mais privilegiadas que as mais externas.
21. Máquinas Virtuais Um sistema computacional é formado por níveis, onde a camada de nível mais baixo, é o hardware, acima, está o sistema operacional. Esse modelo de máquina virtual, cria um nível intermediário entre o hardware e o sistema operacional, denomeinado gerência de máquinas virtuais. Este nível cria diversas máquina virtuais independentes, onde cada uma oferece uma cópia virtual do hardware, incluindo os modeos de acesso, interrupções dispositivos de E/S.
22. O espaço de endereçamento é a área de memória pertencente ao processo onde as instruções e dados do programa são armazenados para execução. Cada processo possui seu próprio espaço de endereçamento, que deve ser devidamente protegido do acesso dos demais processos.
23. Memória virtual é uma técnica sofisticada e poderosa de gerência de memória onde as memórias principal e secundária são combinadas, dando ao usuário a impressão de que existe muito mais memória do que a capacidade real de memória principal. O conceito de memória virtual baseia-se em não vincular o endereçamento feito pelo programa aos endereços físicos da memória principal. Desta forma, o programa e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível, pois podem possuir endereços vinculados à memória secundária, que funciona como uma extensão da memória principal. Outra vantagem desta técnica é permitir um número maior de processos compartilhando a memória principal, já que apenas partes de cada processo estarão residentes. Isto leva a uma utilização mais eficiente do processador, além de minimizar (ouquase eliminar) o problema da fragmentação.
24. Alocação contígua: armazena o arquivo em blocos seqüencialmente dispostos no disco. O arquivo é localizado através do endereço do primeiro bloco de sua extensão em blocos. O principal problema neste tipo de alocação é a existência de espaço livre para novos arquivos,que deve ser contígua Utiliza as estratégias best-fit, worst-fit e first-fit (já conhecidas) para definir onde o arquivo será alocado. Causa alto índice de fragmentação no disco Alocação encadeada: nesta modalidade o arquivo é organizado como um conjunto de blocos ligados logicamente no disco independente de sua localização física, onde cada bloco possui um ponteiro para o bloco seguinte A fragmentação não representa problemas na alocação encadeada, pois o blocos livres para alocação do arquivo não necessariamente precisam estar contíguos. O que acontece é a quebra do arquivo em vários pedaços, o que aumenta o tempo de acesso. Neste tipo de alocação só se permite acessoseqüencial aos blocos do arquivo, sendo esta uma das principais desvantagens da técnica. Outra desvantagem é a perda de espaço nos blocos com o armazenamento dos ponteiros. Alocação indexada: esta técnica soluciona a limitação da alocação encadeada, no que diz respeito ao acesso, pois permite acesso direto aos blocos do arquivo. Isso é conseguido mantendo-se os ponteiros de todos os blocos do arquivo em uma única estrutura chamada bloco de índice. Este tipo de alocação, além de permitir acesso direto aos blocos não utilizainformações de controle nos blocos de dados.
25. Um programa é uma seqüência de instruções, compostas de desvios, repetições e chamadas a procedimentos e funções. Em um ambiente monothread, um processo suporta apenas um programa em seu espaço de endereçamento. Neste ambiente, aplicações concorrentes são implementadas apenas com o uso de múltiplos processos independentes ou subprocessos.
26. Em 1822 o matemático inglês Charles Baddage criou uma máquina para cálculos e equações polinomiais. Em 1833 Baddage evoluiu sua ideia e projetou a Máquina Analítica.Essa máquina é a que mais se parece com o computador atual
27. um sistema operacional é um conjunto de rotinas executadas pelo o processador de forma semelhante aos outros programasutilizados
28. O Início da Computação
29. em 1642 que Blaise Pascal inventou a máquina de somar para ajudar seu pai no processo de arrecadação de impostos.
30. m 1673, Gottfried Leibniz criou uma máquina capaz de somar e multiplicar. Mas foi só em 1820, que o francês Charles Colmar inventou uma máquina capaz de fazer as quatro operações aritméticas
31. Em 1854, George Boole criou a lógica booleana. Base modelo da computação digital
32. Em 1937, o matemático Alan Turing desenvolveu a Máquina Universal, capaz de executar qualquer sequência de instruções. Na década de 40 durante a segunda guerra mundial, desencadeou o desenvolvimento de máquinas para acelerar os procedimentos manuais realizados para fins militares.
33. A máquina ENIAC (Eletronic Numerical Integrator And Calculator)é considerado de fato o primeiro computador da história. Desenvolvido pelosengenheiros J.Presper Eckert e Jhon W. Mauchly na universidade da Pensilvânia. Foi desenvolvido paracalcular trajetórias balísticas. Sua estrutura era composta de 17 mil válvulas, 10 mil capacitores, 70 mil resistores e pesava 30 toneladas mas não possuia o conceito de armazenamento. Essa máquina ficou em operação de 1946 a 1955.
34. O primeiro computador desenvolvido com esta arquitetura, foi o EDSAC (Eletronic Delay Storage Automatic Calculator), desenvolvido por Maurice Wilkes na Universidade de Cambridge, na Inglaterra,em 1949.
35. Por volta dos anos 50, essa rotina teve uma pequena evolução com a introdução de cartões perfurados. Era possível, a partir de então, escrever programas em cartões e lê- los, em vez do uso de plugs em painéis.
36. Transistores e Sistemas Batch em meados dos anos 50 mudou o quadro radicalmente.Os computadores tornaram-se bastante confiáveis e puderam ser produzidos e vendidos comercialmente na expectativa de que eles continuassem a funcionar por bastante tempo para realizar algumas tarefas usuais. A princípio havia uma clara separação entre projetistas,construtores, operadores, programadores e o pessoal de manutenção.
37. Devido ao alto custo do equipamento, era de se esperar que as pessoas tentassem reduzir o tempo desperdiçado. A solução geralmente adotada era o sistema em "batch a idéia original era colecionar uma bandeja completa de jobs na sala de recepção e então lê-los para uma fita magnética usando um computador pequeno e relativamente barato, por exemplo o IBM 1401, que era muito bom na leitura de cartões, na cópia de fitas e na impressão da saída, porém não era tão bom em cálculo numérico. Outros computadores, máquinas mais caras, tais como o IBM 7094, eram usados para a computação real.Após cerca de uma hora coletando um lote de jobs, a fita era rebobinada e levada para a sala da máquina onde era montada numa unidade de fita. O operador então carregava um programa especial (o antecessor do sistema operacional de hoje), que lia o primeiro job da fita e o executava. A saída era escrita numa segunda fita, em vez de ser impressa. Após o fim da execução de cada job, o sistema operacional automaticamente lia o próximo job da fita e começava a executá-lo. Quando tudo terminava, o operador removia as fitas de entrada e de saída.
38. A Terceira Geração (1965 - 1980) CIs e Multiprogramação nos anos 60, muitos fabricantes de computadores tinham duas linhas de produto distintas e totalmente incompatíveis. Por um lado havia os computadores científicos, em grande escala, orientado por palavras, tais como o 7094, que era usado para cálculos numéricos em ciência e engenharia. Por outro lado, havia os computadores comerciais, orientados por caractere, tais como o 1401, que era vastamente usado para classificação em fita e impressão, por bancos e companhias de seguros.
39. A IBM, no intuito de resolver ambos os problemas de uma só tacada, introduziu o sistema /360. O 360 era uma série de máquinas compatíveis por software, variando de tamanho a partir do 1401 até o mais potente 7094. As máquinas diferiam apenas em preço e performance (capacidade de memória, velocidade do processador, número de periféricos I/O e assim por diante). Já que todas as máquinas tinham a mesma arquitetura e o mesmo conjunto de instruções, pelo menos em teoria, programas escritos para uma máquina poderiam rodar em todas as outras. Além disso, o 360 foi projetado para manusear tanto computação comercial como computação científica. Assim, uma única família de máquinas poderia satisfazer às necessidades de todos os clientes. Em anos subsequentes, a IBM apresentou os sucessores compatíveis com a linha 360, usando uma tecnologia mais moderna, conhecidos como séries 370, 4300, 3080 e 3090.
40. O 360 foi a primeira linha de computadores a usar (em pequena escala) circuitos integrados (CIs), fornecendo uma maior vantagem em preço performance sobre as máquinas da segunda geração, que eram construídas de transistores individuais. Isso foi um sucesso imediato e a ideia de uma família de computadores compatíveis foi logo adotada por todos os outros fabricantes. Os descendentes dessas máquinas ainda hoje estão em uso em grandes centros de computação.
41. A vontade de ter um tempo de resposta menor abriu espaço para time-sharing uma variante da multiprogramação, em que cada usuário tem um terminal on-line. Num sistema time-sharing se 20 usuários estão conectados e 17 deles estão pensando, falando ou tomando café, a CPU pode ser alocada para os três jobs que querem serviço. Como as pessoas que depuram programas usualmente editam poucos comandos (como compilar um programa de cinco páginas) em vez de programas longos (como classificar mil registros em fita), o computador pode fornecer mais rápido, serviço interativo a um número maior de usuários e talvez também trabalhar com grandes jobs em batch paralelamente, enquanto a CPU está, por outro lado, ociosa. Embora a primeira série de sistemas em time-sharing (CTSS) foi desenvolvido no MIT num IBM 7094 especialmente modificado, ele não se tornou verdadeiramente popular até que a necessidade de proteção de hardware ficasse mais difundida durante a terceira geração.
42. Outro importante desenvolvimento durante a terceira geração foi o crescimento fenomenal de minicomputadores, começando com o DEC PDP-1 em 1961. O PDP-1 tinha apenas 4 K palavras de 18 bits mas a um custo de 120.000 dólares por máquina (menos que 5% do preço de um 7094) eles vendiam como bolinhos. Para certos tipos de trabalhos não numéricos era quase tão rápido quanto o 7094 e fez surgir uma nova indústria. Foi rapidamente seguido por uma série de outros PDPs (que diferentes da família IBM, eram todos incompatíveis) culminando com o PDP-11. Um dos cientistas do Laboratório Bell que trabalhou no MULTICS, Ken Thompson, logo depois encontrou um pequeno PDP-7 que ninguém usava e começou a escrever uma versão simplificada monousuário do MULTICS. Brian Kernighan apelidou esse sistema de UNICS (UNiplexed Information and Computing Service), mas sua grafia foi mais tarde trocada para UNIX. Posteriormente foi levado para um PDP-11/20, onde funcionou bem o bastante para convencer a gerência do Laboratório Bell em investir no PDP-11/45 para continuar o trabalho.
43. A Quarta Geração (1980-1990): Computadores Pessoais, com o desenvolvimento de circuitos LSI (Large Scale Integration), chips contendo milhares de transistores em um centímetro quadrado de silício, a era do computador pessoal começava. Em termos de arquitetura, os computadores pessoais nãoeram diferentes de minicomputadores da classe do PDP-11, masem termos de preço eles eram certamente bem diferentes. Enquanto o minicomputador tornou possível um departamento de uma companhia ou uma universidade ter o seu próprio computador, o chip microprocessador tornou possível um indivíduo ter o seu próprio computador.
44. Sistemas Monolíticos Essa arquitetura pode ser comparada com uma aplicação formada por vários módulos que são compilados separadamentee depois unidos por links, formando um único programa, onde os módulos podem interagir livremente. Os primeiros sistemas utilizavam esse modelo, seu desenvolvimento e manutenção eram muito difíceis.