Buscar

Sistemas Operacionais Resumo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 222 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 222 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 222 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Operacionais
O Que é Um Sistema Operacional
Para entendermos o que é um sistema operacional, precisamos entender dois conceitos básicos :
Hardware : Hardware é a parte física do computador, ou seja, o equipamento em si ;
Software: Software é uma sequência de instruções escritas para serem interpretadas por um computador com o objetivo de executar tarefas específicas.
Sistemas Operacionais
Todo o conjunto de programas que compõem o software pode ser dividido em dois grupos bem diferenciados: 
 
1) Software básico: conjunto de programas imprescindíveis para o funcionamento do sistema. (Drivers controladores de hardware) ;
2) Software aplicativo. Conjunto de programas a serem utilizados pelo usuário(Word, Internet Explorer, Excel).
À esse software, dá-se o nome de Sistema Operacional.
Sistemas Operacionais
Um sistema operacional, por mais complexo que possa parecer, é apenas um conjunto de rotinas executado pelo processador, de forma semelhante aos programas dos usuários. Sua principal função é controlar o funcionamento de um computador, gerenciando a utilização e o compartilhamento dos seus diversos recursos, como processadores, memórias e dispositivos de entrada e saída.
Sistemas Operacionais
Sem o sistema operacional, um usuário para interagir com o computador deveria conhecer profundamente diversos detalhes sobre hardware do equipamento, o que tornaria seu trabalho lento e com grandes possibilidades de erros. 
O sistema operacional tem como objetivo funcionar como uma interface entre o usuário e o computador, tornando sua utilização mais simples, rápida e segura.
Sistemas Operacionais
O sistema operacional tem duas funções distintas: estender a máquina e gerenciar recursos. 
Como máquina estendida, o sistema operacional oculta a ‘verdade’ do usuário sobre o hardware e apresenta uma visão simples e agradável. Ele evita, por exemplo, que o usuário tenha que gerenciar o HD para gravar dados, e apresenta uma interface orientada a arquivos simples, geralmente em estrutura de pastas e diretórios. 
O sistema operacional também é responsável por fornecer uma variedade de serviços que os programas podem obter usando instruções especiais conhecidas como chamadas ao sistema, isso sem que o usuário tenha que interagir diretamente com a máquina. 
Sistemas Operacionais
Como gerenciador de recursos, o sistema operacional controla de forma ordenada o uso dos dispositivos físicos entre os vários programas que competem por eles. Esse gerenciamento é feito através de compartilhamento no tempo e no espaço. Quando um dispositivo é compartilhado no tempo, cada programa ou usuário aguarda a sua vez de usar o recurso(Processador).
 
Quando um dispositivo é compartilhado no espaço, cada programa ou usuário ocupa uma parte do recurso (Memória RAM).
Sistemas Operacionais
Tipos de Sistema Operacional
Sistema operacional de tempo real (RTOS)- Utilizado para controlar máquinas, instrumentos científicos e sistemas industriais. 
São sistemas que possuem forte vínculo com o tempo. O resultado só é considerado correto se a execução acontecer no tempo previsto. Geralmente um RTOS não tem uma interface para o usuário muito simples e não é destinado para o usuário final. A função do RTOS é gerenciar os recursos do computador para que uma operação específica seja sempre executada durante um mesmo período de tempo. 
Sistemas Operacionais
Tipos de Sistema Operacional
Monousuário Monotarefa. Esse tipo de sistema operacional foi criado para que um único usuário possa fazer uma coisa por vez. Exemplos : DOS (Disk Operating System) e Palm OS;
Monousuário Multitarefa. Este tipo de sistema operacional é o mais utilizado em computadores de mesa e laptops. As plataformas Microsoft Windows e Apple MacOS são exemplos de sistemas operacionais que permitem que um único usuário utilize diversos programas ao mesmo tempo. Por exemplo, é perfeitamente possível para um usuário de Windows escrever uma nota em um processador de texto ao mesmo tempo em que faz download de um arquivo da Internet e imprime um e-mail.
Sistemas Operacionais
Tipos de Sistema Operacional
Multiusuário - O sistema operacional multiusuário permite que diversos usuários utilizem simultaneamente os recursos do computador. O sistema operacional deve se certificar de que as solicitações de vários usuários estejam balanceadas. Cada um dos programas utilizados deve dispor de recursos suficientes e separados, de forma que o problema de um usuário não afete toda a comunidade de usuários. Unix, VMS e sistemas operacionais mainframe como o MVS são exemplos de sistemas operacionais multiusuário.
Sistemas Operacionais
Kernel
O Kernel é o núcleo do sistema. É responsável pelas operações de baixo nível tais como: gerenciamento de memória, gerenciamento de processos, suporte ao sistema de arquivos, periféricos e dispositivos. Pode ser compilado para se adequar melhor a um determinado tipo de máquina.
 É no Kernel que estão definidas funções para operação com periféricos (mouse, disco, impressora, interface serial / interface paralela) entre outros. Resumidamente, o kernel é um conjunto de programas que fornece para os programas de usuário (aplicativos) uma interface para utilizar os recursos do sistema.
Sistemas Operacionais
Kernel
Quanto à sua arquitetura, o kernel pode ser monolítico - em um único bloco, com todas as funcionalidades carregadas na memória - ou modular (micro-kernel) - com os módulos específicos para cada tarefa carregados opcionalmente, dinamicamente e híbrido.
Sistemas Operacionais
Kernel
O kernel é a parte mais importante do sistema operacional, pois, sem ele, a cada programa novo que se criasse seria necessário que o programador se preocupasse em escrever as funções de entrada/saída, de impressão, entre outras, em baixo nível, causando uma duplicação de trabalho e uma perda enorme de tempo. Como o kernel já fornece a interface para que os programas possam acessar os recursos do sistema de um nível mais alto e de forma transparente, fica resolvido o problema da duplicação do trabalho.	
Sistemas Operacionais
Kernel monolítico
Kernel monolítico ou mono-bloco é um kernel que implementa um interface de alto nível para possibilitar chamadas de sistema específicas para gestão de processos, concorrência por parte de módulos dedicados que são executados com privilégios especiais. Alguns exemplos deste tipo de kernel: 
		 Linux; 
		 Unix;
		 BSD
		 MS-DOS; e
		 Windows 95, Windows 98 e Windows ME.
Sistemas Operacionais
Shell
O Shell é o elo entre o usuário e o sistema. Imagine o Shell como sendo um intérprete entre pessoas que falam linguas diferentes.
Ele traduz os comandos digitados pelo usuário para a linguagem usada pelo kernel e vice-versa. 
Sem o Shell a interação entre usuário e o kernel seria bastante complexa. Ele também é uma linguagem de programação completa.
Sistemas Operacionais
Script
 Script é um arquivo que contém comandos do shell que em uma situação normal poderiam ser executados a partir do prompt.
 Esses comandos são executados sequencialmente dependendo de condições estruturais e d laço como “ if ... then” (se ... então) e “ do while” (faça enquanto). Um script também pode usar variáveis. A entrada pode ser recebida através do prompt de comando ou de outros arquivos.
Sistemas Operacionais
Existem diversos tipos de Sistemas Operacionais:
No topo da lista estão os sistemas operacionais para computadores de grande porte. Esses computadores exigem grande capacidade de recursos de entrada/saída de dados. Seus sistemas operacionais são orientados para o processamento simultâneo de muitos trabalhos (jobs). Eles oferecem normalmente três tipos de serviços: em lote, processamento de transações e tempo compartilhado. 
Sistemas Operacionais
Um nível abaixo estão os sistemas operacionais de servidores. Eles são executados em servidores, em estações de trabalho ou em computadores de grande porte. Elesservem múltiplos usuários de uma vez em uma rede e permitem-lhes compartilhar recursos de hardware e software. Exemplos incluem Linux e Windows 2003 Sever.
Sistemas Operacionais
Há também os sistemas operacionais de multiprocessadores. Esse sistema consiste em conectar várias CPUs em um único sistema para ganhar potência computacional. 
O nível seguinte é o sistema de computadores pessoais. Sua função é oferecer uma boa interface para um único usuário. Exemplos comuns são o Windows 7, Windows Vista e XP, o MacOS e o Linux. 
Sistemas Operacionais
O próximo nível é o de sistemas de tempo real. O tempo é um parâmetro fundamental. Eles são divididos em sistemas de tempo real crítico e de tempo real não crítico. Os sistemas de tempo real crítico possuem determinados instantes em que as ações devem ocorrer. Os sistemas de tempo real não crítico aceita um descumprimento ocasional de um prazo. VxWorks e QNX são exemplos bem conhecidos.
Sistemas Operacionais
Descendo na escala, vemos os sistemas operacionais móveis e embarcados. Os sistemas móveis estão presentes em computadores de mão que são computadores muito pequenos.
Os sistemas embarcados são computadores que controlam 
eletrodomésticos ou sistemas de comunicação e de orientação por gps em veículos. 
Os menores sistemas operacionais são executados em cartões 
inteligentes. São dispositivos do tamanho de cartões de crédito que contêm uma CPU. Possuem restrições severas de consumo de energia e memória.
Sistemas Operacionais
Exemplos de sistemas operacionais comuns:
 
