Evolução Histórica dos Sistemas Operacionais



Baixar 144.46 Kb.
Página1/4
Encontro02.08.2016
Tamanho144.46 Kb.
  1   2   3   4
Evolução Histórica dos Sistemas Operacionais
A evolução dos sistemas operacionais foi uma conseqüência dos avanços ocorridos no hardware dos computadores. Temos três níveis de gerações de sistemas operacionais:

O primeiro nível integrado pelos sistemas operacionais básicos, surgidos nos anos cinqüenta, limitava-se a auxiliar os programas nas operações de entrada e saída e na tradução nos programas fonte, escritos em linguagem pouco evoluídas.

O segundo nível esteve disponível na década de 60 e a sua ajuda à programação foi mais decisiva, proporcionando tradutores simbólicos mais evoluídos, programas de serviços para transferência de informação entre periféricos e programas de controle de entrada e saída, ou seja, os famosos IOCS( Input Output Control System).

O terceiro nível de sistemas operacionais surgiu na década de 70. A contribuição destes sistemas à programação foi tão grande que foram rompidas as normas clássicas do processo informático. Os tradutores de altíssimo rendimento então incorporados têm permitido hoje em dia a utilização de linguagem de programação simbólica quase idênticas à linguagem utilizada pelo homem, reduzindo sensivelmente o tempo gasto na produção bem como o tempo de aprendizagem de novas linguagens.


Estrutura do Sistema Operacional
Pode-se criar um sistema tão grande e complexo como um sistema operacional somente dividindo-o em pequenas partes. Cada uma dessas partes deve ser uma porção bem delineada do sistema, com entradas, saídas e funções, cuidadosamente definidas. Logicamente, nem todos os sistemas têm a mesma estrutura, ou seja, não apresentam a mesma forma de ligação entre as partes. Contudo, os sistemas operacionais modernos geralmente possuem as seguintes partes:

I. Gerenciamento de processos - criar e eliminar, suspender e retomar, sincronismo e comunicação entre processos;

II. Gerenciamento da memória principal – manter o controle das partes da memória que estão sendo usadas e por quem, decidir que processos serão carregados para memória quando houver espaço disponível, alocar e desalocar espaço de memória quando necessário;

III. Gerenciamento de memória secundária – o SO é responsável pelas atividades de alocação de espaço livre.

IV. Gerenciamento de Entrada/Saída – manter os device drivers para comunicação com os deferentes dispositivos, um buffer-caching para o sistema;

V. Gerenciamento de arquivos – criar e eliminar arquivos e diretórios, manter mapeamento dos arquivos em disco;

VI. Proteção do sistema – se um sistema é multiusuário e permite múltiplos processos concorrentes, estes processos devem ser protegidos de outras atividades;

VII. Networking – em um sistema distribuído (fracamente acoplado) cada processador tem sua própria memória e seus processadores que se comunicam através do SO. A comunicação entre eles deve considerar roteamento e estratégias de conexão;

VIII. Interpretador de comandos – um dos mais importantes programas do SO é o interpretador de comandos, que serve de interface entre o usuário e o SO. Alguns SO’s incluem este programa no próprio núcleo (kernel). Já outros sistemas, como o DOS e o UNIX, tratam o interpretador de comandos como um programa especial que é executado quando uma sessão é iniciada. Com isso, um sistema operacional fornece um ambiente para execução, melhor dizendo, fornece serviços para os programas e também para os usuários desses programas.
A História do Sistema Operacional LINUX

O Sistema Operacional Linux foi originalmente criado por Linus Torvalds na Universidade de Helsinki na Finlândia. Ele foi desenvolvido com a ajuda de vários programadores através da Internet.  Linus teve seu  projeto inspirado pelo seu interesse em Minix, um pequeno sistema Unix desenvolvido por Andy Tannenbaum. No dia cinco de Outubro de 1991, Linus anunciou a primeira versão "oficial'' de Linux, versão 0.02. Desde então, vários programadores responderam à sua chamada, e haviam ajudado a tornar Linux o completo sistema operacional que ele é hoje.



Conceito de Linux

Linux é um sistema operacional Unix independente, largamente distribuído para máquinas x86, Motorola 68k, Digital Alpha e Motorola PowerPC. Ele é uma implementação da especificação do POSIX com a qual todas as verdadeiras versões de Unix consentem. O núcleo de Linux não usa códigos de AT&T ou qualquer outra fonte de proprietário, e muitos dos softwares disponíveis para Linux são desenvolvidos pelo projeto Free Software Foundation's GNU. Enfim, é uma completa implementação do sistema operacional Unix. Como Unix, Linux é um multi-tarefa robusto, multi-usuário, sistema operacional de rede que ostenta uma longa lista de padrões aceitáveis . Possui suporte completo para ambas plataformas de 32 e 64-bits, múltiplas CPUs e alta performance para redes e outros periféricos. Ele suporta uma vasta variedade de softwares, incluindo X Windows, Emacs e redes TCP/IP (incluindo SLIP/PPP/ISDN). Muitas pessoas já executaram marcas de nível em sistemas 80486 Linux e acharam elas comparáveis com estações de trabalho médias da Sun e Digital. O Sistema Operacional Linux  está disponível na Internet em diversos sites, e também com várias versões em disquetes ou CD-ROM. A parte central de Linux é coberta pela GNU Public License (GPL), e é geralmente "empacotada" com vários binários que consistem em um sistema operacional trabalhando em Unix. Esses pacotes de softwares são chamados “distribuições” e chegam em muitos tamanhos e estruturas. Linux está sendo usado hoje por milhões de pessoas em todo o mundo. Ele é usado para desenvolvimento de software, rede (intra-office e Internet), e como plataforma para usuário. Linux tornou-se uma alternativa barata para os caros sistemas Unix.  


