Commit 7cc15e4f authored by Eduardo de Santana Medeiros Alexandre's avatar Eduardo de Santana Medeiros Alexandre
Browse files

so

parent 5e5ec7a1
...@@ -71,7 +71,7 @@ pré-programadas para atuarem sobre estes dispositivos, as chamadas do sistema ...@@ -71,7 +71,7 @@ pré-programadas para atuarem sobre estes dispositivos, as chamadas do sistema
[[fig_camdas]] [[fig_camdas]]
.Sistema de um computador: hardware, programas do sistema e aplicações. .Sistema de um computador: hardware, programas do sistema e aplicações.
image::images/sistemas-operacionais/camadas.png[scaledwidth="60%"] image::images/sistemas-operacionais/camadas.png[scaledwidth="40%"]
Podemos observar na <<fig_camdas>> a arquitetura em camadas de um sistema Podemos observar na <<fig_camdas>> a arquitetura em camadas de um sistema
...@@ -84,9 +84,9 @@ funcionalidades para a camada acima através das instruções de máquina. ...@@ -84,9 +84,9 @@ funcionalidades para a camada acima através das instruções de máquina.
(((Sistema Operacional))) (((Sistema Operacional)))
A principal função da camada do Sistema Operacional é diminuir a A principal função da camada do Sistema Operacional é *diminuir a
complexidade e fornecer ao programador um conjunto de instruções de mais alto complexidade e fornecer ao programador um conjunto de instruções de mais alto
nível, sem a preocupação dos detalhes das instruções, como a nível*, sem a preocupação dos detalhes das instruções, como a
movimentação do cabeçote de leitura dos discos rígidos contidos na memória movimentação do cabeçote de leitura dos discos rígidos contidos na memória
secundária para ler os dados de um programa em execução. secundária para ler os dados de um programa em execução.
...@@ -97,11 +97,14 @@ fim, a camada de aplicações, escritas pelos usuários para resolver seus ...@@ -97,11 +97,14 @@ fim, a camada de aplicações, escritas pelos usuários para resolver seus
problemas específicos, como processamento de imagens, serviços de problemas específicos, como processamento de imagens, serviços de
comunicação na rede, aplicações comerciais, científicas e etc. comunicação na rede, aplicações comerciais, científicas e etc.
[IMPORTANT]
Muitos confundem o Sistema Operacional com a sua interface gráfica. No Windows, Muitos confundem o Sistema Operacional com a sua interface gráfica. No Windows,
Sistema Operacional da Microsoft, existe um programa do sistema, chamado Sistema Operacional da Microsoft, existe um programa do sistema, chamado
gerenciador de janelas, responsável por controlar as ações do usuário e gerenciador de janelas, responsável por controlar as ações do usuário e
ativar os recursos do Sistema Operacional, dando assim uma falsa impressão que ativar os recursos do Sistema Operacional, dando assim uma falsa impressão que
o mesmo seja o Sistema Operacional de fato. Para podermos definir bem a o mesmo seja o Sistema Operacional de fato.
Para podermos definir bem a
fronteira do que é o papel do Sistema Operacional, elencamos e em seguida fronteira do que é o papel do Sistema Operacional, elencamos e em seguida
descrevemos suas duas principais funções: Extensão da Máquina e Gerenciador descrevemos suas duas principais funções: Extensão da Máquina e Gerenciador
de Recursos. de Recursos.
...@@ -112,6 +115,8 @@ A arquitetura, conjunto de instruções, organizações de memória, E/S e ...@@ -112,6 +115,8 @@ A arquitetura, conjunto de instruções, organizações de memória, E/S e
estrutura de barramentos da maioria dos computadores em nível de linguagem de estrutura de barramentos da maioria dos computadores em nível de linguagem de
máquina é primitivo e de difícil programação. máquina é primitivo e de difícil programação.
//TODO hj ninguem usa disquete, trocar o texto para HD.
Examinando como é feita a E/S da unidade de discos flexíveis (disquete), são Examinando como é feita a E/S da unidade de discos flexíveis (disquete), são
realizados inúmeros comandos para leitura e escrita de dados, movimentação realizados inúmeros comandos para leitura e escrita de dados, movimentação
do braço do disco e formatação de trilhas. Além da inicialização, do braço do disco e formatação de trilhas. Além da inicialização,
...@@ -123,7 +128,7 @@ provavelmente não se envolverá com os detalhes de programação das unidades ...@@ -123,7 +128,7 @@ provavelmente não se envolverá com os detalhes de programação das unidades
de disco, em vez disso, busca lidar com essas unidades de modo mais abstrato e de disco, em vez disso, busca lidar com essas unidades de modo mais abstrato e
simples. simples.
Esse programa que oculta a verdade ao programador sobre o hardware e Esse programa que oculta a ``verdade'' ao programador sobre o hardware e
apresenta uma visão simples é o Sistema Operacional, permitindo que o apresenta uma visão simples é o Sistema Operacional, permitindo que o
usuário trabalhe com o conceito de arquivos com nomes para dividir o disco. usuário trabalhe com o conceito de arquivos com nomes para dividir o disco.
...@@ -133,9 +138,9 @@ uma máquina estendida. ...@@ -133,9 +138,9 @@ uma máquina estendida.
==== Gerenciador de Recursos ==== Gerenciador de Recursos
O segundo trabalho do Sistema Operacional é fornecer uma alocação ordenada e O segundo trabalho do Sistema Operacional é fornecer uma *alocação ordenada e
controlada de processadores, memórias e dispositivos de E/S entre vários controlada* de processadores, memórias e dispositivos de E/S entre vários
programas que competem por eles. programas que *competem* por eles.
Imagine o que aconteceria se três programas em execução em algum computador Imagine o que aconteceria se três programas em execução em algum computador
tentassem imprimir suas saídas simultaneamente na mesma impressora. As tentassem imprimir suas saídas simultaneamente na mesma impressora. As
...@@ -148,187 +153,21 @@ saída por vez. ...@@ -148,187 +153,21 @@ saída por vez.
Além disso, os usuários muitas vezes precisam compartilhar não somente Além disso, os usuários muitas vezes precisam compartilhar não somente
hardware, mas também informação (arquivo, banco de dados e etc). hardware, mas também informação (arquivo, banco de dados e etc).
O gerenciamento de recursos realiza o compartilhamento desses recursos de duas O gerenciamento de recursos realiza o compartilhamento destes recursos de duas maneiras:
maneiras: no tempo e no espaço. Quando o recurso é compartilhado no tempo,
No tempo::
Quando o recurso é compartilhado no tempo,
diferentes usuários aguardam sua vez para utilizar um recurso. Por exemplo, diferentes usuários aguardam sua vez para utilizar um recurso. Por exemplo,
com somente uma CPU e múltiplos programas, o Sistema Operacional aloca a CPU a com somente uma CPU e múltiplos programas, o Sistema Operacional aloca a CPU a
um programa, e depois que executou o suficiente, outro programa obtém seu uso, um programa, e depois que executou o suficiente, outro programa obtém seu uso,
então outro e por fim o primeiro programa novamente. então outro e por fim o primeiro programa novamente.
No espaço::
No compartilhamento do espaço, os usuários não esperam a sua vez, cada um No compartilhamento do espaço, os usuários não esperam a sua vez, cada um
ocupa sua parte no recurso. Por exemplo, a memória principal é normalmente ocupa sua parte no recurso. Por exemplo, a memória principal é normalmente
dividida entre vários programas em execução, assim, cada um pode residir ao dividida entre vários programas em execução, assim, cada um pode residir ao
mesmo tempo na memória. mesmo tempo na memória.
=== Evolução dos Sistemas Operacionais
A história dos Sistemas Operacionais está diretamente ligada a arquitetura
dos computadores em que os mesmos iriam executar. Nesta seção iremos abordar
alguns exemplos desta evolução casada entre o hardware e o software.
==== Computadores a Vácuo (1945-1955)
Durante a segunda guerra mundial uma aceleração na evolução dos
computadores ocorreu devido à necessidade de aplicações que pudessem quebrar
a codificação das mensagens dos inimigos.
Neste período alguns pesquisadores como John Von Newman em Princeton, Konrad
Zuse na Alemanha e Howard Aiken em Harvad construíram dispositivos capazes de
computar através de tubos a vácuo, sendo estes equipamentos grandes o
bastante para ocupar salas inteiras.
Nesta geração as instruções eram dadas diretamente em código de máquina.
Não havia linguagem de programação (nem mesmo linguagem de montagem). E os
Sistemas Operacionais não tinham qualquer funcionalidade, ou seja, não
existiam.
==== Transistores e Sistemas em Lote (1955-1965)
(((Transistores)))
Com o surgimento dos transistores, os computadores se tornaram confiáveis e
passaram a ser comercializados, isto em meados da década de 50.
O computador passou a ter mais clara a separação dos papeis de seus atores:
os projetistas do computador, programadores e os operadores da máquina. Antes
estes papeis eram realizados pelos mesmos desbravadores da Computação.
Para executar um programa, o programador desenvolvia seu algoritmo e entregava
o cartão contendo seu código ao operador. O operador era responsável por
entrar com o cartão no computador e acionar sua computação, ao final, a
saída era impressa e o resultado entregue de volta ao programador.
Como os computadores iniciais eram muito caros, uma empresa compartilhava seus
diversos processos em uma única máquina, para isso, desenvolveu-se o conceito
de sistema em lote.
O sistema em lote trabalhava com fitas magnéticas que possuíam diversos
programas a serem executados em sequencia. Um programa especial (ancestral do
Sistema Operacional) carregava cada programa da fita, executava o programa e
enviava sua saída para a impressora. Após o encerramento deste programa o
sistema configurava a próxima atividade para entrar em execução. Este ciclo
se repetia até acabarem todas as atividades do lote.
==== Circuitos Integrados e Multiprogramação (1965-1980)
(((Circuitos Integrados))) (((Multiprogramação)))
No início da década de 60, os computadores passaram a ter duas utilizações
no mercado: os computadores científicos de larga escala para a ciência e a
engenharia e os computadores comerciais adotados por bancos, companhias de
seguro e departamentos de recursos humanos.
O principal responsável pela sua popularização foi a adoção da tecnologia
de Circuitos Integrados que diminuiu o tamanho e o preço dos computadores. O
IBM 360 foi o principal computador adotado pelos dois filões do mercado.
A principal mudança para os Sistemas Operacionais foi a criação da
Multiprogramação, permitindo que vários programas pudessem compartilhar a
memória principal ao mesmo tempo, cada uma com seu espaço reservado na
memória, compartilhamento do espaço (<<fig_compartilhar_tempo_espaco>>(a)),
podendo estas atividades serem executadas ao mesmo tempo.
[[fig_compartilhar_tempo_espaco]]
.Multiprogramação em um Sistema Operacional, tipos de compartilhamento dos recursos do computador.
image::images/sistemas-operacionais/Compart_tempo_espaco.png[scaledwidth="60%"]
Entretanto os computadores desta época não tinham mais de um núcleo de
processamento (processador), logo era de responsabilidade do Sistema
Operacional, dividir o uso do único processador com os diversos programas em
execução durante pequenas frações de tempo, compartilhamento do tempo
(<<fig_compartilhar_tempo_espaco>>(b)).
==== Computadores Pessoais (1980-1995)
(((Computadores Pessoais)))
Com o advento dos minicomputadores na década de 80, o computador passou a ser
usado na vida privada das pessoas, passou-se a comprar computadores como se
comprava vídeo cassete, surgindo assim o conceito de Computador Pessoal
(Personal Computer - PC).
A popularização do computador se deu pelas interfaces gráficas propostas
pelos Sistemas Operacionais, permitindo que leigos da área pudessem manipular
suas aplicações pessoais, sem o auxílio dos antigos operados de máquina.
Os principais Sistemas operacionais da época foram o MS-DOS, precursor do
Windows da Microsoft, o Unix, base para as diversas distribuições do Linux,
Sistema Operacional aberto ao público (podendo usa-lo e modificar seu código)
e o Mac OS, sistema criado pela Apple que trouxe a revolução na Interface
Gráfica, adotado até hoje nos Sistemas Operacionais modernos.
No final da década de 80, começou-se a criar Sistemas Operacionais para
manipular computadores interligados por redes de comunicação, chamados
Sistemas Operacionais de Rede ou de Sistemas Distribuídos. Nele o usuário
passou a controlar diversos computadores ao mesmo tempo, podendo até se logar
em um computador remoto, localizado a quilômetros de distância, e controla-lo
como se estivesse usando seu teclado ou mouse local.
==== A Guerra dos Sistemas Operacionais
image::images/sistemas-operacionais/appleXmicrosoft.png[scaledwidth="60%"]
Na década de 70 dois jovens estudantes tiveram visões distintas sobre o
futuro dos computadores, na época dominada por grandes computadores da poderosa
IBM. Seus nomes Steven Jobs e Bill Gates. O primeiro entendeu que o computador
deveria ser usado por pessoas comuns para auxiliá-los em tarefas do trabalho e
de casa, criando assim o conceito de Computador Pessoal, materializado pelo
lançamento do Apple 2 no ano de 1977, que passou a ser o nome de sua empresa,
a atual gigante Apple. Sua proposta era ter controle total sobre o
desenvolvimento do computador, sendo responsável pelo projeto do hardware e do
software. Inicialmente o design de seus produtos fizeram muito sucesso e a
interface gráfica de seu sistema operacional (Mac OS), adota da empresa Xerox,
foi tão revolucionária que grupos de usuários passaram a se intitular fãs
dos produtos e seu mentor o profeta da revolução da Computação que iria
livrar o mundo da opressão dos grandes computadores da IBM.
O segundo criou a Microsoft, e tinha uma visão mais voltada para o software, o
seu Sistema Operacional, o Windows, foi pensado para funcionar em qualquer
hardware, fato que diminuiu a qualidade do mesmo. Entretanto aliado à
funcionalidade da interface gráfica, copiado dos produtos da Apple, a um
conjunto de aplicações muito funcionais nas empresas e em trabalhos
domésticos como o Word, Excel, Powerpoint e etc (``Killed Applications''), o
Sistema Operacional dos computadores comerciais por muito tempo passou a ser
sinônimo de Windows. Na década de 90 a Microsoft se torna a maior empresa de
informática do mundo, tornando seu dono o homem mais rico do planeta. Nada mal
para um estudante pobre que só vendia software.
A disputa entre Jobs e Gates tinha se tornada pública, e na década de 90 a
aposta total no software parecia ter sido declarada como campeã. Steven Jobs
fora demitido da sua própria empresa e chegou a trabalhar no ramo da
animação, tendo como frutos a empresa Pixel, hoje um renomado estúdio de
desenhos animados, criadora do famoso desenho Toy Story.
No final da década de 90 Jobs retorna a Apple, e com sua capacidade de
inovação e a busca constante pela perfeição no design de seus produtos
sempre pensando na interface com o usuário, a Apple lança em série novos
produtos revolucionários, o iPod, iPhone e iPad, além de uma série de
computadores pessoais e seus notebooks sempre elegantes e modernos. A ideia de
ter o controle sobre o projeto do hardware influenciando o projeto do software
permitiu que na primeira década do século XXI a Apple tomasse o posto de
maior empresa de informática da Microsoft, chegando em 2012 a valer o dobro da
concorrente. O iPod (tocador de música em mp3) foi o equipamento eletrônico
mais vendido da história, desbancando o posto do Walkman da Sony. O tablete
iPad tirou a funcionalidade de leitura e entretenimento do computador pessoal,
este agora um aparelho para trabalho.
Agora sem o comando de Gates a Microsoft quer voltar a ser a empresa inovadora
de antes, mas para isso tem que percorrer o caminho já trilhado por suas
concorrentes. Em 2012 a Microsoft lançou seu primeiro computador, chamado
Surface, um híbrido de notebook e tablet e para controlar seu hardware foi
desenvolvido um novo Sistema Operacional, o Windows 8, com boa aparência mas
com a velha obsessão da Microsoft de colocar seus softwares para serem
compatíveis com vários hardwares, logo o Windows 8 foi adaptado para telas de
toque e computadores com teclado e mouse, o que leva o usuário a confusões de
navegabilidade.
O importante é que nesta briga ganham os usuários, com novas ferramentas mais
amigáveis e novas funcionalidade para os dispositivos que um dia serviam
apenas para cálculos científicos ou contabilidades empresariais.
=== Tipos de Sistemas Operacionais === Tipos de Sistemas Operacionais
...@@ -344,9 +183,10 @@ milhares de discos com milhares de 'terabytes' de dados. Atualmente ressurgiram ...@@ -344,9 +183,10 @@ milhares de discos com milhares de 'terabytes' de dados. Atualmente ressurgiram
como sofisticados servidores web e servidores para transações entre empresas. como sofisticados servidores web e servidores para transações entre empresas.
Seus Sistemas Operacionais são, sobretudo, orientados para o processamento Seus Sistemas Operacionais são, sobretudo, orientados para o processamento
simultâneo de muitos jobs com quantidades volumosas de E/S. Esses sistemas simultâneo de muitos tarefas (_jobs_) com quantidades volumosas de E/S. Esses sistemas
oferecem normalmente três tipos de serviços: em lote ('batch'), processamento oferecem normalmente três tipos de serviços: em *lote* ('batch'), *processamento de transações* e *tempo compartilhado*.
de transações e tempo compartilhado.
// TODO explicar melhor os conceitos acima? lote/processamento de transações/tempo compartilhado
==== Sistema Operacional de Servidores ==== Sistema Operacional de Servidores
...@@ -372,25 +212,28 @@ amplamente usados para processadores de texto, planilha e acesso a internet. ...@@ -372,25 +212,28 @@ amplamente usados para processadores de texto, planilha e acesso a internet.
==== Sistema Operacional de Tempo Real ==== Sistema Operacional de Tempo Real
Os Sistemas Operacionais de tempo real são caracterizados por terem o tempo Os Sistemas Operacionais de ((tempo real)) são caracterizados por terem o tempo
como um parâmetro fundamental. Por exemplo, em sistemas de controle de como um parâmetro fundamental. Por exemplo, em sistemas de controle de
processos industriais é muito comum a existência de prazos rígidos para a processos industriais é muito comum a existência de prazos rígidos para a
execução de determinadas tarefas, podendo uma ação, ocorrendo em um momento execução de determinadas tarefas, podendo uma ação, ocorrendo em um momento
incorreto, soldar uma região errada de uma peça, estragando o produto final. incorreto, soldar uma região errada de uma peça, estragando o produto final.
Existem dois tipos de Sistema Operacionais de tempo real, o crítico, onde as Existem dois tipos de Sistema Operacionais de tempo real::
ações precisam ocorrer em determinados instantes. E o não crítico no qual o
O crítico::
Onde as ações precisam ocorrer em determinados instantes.
O não crítico:: No qual o
descumprimento ocasional de um prazo é aceitável. Sistemas multimídia descumprimento ocasional de um prazo é aceitável. Sistemas multimídia
pertencem a esta última categoria. pertencem a esta última categoria.
==== Sistema Operacional Embarcado ==== Sistema Operacional Embarcado
(((Sistemas embarcados))) ((Sistemas embarcados)) são pequenos computadores, geralmente computadores de
Sistemas embarcados são pequenos computadores, geralmente computadores de
mão, celulares e set-top-box para TV Digital. Realizam um pequeno número de mão, celulares e set-top-box para TV Digital. Realizam um pequeno número de
funções, seu Sistema Operacional deve lidar com restrições de tamanho, funções, seu Sistema Operacional deve lidar com restrições de *tamanho*,
memória e consumo de energia. *memória* e *consumo de energia*.
==== Sistema Operacional de Cartões Inteligentes ==== Sistema Operacional de Cartões Inteligentes
...@@ -409,11 +252,11 @@ iremos dar uma introdução sobre seus principais conceitos. ...@@ -409,11 +252,11 @@ iremos dar uma introdução sobre seus principais conceitos.
==== Processos ==== Processos
Um processo é basicamente um programa em execução. Associado a cada processo Um *((processo))* é basicamente um programa em execução. Associado a cada processo
está o seu espaço de endereçamento e uma lista de posições de memória que está o seu espaço de endereçamento e uma lista de posições de memória que
este processo pode ler e escrever. Também associado a cada processo está um este processo possui permissão para ler e escrever. Também associado a cada processo está um
conjunto de registradores, que inclui o contador de programa, o ponteiro para a conjunto de ((registradores)), que inclui o ((contador)) de programa, o ponteiro para a
pilha de execução e demais informações necessárias para executar um ((pilha de execução)) e demais informações necessárias para executar um
programa. programa.
Em um sistema multiprogramado, a CPU salta de programa para programa, Em um sistema multiprogramado, a CPU salta de programa para programa,
...@@ -437,6 +280,8 @@ estejam em seu espaço de endereçamento, são armazenados em uma tabela do ...@@ -437,6 +280,8 @@ estejam em seu espaço de endereçamento, são armazenados em uma tabela do
Sistema Operacional chamada de tabela de processos, contendo uma entrada para Sistema Operacional chamada de tabela de processos, contendo uma entrada para
cada processo. cada processo.
// TODO Ilustrar os dois ultimos paragrafos.
===== Estados de Processos ===== Estados de Processos
Os processos em um Sistema Operacional possuem três estados ilustrados na Os processos em um Sistema Operacional possuem três estados ilustrados na
...@@ -513,11 +358,14 @@ um processo separado. Havendo a necessidade de salvar o estado da pilha de ...@@ -513,11 +358,14 @@ um processo separado. Havendo a necessidade de salvar o estado da pilha de
execução de cada thread toda vez que o mesmo perder a vez na CPU, podendo execução de cada thread toda vez que o mesmo perder a vez na CPU, podendo
futuramente retornar a execução no ponto em que foi interrompido. futuramente retornar a execução no ponto em que foi interrompido.
[IMPORTANT]
A vantagem de se criar thread está na rapidez de sua criação e no menor A vantagem de se criar thread está na rapidez de sua criação e no menor
gasto de recursos do sistema para o mesmo. gasto de recursos do sistema para o mesmo.
==== Gerenciamento de memória ==== Gerenciamento de memória
(((Memória, gerenciamento)))
O que todo programador deseja é dispor de uma memória infinitamente grande, O que todo programador deseja é dispor de uma memória infinitamente grande,
rápida e não volátil, a um custo muito baixo. Infelizmente, a tecnologias rápida e não volátil, a um custo muito baixo. Infelizmente, a tecnologias
atuais não comportam essas memórias. Por isso, a maioria dos computadores atuais não comportam essas memórias. Por isso, a maioria dos computadores
...@@ -529,9 +377,9 @@ disco, com centenas de gigabytes e custo baixo. Cabe ao Sistema Operacional ...@@ -529,9 +377,9 @@ disco, com centenas de gigabytes e custo baixo. Cabe ao Sistema Operacional
coordenar a utilização dessas memórias. coordenar a utilização dessas memórias.
A parte do Sistema Operacional, responsável pela gerência das hierarquias de A parte do Sistema Operacional, responsável pela gerência das hierarquias de
memória, é denominado gerenciador de memória. Sua função é manter o memória, é denominado *gerenciador de memória*. Sua função é manter o
controle de quais partes da memória estão em uso e quais não estão, controle de quais partes da memória estão em uso e quais não estão,
alocando memória aos processos quando precisam e liberando a memória quando *alocando* memória aos processos quando precisam e *liberando* a memória quando
os processos terminam. os processos terminam.
===== Monoprogramação ===== Monoprogramação
...@@ -548,6 +396,11 @@ finaliza, o Sistema Operacional espera por um novo comando. Ao receber um novo ...@@ -548,6 +396,11 @@ finaliza, o Sistema Operacional espera por um novo comando. Ao receber um novo
comando, carregará o novo programa na memória, no espaço de endereçamento comando, carregará o novo programa na memória, no espaço de endereçamento
ocupado pelo programa anterior. ocupado pelo programa anterior.
NOTE: Os antigos jogos do MS-DOS funcionavam assim. Quando um jogo era iniciado,
nenhum outro aplicativo poderia ser executado. O jogo tinha exclusividade de
acesso a toda memória do usuário. Para acionar outro programa era necessário
sair do jogo.
===== Multiprogramação ===== Multiprogramação
(((Multiprogramação))) (((Multiprogramação)))
...@@ -562,7 +415,7 @@ microcomputadores é a Memória Virtual. ...@@ -562,7 +415,7 @@ microcomputadores é a Memória Virtual.
(((Memória Virtual))) (((Memória Virtual)))
O conceito básico da Memória Virtual é que um programa pode está com sua O conceito básico da *Memória Virtual* é que um programa pode está com sua
parte ativa em memória e o restante em disco, por exemplo, um programa com parte ativa em memória e o restante em disco, por exemplo, um programa com
16MB de memória pode rodar em um computador de 4MB de memória, sendo parte do 16MB de memória pode rodar em um computador de 4MB de memória, sendo parte do
programa dinamicamente carregado em memória de acordo com a necessidade de programa dinamicamente carregado em memória de acordo com a necessidade de
...@@ -638,6 +491,180 @@ for permitido, o sistema retorna o descritor de arquivo para usá-lo em ...@@ -638,6 +491,180 @@ for permitido, o sistema retorna o descritor de arquivo para usá-lo em
operações subseqüentes. Se o acesso for proibido, um código de erro é operações subseqüentes. Se o acesso for proibido, um código de erro é
retornado. retornado.
=== Conteúdos complementares
==== Evolução dos Sistemas Operacionais
A história dos Sistemas Operacionais está diretamente ligada a arquitetura
dos computadores em que os mesmos iriam executar. Nesta seção iremos abordar
alguns exemplos desta evolução casada entre o hardware e o software.
===== Computadores a Vácuo (1945-1955)
Durante a segunda guerra mundial uma aceleração na evolução dos
computadores ocorreu devido à necessidade de aplicações que pudessem quebrar
a codificação das mensagens dos inimigos.
Neste período alguns pesquisadores como John Von Newman em Princeton, Konrad
Zuse na Alemanha e Howard Aiken em Harvad construíram dispositivos capazes de
computar através de tubos a vácuo, sendo estes equipamentos grandes o
bastante para ocupar salas inteiras.
Nesta geração as instruções eram dadas diretamente em código de máquina.
Não havia linguagem de programação (nem mesmo linguagem de montagem). E os
Sistemas Operacionais não tinham qualquer funcionalidade, ou seja, não
existiam.
===== Transistores e Sistemas em Lote (1955-1965)
(((Transistores)))
Com o surgimento dos transistores, os computadores se tornaram confiáveis e
passaram a ser comercializados, isto em meados da década de 50.
O computador passou a ter mais clara a separação dos papeis de seus atores:
os projetistas do computador, programadores e os operadores da máquina. Antes
estes papeis eram realizados pelos mesmos desbravadores da Computação.
Para executar um programa, o programador desenvolvia seu algoritmo e entregava
o cartão contendo seu código ao operador. O operador era responsável por
entrar com o cartão no computador e acionar sua computação, ao final, a
saída era impressa e o resultado entregue de volta ao programador.
Como os computadores iniciais eram muito caros, uma empresa compartilhava seus
diversos processos em uma única máquina, para isso, desenvolveu-se o conceito
de sistema em lote.
O *((sistema em lote))* trabalhava com fitas magnéticas que possuíam diversos
programas a serem executados em sequencia. Um programa especial (ancestral do
Sistema Operacional) carregava cada programa da fita, executava o programa e
enviava sua saída para a impressora. Após o encerramento deste programa o
sistema configurava a próxima atividade para entrar em execução. Este ciclo
se repetia até acabarem todas as atividades do lote.
===== Circuitos Integrados e Multiprogramação (1965-1980)
(((Circuitos Integrados))) (((Multiprogramação)))
No início da década de 60, os computadores passaram a ter duas utilizações
no mercado: os computadores científicos de larga escala para a ciência e a
engenharia e os computadores comerciais adotados por bancos, companhias de
seguro e departamentos de recursos humanos.
O principal responsável pela sua popularização foi a adoção da tecnologia
de Circuitos Integrados que diminuiu o tamanho e o preço dos computadores. O
IBM 360 foi o principal computador adotado pelos dois filões do mercado.
A principal mudança para os Sistemas Operacionais foi a criação da
Multiprogramação, permitindo que vários programas pudessem compartilhar a
memória principal ao mesmo tempo, cada uma com seu espaço reservado na
memória, compartilhamento do espaço (<<fig_compartilhar_tempo_espaco>>(a)),
podendo estas atividades serem executadas ao mesmo tempo.
[[fig_compartilhar_tempo_espaco]]
.Multiprogramação em um Sistema Operacional, tipos de compartilhamento dos recursos do computador.
image::images/sistemas-operacionais/Compart_tempo_espaco.png[scaledwidth="60%"]
Entretanto os computadores desta época não tinham mais de um núcleo de
processamento (processador), logo era de responsabilidade do Sistema
Operacional, dividir o uso do único processador com os diversos programas em
execução durante pequenas frações de tempo, compartilhamento do tempo
(<<fig_compartilhar_tempo_espaco>>(b)).
===== Computadores Pessoais (1980-1995)
(((Computadores Pessoais)))
Com o advento dos minicomputadores na década de 80, o computador passou a ser
usado na vida privada das pessoas, passou-se a comprar computadores como se
comprava vídeo cassete, surgindo assim o conceito de Computador Pessoal
(Personal Computer - PC).
A popularização do computador se deu pelas interfaces gráficas propostas
pelos Sistemas Operacionais, permitindo que leigos da área pudessem manipular
suas aplicações pessoais, sem o auxílio dos antigos operados de máquina.
Os principais Sistemas operacionais da época foram o MS-DOS, precursor do
Windows da Microsoft, o Unix, base para as diversas distribuições do Linux,
Sistema Operacional aberto ao público (podendo usa-lo e modificar seu código)
e o Mac OS, sistema criado pela Apple que trouxe a revolução na Interface
Gráfica, adotado até hoje nos Sistemas Operacionais modernos.
No final da década de 80, começou-se a criar Sistemas Operacionais para
manipular computadores interligados por redes de comunicação, chamados
Sistemas Operacionais de Rede ou de Sistemas Distribuídos. Nele o usuário
passou a controlar diversos computadores ao mesmo tempo, podendo até se logar
em um computador remoto, localizado a quilômetros de distância, e controla-lo
como se estivesse usando seu teclado ou mouse local.
==== A Guerra dos Sistemas Operacionais
image::images/sistemas-operacionais/appleXmicrosoft.png[scaledwidth="60%"]
Na década de 70 dois jovens estudantes tiveram visões distintas sobre o
futuro dos computadores, na época dominada por grandes computadores da poderosa
IBM. Seus nomes Steven Jobs e Bill Gates. O primeiro entendeu que o computador
deveria ser usado por pessoas comuns para auxiliá-los em tarefas do trabalho e
de casa, criando assim o conceito de Computador Pessoal, materializado pelo
lançamento do Apple 2 no ano de 1977, que passou a ser o nome de sua empresa,
a atual gigante Apple. Sua proposta era ter controle total sobre o
desenvolvimento do computador, sendo responsável pelo projeto do hardware e do
software. Inicialmente o design de seus produtos fizeram muito sucesso e a
interface gráfica de seu sistema operacional (Mac OS), adota da empresa Xerox,
foi tão revolucionária que grupos de usuários passaram a se intitular fãs
dos produtos e seu mentor o profeta da revolução da Computação que iria
livrar o mundo da opressão dos grandes computadores da IBM.
O segundo criou a Microsoft, e tinha uma visão mais voltada para o software, o
seu Sistema Operacional, o Windows, foi pensado para funcionar em qualquer
hardware, fato que diminuiu a qualidade do mesmo. Entretanto aliado à
funcionalidade da interface gráfica, copiado dos produtos da Apple, a um
conjunto de aplicações muito funcionais nas empresas e em trabalhos
domésticos como o Word, Excel, Powerpoint e etc (``Killed Applications''), o
Sistema Operacional dos computadores comerciais por muito tempo passou a ser
sinônimo de Windows. Na década de 90 a Microsoft se torna a maior empresa de
informática do mundo, tornando seu dono o homem mais rico do planeta. Nada mal
para um estudante pobre que só vendia software.
A disputa entre Jobs e Gates tinha se tornada pública, e na década de 90 a
aposta total no software parecia ter sido declarada como campeã. Steven Jobs
fora demitido da sua própria empresa e chegou a trabalhar no ramo da
animação, tendo como frutos a empresa Pixel, hoje um renomado estúdio de
desenhos animados, criadora do famoso desenho Toy Story.
No final da década de 90 Jobs retorna a Apple, e com sua capacidade de
inovação e a busca constante pela perfeição no design de seus produtos
sempre pensando na interface com o usuário, a Apple lança em série novos
produtos revolucionários, o iPod, iPhone e iPad, além de uma série de
computadores pessoais e seus notebooks sempre elegantes e modernos. A ideia de
ter o controle sobre o projeto do hardware influenciando o projeto do software
permitiu que na primeira década do século XXI a Apple tomasse o posto de
maior empresa de informática da Microsoft, chegando em 2012 a valer o dobro da
concorrente. O iPod (tocador de música em mp3) foi o equipamento eletrônico
mais vendido da história, desbancando o posto do Walkman da Sony. O tablete
iPad tirou a funcionalidade de leitura e entretenimento do computador pessoal,
este agora um aparelho para trabalho.