● Microsoft Windows 8.1, 8, 7, Windows Vista e XP – Sistema operacional para estações de trabalho, sejam elas domésticas ou em ambiente corporativo;
● Microsoft Windows Server 2008/2008R2 – Sistema operacional para servidores, com recursos para gerenciamento de usuários e estações de trabalho;
 
Sistemas Operacionais
Exemplos de sistemas operacionais comuns:
 
● Linux (CentOS, Fedora, Debian, Suse, Slackware, Kurumin)– Sistema operacional utilizado tanto em servidores quanto estações de trabalho. Possui uma ampla disponibilidade de aplicativos compatíveis, como servidores de rede, aplicativos multimídia, entre outros. 
 
Sistemas Operacionais
Exemplos de sistemas operacionais comuns:
Apple
Mac OS X v10.7 "Lion“
OS X v10.8 "Mountain Lion"
OS X v10.9 "Mavericks"
História dos Sistemas Operacionais
Os sistemas operacionais têm sido historicamente amarrados à arquitetura dos computadores nos quais iriam rodar. Por isso, veremos como eles evoluiram nas sucessivas gerações de computadores. 
1 - A Primeira Geração (1945-1955): Válvulas e Painéis com Plugs
Os computadores gigantes que ocupavam salas inteiras e necessitavam do auxílio de humanos nasceram lá pela década de 1950. Nessas primeiras máquinas, as tarefas eram realizadas por técnicos, os quais ditavam o que seria realizado através do próprio hardware.
História dos Sistemas Operacionais
História dos Sistemas Operacionais
Toda a programação era feita em linguagem de máquina, sempre se conectando fios com plugs em painéis para controlar as funções básicas da máquina. 
As linguagens de programação não eram conhecidas. Nem se ouvia falar em sistemas operacionais. 
O modo usual de operação consistia no programador elaborar o programa numa folha e então ir à sala da máquina, inserir os plugs nos painéis do computador e gastar as próximas horas apelando para que nenhuma das 20.000 ou mais válvulas se queimasse durante a execução do programa. 
História dos Sistemas Operacionais
2 - A Segunda Geração (1955 - 1965): Transistores e Sistemas Batch
A partir da introdução do transistor em meados dos anos os computadores tornaram-se bastante confiáveis para que pudessem 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.
História dos Sistemas Operacionais
2 - A Segunda Geração (1955 - 1965): Transistores e Sistemas Batch
Essas máquinas eram alocadas em salas especialmente preparadas com refrigeração e com apoio de operadores profissionais. Apenas grandes companhias, agências governamentais, ou universidades, dispunham de condições para pagar um preço de milhões de dólares por essas máquinas.
Para rodar um programa ou um conjunto de programas, primeiro o programador escrevia o programa no papel (FORTRAN ou linguagem Assembly), e então perfurava-o em cartões. Daí, ele levava o conjunto de cartões chamado de "deck", à sala de recepção e o entregava a um dos operadores. 
 
História dos Sistemas Operacionais
2 - A Segunda Geração (1955 - 1965): Transistores e Sistemas Batch
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. Outros computadores, máquinas mais caras, tais como o IBM 7094, eram usados para a computação real. 
História dos Sistemas Operacionais
2 - A Segunda Geração (1955 - 1965): Transistores e Sistemas Batch
História dos Sistemas Operacionais
2 - A Segunda Geração (1955 - 1965): Transistores e Sistemas Batch
Muitos computadores da segunda geração foram usados principalmente para cálculos científicos e de engenharia, tais como em solução de equações diferenciais parciais. Eles foram vastamente programados em FORTRAN e em linguagem Assembly. Sistemas operacionais típicos eram o FMS (Sistema 
Monitor FORTRAN) e IBSYS (Sistema Operacional da IBM para o 7094).
História dos Sistemas Operacionais
3 - A Terceira Geração (1965 - 1980): CIs e Multiprogramação
A maioria dos fabricantes de computadores tinham duas linhas de produto distintas e totalmente incompatíveis. Haviam os computadores científicos, como o 7094, usado para cálculos numéricos em ciência e engenharia. E também os computadores comerciais, como o 1401, que era usado para classificação em fita e impressão, por bancos e companhias de seguros. 
 
Os clientes em potencial para aquisição de novos computadores necessitavam inicialmente de uma máquina pequena, para mais tarde, com o crescimento, terem uma máquina maior em que pudessem rodar todos os seus programas mais rapidamente. 
 
História dos Sistemas Operacionais
3 - A Terceira Geração (1965 - 1980): CIs e Multiprogramação
A IBM, introduziu então 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 permitidos, etc).
 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. 
 
História dos Sistemas Operacionais
3 - A Terceira Geração (1965 - 1980): CIs e Multiprogramação
O 360 foi a primeira linha de computadores a usar circuitos integrados (CIs) .
A maior força da idéia de "uma família" era ao mesmo tempo sua maior fraqueza. a intenção era que todo software, incluindo o SO, tinha que trabalhar em todos os modelos. Ele tinha que ser bom em sitemas com poucos e com muitos periféricos, funcionar bem em ambientes comerciais e cientíticos.
Não havia como a IBM ou qualquer outro fabricante conseguir escrever um software para atender a todos estes requisitos contraditórios. O resultado era um SO extraordinariamente complexo e grande. Consistia de milhões de linhas de linguagem assembler, escritas por milhares de programadores e com milharesde "bugs".
História dos Sistemas Operacionais
3 - A Terceira Geração (1965 - 1980): CIs e Multiprogramação
Apesar disto o SO/360 e os sistemas operacionais semelhantes de terceira geração produzidos por outros fabricantes de computador realmente satisfizeram a maioria dos seus clientes. Eles também popularizaram várias técnicas-chaves em SO de segunda geração como a multiprogramação
Para evitar a ociosidade da CPU quando se fazia uma pausa para troca de fitas ou outra operação, dividia-se a memoria em varias particões , com um job diferente em cada uma delas. Assim quando se pausava a execução de um job outro entrava em operação, ocupando o tempo ocioso da CPU. 
História dos Sistemas Operacionais
3 - A Terceira Geração (1965 - 1980): CIs e Multiprogramação
História dos Sistemas Operacionais
3 - A Terceira Geração (1965 - 1980): CIs e Multiprogramação
Nos sistemas da terceira geração, o tempo entre a submissão do job e a obtenção da saída era frequentemente de várias horas, uma falha na compilação fazia o programador desperdiçar quase um dia. A necessidade de ter um tempo de resposta menor abriu espaço para o "timesharing“.
 
Em um 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 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.
 
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.
História dos Sistemas Operacionais
3 - A Terceira Geração (1965 - 1980): CIs e Multiprogramação
Após o sucesso do sistema CTSS, o MIT, o Laboratório Bell e a General Electric decidiram embarcar no desenvolvimento de um "computador utilitário", uma máquina que suportasse milhares de usuários em "time-sharing" simultaneamente. 
O seu modelo era baseado no sistema de distribuição de eletricidade. Surgia então o MULTICS (MULTiplexed Information and Computing Service).
O MULTICS introduziu muitas idéias inovadoras na literatura da computação, mas a sua construção foi mais difícil do que se esperava. O Laboratório Bell saiu do projeto e a General Electric continuou sozinha. Eventualmente o MULTICS rodava o suficientemente bem para ser usado num ambiente de produção no MIT e em poucas outros lugares, mas a idéia de um computador utilitáriofalhou. Mesmo assim, o MULTICS teve uma enorme influência nos sistemas subsequentes.
História dos Sistemas Operacionais
3 - A Terceira Geração (1965 - 1980): CIs e Multiprogramação
Outro importante desenvolvimento durante a terceira geração foi o crescimento fenomenal de mini-computadores, começando com o DEC PDP-1 em 1961.=, 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 mono-usuário do MULTICS. Brian Kernighan apelidou esse sistema de UNICS (UNiplexed Information and Computing Service), mas sua grafia foi mais tarde trocada para UNIX.
História dos Sistemas Operacionais
3 - A Terceira Geração (1965 - 1980): CIs e Multiprogramação
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.
Outro cientista do Laboratório Bell, Dennis Ritchie, juntou-se a Thompson para reescrever o sistema numa linguagem de alto nível chamada C, projetada e implementada por Ritchie. O Laboratorio Bell licensiava o UNIX para Universidades quase de graça e dentro de poucos anos, centenas delas estavam usando-o. O UNIX logo estendeu-se para o Interdata 7/32, para o VAX, para o MOTOROLA 68000, e para muitos outros computadores. O UNIX tinha sido transportado para mais computadores do que qualquer outro sistema operacional da história e seu uso está ainda aumentando rapidamente.
História dos Sistemas Operacionais
3 - A Terceira Geração (1965 - 1980): CIs e Multiprogramação
História dos Sistemas Operacionais
4 - A Quarta Geração (1980-1990): Computadores Pessoais
Com o desenvolvimento de circuitos, chips , transistores, etc, a era do computador pessoal começava. Em termos de arquitetura, os computadores pessoais não eram diferentes de minicomputadores da classe do PDP-11, mas em 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 micropocessador tornou possível um indivíduo ter o seu próprio computador.
História dos Sistemas Operacionais
4 - A Quarta Geração (1980-1990): Computadores Pessoais
A capacidade de computação altamente interativa com excelentes facilidades gráficas, fizeram crescer a indústria de produção de software para computadores pessoais. Muitos desses softwares eram "amigáveis ao usuário", significando que eles foram projetados para usuários que não tinham conhecimento algum sobre computadores e além do mais não tinha outra intenção a não ser a de orientá-los no uso. 
Dois sistemas operacionais dominaram a utilização do computador pessoal: o MS-DOS, escrito pela Microsoft para o IBM PC e para outras máquinas que usavam a CPU Intel 8088 e seus sucessores, e UNIX, que é predominante em máquinas que usam a CPU da família Motorola 68000. 
História dos Sistemas Operacionais
4 - A Quarta Geração (1980-1990): Computadores Pessoais
Apesar da primeira versão do MS-DOS ser primitiva, em versões subsequentes foram incluidas diversas facilidades do UNIX.
Um interessante desenvolvimento que começou em meados dos anos 80 foi o crescimento de redes de computadores pessoais rodando sistemas operacionais para rede e sistemas operacionais distribuidos. Num sistema operacional para rede, os usuários têm consciência da existência de múltiploscomputadores e podem se conectar com máquinas remotas e copiar arquivos de uma máquina para outra. Cada máquina roda o seu próprio sistema operacional local e tem o seu próprio usuário (ou usuários).
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
Em maio de 1990, a Microsoft lançou o Windows 3.0. 
O Windows 3.0 era executado sobre o DOS e, portanto, oferecia compatibilidade com os programas DOS. Ele se beneficiava do processador 386, podendo fazer a multitarefa com programas DOS e também com programas Windows. A interface com o usuário trazia um Gerenciador de Programas baseado em ícones e um Gerenciador de Arquivos em estilo árvore, incluindo avanços como ícones sombreados. 
O Windows 3.0 exigiu revisões mínimas de praticamente todos os programas, após sua introdução começaram a aparecer os aplicativos, liderados pela divisão de aplicativos da própria Microsoft e seguidos por praticamente todos os outros grandes desenvolvedores. 
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
Mesmo depois do anúncio do Windows 3.0, a Microsoft e a IBM continuavam falando sobre o OS/2 e, especialmente, sobre o OS/2 2.0, a primeira versão 32 bits real que viria a aparecer, finalmente, em 1992.
A IBM posicionava o OS/2 como o futuro sistema operacional para todos os usuários, e a Microsoft posicionava o OS/2 como um topo de linha, apenas para os aplicativos missão crítica e baseados em servidor. 
História dos Sistemas Operacionais
5 - 1990/97: Era WindowsAs duas companhias finalmente separaram suas estratégias no início de 1991, com a briga entre Jim Cannavino da IBM, e Bill Gates, da Microsoft.
 O OS/2 conquistou um forte nicho em algumas grandes aplicações corporativas, auxiliado por sua estabilidade e robustez, comparadas ao Windows 3.x. 