Gerenciamento de Memória


A execução do LMM (Linux Memory Manager) exige uma estratégia de paginação com uma copy-on-write (copiado e marcado) confiando nas 386 páginas auxiliares. Um processo alcança suas tabelas de páginas de seu parent (durante um fork ) com as entradas marcadas como read-only ou trocado. Então, se o processo tenta escrever para este espaço de memória e a página é uma copy on write page, isto é copiado e a página marcada read-write. Um exec ( ) resulta na leitura de uma página ou mais do executável. O processo então erra em qualquer outra página que precisar. Cada processo tem uma tabela de página que significa que pode acessar 1 Kb de tabela de página indicando para 1 Kb de 4 Kb, páginas que é 4 Gb de memória. Um diretório de página do processo é iniciado durante um Fork por copy-page-tables. O processo inativo tem seu diretório de página inicializado durante a sequência de inicialização. Cada processo usuário tem uma tabela descritória local que contém um código de segmento e um segmento de dados. Estes segmentos usuários extendem de 0 para 3 Gb (0 X c 0000000). Nos espaços usuários, endereços lineares e endereços lógicos são idênticos. No 80386, endereços lineares vão de 0 Gb para 4 Gb. Um endereço linear indica uma posição particular de memória dentro deste espaço. Um endereço linear não é um endereço físico --- isto é um endereço virtual. Um endereço lógico consiste de um seletor e um offset. O seletor indica para um segmento e o offset diz que distância na seção o endereço é localizado. O código Kernel e o segmento de dados são seções privilegiados definidos na tabela descritora global e extende de 3Gb para 4Gb. O Swapper - page - dir é organizado para que estes endereços lógicos e físicos sejam idênticos no espaço Kernel.

Escalonamento


  O escalonador LINUX é baseado em time-sharing, ou seja, atua na divisão do tempo de processador entre os processos. O Scheduler é o programa encarregado de agendar os processos, isto é, ele deve escolher o próximo processo que vai rodar, deve decidir quando o tempo de um processo terminou, o que fazer com um processo quando ele requisita I/O e assim por diante. Ele é chamado de vários pontos do programa, como após colocar o processo corrente em uma fila de espera, no final de uma chamada de sistema ou qualquer outro momento em que se faz necessário escalonar os processos. Ao ser chamado, o scheduler tem uma seqüência de ações que devem ser tomadas para que seu trabalho possa ser feito. Essas ações se dividem em:

Kernel Work: o scheduler deve realizar uma série de rotinas especificas do kernel, como o bottom half handlers (que será tratado mais adiante) e deve tratar da gila de esperas de tarefas do scheduler.

Seleção de processo: o scheduler deve escolher o processo que irá rodar. A prioridade é o meio pelo qual ele escolhe.

Troca de processos: o scheduler salva as condições que o processo atual apresenta (contexto específico do processo) e carrega o contexto do novo processo que irá rodar.

Em ambientes multiprocesados (SMP - Simultaneous Multi Processing), cada processador tem um scheduler para tratar separadamente quais processos irão rodar nele. Dessa forma, cada processo guarda informação sobre o processador atual e o último processador em que rodou. Processos que já tenham rodado em um processador tem preferência em relação aqueles que não tenham rodado ali ainda. Essa implementação permite um ligeiro acréscimo de ganho no desempenho do sistema.



Políticas de Escalonamento

Existem critérios para o escalonamento dos processos em Linux:



Policy: Pode haver duas políticas de escalonamento round-robin e first-in-first-out (FIFO).

Priority: A prioridade do processo é dada de acordo com o tempo que ele gastou para executar (em jiffies). Jiffies é uma variável que indica a quantidade de tempo que um processo pode ser executado, onde cada valor atribuído depende de cada máquina. Quanto maior o tempo em uma execução anterior, menor a prioridade do processo.

Real time priority: Esse recurso é usado para processo de tempo real. Através disso, os processos de tempo real podem ter prioridade relativa dentro desse conjunto. A prioridade pode ser alterada através de chamadas do sistema.

Counter: É a quantidade de tempo (em jiffies) que os processos têm permissão para rodar. É setada a prioridade quando o processo é rodado pela primeira vez e decrementada a cada tick do clock.

Sistemas de Arquivos










  1   2   3   4


©principo.org 2016
enviar mensagem

    Página principal