Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza ([email protected]) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória, ES – Brazil 1 Arquitetura von Neumann – Revisão Aula Passada • Arquitetura von Neumann – Parte 5: – Entrada/Saída; – Barramentos. 2 Sistemas de Computação • Sistemas de Computação - Componentes: – Hardware: São todas as partes físicas que compõem um dispositivo seja ele um aparelho de TV, um telefone, um avião, um computador e etc. No contexto dos Sistemas de Computação estamos tratando apenas dos hardwares computacionais; – Software: Representa a parte lógica e processável de qualquer dispositivo que é executada sob o hardware; – Peopleware: São todos os recursos humanos envolvidos nas tarefas, direta ou indiretamente relacionadas ao funcionamento de um sistema. 3 Sistemas de Computação • O Software é dividido em: – Aplicativos: São programas com funções específicas que auxiliam-nos em tarefas que para nós são custosas, ou pela quantidade de dados envolvidos, ou pela complexidade destes dados, ou pelo tempo limitado necessário para obtenção de soluções, ou pela combinação de várias destas características; – Sistema Operacional: É composto por um conjunto de programas que controla todo o funcionamento do computador, e que por ser executado sob o nível 2 tem controle direto sob importantes aspectos do hardware, sem no entanto ser inteligível para seres humanos, já que nos provê recursos para os níveis superiores ao nível 3. 4 Sistemas de Computação • Software Básico: – São classificados como: • Sistemas Operacionais; • Ambiente Operacional, Interface Gráfica e Rede; • Linguagens de Programação: – Sintaxe; – Semântica; – Montadores, interpretadores e compiladores. 5 Sistemas de Computação • Sistemas Operacionais: – Programa cuja principal função é a de coordenar a interação entre hardware e software, e a transferência de informações entre a memória da unidade do sistema e os drives; – São classificados como: • Monousuário/Monotarefa: MS-DOS (Microsoft); • Multitarefas: OS/2 (IBM), Windows 2000, Windows XP; • Multiusuário: UNIX; – Observação: A partir da versão 95, o Windows se tornou um Sistema Operacional (o Windows 3.11 e seus antecessores eram Ambientes Operacionais). 6 Sistemas de Computação • Sistemas Operacionais: – Podem ser estruturados de diversas maneiras: • Sistemas monolíticos: – Também conhecida como estrutura simples, consiste basicamente de um único programa subdividido em várias sub-rotinas, as quais tem permissão para chamar umas às outras; – Os programas finais construídos nestes SOs é feita com base em módulos compilados separadamente unidos por meio de um Linker (ligador); – Exemplos: UNIX, MS-DOS, etc. 7 Sistemas de Computação • Sistemas Operacionais: – Podem ser estruturados de diversas maneiras: • Sistemas em camadas: – Com o aumento da complexidade dos softwares surgiu a necessidade de se criar módulos para melhor organização das funções do SO; – Nesta abordagem, o SO é repartido em níveis onde o mais baixo é o nível (ou camadas) mais próximo ao hardware e o mais alto está mais próximo da interface; – Esta estrutura é de fato um pouco mais lenta, porém é mais eficiente no contexto do controle do hardware e de aplicações; – Exemplos: Windows; 8 Sistemas de Computação • Sistemas Operacionais: – Podem ser estruturados de diversas maneiras: • Sistemas em camadas: – A partir desta estrutura surgiu o conceito de Máquina Virtual, que nada mais é do que uma cópia via software de uma máquina real; – Pode-se executar mais de uma MV em um mesmo hardware, ou criar diferentes MVs para hardwares diferentes; 9 Sistemas de Computação • Sistemas Operacionais: – Podem ser estruturados de diversas maneiras: • Sistemas em camadas: – As vantagens do uso de MVs são: 1. Proteção total aos vários recursos do Sistema, pois cada máquina virtual é totalmente isolada das demais; 2. O compartilhamento dos recursos é possível compartilha-se o disco através de software ou implantando uma rede de máquinas virtuais; 3. É uma opção para pesquisa em sistemas operacionais, pois ele simula uma máquina em software. Se houver erros apenas aquela máquina virtual será afetada; 10 Sistemas de Computação • Sistemas Operacionais: – Podem ser estruturados de diversas maneiras: • Sistemas cliente/servidor: – São modelos computacionais que distinguem dois tipos básicos de equipamentos: Servidores e Clientes; – Servidores e Clientes são interligados entre si por meio de uma rede de computadores. – Nesta estrutura as funções principais são executadas nos Servidores, e os clientes são tratados meramente como dispositivos de E/S para o servidor (terminais); – Exemplos: UNIX, CSP(IBM Cross System Product). 11 Sistemas de Computação • Sistemas Operacionais: – São divididos em partes com funções diferentes: • Kernel (núcleo), também conhecido como executivo em tempo real; • Interface, que pode ser apenas um Shell (do inglês “cápsula”) ou ser composta também de uma parte gráfica mais amigável, também conhecida como GUI (Graphical User Interface); • Programas residentes, que são executados independente da vontade do usuário, estando portanto sob a gestão do SO. Por exemplo: a própria GUI é um programa residente. 12 Sistemas de Computação • Sistemas Operacionais - Kernel: – É responsável pela execução de diversas operações importantes: • Execução de Boot (Bootstrap); • Gerência de Processos (ou Tarefas); • Escalonamento de Processos (ou Tarefas); • Comunicação entre processos; • Gerência de Memória; • Gerência de Arquivos; • Gerência de E/S (I/O); • Sistema de Proteção; • Interpretação de comandos. 13 Sistemas de Computação • Sistemas Operacionais - Conceitos: – Um processo ou tarefa é um programa, ou uma porção dele, em alguma fase de execução. Um programa pode consistir de várias tarefas, cada uma com funcionamento próprio ou como uma unidade (talvez se comunicando entre si periodicamente); – Uma thread (fileira, linha) é uma parte separada de um processo. Um processo pode consistir de várias threads cada uma das quais sendo executada separadamente. Por exemplo, uma thread poderia tratar refresh e gráficos na tela, outra thread trataria impressão, outra thread trataria ações do mouse ou do teclado. 14 Sistemas de Computação • Sistemas Operacionais - Kernel: – Execução de Boot (Bootstrap): • O termo vem do Inglês e em uma tradução literal significa “levantar-se pelos cadarços das botas”; • Refere-se ao processo de inicialização do SO onde por si só o sistema é capaz de inicializar-se a partir do zero; • Durante o boot, logo após executar os testes do Post, a BIOS inicia a carga do SO; • Independentemente de qual sistema de arquivos seja usado, o primeiro setor do HD será reservado para armazenar informações sobre a localização do sistema operacional, que permitem a BIOS iniciar seu carregamento. 15 Sistemas de Computação • Sistemas Operacionais - Kernel: – Execução de Boot (Bootstrap): • No setor de boot é registrado: – Qual sistema operacional está instalado; – Com qual sistema de arquivos a memória secundária foi formatada; – Quais arquivos devem ser lidos para inicializar o PC; • Geralmente também são gravadas mensagens de erro, como a clássica "Non-System disk or disk error...“; • Quando ocorre uma falha neste setor o dispositivo não poderá mais ser usado para inicialização do computador. 16 Sistemas de Computação • Sistemas Operacionais - Kernel: – Gerência de Processos: • As máquinas de hoje usam o conceito de Pseudoparalelismo (paralelismo aparente), que corresponde à forma de chavear o Processador em diversos processos (programas) criando desta forma uma ilusão de paralelismo (a execução parece ser simultânea aos olhos humanos); • Este chaveamento deve ser rápido e é chamado de Multiprogramação. 17 Sistemas de Computação • Sistemas Operacionais - Kernel: – Gerência de Processos: • Embora cada processo seja uma entidade independente, muitas vezes os processos precisam interagir com os outros; • Para gerenciar esta interação e o escalonamento dos processos é necessário definir os estados de cada processo: 18 Sistemas de Computação • Sistemas Operacionais - Kernel: – Escalonamento de Processos: • Quando um computador é multiprogramado, ele muitas vezes possui diversos processos que competem pela CPU, surgindo assim a necessidade de alguma entidade para escalonar a CPU entre os processos, que é chamada de escalonador; • O escalonador de processos está em um nível mais baixo do SO para que seja possível fazer o controle destes processos: 19 Sistemas de Computação • Sistemas Operacionais - Kernel: – Escalonamento de Processos: • Um escalonador deve possuir um algoritmo de escalonamento que se preocupe com 5 regras: 1. Justiça: Todos processos devem ter acesso a CPU; 2. Eficiência: A meta do escalonador é chegar mais perto dos 100% de utilização da CPU; 3. Eficácia: Minimizar o Tempo de Resposta; 4. Turnaround: Minimiza os usuários batch; 5. Throughput: Maximizar o número de jobs (trabalhos) processados; 20 Sistemas de Computação • Sistemas Operacionais - Kernel: – Algoritmos de Escalonamento: 21 Sistemas de Computação • Sistemas Operacionais - Kernel: – Comunicação entre Processos: • Frequentemente os processos precisam se comunicar entre si (uns com os outros), e isso deve ocorrer preferencialmente de forma estruturada e sem interrupções (sempre que possível); • Três aspectos são importantes: – A troca de informações; – A garantia da não invasão do espaço físico de outro processo; – A garantia da não alteração de dados que estão sendo processados por outro processo. 22 Sistemas de Computação • Sistemas Operacionais - Kernel: – Gerência de Memória: • SOs mais simples não trabalham com multiprogramação, ou seja, alocam um processo na memória o executam até que seja terminado; • Porém a troca de processos entre memória e disco para sistemas multiprogramados é uma realidade; • Para este caso, em que a soma dos espaços de memória requeridos por todos os processos é maior que a memória primária, é necessário levar os dados não utilizados para o disco, sendo necessário um controle através de mapa de bits; • Este processo é conhecido como uso de Memória Virtual, onde uma parte do disco é separada para esta tarefa; 23 Sistemas de Computação • Sistemas Operacionais - Kernel: – Gerência de Memória: • A utilização de Memorial Virtual é recomendada, mas o algoritmo de substituição de páginas deve ser eficiente para garantir o desempenho do processo; • Recomenda-se o uso do algoritmo do envelhecimento (aging) e o WSClock; • Porém, apenas a escolha do algoritmo não é o suficiente, preocupação com o tamanho da página e a política de alocação são fundamentais. 24 Sistemas de Computação • Sistemas Operacionais - Kernel: – Algoritmos de substituição: 25 Sistemas de Computação – Próxima Aula • Sistemas de Computação: – Façam o exercício de simulação da aula passada para garantir sua pontuação de laboratório. Continua na próxima aula! Até breve. 26 http://nemo.inf.ufes.br/ 27