Mais tarde, a IBM faria uma última tentativa de fazer do OS/2 o principal sistema operacional com seu OS/2 Warp 3.0, mais orientado ao consumidor comum e lançado no final de 1994. Ele venderia milhões de cópias mas não diminuiria a grande inclinação da indústria pelo
Windows.
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
Microsoft viria a transformar seu antigo "OS/2 3.0" no Windows NT 3. 1, que foi lançado em 1993 e recebido, inicialmente, como um sistema operacional para servidores de aplicativos,concorrendo, principalmente, com o OS/2 da IBM.
Em 1991, a Microsoft ofereceu o Windows 3.1 , que adicionava uma melhor integração de aplicativos, recursos arrastar-e-soltar e uma maior estabilidade. Ele se se tornou o padrão dominante para os aplicativos para PC e a Microsoft ocupou o papel de líder na definição das especificações multimídia.
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
A Microsoft viria a dominar muitas áreas mais na computação por esta mesma época. Seus produtos Visual Basic e Visual C++ venceram a grande concorrência da Borland no domínio de linguagens de programação.
 Os aplicativos Microsoft liderados pelo pacote Office, mais tarde, o Access tomaram grande parte do mercado de programas aplicativos
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
O Macintosh (Apple), continuava a crescer e expandir-se e encontrou nichos nas artes gráficas, na multimídia e na educação. O termo compatível com IBM “já tinha saído de moda, para ser substituído pelo Processador como a principal peça descritiva de hardware.
A era do 286 terminou no final de 1988, após a introdução do 386SX da Intel, um Processador que possuía os componentes internos de 32 bits do 386 e um barramento de dados 16 bits como o 286, o que o tornava barato. Este e o 386 (rebatizado como 386DX) dominaram as vendas de computadores durante anos. 
Em abril de 1989, a Intel apareceu com seus processadores 486. Com 1,2 milhões de transistores, que era, efetivamente, uma versão mais rápida e mais refinada do 386 somada a um co-processador matemático que executava todos os aplicativos escritos para o 386 sem quaisquer problemas.
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
Em março de 1993 a Intel introduziu seu Processador Pentium de 60 MHz.
Os discos rígidos ficavam cada vez maiores e mais velozes. A tecnologia de exibição gráfica progrediu para as aceleradores gráficas.
Neste período, as redes locais corporativas realmente começaram a decolar. A IBM promovia o Office Vision, que deveria ser executado em todas as plataformas SAA, inclusive sobre o OS/2. 
Todos os gigantes do Desenvolvimento de sistemas tinham suas estratégias multiplataforma para a automação de escritórios, porém quase todos fracassariam dentro de um espaço de tempo relativamente curto.
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
Quem realmente alcançou o sucesso foram os servidores de PC, que abrigavam seus próprios dados e podiam fazer ligações com grandes bases de dados corporativas. 
Quanto ao hardware, o Compaq Systempro, introduzido em 1989, liderava os grandes aplicativos que antes viviam em minicomputadores e outros grandes sistemas. 
Chegava ao mercado o SQL, e companhias como a Oracle e a Sybase começavam a ter como alvos os desenvolvedores para PC. As ferramentas de desenvolvimento rápido de aplicativos, ou RAD, logo facilitaram a criação de boas interfaces com o usuário para o acesso a dados corporativos.
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
A Internet, já existia desde o início dos anos 60, quando o órgão de Defesa de Projetos de Pesquisa Avançada (DARPA) do Pentágono estabeleceu as conexões com muitos computadores de universidades. Mas em 1990, Tim Berners-Lee, então no laboratório de física CERN, (Genebra, Suíça) criou a Linguagem de Marcação de Hipertexto (HTML), uma maneira simples de ligar informações entre sites da Internet. Isto, por sua vez, gerou a World Wide Web (www), que apenas aguardava por um paginador gráfico para começar a crescer.
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
Após o lançamento do Mosaic ao público, no final de 1993, repentinamente, a Internet - e, em particular, a Web - podiam ser acessadas por qualquer pessoa que tivesse um computador pessoal, fato auxiliado, em parte, nela possibilidade de transferir livremente a versão mais recente de vários paginadores diferentes
 E, dentro de pouco tempo, parecia que em todo o mundo, as companhias estariam inaugurando seu site na Web.
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
Novas versões de paginadores da Web chegaram rapidamente. A Netscape Corp. logo começou a dominar o ramo de paginadores Web. 
O Netscape Navigator acrescentou vários recursos, inclusive o suporte a extensões (o que, por sua vez, levou a diversas extensões multimídia) e a máquina virtual Java (que permitia aos desenvolvedores elaborar aplicativos Java que podiam ser executados dentro do paginador).
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
O correio eletrônico (email) é aceito no dia-a-dia das corporações com produtos, como o cc:Mail, mais tarde adquirido pela Lotus, e mais um alguns concorrentes menores. Em dezembro de 1989, a Lotus mudou a fórmula com o Lotus Notes, o primeiro aplicativo de "groupware".
Em 1994, a Microsoft e a Intel estavam na liderança da indústria do PC, o Windows tinha-se estabelecido como o padrão para aplicativos e as redes estavam definitivamente no mercado comum.
Em agosto de 1995 foi lançado o Windows 95, acompanhado por um entusiasmo maior do que qualquer outro anúncio de computação da era.
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
O Windows 95 era compatível com Plug-and-Play,suportava novos padrões de e-mail e comunicações e trazia uma nova interface com o usuário que incluía um menu "Iniciar" e uma área de trabalho de programas com pastas e ícones.
Uma vez lançado, o Windows 95 rapidamente tornou-se o padrão para a computação de usuário final, fazendo com que muitos desenvolvedores tivessem suas versões de aplicativos 32 bits prontas no lançamento do SO ou imediatamente após. 
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
A Microsoft fez seguir ao Windows 95:
Windows NT 4.0 (bem aceito em ambientes corporativos);
Windows 98 – substituto do Windows 95;
Windows 98 SE - segunda edição do Windows 98 veio para corrigir as falhas do antecessor. As melhorias foram realizadas na comunicação de rede, no suporte para drivers e na atualização do DirectX;
Windows 2000 - desenvolvido especialmente para servidores e clientes de rede
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
A Microsoft fez seguir ao Windows 95:
Windows ME : o Windows ME foi o sistema com a maior quantidade de bugs que a empresa lançou; 
Windows XP : lançado em 2001 , este foi, provavelmente, o sistema mais usado por todos. Ele teve sua interface completamente remodelada, trouxe uma série de novos recursos para redes, DirectX 8.1, suporte avançado para múltiplos usuários, novos recursos de segurança e muito mais. Esse sistema ganhou muitas atualizações. 
 
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
A Microsoft fez seguir ao Windows 95:
Windows Vista : O Windows Vista veio para criar uma nova experiência e atrair os usuários do Windows XP. Por conta de uma série de problemas de desempenho, o sistema não obteve sucesso na missão. Apesar disso, alguns recursos (como o Windows Search e o Windows Aero) foram inovações que ajudaram no desenvolvimentodo sistema sucessor.
Windows 7: Lançado em 2009 , veio para corrigir todos os problemas do antecessor e oferecer desempenho acima de tudo. O sistema não alcançou a apreciação que o Windows XP teve, mas conseguiu conquistar o público.
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
A Microsoft fez seguir ao Windows 95:
Windows Phone : Depois de insistir longos anos no Windows Mobile (que era apenas uma versão mal-adaptada do sistema para desktop), em 2010 a Microsoft remodelou seu sistema para portáteis.
Windows 8: Lançado em 2012 , Pensando em migrar para o setor dos tablets e revolucionar a forma como as pessoas usam os PCs, a Microsoft apostou em uma reformulação de seu sistema. Trouxe um novo Menu Iniciar e mantendo a compatibilidade com os antigos programas e trazendo suporte para novos apps
História dos Sistemas Operacionais
Resumo geral da história dos sistemas operacionais:
Válvulas e Painéis de Conexão (1945-1955)
Transístores e Sistemas de Lote (batch) (1955-1965)
Circuitos Integrados e Multiprogramação (1965-1980)
Computadores Pessoais e Redes (1980 - 1990)
História dos Sistemas Operacionais
 Note que até então falamos da era Windows, paralelamente a era Windows temos na história o surgimento de muitos outros sistemas operacionais, a seguir trazemos um gráfico, demonstrando toda a evolução do SO e trazendo os demais Sistemas Operacionais lançados.
