Buscar

Aula 8

Prévia do material em texto

Aula 8 – Arquitetura de computador – software
Introdução
O sistema operacional (SO) é o software mais importante e responsável por fornecer aos programas do usuário um modelo de computador melhor, mais simples e mais limpo. Ele também é responsável por lidar com o gerenciamento de todos os recursos de hardware disponíveis, como impressora, mouse, memória RAM, entre outros.
Infraestrutura
O sistema de computação é composto por hardware e software. 
· O hardware refere-se a toda a parte física, ou seja, a parte real de um sistema de computação. Podemos citar alguns itens que fazem parte do hardware, como: CPU, memória, impressora, cabos de rede, monitor, entre outros. 
· Já o software existe para que o hardware execute o que foi determinado pelo usuário. Ele faz a abstração do acesso ao hardware para o usuário. Alguns exemplos de softwares são: compiladores, editores de texto, planilhas eletrônicas, navegadores web, etc.
Os componentes de um sistema operacional podem ser separados de acordo com a hierarquia apresentada:
Alguns sistemas operacionais conhecidos são: Windows, Linux, FreeBSD e OS X. O programa com o qual os usuários interagem é conhecido como shell (ou interpretador de comandos), quando é baseado em texto, ou GUI (graphical user interface), quando sua interface contém imagens como ícones.
A figura 2 apresenta, de forma simplificada, a organização dos principais componentes de um computador, onde o hardware está localizado na base. Ele consiste em chips, placas, discos, um teclado, um monitor e objetos físicos similares. Logo após o hardware, está o software. A maioria dos computadores tem dois modos de operação: modo núcleo e modo usuário. O sistema operacional, a peça mais fundamental de software, opera em modo núcleo ou modo supervisor (TANENBAUM; BOS, 2016). No modo núcleo, o SO tem acesso a todo o hardware e pode executar qualquer instrução recebida conforme a capacidade de execução da máquina. O software opera no modo usuário, no qual apenas alguns subconjuntos de instruções estão disponíveis. Operações que façam aceso a dispositivos de entrada e saída (E/S), por exemplo, só podem ser executadas pelo SO, evitando, assim, que execuções erradas sejam realizadas, causando problemas na parte física. 
O programa de interface com o usuário, shell ou GUI, aparece no nível mais inferior de software de modo usuário e permite que ele inicie outros programas, como um navegador web, um player de vídeo ou um editor de texto. 
Os principais objetivos do sistema operacional são:
· ocultar os detalhes de hardware do usuário;
· fornecer uma interface gráfica, orientada a arquivos, escondendo detalhes relacionados a interrupções, organização do disco rígido e demais características associadas ao hardware;
· gerenciar os recursos de memória, processamento e armazena- mento de um computador.
Para conseguir realizar o gerenciamento de recursos de hardware, o sistema operacional faz uso da multiplexação (compartilhamento) de recursos de duas maneiras diferentes: no tempo e no espaço. 
Vamos saber mais sobre esses dois formatos de multiplexação:
· Multiplexação no tempo: Quando a multiplexação é feita no tempo, diferentes programas ou usuários se revezam usando um recurso. Primeiro, um deles usa o recurso, então outro, e assim por diante. Por exemplo, imagine um computador com apenas uma CPU e múltiplos programas sendo executados nela. O sistema operacional primeiro aloca a CPU para um programa, então, após acabar o tempo de execução, outro programa passa a fazer uso da CPU, então outro, e, finalmente, o primeiro de novo.
· Multiplexação no espaço: Na multiplexação de espaço, em vez de acontecer o revezamento para utilização dos recursos, cada um tem direito a uma parte do recurso. 
Tipos de sistemas operacionais
1. Sistemas operacionais de computadores de grande porte
Os computadores de grande porte diferem dos PCs (computadores pessoais) em termos de capacidade de E/S. Computadores de grande porte são usados como servidores sofisticados de web, para sites de comércio eletrônico (e-commerce) em larga escala e para transações entre empresas B2B.
Os sistemas operacionais para computadores de grande porte são dirigidos para o processamento de muitas tarefas ao mesmo tempo. Normalmente, eles oferecem três tipos de serviços:
· Em lote (batch): Exemplos de processo em lote podem ser observados, como o processamento de apólices em uma companhia de seguros ou relatórios de vendas para uma cadeia de lojas.
· Processamento de transações: os sistemas de processa- mento de transações lidam com grandes números de pedidos pequenos, por exemplo, processamento de cheques em um banco ou reservas de companhias aéreas.
· Tempo compartilhado (timesharing): Já os sistemas de tempo compartilhado permitem que múltiplos usuários remotos executem tarefas em um computador ao mesmo tempo, por exemplo, a realização de consultas a um banco de dados.
2. Sistemas operacionais de servidores
Eles atendem a múltiplos usuários ao mesmo tempo por meio de uma rede, permitindo que os usuários compartilhem recursos de hardware e software. Tipicamente, os servidores fornecem serviços de impressão, de arquivo ou de web. Eles são usados, também, para prover internet com suporte aos clientes e armazenam páginas de sites, atendendo às requisições que chegam.
São sistemas operacionais típicos de servidores: Solaris, FreeBSD, Linux e Windows Server 201x.
3. Sistemas operacionais de computadores portáteis
Os computadores portáteis, como tablets e smartphones, são conhecidos como PDA (personal digital assistant – assistente pessoal digital). O sistema operacional que roda nesses dispositivos pode ser o Android, da Google, ou o iOS, da Apple. A maioria deles conta com CPUs multinúcleo e quantidades grandes de memória.
4. Sistemas operacionais embarcados
Sistemas operacionais embarcados não aceitam softwares instalados pelo usuário, e são executados em computadores que controlam dispositivos que não costumam ser vistos como computadores. Exemplos típicos são os fornos de micro-ondas, os aparelhos de televisão, os carros, os telefones tradicionais e os MP3 players. A principal diferença dos sistemas embarcados em comparação aos sistemas operacionais de computadores portáteis é a impossibilidade de insta- lação de aplicativos. Todos os softwares necessários são instalados de fábrica e estão na memória ROM (read-only memory – memória somente de leitura). Sistemas como Embedded Linux, QNX e VxWorks são populares nesse domínio.
5. Sistemas operacionais de tempo real (real-time operating systems – RTOS)
Exemplo seria de um carro seguindo pela linha de montagem. Determinadas ações têm de ocorrer em determinados instantes. Se, por acaso, um robô soldador fizer as soldas antes do horário esperado ou alguns segundos depois, o carro será arruinado.
Para os casos nos quais a ação tem de ocorrer absolutamente em um determinado momento (ou dentro de uma dada faixa de tempo), temos um sistema de tempo real crítico. 
Diferentemente deste cenário, um sistema de tempo real não crítico é aquele em que a não realização de uma operação em um horário esperado, mesmo que ocasionalmente, é aceitável e não causa danos permanentes. Sistemas de multimídia ou áudio digital entram nessa categoria. Smartphones também são sistemas de tempo real não críticos.
Uma particularidade dos sistemas de tempo real e dos embarcados é que os softwares executados nesses dispositivos são inseridos apenas pelos projetistas do sistema, ou seja, o usuário não tem acesso para instalar nenhum outro software, fazendo com que esses sistemas sejam mais protegidos.
Um exemplo de tipo de sistema de tempo real é o sistema operacional embarcado configurável (eCos)
Processos
O processo é um conceito fundamental em SO e é basicamente um programa em execução. Pode ser entendido também como um contêiner que armazena todas as informações necessárias para executar um programa.
cada processo está ligado a um espaço de endereçamento. O processo pode ler e escrever nesse local.Nesse espaço endereçável, estão o programa executável, os dados do programa e sua pilha. Associado com cada processo, há um conjunto de recursos, em geral, abrangendo registradores (incluindo o contador de programa e o ponteiro de pilha), uma lista de arquivos abertos, alarmes pendentes, listas de processos relacionados e todas as demais informações necessárias para executar um programa.
Podemos listar quatro eventos responsáveis pela criação de processos, conforme apresentado:
Estados de um processo:
· Em execução: Processo realmente usando a CPU naquele instante.
· Pronto: O processo está em uma lista, pronto para ser executado; em geral, apenas esperando que outro processo acabe sua execução.
· Bloqueado: Processo incapaz de ser executado até que algum evento externo aconteça.
Na maioria dos sistemas operacionais, todas as informações que dizem respeito a um processo ficam armazenadas em uma tabela do sistema operacional, chamada de “tabela de processos”.
A tabela de processos nada mais é do que um arranjo de estruturas, uma para cada processo existente no momento.
As principais chamadas de um sistema de gerenciamento de processos são as que lidam com a criação e o término de processos. Para exemplificar, imagine que um usuário acabou de digitar um comando, usando um interpretador de comandos, requisitando que um programa seja compilado. O shell deve criar um novo processo, que vai executar o compilador. Quando o processo terminar a compilação, ele executa uma chamada de sistema para se auto finalizar.
Um processo pode criar um ou mais processos (chamados de processos filhos), e estes também podem criar processos filhos. Assim, chegamos à estrutura da árvore de processos.
Outro recurso muito presente nos sistemas operacionais modernos é o “escalonador de processos”. Esse componente tem a função de escolher qual dos processos concorrentes será o próximo a ganhar tempo de processamento da CPU.
Os processos dão suporte à possibilidade de haver operações (pseudo) concorrentes mesmo quando um computador possui apenas uma CPU disponível, tornando uma única CPU em múltiplas CPUs virtuais. 
Threads
Em sistemas operacionais tradicionais, cada processo tem um espaço de endereçamento e uma única thread de controle. Conforme aumenta a utilização de subprocessos (também conhecidos como processos filhos), há um desperdício do tempo gasto para a criação e a eliminação deles. Para tentar minimizar esse problema, introduziu-se o conceito de threads ou linhas de controle.
Um forte argumento para a existência das threads é que, como elas são mais leves do que os processos, são mais fáceis (isto é, mais rápidas) para criar e destruir do que os processos. 
Outra razão para a utilização de threads é o fato de o modelo de programação ficar mais simples por sua execução ser quase em paralelo. 
Apenas com as threads acrescentamos um novo elemento: a capacidade para as entidades em paralelo compartilharem um espaço de endereçamento e todos os seus dados entre si. 
Imagine o acesso de um navegador web a um site. Sabemos que muitas páginas na internet são formadas de imagens e de outros recursos “pesados”, como streaming de vídeos, por exemplo. Se, para cada item, o navegador tivesse de estabelecer uma conexão separada com o servidor, o procedimento seria muito demorado e trabalhoso. Mas, com a utilização de múltiplas threads, é possível fazer a requisição de muitas imagens ao mesmo tempo, melhorando o desempenho e a capacidade de resposta.
Aplicativos e utilitários
Os verdadeiros clientes dos sistemas operacionais são os programas de aplicações (aplicativos).
Os aplicativos são programas que têm aplicação prática voltada para o usuário do sistema. São programas que auxiliam o usuário, por exemplo, planilhas, editores de texto e navegadores.
Os utilitários, por sua vez, podem ser qualquer programa não obrigatório para o funcionamento do computador, porém, considerado extremamente útil. De forma sintetizada, podemos descrevê-los como programas que auxiliam o sistema operacional. Como exemplo, podemos citar os compactadores de arquivos (WinRAR e WinZip), os anti-vírus (Avast e Norton) e os desfragmentadores de disco. 
Os editores de texto, compiladores, montadores, ligadores (linkers), programas utilitários e interpretadores de comandos não são considerados como parte do sistema operacional, mesmo que sejam importantes e úteis.

Outros materiais