Visão geral do hardware de um computador convencional:
CPU: ou unidade central de processamento. É o elemento responsável pela execução dos programas. Geralmente ela vem confinada em um único chip (ex: 80386 da intel). Seus principais componentes são: a ULA, a UC e os registradores.
Registradores
São dispositivos de armazenamento temporário e de alta velocidade. São os responsáveis por armazenar os dados que estão sendo executados dentro da cpu.
ULA (Unidade Lógica e Aritmética)
Responsável por realizar as operações lógicas (or, and, not) e aritméticas (soma, subtração, adição e multiplicação) sobre os conteúdos dos registradores
UC (Unidade de Controle)
É o componente inteligente do computador, que contém um programinha residente chamado “microprograma”, responsável por todo o funcionamento do hardware. A execução deste microprograma ocorre da seguinte maneira: este microprograma contém uma sequência de “microinstruções”, que são “disparadas” sobre o hardware, ativando seus componentes a cada 1 ou mais pulsos de clock (relógio). A função básica deste microprograma pode ser dividida em 3 fases: busca da instrução, decodificação da instrução e execução da instrução.
Memória
É um dispositivo de armazenamento de dados. É na memória que são carregados todos os programas a serem executados pela CPU. A memória é composta por uma sequência de palavras, onde cada palavra possui um ou mais bytes (assim como os registradores) e é acessada por um endereço (posição). Dois tipos de operações podem ser efetuadas no sistema de memória: leitura e escrita de dados.
Quando um programa é carregado na memória, ele deve estar em linguagem de máquina (código binário), específico do hardware em questão. Suas instruções são colocadas em sequência nas posições da memória. Então, a UC começa o ciclo de execução do programa, buscando suas instruções uma a uma, decodificando e executando-as.
Dispositivos Periféricos ou de Entrada/Saída
Sâo dispositivos que permitem a comunicação da cpu com o mundo externo (impressora, monitor, teclado, mouse etc.). Cada dispositivo possui um circuito controlador (chip) que é responsável por acessar o dispositivo em suas operações mais elementares, através de linguagem de máquina. O sistema operacional implementa rotinas que tratam dos dispositivos (devices drivers) que desempenham funções mais elaboradas.
Barramento
São linhas de comunicação entre os componentes do hardware. Estas linhas de comunicação transportam dados, endereços e controle. Todos os dispositivos do hardware são conectados no barramento e todos tem acessos as informações que nele são colocadas. Cabe a cada dispositivo identificar quando que a informação é sua. Isto pode ser feito pelas linhas de endereçamento (cada dispositivo possui um endereço) ou pelas linhas de controle.
Software
|
O software é o elemento responsável pela manipulação do hardware, a fim de executar as funções desejadas pelo usuário.
Basicamente, podemos hierarquizar os diferentes tipos de softwares segundo as camadas da figura abaixo:
Microprogramação
Sintetiza a própria unidade de controle. O microprograma é o software de mais baixo nível, disparando sinais de controle (pulsos) diretamente sobre os dispositivos do hardware. O microprograma é uma linguagem específica da máquina, capaz de executar um conjunto específico de instruções em linguagem de máquina.
Linguagem de Máquina
É a linguagem binária que o processador entende, ou seja, que pode ser executada diretamente pela unidade de controle. Um programa escrito em linguagem de máquina é dito “programa executável” ou “programa objeto”. Quando um programa é escrito em uma linguagem de alto nível (PASCAL,C, CLIPPER etc…), ele deverá ser compilado (ou interpretado) para linguagem de máquina. Abaixo é dado um exemplo (fictício) de um trecho de programa em linguagem assembler e seu respectivo código em linguagem de máquina.
Sistema Operacional
O sistema operacional é o software responsável por gerenciar os recursos do hardware para o usuário, para que este não tenha que interagir diretamente sobre os dispositivos. O S.O. é consituído basicamente por duas camadas: O Shell (ou interpretador de comandos) e o Kernel (ou núcleo).
O núcleo implementa as funções básicas do SO, responsáveis pelo gerenciamento de memória, arquivos, processador, periféricos etc…, enquanto que o Shell implementa uma interface com o usuário, para atender necessidades tais como : listar um diretório, copiar arquivos etc…
O computador quando é ligado ele é praticamente vazio de software. Existe um pequeno programinha residente que faz um check up do equipamento e solicita a inserção do disco com o sistema operacional (caso nao haja winchester). O computador não tem conhecimento de qual sistema operacional será carregado e muito menos quais são os arquivos que o constitue, por isso, ele carregara apenas um setor pré-definido do disco e coloca para execução. Neste setor deverá estar o Boot do sistema operacional, responsável pelo carregamento do SO.
Um programa que trabalha sempre em conjunto com o SO é o chamado Loader. O Loader ou carregador é responsável por carregar os programas que estão no disco para a memória, relocando os espaços de endereçamentos.
Utilitários
São também chamados de tool kits ou ferramentas, pois são programas que auxiliam o usuário na construção de aplicações. Alguns bastantes utilizados são os tradutores, os montadores, os compiladores, os linkers o os depuradores.
Os tradutores são programas que transformam um programa escrito em uma determinada linguagem para uma outra linguagem. Os mais utilizados são os montadores, compiladores e os interpretadores.
Os montadores transformam linguagem de montagem (assembler) em linguagem de máquina. Os compiladores transformam linguagens de alto nível em linguagem de máquina, gerando um código executável do programa fonte. Os interpretadores transformam o programa fonte, linha por linha em tempo de execução em linguagem de máquina, não gerando um programa objeto.
Os compiladores fazem detecção de erros antes da execução, permitindo com que a execução seja certeira e rápida. Os interpretadores são lentos e apresentam os erros em tempo de execução, mas são mais flexíveis pois possibilitam alocação dinâmica.
Os linkers possibilitam o desenvolvimento de módulos bibliotecas e portando uma maior flexibilidade dos softwares. Os linkers concatenam vários módulos objetos (bibliotecas) juntamente com um módulo objeto principal, gerando um único programa executável, como mostra a figura abaixo.
Os depuradores ou Debuggers são utilitários que auxiliam a depuração de programas, ou seja, a detecção de erros, permitindo a visualização do conteúdo das variáveis, das posições de memórias e permitindo também a execução de apenas um trecho do programa. Geralmente trabalham em conjunto com compiladores em um único ambiente integrado.
O Sistema Operacional
O Sistema Operacional é o software que controla o computador e permite a comunicação entre software e hardware. Ele consiste num conjunto de rotinas (pequenos programas) que, além de controlar todo o fluxo de informações dentro do computador ainda auxilia na utilização de linguagens e aplicativos, na manipulação de discos, etc.
Sempre, ao se ligar o computador, o sistema operacional é o primeiro software que é executado e permanece gerenciando a entrada e a saída de dados no computador até que ele seja desligado. Como exemplo: MS-DOS, OS/2, UNIX, etc.
O sistema operacional é um conjunto de rotinas executadas pelo processador, que tem como funções básicas:
- gerenciar os vários recursos disponíveis no sistema, para atender da maneira mais eficiente possível o usuário, e
- gerenciar a execução dos programas do usuário, visando o melhor desempenho do sistema todo.
Em sua forma mais usual, a estrutura de um sistema operacional pode ser visualizada em camadas hierárquicas mostrada na figura abaixo, onde a camada mais interna, correspondente ao hardware, que suporta todas as camadas de software.
A primeira camada de software a envolver o hardware é o núcleo (kernel), que se comporta como um sistema operacional básico. Sobre o núcleo situam-se um conjunto de serviços, constituíndo-se o sistema operacional propriamente dito, que fornece o suporte necessário a execução de programas. Em seguida, tem-se a camada mais externa correspondendo ao nível da aplicação, na qual este projeto atua diretamente.
Os principais componentes do sistema operacional residem no núcleo e são relacionados a seguir:
Gerenciamento de I/O
Esconde as peculiaridades do hardware, fornecendo mecanismo de bufferização e drivers dos dispositivos.
O mecanismo de bufferização poupa tempo de cpu evitando que as solicitações de E/S sejam feitas diretamente nos dipositivos físicos. Ao invés disso, as E/S são feitas em um buffer e de tempo em tempo são efetivadas nos dispositivos.
Os drivers dos dispositivos são rotinas que implementam as funções básicas tais como leitura e escrita de caracteres e strings; assim não precisamos programar em baixo nível.
Gerenciamento de Arquivos
Implementa funções tais como:
- gerenciamento de espaços livres
- criação e deleção de arquivos
- criação e deleção de diretórios
- primitivas para manipulação de arquivos e diretórios (dir, copy, cd etc…)
- mapeamento dos arquivos em disco etc…
Gerenciamento de Processos
Implementa funções de manipulação e gerenciamento de processos tais como:
- criação e deleção de processos
- escalonamento de processos
- mecanismos de comunicação e sincronização entre processos etc…
Processos podem ser comparados com programas capazes de executar tarefas. Aos processos são associados alguns atributos tais como: nome, proprietário, ponteiros para posições da memória, contexto (conteúdo dos registradores e variáveis; situação em que o hardware estava quando o processo foi suspenso) etc…
Existem basicamente dois tipos de processos: processos do usuário e processos do SO. Os processos do usuário executam as tarefas do usuário e os processos do SO executam as tarefas do SO (basicamente todas as funções do SO são executadas por processos específicos) em beneficio dos usuários. Basicamente, os processos do usuário são ativados pelo SO e os processos do SO são ativados pelo próprio SO ou via interrupções (de hardware ou softwares).
Gerenciamento de Memória
Implementa funções tais como:
- alocação e liberação de espaço de memória
- gerenciamento de memória virtual (paginação e segmentação)
Proteção do Sistema
Protege o sistema contra usuários “espertinhos” e protege usuários contra outros usuários não autorizados. Existem vários recursos do hardware que favorece o sistema de proteção fornecido pelo SO.
Um destes recursos é o próprio mecanismo de memória virtual, que veremos mais adiante. Neste mecanismo o hardware verifica se os acessos a memória estão dentro dos limites de cada usuário.
Um outro recurso é a existência de dois modos básicos de execução, fornecidos pelo hardware: o modo supervisor e o modo usuário. Quando o SO está com o controle da máquina, o hardware está setado no modo supervisor. Quando o SO passa o controle para a aplicação do usuário, ele seta o modo para usuário. Quando o controle volta para o SO, através de uma interrupção, o modo é imediatamente setado para supervisor.
Com isso, o hardware sempre sabe se o processo que está executando é do sistema (modo supervisor) ou do usuário (modo usuário), e assim pode impedir acessos não autorizados.
Tipos de Sistemas Operacionais
Os diferentes tipos de sistemas operacionais são basicamente classificados de acordo com o número de processos do usuário que o SO pode executar ou de acordo com o número de processadores que o sistema possui. Combinando estas características podemos classificar os sistemas operacionais em: SO Monoprogramado, SO Multiprogramado e SO para Multiprocessador.
Sistema Operacional Monoprogramado (Monotarefa)
Possui as seguintes características:
- É executado por um único processador e é capaz de gerenciar a execução de um único programa (tarefa) do usuário por vez.
- Permite que o processador, a memória e os periféricos fiquem dedicados a um único usuário; são portanto monousuários (monoterminais).
- O processador fica ocioso quando o programa espera pela ocorrência de uma E/S.
- São sistemas de simples implementação.
Sistema Operacional Multiprogramado (Multitarefa)
Possui as seguintes características:
- É executado por um ou vários processadores. No caso de vários processadores, é classificado como “SO para Multiprocessadores” (discutido a seguir). No caso de apenas um processador, permite que vários programas disputem os recursos do sistema (paralelismo lógico ou virtual), e:
- Podem ser monousuário ou multiusuário:
Divide o tempo da cpu entre os vários programas e entre os vários usuários.- Monousuário: um único usuário executando vários programas (monoterminal).
- Multiusuário: vários usuários executando vários programas (multiterminais).
- Diminui a ociosidade, permitindo que durante o tempo de E/S outros processos sejam executados.
Inicialmente, os sistemas multiprogramados começaram com os sistemas de batch; depois com os sistemas time-sharing e finalmente com os sistemas real-time.
Nos sistemas de lote (batch), os programas eram enfileirados em disco ou fita e aguardavam a execução, um por vez. Normalmente, os programas (jobs) não necessitavam de interação com o usuário. Embora sejam considerados como os precursores dos sistemas multiprogramados, pois aproveitavam os tempos de E/S para a execuç ão de outros processos, o processamento era puramente sequêncial e ofereciam longos tempos de resposta.
Nos sistemas de tempo compartilhado (time-sharing), os usuários interagem através de terminais e teclados on-line. São sistemas multiterminais, cujo processamento é controlado por um computador central. O sistema executa uma varredura (polling) nos terminais, compartilhando o tempo entre eles (time-sharing).
Neste sistema, o processador executa os programas de forma intercalada no tempo, alocando uma fatia de tempo (time-slice) para cada um, por vez, realizando assim a multiprogramação. Cada usuário tem a ilusão que todo o sistema está totalmente dedicado exclusivamente para ele.
Os sistemas de tempo real (real-time) são semelhantes aos sistemas time-sharing, embora exijam tempo de resposta dentro de limites rígidos, na execução de tarefas. O conceito de time-slice é muito pouco utilizado e os processos executam o tempo necessário e conforme sua prioridade. São sistemas muito utilizados em controle de processos, onde o tempo é um fator crucial: refinaria de petróleo, automação industrial, controle de tráfego aéreo etc… Neste sistema, os processos geralmente são ativados por sensores.
Sistema Operacional para Multiprocessador
Possui as seguintes características:
- O sistema possui vários processadores, que podem estar confinados a um mesmo gabinete (centenas de processadores) ou espalhados fisicamente em forma de rede (dezenas de processadores).
- Executam várias tarefas simultaneamente e portanto são multitarefas.
- Cada processador pode operar monoprogramado ou multiprogramado.
- Ocorre paralelismo físico ou real, quando mais de um processador está sendo utilizado. Ocorre também paralelismo lógico, quando o número de tarefas é maior que o número de processadores disponíveis.
- Podem ser fracamente acoplados ou fortemente acoplados:
- fracamente acoplados (loosely coupled): cada processador possui sua própria memória e executa seu próprio sistema operacional (Sistema Operacional de Rede) ou parte de um sistema operacional global (Sistema Operacional Distribuído).
- fortemente acoplados (tightly coupled): todos os processadores compartilham uma única memória. Estes processadores geralmente são coordenados por um único SO localizado em um outro computador hospedeiro, que se encarrega de distribuir as tarefas entre os processadores e gerenciar a execução.
Exemplos de Sistemas Operacionais
MS-DOS
A sigla MS-DOS significa Microsoft Disk Operating System que em português significa Sistema Operacional de Disco. O prefixo MS representa Microsoft, empresa que criou o sistema. Este programa foi desenvolvido para permitir ao usuário realizar todas as funções básicas e essenciais necessárias no computador.
O MS-DOS é o Sistema Operacional mais utilizado e faz parte do Software Básico (programa indispensável ao funcionamento do computador). É um programa que se encarrega do Hardware do computador, por isso que é muito especial. Com pouquíssimas exceções, qualquer outro programa que é executado em seu computador é executado com a ajuda do DOS, em outras palavras o DOS é o programa que gerencia os componentes básicos do computador e os aloca a seus programas quando necessário. O DOS fica sob seu controle e existe para fornecer-lhe uma forma de comunicar suas instruções ao computador. Você informa instruções ao DOS através de comandos que ele reconhecerá. A maior parte desses comandos consistem em palavras baseadas na língua inglesa, pôr exemplo: copy, rename, date,time, label etc.
UNIX
As raízes do UNIX datam de meados dos anos 60, quando a AT&T, Honeywell, GE e o MIT embarcaram em um massivo projeto para o desenvolvimento de um utilitário de informação, chamado Multics (Multiplexed Information and Computing Service). Multics era um sistema modular montado em uma bancada de processadores, memórias e equipamentos de comunicação de alta velocidade. Pelo desenho, partes do computador poderiam ser desligadas para manutenção sem que outras partes ou usuários fossem afetados.
Em 1973 o UNIX foi reescrito em C, talvez o fato mais importante da história deste sistema operacional. Isto significava que o UNIX poderia ser portado para o novo hardware em meses, e que mudanças eram fáceis. A linguagem C foi projetada para o sistema operacional UNIX, e portanto há uma grande sinergia entre C e UNIX.
Em 1975 foi lançada a V6, que foi a primeira versão de UNIX amplamente disponível fora dos domínios do Bell Labs, especialmente em universidades. Este foi o início da diversidade e popularidade do UNIX. Nesta época a Universidade de Berkley comprou as fontes do UNIX e alunos começaram a fazer modificações ao sistema.
Surgiram outras versões com a inclusão de novas características.
- O 4.2 BSD foi talvez umas das mais importantes versões do UNIX. O seu software de conexão de redes tornava muito fácil a tarefa de conectar computadores UNIX a redes locais. Nessa versão é que foram integrados os softwares que implementam TCP/IP e sockets.
- O 4.4 BSD foi lançado em 1992 para várias plataformas: HP 9000/300, Sparc, 386, DEC e outras, mas não em VAX. Entre as novas características estão: Novo sistema de memória virtual baseado em Mach 2.5 e Suporte ISO/OSI (baseado em ISODE).
- A Sun Microsystem também lançou a sua versão do UNIX a partir do BSD. Isto ocorreu até a versão SunOs 4.x. A nova versão, SunOs 5.x está baseada no SVR4, embora tenha herdado algumas características do SunOs 4.x. O novo sistema operacional da Sun, Solaris 2.x, engloba SunOs 5.x, Open Network Computing e Open Windows. É o solaris que provê o pacote de compatibilidade entre os BSD/SunOs e o SVR4/SunOs 5.x.
- A Microsoft também lançou uma versão do UNIX, chamada XENIX, que rodava em PCs. Este sistema era inicialmente baseado na Versão 7, depois herdou características dos SIII e depois do SV.
Windows NT
O Microsoft Windows NT começou a surgir em 18 de setembro de 1996, quando a Intel Corporation e a Microsoft Corporation anunciaram que estavam trabalhando no desenvolvimento de um novo sistema operacional para a futura família de processadores de 64 bits da Intel. O Windows NT é o sistema operacional da próxima geração, visando operar PCs até boa parte do próximo século. Foi projetado para ser um sistema operacional portável, capaz de se adequar facilmente a diversas plataformas de hardware, incluindo ambientes de um só processador e de múltiplos processadores.
Ele poderá ser facilmente estendido ou aperfeiçoado conforme o hardware evoluir. Pôr se mover para uma implementação completa de 32 bits, deixou para trás muitos cacoetes e problemas associados aos sistemas mais antigos de 16 bits.
Uma meta primária do Windows NT foi a compatibilidade com outros sistemas operacionais para PCs e com os programas projetados para rodas sob eles. Ou seja, o Windows NT foi projetado para permitir compatibilidade regressiva com a grande base de aplicações para PC existentes.
O Windows NT também foi projetado para satisfazer ou exceder os padrões atuais de desempenho. Um outro aspecto importante é que ele pode rodar em computadores com múltiplas CPUs.
Windows 95
Criado pela Microsoft Corporation o Windows 95 é um software básico classificado na categoria de “Sistema Operacional”. Ele cria uma interface gráfica para o usuário (GUI – Graphical User Interface) para proporcionar a este uma comunicação mais intuitiva e fácil com o computador. Este software usa a metáfora da mesa de trabalho (desktop) para dispor e arranjar informações gráficas e textuais na tela. O usuário tem acesso a essas informações através do mouse, que é usado para abrir janelas, selecionar opções, acionar vários objetos através de ícones, mover, copiar, renomear ou excluir arquivos, executar programas, etc.
O Windows 95 incorporou um conjunto de tecnologias que, somadas as inovações de sua interface, significam uma autêntica revolução no uso de micros.
Uma das mudanças refere-se a própria interface gráfica, que evoluiu para facilitar ainda mais a maneira como o indivíduo se relaciona com o equipamento. Essa melhoria beneficia tanto usuários que conhecem pouco ou quase nada de microinformática quanto profissionais.
Outro avanço significativo é o suporte Plug-and-Play – ligue e use – automatizando totalmente a instalação e configuração da máquina.
Esta tecnologia acaba com os problemas de instalação de placas e outros periféricos, pois autoconfigura os componentes e põe fim aos conflitos de endereço e interrupção de memória.
O Windows 95 não traz apenas mudanças na interface. Sua grande mudança ocorreu nos bastidores. Ao contrário do Windows 3.1 (que é ambiente operacional), o Windows 95 é um sistema operacional integrado completo, que não trabalha “sobre” o MS-DOS. O Windows 95 elimina as limitações de memória herdadas do DOS.
O Windows 95 também tem uma vantagem em relação a outros sistemas e ambientes operacionais: ele permite a criação de nomes longos de arquivos, assim o usuário poderá gravar arquivos com nomes que realmente indiquem o que o arquivo representa. No Windows 95 os nomes de arquivos podem ter até 255 caracteres, incluindo espaços.
Prof. Paul Fisher/UFRGS/13-04-2008