Conceitos sobre sistemas operacionais
Processo
Define-se um processo como um programa em execução, sendo que para sua especificação completa, deve-se incluir tanto o programa propriamente dito como os valores de variáveis, registradores, contador de programa (Program Counter, PC), e outros dados necessários à definição completa de seu estado.
 
Conceitos sobre sistemas operacionais
Processo
Cada processo trabalha como se possuísse para si uma UCP (unidade central de processamento, o processador principal do computador) própria, chamada UCP virtual. Na realidade, na grande maioria dos casos uma única UCP é compartilhada entre todos os processos. Isto é , existe apenas uma UCP real, mas tantas UCP virtuais quantos forem os processos. 
Podemos dizer que cada processo é um módulo executável único, que corre concorrentemente com outros módulos executáveis. Por exemplo, em um ambiente multi-tarefa (como o Unix) que suporta processos, um processador de texto, um navegador e um sistema de banco de dados são processos separados que podem rodar concomitantemente.
 
Conceitos sobre sistemas operacionais
Processo
Cada processo trabalha como se possuísse para si uma UCP (unidade central de processamento, o processador principal do computador) própria, chamada UCP virtual. Na realidade, na grande maioria dos casos uma única UCP é compartilhada entre todos os processos. Isto é , existe apenas uma UCP real, mas tantas UCP virtuais quantos forem os processos. 
Podemos dizer que cada processo é um módulo executável único, que corre concorrentemente com outros módulos executáveis. Por exemplo, em um ambiente multi-tarefa (como o Unix) que suporta processos, um processador de texto, um navegador e um sistema de banco de dados são processos separados que podem rodar concomitantemente.
 
Conceitos sobre sistemas operacionais
Processo
Processos são módulos separados e carregáveis, ao contrário de threads, que não podem ser carregadas. Múltiplas threads de execução podem ocorrer dentro de um mesmo processo. Além das threads, o processo também inclui certos recursos, como arquivos e alocações dinâmicas de memória e espaços de endereçamento. 
Conceitos sobre sistemas operacionais
Processo
Os processos, em uma mesma UCP real executam um por vez, mas essa execução é realizada de forma a criar a ilusão de que os mesmos estão executando em paralelo.
 
Conceitos sobre sistemas operacionais
Em geral um Processo é formado pelos seguintes recursos :
Um imagem do código de máquina executável associado com um programa; 
Memória, que inclui o código executável, dados específicos do processo (dados da entra e saída), uma chamada de pilha (para manter a pilha de subrotinas ativas e/ou outros eventos, e um heap (alocação dinâmica de memória) para manter a computação intermediária gerada durante o tempo de execução; 
Conceitos sobre sistemas operacionais
Em geral um Processo é formado pelos seguintes recursos :
Descritores de sistema operacional que são alocados aos processo, como os descritores de arquivo (UNIX) ou handles (Windows) e os códigos e sinks.
Atributos de segurança, tais como conjunto de permissões para o usuário que criou o processo, são as operações permitidas.
Contexto de estado do processador, tal como o conteúdo dos registradores, memória física de endereçamento. O estado é normalmente guardado nos registradores quando o processo está em execução, e na memória principal caso contrário.
Conceitos sobre sistemas operacionais
Hierárquia de Processos
Em todos os S.O. de multiprogramação deve haver alguma forma de criar e terminar processos conforme o necessário à execução dos pedidos de usuários. Por isso, um processo tem a possibilidade de gerar outros processos, que por sua vez podem gerar outros, e assim sucessivamente, gerando uma hierarquia de processos. 
Na geração de um novo processo, o processo gerado recebe o nome de filho, e o que pediu a geração recebe o nome de pai. Um pai pode apresentar diversos filhos, mas cada filho só pode ter um pai.
 
Conceitos sobre sistemas operacionais
 
Conceitos sobre sistemas operacionais
Estados dos Processos
A comunicação entre processos é o grupo de mecanismos que permite aos processos transferirem informação entre si. A capacidade de um sistema operacional executar simultaneamente dois ou mais processos é chamada multiprocessamento.
 Se existirem dois ou mais processos executados em simultâneo e disputam o acesso a recursos partilhados, problemas de concorrência podem ocorrer. Estes problemas podem ser resolvidos pelogerenciamento adequado de múltiplas linhas de execução ou processos através da sincronização (multitarefa) ou por outros recursos (como a troca de contexto).
Conceitos sobre sistemas operacionais
Estados dos Processos
Durante a sua existência, os processos podem se apresentar, do ponto de vista do sistema, em diferentes estados. São eles:
Não-Submetido
Suspenso
Pronto
Executando
Espera
Completo
Conceitos sobre sistemas operacionais
Estado 1 - Não-Submetido
É o processo que ainda não está submetido a CPU, está nas mãos do usuário. Até onde interessa ao sistemas ele não existe, porque o usuário ainda não o submeteu. Ele é simplesmente apresentado como sendo o primeiro passo na vida de um processo. 
O Sistema Operacional, naturalmente, não reconhece esse estado. Pode por exemplo, ser um arquivo executável que está armazenado no HD.
Conceitos sobre sistemas operacionais
Estado 2 – Suspenso
É o processo que já foi submetido, porém permanece suspenso até que o horário ou evento programado ao usuário venha acontecer. Temos como exemplo o agendamento de uma varredura programada no anti-vírus por um usuário.
Conceitos sobre sistemas operacionais
Estado 3 – Pronto
O processo já foi submetido e está pronto para receber a CPU, porém ainda guarda o escalonador de processos para ter controle da CPU. Processos que estão esperando E/S não se aplicam a esse estado.
Conceitos sobre sistemas operacionais
Estado 4 – Executando
A execução propriamente dita. O código está sendo processado. Se ocorrer durante a execução uma requisição de E/S o processo é colocado no estado de espera e outro processo da fila de prontos poderá então concorrer a CPU.
Conceitos sobre sistemas operacionais
Estado 5 – Espera
É o processo que foi colocado na fila de espera de E/S devido ao processador de E/S ser mais lento que a CPU principal. O processo tornaria a CPU mais escrava dele se não houvesseesse estado, pois como ele não está concorrendo à CPU ao executar um E/S, pode-se então colocá-lo no estado de espera para que os demais processos do estado pronto possam concorrer a CPU.
Conceitos sobre sistemas operacionais
Estado 5 – Espera
Ex: parte de um código em C :
scanf(“%d”, VALOR);
SOMA=VALOR+JUROS;
Como podemos notar, a instrução scanf (uma requisição de entrada e saída) é gerada se não fosse possível colocar o processo em estado de espera; caso o usuário não entrasse com nenhum valor, o programa ficaria suspenso e não liberaria a CPU para outros processos.
Conceitos sobre sistemas operacionais
Estado 6 – Completo
Neste estado temos a finalização do processo.
Conceitos sobre sistemas operacionais
`
Conceitos sobre sistemas operacionais
Escalonamento de Processos
Para que a CPU não fique muito tempo sem executar tarefa alguma, os sistemas operacionais utilizam técnicas para escalonar os processos que estão em execução ao mesmo tempo na maquina.
O escalonamento de processos é uma tarefa complicada, pois nenhum algoritmo é totalmente eficiente e a prova de falhas, principalmente em se tratando de sistemas interativos, como o Windows, pois a interação com o usuário é fundamental para este sistema onde quem o utiliza procura respostas rápidas e a todo o momento processos são interrompidos pelo usuário.
Conceitos sobre sistemas operacionais
Escalonamento de Processos
O escalonador do SO utiliza alguns critérios de escalonamento, como:
Taxa de utilização de CPU: fração de tempo durante a qual ela está sendo ocupada; 
Throughput : números de processos terminados por unidade de tempo;
Turnaround : tempo transcorrido desde o momento em que o software entra e o instante em que termina sua execução;
Conceitos sobre sistemas operacionais
Escalonamento de Processos
O escalonador do SO utiliza alguns critérios de escalonamento, como:
Tempo de resposta: intervalo entre a chegada ao sistema e inicio de sua execução;
Tempo de espera: soma dos períodos em que o programa estava no seu estado pronto.
Responsáveis por essa tarefa são algoritmos que são entendidos mais facilmente, estudados separadamente, mas na prática os sistemas operacionais utilizam combinações deles para melhor escalonar os processos.
Conceitos sobre sistemas operacionais
Atividade Proposta :
Pesquisa a ser realizada : Algoritmos escalonadores - Tipos mais comuns e suas definições.
Escalonamento
O algoritmo de execução não é o único responsável pelo tempo de execução de um processo. Outros fatores, como o tempo de processamento (tempo de CPU) e de espera em operações de E/S devem ser considerados no tempo total da execução (tempo de parede ou elapsed time ou wall clock time).
O escalonamento somente afeta o tempo de espera de processos na fila de pronto.
Conceitos sobre sistemas operacionais
89
Escalonamentos Não Preemptivos
Nos primeiros Sistemas Operacionais Multiprogramáveis, onde predominava tipicamente o processo batch, o escalonamento implementado era do tipo Não Preemptivo .
Neste tipo de escalonamento, quando um processo ganha o direito de utilizar a CPU nenhum outro processo pode lhe tirar este recurso.
Podem ser:
Escalonamento Circular Simples - FIFO
Escalonamento Shortest Job First - SJF
Escalonamento Cooperativo
Conceitos sobre sistemas operacionais
Escalonamento Circular Simples – FIFO
Há uma fila única de processos prontos, o primeiro processo da fila (first-in) é o primeiro a ser selecionado para execução (first-out)
O processo selecionado pode usar a CPU indefinidamente, novos jobs são encaminhados para o fim da fila.
Quando um processo bloqueia, o próximo da fila é selecionado
Processos que passaram do estado bloqueado para pronto são colocados no fim da fila.
Conceitos sobre sistemas operacionais
Escalonamento Shortest Job First – SJF
Neste escalonamento cada processo tem associado o seu tempo de execução. Desta forma quando a CPU está livre o processo em estado de pronto que tiver menor tempo de execução será selecionado para execução.
O escalonamento SJF favorece os processos que executam processos menores, além de reduzir o tempo médio de espera (na fila de processos prontos) em relação ao escalonamento FIFO.
A dificuldade é determinar, exatamente, quanto tempo de CPU cada processo necessita para terminar seu processamento.
Conceitos sobre sistemas operacionais
Escalonamento Cooperativo
Neste escalonamento alguma política não-preemptiva deve ser adotada. A partir do momento que um processo está em execução, este voluntariamente libera o processador, retornando para a fila de pronto.
Este tipo de escalonamento permite a implementação de sistemas multiprogramáveis com uma melhor distribuição do uso do processador entre os processos.
Sua principal característica está no fato de a liberação do processador ser uma tarefa realizada exclusivamente pelo processo em execução, que de maneira cooperativa libera a CPU para um outro processo.
Conceitos sobre sistemas operacionais
Escalonamento Cooperativo
No escalonamento cooperativo, não existe nenhuma intervenção do SO na execução do processo. Isto pode ocasionar sérios problemas na medida em que um programa pode não liberar o processador ou um programa mal escrito pode entrar em looping, monopolizando dessa forma o processados.
Um exemplo deste tipo de escalonamento pode ser encontrado nos sistemas Windows 3.1 e 3.11, sendo conhecido como Multitarefa Cooperativa . Nestes sistemas as aplicações verificam uma fila de mensagens periodicamente para determinar se existem outras aplicações que desejam usar a UCP. Caso uma aplicação não verifique a fila de mensagens as outras tarefas não terão chance de ser executadas até o término do programa.
Conceitos sobre sistemas operacionais
Escalonamentos Preemptivos
Um algoritmo de escalonamento é dito preemptivo quando o sistema pode interromper um processo em execução, para que outro utilize o processador.
O escalonamento preemptivo permite que o sistema dê atenção imediata a processos mais prioritários, como no caso de sistemas de tempo real, além de proporcionar melhores tempos de resposta em sistemas de tempo compartilhado.
Outro benefício deste tipo de escalonamento é o compartilhamento do processador de uma maneira mais uniforme entre os processos.
Conceitos sobre sistemas operacionais
Escalonamentos Preemptivos
A troca de um processo por outro na CPU (troca de contexto), causada pela preempção, gera um overhead ao sistema. 
Para isto não se tornar crítico, o sistema deve estabelecer corretamente os critérios de preempção.
Conceitos sobre sistemas operacionais
Escalonamentos Preemptivos
Podem ser:
Round-Robin
Prioridades
Filas Múltiplas
Múltiplos Processadores
Conceitos sobre sistemas operacionais
Escalonamento Circular - Round Robin
Um dos algoritmos mais simples, mais antigo e mais amplamente utilizado. A cada processo á atribuido um intervalo de tempo, chamado de quantum durante o qual lhe é permitido executar.
Caso o processo ainda esteja executando ao final do quantum, é feita a troca do mesmo por outro processo que esteja pronto para a fase de execução. 
Se o processo bloqueou ou terminou antes de o quantum ter acabado, a troca por outro processo é realizada no exato momento do bloqueio ou do término da operação do processo.
Conceitos sobre sistemas operacionais
TIME-SLICING ou QUANTUM 
Para evitar que um processo monopolize o sistema, a técnica de TIME-SLICING ou QUANTUM divide o tempo de processamento de cada um em fatias (slice). Quantum é o tempo limite de uso da CPU pelo processo.
Um processo do usuário, uma vez interrompido por término do seu quantum, volta à fila de pronto para executar e permite o escalonamento de outro processo.
Conceitos sobre sistemas operacionais
Escalonamento Circular - Round Robin
A única coisa que pode dar um pouco de trabalho na implementação do Round Robin é a determinação do tamanho do quantum.
Um quantum de tamanhomuito pequeno, causa sucessivas troca de contexto, baixando a eficiência do processador.
Um quantum de tamanho muito grande pode levar a um tempo de resposta não aceitável para usuários interativos.
Conceitos sobre sistemas operacionais
Escalonamento Circular - Round Robin
O algoritmo é semelhante ao FIFO, porém, quando um processo passa para o estado de execução, existe um tempo limite para a sua utilização de forma contínua. Quando este tempo (time-slice ou quantum) expira sem que antes a CPU seja liberada pelo processo, este volta ao estado de pronto (preempção por tempo), dando a vez a outro processo.
A fila de processos é tratada como uma fila circular.
Conceitos sobre sistemas operacionais
Escalonamento por Prioridades
O escalonamento Round Robin assume de forma implícita que todos os processos são igualmente importantes.
A necessidade de se considerar fatores externos para a escolha do próximo processo que vai ganha o processador é denominada escalonamento por prioridade.
Cada processo é associado uma prioridade, e o processo pronto com maior prioridade será aquele que vai rodar primeiro.
Conceitos sobre sistemas operacionais
Escalonamento por Prioridades
A prioridade é uma característica do contexto de SW do processo, podendo ser estática ou dinâmica .
A prioridade é dita estática quando não é modificada durante a existência do processo.
Na prioridade dinâmica a prioridade do processo pode ser ajustada de acordo com o tipo de processamento realizado pelo processo e/ou pela carga do sistema.
Conceitos sobre sistemas operacionais
Escalonamento por Prioridades
Toda vez que um processo for para a fila de processos prontos com prioridade superior ao processo em execução, o SO deverá interromper o processo corrente, colocá-lo como pronto e escalonar o processo de maior prioridade para execução ( preempção por prioridade )
Assim como na preempção por tempo a preempção por prioridade é implementada mediante um clock, que interrompe o processador em determinados intervalos de tempo, para que a rotina de Escalonamento reavalie as prioridades e, possivelmente, escalone outro processo.
Para evitar que processos com alta prioridade monopolizem o processador (evitando o starvation), o escalonador deverá decrementar a prioridade do processo que esta monopolizando a CPU, a cada interrupção de tempo.
Conceitos sobre sistemas operacionais
Escalonamento por Prioridades
Os processos poderão ser agrupados em classes de prioridade e usar o escalonamento de prioridades entre as classes e o Round Robin dentro de cada classe. Conforme figura abaixo:
Conceitos sobre sistemas operacionais
Escalonamento por Prioridades
Algoritmo: enquanto houver processos com prioridade 4: round-robin na classe (processos em outras classes não são escolhidos). Se prioridade 4 vazia, round-robin na prioridade 3 e assim por diante. Cada vez que o processo recebe o tempo para executar, a sua prioridade é decrementada. Quando todos os processos se encontrarem no mesmo nível, as prioridades iniciais são restauradas.
Conceitos sobre sistemas operacionais
106
Escalonamento por Filas Múltiplas
Processos não permanecem numa mesma classe de prioridade até o fim de sua execução, quando seu quantum expira, ele vai para uma fila de prioridade mais baixa/quantum mais alto.
Filas de prioridades diferentes têm quantum diferentes.
Diminuição de prioridade X aumento de quantum .
Reduzir a quantidade de trocas de contexto para processos grandes.
Conceitos sobre sistemas operacionais
Escalonamento Filas Múltiplas
Conceitos sobre sistemas operacionais
Escalonamento Garantido
Cada processo tem direito a 1/n tempo da CPU, sendo n o número de processos.
Para isso a CPU deve saber quanto tempo cada processo já usou.
Dividindo o tempo que já usou pelo tempo que deveria ter para completar a operação (Tempo prometido), obtém-se uma razão entre ambos, onde:
	 Se essa razão for menor do que 1, então o processo terá direito a mais tempo de CPU;
	 Se essa razão for maior do que 1, então o processo terá menos tempo de CPU do que os outros processos.
Conceitos sobre sistemas operacionais
Escalonamento em 2 níveis
Caso não haja memória disponível para todos os processos, alguns destes deverão ser mantidos em disco. 
Esta situação tem grande impacto sobre o escalonamento, uma vez que o tempo gasto na troca de contexto envolvendo o disco é algumas ordens de magnitude maior do que quando ambos os processos estão na memória principal.
Conceitos sobre sistemas operacionais
Escalonamento em 2 níveis
Uma forma mais prática de tratar com o swap de processos é usando um escalonador de 2 níveis.
Um subconjunto de processos prontos é carregado na memória principal, e outro subconjunto é mantido em disco.
Um escalonador, denominado escalonador de nível mais baixo, se restringe a escolher processos somente da memória, utilizando qualquer uma das políticas de escalonamento.
Conceitos sobre sistemas operacionais
Escalonamento em 2 níveis
Um outro escalonador de nível mais alto é invocado para remover processos que estão na memória há bastante tempo, e trazer para a memória aqueles processos que estão em disco há muito tempo.
Quando esta troca for feita, o escalonador de nível mais baixo se restringe, novamente, a escolher processos que estão na memória para serem executados.
Esta solução faz com que o escalonador de baixo nível se preocupe em escalar os processos que estão na memória enquanto que o de alto nível em trazer e levar processos entre a memória e o disco (swap).
Conceitos sobre sistemas operacionais
Escalonamento em 2 níveis
O escalonador de alto nível pode usar um dos seguintes critérios de escolha de processos:
	 Qual o tempo decorrido desde que o processo foi trazido para a memória e levado de volta para o disco;
	 Quando tempo de CPU o processo teve;
	 Qual o tamanho do processo;
	 Qual a prioridade do processo.
Poderemos utilizar o Round Robin, prioridade, ou qualquer outro método de escalonamento, para programar o escalonador de alto nível.
Conceitos sobre sistemas operacionais
Escalonamento de Sistemas de Tempo Real
Nestes sistemas o fator tempo é crítico.
Diferentemente dos sistemas de tempo compartilhado, onde um pequeno tempo de resposta é desejado porém não obrigatório, todo processamento em tempo real deve ser realizado dentro de limites rígidos de tempo ou, caso contrário, todo sistema pode ficar comprometido.
Conceitos sobre sistemas operacionais
Conceitos sobre sistemas operacionais
Threads
Thread (Linha ou Encadeamento de execução), é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. O suporte à thread é fornecido pelo próprio sistema operacional, no caso da linha de execução ao nível do núcleo (Kernel-Level Thread (KLT)), ou implementada através de uma biblioteca de uma determinada linguagem, no caso de uma User-Level Thread (ULT).
Conceitos sobre sistemas operacionais
Escalonamento de Threads
Da mesma forma que os processos sofrem escalonamento as threads também tem a mesma necessidade. O escalonamento de threads é variável dependedo do tipo da thread que são Kernel-Level Thread e User-Level Thread. 
Da mesma forma que quando vários processos são executados em apenas uma CPU eles sofrem escalonamento e parecem que todos são executados ao mesmo tempo, quando um processo tem threads elas esperam a sua vez para ser executadas, como esta alternância é muito rápida há impressão de que todos os processos e as thread destes processos são executadas paralelamente.
Conceitos sobre sistemas operacionais
Escalonamento de Threads
Geralmente quando iniciamos um processo com múltiplas threads existe um thread principal que é responsável por gerenciar criar novas threads , quando uma thread finaliza seu trabalho ela entra em thread_yield, que sinaliza que a thread encerrou seu trabalho e esta liberando a CPU para outra thread ou processo.
Conceitos sobre sistemasoperacionais
User-Level Thread
As ULT(User-Level Thread) são escalonadas pelo programador, tendo a grande vantagem de cada processo ter como usar um algoritmo de escalonamento que melhor se adapte a situação, o SO não tem a obrigação de fazer o escalonamento destas threads, em geral ele nem sabe que as threads existem, estas threads são geralmente mais rápidas que as KLT, pois dispensam a chamada ao SO para escalonar evitando assim uma mudança total de contexto do processador memória e diversas outros níveis para alternar os processos. Neste modo o programador é responsável por criar, executar, escalonar e destruir a thread.
Conceitos sobre sistemas operacionais
User-Level Thread
Vamos a um exemplo prático, um processo chamado P1, este processo pode ter varias threads, neste exemplo ele tem P1T1, P1T2, P1T3, então quando o SO da o CPU para o processo P1 cabe a ele destinar qual thread será executada, caso esta thread use todo processo do quantum, o SO chamara outro processo, e quando o processo P1 voltar a executar P1T1 voltará a ser executada e continuará executando até seu término ou intervenção de P1, este comportamento não afetará outros processos pois o SO continua escalonando os processos normalmente.
Conceitos sobre sistemas operacionais
Kernel-Level Thread
As KLT são escalonadas diretamente pelo SO, comumente são mais lentas que as Threads ULT pois a cada chamada elas necessitam consultar o SO, exigindo assim a mudança total do contexto do processador, memória e outros níveis necessários para alternar um processo.
Conceitos sobre sistemas operacionais
Kernel-Level Thread
Um exemplo prático sobre Kernel – Level Thread: Um processo chamado P2 com as threads P2T1, P2T2, P2T3, e outro processo chamado P3 com as threads P3T1, P3T2, P3T3. SO não entregara a CPU ao processo e sim a uma thread deste processo, note agora que o SO é responsável por escalonar as threads e este SO tem que suportar Threads, a cada interupção de thread é necessário mudar todo o contexto de CPU e memória porém as threads são independentes dos processos, podemos executar então P3T2, P2T1, P2T2, P2T1, P3T1,P2T3,P3T3, ou seja a ordem em que o escalonador do SO determinar.
Conceitos sobre sistemas operacionais
Um escalonamento típico do SO é onde o escalonador sempre escolhe a thread de maior prioridade. As threads são divididas em duas classes Real Time e Normal, cada thread ganha uma prioridade ao ser criada que varia de 0 a 31, sendo 0 a de menor prioridade e 31 a de maior prioridade.
Processos com prioridade 0 a 15(RealTime) tem prioridade ajustada no tempo de execução como nos processos de E/S que tem a prioridade aumentada variando o periférico.
Processos com prioridade 16 a 31 são executados até terminar e não tem prioridade alterada.
Conceitos sobre sistemas operacionais
Deadlocks
Deadlock (bloqueio, impasse), em uma definição simples caracteriza uma situação em que ocorre um impasse, onde dois ou mais processos ficam impedidos de continuar suas execuções, ou seja, ficam bloqueados.
O deadlock ocorre com um conjunto de processos e recursos não preemptíveis, onde um ou mais processos desse conjunto está aguardando a liberação de um recurso por um outro processo que, por sua vez, aguarda a liberação de outro recurso alocado ou dependente do primeiro processo.
Conceitos sobre sistemas operacionais
Deadlocks
O deadlock pode ocorrer mesmo que haja somente um processo no SO, considerando que este processo utilize múltiplos threads e que tais threads requisitem os recursos alocados a outros threads no mesmo processo;
 O deadlock independe da quantidade de recursos disponíveis no sistema;
Normalmente o deadlock ocorre com recursos como dispositivos, arquivos, memória etc. Apesar da CPU também ser um recurso para o SO, em geral é um recurso facilmente preemptível, pois existem os escalonadores para compartilhar o processador entre os diversos processos, quando trata-se de um ambiente multitarefa.
Conceitos sobre sistemas operacionais
Deadlocks
Condições necessárias para a ocorrência de deadlock :
1 – Condição de exclusão mútua: Cada recurso ou está alocado a exatamente um processo ou está disponível; 
2 - Condição de posse-e-espera: Processos que estejam de posse de recursos obtidos anteriormente podem solicitar novos recursos;
Conceitos sobre sistemas operacionais
Deadlocks
Condições necessárias para a ocorrência de deadlock :
3 - Condição de não-preempção: recursos já alocados a processos não podem ser tomados a força. Eles precisam ser liberados explicitamente pelo processo que detém a sua posse; 
4 - Condição de espera circular: deve existir uma cadeia circular de dois ou mais processos, cada um dos quais esperando por um recurso que está com o próximo membro da cadeia. 
Conceitos sobre sistemas operacionais
Deadlocks - Representação de deadlock em grafos
O deadlock também pode ser representado na forma de grafos dirigidos, onde o processo é representado por um círculo e o recurso, por um quadrado. Quando um processo solicita um recurso, uma seta é dirigida do círculo ao quadrado. Quando um recurso é alocado a um processo, uma seta é dirigida do quadrado ao círculo.
Na figura seguinte, podem-se ver dois processos diferentes (A e B), cada um com um recurso diferente alocado (R1 e R2). Nesse exemplo clássico de deadlock, é facilmente visível a condição de espera circular em que os processos se encontram, onde cada um solicita o recurso que está alocado ao outro processo.
Conceitos sobre sistemas operacionais
Deadlocks - Representação de deadlock em grafos
128
Deadlock
Ou seja, o Processo 1 reserva para si o Recurso 1, por sua vez o Processo 2 e o Processo 3 reservam respectivamente para si o Recurso 2 e o Recurso 3. Por exemplo se um dos outros processos necessitar de um dos recursos anteriormente reservados por outros processos, como acontece no diagrama da figura anterior entramos numa situação de Deadlock.
Exemplo 1
Conceitos sobre sistemas operacionais
Conceitos sobre sistemas operacionais
Deadlocks - Tratamento de deadlock
As situações de deadlock podem ser tratadas ou não em um sistema, e cabe aos desenvolvedores avaliar o custo/benefício que essas implementações podem trazer. 
Normalmente, as estratégias usadas para detectar e tratar as situações de deadlocks geram grande sobrecarga, podendo até causar um dano maior que a própria ocorrência do deadlock, sendo, às vezes, melhor ignorar a situação.
Conceitos sobre sistemas operacionais
Deadlocks - Tratamento de deadlock
Existem três estratégias para tratamento de deadlocks:
Ignorar a situação; 
Detectar o deadlock e recuperar o sistema; 
Evitar o deadlock; 
Conceitos sobre sistemas operacionais
Os recursos são de 2 tipos : 
 Preemptíveis e;
 Não-preemptíveis.
Um recurso preemptível é aquele que pode ser tomado do processo que estiver usando o recurso, sem nenhum prejuízo para o processo. 
A memória é um exemplo de recurso preemptível
Conceitos sobre sistemas operacionais
RECURSO PREEMPTÍVEL:
Considere um sistema com 512 Kb de memória disponível para usuários, uma impressora e 2 processos de 512 Kb (P1 e P2) cada. Estes processos desejam imprimir alguma coisa. 
O processo P1 é carregado na memória e requisita e obtém acesso a impressora, este então inicia o processamento de impressão (cálculos,lay-out etc), porém antes de terminar P1 excede o seu tempo (time slice) e é retirado da memória (sai de EXECUTANDO e vai para PRONTO).
O processo P2 começa então o seu processamento e tenta obviamente sem sucesso, garantir para si o uso da impressora.
Conceitos sobre sistemas operacionais
RECURSO PREEMPTÍVEL:
Potencialmente temos configurado uma situação de DEADLOCK, pois P1 tem a impressora e P2 tem a memória, e nenhum dos dois pode prosseguir sem o recurso que esta com o outro. 
Felizmente é possível tomar a memória de P2 (vai para BLOCKED), copiando P1 (swapp) do disco para a memória agora P1 pode executar, realizar a impressãoe liberar a impressora, que quando liberada será entregue a P2 (sai de BLOCKED e vai para PRONTO), para que este termine o seu processamento. 
Neste caso não vai ocorrer DEADLOCK.
Conceitos sobre sistemas operacionais
RECURSO NÃO-PREEMPTÍVEL:
Em contrapartida um recurso não-preemptível é aquele que não pode ser tomado de seu proprietário atual sem causar problemas no processamento corrente. 
Por exemplo se um processo iniciou a impressão de resultados, a impressora não poderá ser tomada dele e entregue a outro processo, sem que haja um prejuízo considerável no processo. 
Para recurso não-preemptível ocorrerá DEADLOCK.
Conceitos sobre sistemas operacionais
Sistema Operacional como Gerenciador de Recursos
Conceitos sobre sistemas operacionais
SISTEMA OPERACIONAL COMO GERENCIADOR DE RECURSOS
Normalmente os SOs são encarados como gerenciadores de recursos, responsáveis principalmente pela atualização permanente do estado de cada recurso, definição da política de alocação de recursos (quem recebe, quanto e o que) e a liberação dos mesmos.
Os SOs podem ser divididos em quatro gerências:
	 gerência de memória
	 gerência de processador
	 gerência de periféricos
	 gerência de informações.
Conceitos sobre sistemas operacionais
Gerência de Memória
A Gerência de Memória tem como função primordial manter atualizado o estado de memória, isto é, controlar as partes de memórias que estão sendo utilizadas, identificar quem as está usando e supervisionar as áreas disponíveis. 
Além disso, determina a alocação de mais memória (quando e quanto), garante a integridade das áreas de programa, impedindo que outro processo acesse posições de memórias reservadas para um determinado programa, e libera com facilidade as áreas de memórias quando um processo não mais delas precisa.
Conceitos sobre sistemas operacionais
Gerenciamento de Memória:
O tratamento necessário da memória utilizada não é uma tarefa fácil de ser implementada. Existem vários requisitos que devem ser observados para o correto funcionamento, tais como, Segurança, Isolamento, Performance, entre outros. Para isto a função de gerenciar a memória passa a ser do sistema operacional e não mais do aplicativo.
Conceitos sobre sistemas operacionais
Gerenciamento de Memória:
Em sua forma mais simples, está relacionado em duas tarefas essenciais:
Alocação: Quando o programa requisita um bloco de memória, ogerenciador o disponibiliza para a alocação;
 Reciclagem: Quando um bloco de memória foi alocado, mas os dados não foram requisitados por um determinado numero de ciclos, esse é liberado e pode ser reutilizado para outra requisição.
Conceitos sobre sistemas operacionais
Gerenciamento de Memória:
A alocação de memória pode ser:
· Alocação estática: Decisão tomada quando o programa é compilado.
· Alocação dinâmica: Decisão é adiada até a execução. (Permite
swapping)
Conceitos sobre sistemas operacionais
Gerenciamento de Memória : Fragmentação
Desperdício de páginas de memória alocadas. Pode ser de dois tipos: interna e externa: 
Interna: Ocorre quando o processo não ocupa inteiramente os blocos de memória (páginas) reservados para ele. Geralmente acontece pois o tamanho do processo não é um múltiplo do tamanho da página de memória, o que acarreta sobra de espaço na última página alocada.
Externa: Ocorre à medida que os programas vão terminando e deixando lacunas cada vez menores de espaços, o que os torna inutilizáveis.
Estratégias para “atacar” o problema com o algoritmos First-fit, Best-fit, Worstfit e Next-fit.
Conceitos sobre sistemas operacionais
Gerenciamento de Memória: 
Paginação : “Quebra” a memória do processo permitindo espaços de endereçamento não contíguos.
TLB : A Translation Lookaside Buffer (TLB) é um conjunto de registradores especiais que são super rápidos. Cada registrador tem duas partes: chave e valor. Dada uma chave, busca-se o valor correspondente. Geralmente, 64 entradas, no máximo, e a busca é feita em todos os registradores simultaneamente. 
Conceitos sobre sistemas operacionais
Gerenciamento de Memória: 
Memória Virtual : é uma ténica poderosa e sofisticada de gerência de memória, onde as memórias principal e secudária são combinadas, dando ao usuário a ilusão de existir uma memória muito maior que a capacidade real da memória principal. O conceito desta técnica fundamenta-se em não vincular o endereçamento feito pelo programa aos endereços físicos da memória principal. Desta forma, programas e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível, pois podem possuir endereços associados à memória secundária.
Conceitos sobre sistemas operacionais
Gerenciamento de Memória
Algoritmos de Substituição de Página:
Algoritmo Ótimo
Algoritmo Não Usada Recentemente
Algoritmo FIFO
Algoritmo Segunda Chance
Algoritmo do relógio
Menos Recentemente Usada
WSClock
Conceitos sobre sistemas operacionais
Gerenciamento manual de memória
Em modelos de gerenciamento manual, podem ocorrer os problemas conhecidos como vazamento de memória, que acontece quando uma quantidade de memória é alocada e não é liberada ainda que nunca seja utilizada. Isto ocorre quando objetos perdem a referência sem terem sido liberados, mantendo o uso do espaço de memória.
Conceitos sobre sistemas operacionais
Gerenciamento de Memória: Garbage Collector
É o gerenciamento automático de memória, também conhecido como coletores. Este serviço libera os blocos de memória que não sejam mais usados por um programa automaticamente.
As vantagens desse tipo de gerenciamento são:
· Liberdade do programador: Não é obrigado ficar atento aos detalhes da memória;
· Menos bugs de gerenciamento de memória: Por se tratar de uma técnica
mais confiável;
· Gerenciamento automático: Mais eficiente que o manual;
Conceitos sobre sistemas operacionais
Gerenciamento de Memória: Garbage Collector
E entre as desvantagens, podemos citar:
· O desenvolvedor tende a estar mais desatento em relação a detalhes de memória;
· O gerenciador automático ainda apresenta limitações.
Conceitos sobre sistemas operacionais
Gerenciamento de Memória: Garbage Collector
Quando deixam de existir referências a um objeto, este passa a ser considerado apto a ser "coletado" pelo garbage collector, que significa dizer que será removido da memória, deixando-a livre para uso por outros objetos.
Os algoritmos de garbage collection operam de um modo que permite
classificá-los em duas grandes famílias:
· identificação direta: por contagem de referências (reference counting);
· identificação indireta: por varrimento (tracing), que pode incluir também compactação da memória livre; cópia; ou geracional (utilizado nasmáquinas virtuais Java e .Net).
Conceitos sobre sistemas operacionais
Gerenciamento de Entrada e Saída
Uma das principais funções de um sistema operacional é controlar todos os dispositivos de E/S.
Ele deve enviar comandos para os dispositivos, capturar interrupções e tratar erros.
Também deve oferecer uma interface entre os dispositivos e o restante do sistema que seja simples e fácil de usar. 
Na medida do possível, a interface deve ser a mesma para todos os dispositivos. (Tanenbaum) 
Conceitos sobre sistemas operacionais
Gerenciamento de Entrada e Saída
Nos primeiros sistemas computacionais, a comunicação entre o processador e os periféricos era controlada por um conjunto de instruções especiais, denominadas instruções de entrada/saída, executadas pelo próprio processador. O surgimento do controlador de interface permitiu ao processador agir de maneira independente dos dispositivos de E/S. Com esse novo elemento, o processador não mais se comunicava diretamente com os periféricos, mas sim através do controlador. Isso simplificou as instruções de E/S, por não mais ser necessário especificar detalhes de operação dos periféricos, tarefa esta realizada pelo controlador. 
Conceitossobre sistemas operacionais
Dispositivos de E/S
Os dispositivos de E/S podem ser divididos em duas categorias:
	 Dispositivos de Blocos; e
	 Dispositivos de Caractere.
Conceitos sobre sistemas operacionais
Dispositivo de Bloco
Um dispositivo de bloco, armazena as informações em blocos de tamanho fixo, cada um com seu próprio endereço. A propriedade essencial de um dispositivo de bloco é que é possível ler ou gravar cada bloco independente de todos os outros. Os Discos são os dispositivos de blocos mais comuns.
É endereçável e possui operações de busca (Exemplo: Busca de um dado no disco rígido).
Conceitos sobre sistemas operacionais
Dispositivo de Caractere
É o dispositivo que entrega ou aceita um fluxo de caracteres sem considerar qualquer estrutura de bloco. Ele não é endereçável e tampouco tem qualquer operação de busca.
Exemplos: Impressoras, interfaces de rede, mouse.
Conceitos sobre sistemas operacionais
Não é dispositivo Bloco ou Caractere
Os relógios não são endereçáveis por bloco, tampouco aceitam fluxo de caracteres.
Tudo que fazem é gerar interrupções em intervalos bem definidos.
Conceitos sobre sistemas operacionais
156
Controle das Operações de Entrada e Saída:
	 E/S controlada por programa;
	 E/S controlada por Pooling; 
	 E/S Controlada por Interrupção;
Conceitos sobre sistemas operacionais
E/S controlada por programa 
Neste tipo de operação, o processador sincronizava-se com o periférico para o início da transferência de dados e, após iniciada a transferência, o sistema ficava permanentemente testando o estado do periférico para saber quando a operação chegaria ao seu final. 
Este controle, chamado e E/S controlada por programa, mantinha o processador ocupado até o término da operação de E/S (busy wait).
Como o processador executa uma instrução muito mais rapidamente que a realização de uma operação de E/S pelo controlador, havia um enorme desperdício de tempo da UCP. 
Conceitos sobre sistemas operacionais
E/S controlada por Pooling
A evolução do modelo anterior foi permitir que, após o início da transferência dos dados, o processador permanecesse livre para realizar outras tarefas. Assim, em determinados intervalos de tempo, o sistema operacional deveria testar cada dispositivo para saber do término da operação de E/S (polling). Esse tipo de operação introduziu certo grau de paralelismo, visto que um programa poderia ser processado, enquanto outro esperava pelo término de uma operação de E/S. Isso permitiu o surgimento dos primeiros sistemas multiprogramáveis, onde vários programas poderiam ser executados concorrentemente, já que o tempo de uma operação de E/S é relativamente grande. 
Conceitos sobre sistemas operacionais
E/S Controlada por Interrupção 
Com a implementação do mecanismo de interrupção, as operações de E/S puderam ser realizadas de uma forma mais eficiente. Em vez de o sistema periodicamente verificar o estado de uma operação pendente, o próprio controlador interrompia o processador para avisar do término da operação. Com esse mecanismo, denominado E/S controlada por interrupção, o processador, após a execução de um comando de leitura ou gravação, permanece livre para o processamento de outras tarefas. 
Conceitos sobre sistemas operacionais
E/S Controlada por Interrupção 
A operação de E/S controlada por interrupção é muito mais eficiente que a controlada por programa, já que elimina a necessidade de o processador esperar pelo término da operação, além de permitir que várias operações de E/S sejam executadas simultaneamente. Apesar disso, a transferência de grande volume de dados exige muitas intervenções do processador, reduzindo sua eficiência. A solução para esse problema foi a implementação de uma técnica de transferência de dados denominada DMA (Direct Memory Access). 
Conceitos sobre sistemas operacionais
Controladora
Uma placa controladora é uma parte do hardware de computadores que comanda outras partes da máquina. Normalmente é conectada na placa-mãe através de slots apropriados de acordo com o barramento relativo à placa.
Conceitos sobre sistemas operacionais
Device driver
Device driver (Controlador de Dispositivo) é uma camada de software que implementa um conjunto de funções que realiza a comunicação com o dispositivo.
Device driver é o comando de um dispositivo ou programa. É a forma a partir da qual uma unidade periférica cria uma interface com o sistema operacional para se conectar com o dispositivo do hardware. 
Conceitos sobre sistemas operacionais
DMA
Está técnica permite que um bloco de dados seja transferido entre a memória principal e dispositivos de E/S; sem a intervenção do processador, exceto no início e o final da transferência. 
Quando o sistema deseja ler ou gravar um bloco de dados, o processador informa ao controlador sua localização, o dispositivo de E/S, a posição inicial da memória de onde os dados serão lidos ou gravados e o tamanho do bloco. 
Conceitos sobre sistemas operacionais
DMA
Com estas informações, o controlador realiza a transferência entre o periférico e a memória principal, e o processador é interrompido somente no início e no final da operação. A área de memória utilizada pelo controlador na técnica de DMA é chamada de buffer de entrada/saída. 
No momento em que uma transferência de dados através da técnica de DMA é realizada, o controlador deve assumir, momentaneamente, o controle do barramento. 
Conceitos sobre sistemas operacionais
166
Canal de Entrada e Saída
A extensão do conceito de DMA possibilitou o surgimento do canal de entrada/saída. 
O canal é um processador com capacidade de executar programas de E/S, permitindo o controle total sobre operações de E/S. As instruções de E/S são armazenadas na memória principal pelo processador, porém o canal é responsável pela sua execução.
Assim, o processador realiza uma operação de E/S, instruindo o canal para executar um programa localizado na memória (programa de canal). 
Conceitos sobre sistemas operacionais
167
Canal de Entrada e Saída
Este programa especifica os dispositivos para transferência, buffers e ações a serem tomadas em caso de erros. 
O canal de E/S realiza a transferência e, ao final, gera uma interrupção, avisando do término da operação. Um canal de E/S pode controlar múltiplos dispositivos através de diversos controladores. 
Cada dispositivo, ou conjunto de dispositivos, é manipulado por um único controlador. O canal atua como um elo de ligação entre o processador e o controlador. 
Conceitos sobre sistemas operacionais
Conceitos sobre sistemas operacionais
Canal de Entrada e Saída
A evolução do canal permitiu que este possuísse sua própria memória, eliminando a necessidade de os programas de E/S serem carregados para a memória principal. Com essa nova arquitetura, varias funções de E/S puderam ser controladas com mínima intervenção da UCP. Esse estágio do canal é também denominado processador de entrada/saída. 
Conceitos sobre sistemas operacionais
Buffering
A técnica de buffering consiste na utilização de uma área na memória principal, denominada buffer, para a transferência de dados entre os dispositivos de E/S e a memória. Essa técnica permite que uma operação de leitura o dado seja transferido primeiramente para o buffer, liberando imediatamente o dispositivo de entrada para realizar uma nova leitura. 
O objetivo principal desta técnica é minimizar o problema da disparidade da velocidade de processamento existente entre a UCP e os dispositivos de E/S, mantendo-os ocupados na maior parte do tempo.
Conceitos sobre sistemas operacionais
Buffering
Conceitos sobre sistemas operacionais
Spooling
A técnica de spooling (simultaneous peripheral operation on-line), é semelhante à técnica de buffering, utiliza uma área em disco como se fosse um grande buffer. Neste caso, dados podem ser lidos ou gravados em disco, enquanto programas são executados concorrentemente.
Atualmente essa técnica está

Outros materiais