Baixe o app para aproveitar ainda mais
Prévia do material em texto
PROFESSOR AQUI Introdução à Sistemas Operacionais AULA nº 01 Prof. Bruno Roberto Silva Conceitos Fundamentais de Sistemas Operacionais • A tecnologia tem avançado muito rapidamente em todas as áreas do conhecimento e novos equipamentos são lançados a todo o momento para os mais variados fins. • Além dos computadores, são os tablets, smartphones, smartwatchs, vídeo games, TVs e a nossa porta os google-glass. • Independente do tipo de equipamento, formato ou tamanho, todos têm um ponto em comum, necessitam de um Sistema Operacional (SO) para funcionarem. Conceitos Fundamentais de Sistemas Operacionais Os SOs variam de acordo o tipo de funções e hardware utilizado: • Nos tablets, smartphones e smartwatchs teremos um SO projetado para facilitar a interface do usuário com os programas a serem executados. • Nos desktops (computadores pessoais) as otimizações são voltadas para aplicações comerciais, jogos, etc. • Em ambientes coorporativos, que se requer a utilização de computadores de grande porte, os SOs têm um projeto mais voltado para a otimização de hardware. • Na indústria, cujos equipamentos necessitam de alta precisão e confiabilidade, utilizam-se SOs em tempo real que permitem a resposta a um evento ser feito em um espaço de tempo determinado. Visão Geral • Um SO, por mais complexo que possa parecer, é apenas um software. • Um computador moderno consiste em: – (1) processadores, (2) memórias, (3) discos, (4) impressoras, (5) teclado, (6) mouse, (7) monitor, (8) interfaces de rede e (9) outros dispositivos de E/S (entrada e saída). • Se todo programador tivesse de compreender como todas essas partes funcionam em detalhes, seu trabalho seria lento e com grandes possibilidades de erros. Visão Geral • Para os autores Tanenbaum e Boss (2016), uma das principais tarefas dos SOs é esconder o hardware, transformando-o em abstrações de qualidade, limpas, elegantes e consistentes com as quais o programador/programas possam trabalhar. Definição “Um Sistema Operacional é um programa que efetua o gerenciamento dos componentes físicos do computador (hardware), como também uma base para os programas aplicativos. Além disso, atua como intermediário entre o usuário e o hardware do computador.” • Silberschatz et al. (2004). Objetivo • A função do SO é permitir uma interface homem máquina mais amigável com o usuário, isto porque encapsula as complexas rotinas de acesso a recursos de hardware, tais como, interface de programação e gerenciamento de recursos. • EX: Salvar um pequeno texto, exige etapas que demandam um grande conhecimento da arquitetura interna do computador: 1. Localizar os dados do arquivo na memória. 2. Obter o nome do arquivo e local de gravação. 3. Validar os dados do item 2. 4. Posicionar o cabeçote de leitura e gravação no cilindro correto. 5. Posicionar o cabeçote de leitura e gravação na trilha correta. 6. Posicionar o cabeçote de leitura e gravação no setor correto. 7. Salvar o arquivo. Objetivo E essa complexidade é tão grande assim??? • Considerando os discos rígidos modernos SATA (Serial ATA) usados na maioria dos computadores, um livro (ANDERSON, 2007) descrevendo uma versão inicial da interface do disco — o que um programador deveria saber para usar o disco —, tinha mais de 450 páginas. • Desde então, a interface foi revista múltiplas vezes e é mais complicada do que em 2007. É claro que nenhum programador são iria querer lidar com esse disco em nível de hardware. Em vez disso, um software, chamado driver de disco, lida com o hardware e fornece uma interface para ler e escrever blocos de dados, sem entrar nos detalhes. • SOs contêm muitos drivers para controlar dispositivos de E/S. Definição Os autores Tanenbaum e Woodhyll (1999) e Silberschatz et al. (2004), examinam os SOs a partir de dois pontos de vista: topdown e bottom-up. • Topdown (“de-cima-a-baixo”): Modo de visão do usuário, o SO é um software que permite a interação entre o hardware e as aplicações. Para o usuário, o SO fornece: 1. Acesso ao sistema. 2. Possibilidade de criar e gerenciar arquivos e diretórios. 3. Ambiente para execução de programas. 4. Acesso aos dispositivos de entrada e saída. 5. Acesso ao conteúdo de arquivos. 6. Detecção de erros. • Bottom-up (“de-baixo-a-cima”): É considerado um gerenciador de recursos. Isto porque controla a utilização dos recursos de hardware pelas aplicações como também quais e quando as aplicações podem ser executadas. Ex. de recursos: 1. Tempo de CPU. 2. Espaço em memória. 3. Espaço em disco. 4. Acesso aos dispositivos de comunicação. 5. Bibliotecas de software. Definição • Para que isso fique mais claro, podemos analisar o Sistema Operacional dividindo-o em quatro componentes: – (1) usuários, (2) programas aplicativos, (3) sistema operacional e (4) o hardware. • Os usuários utilizam os aplicativos (editor de texto, planilhas eletrônicas, navegador web, etc) para diversas tarefas. • Os aplicativos dependem dos recursos de hardware para executar suas funções. • O hardware é a parte mais básica dos componentes, composto pela unidade central de processamento (CPU - Central Processing Unit), memórias (RAM e ROM), dispositivos periféricos (teclado, monitor, mouse, impressora, etc.) e unidades de armazenamento (disco rígido). Definição O SO fornece um ambiente de integração que possibilita a execução dos programas e o controle e coordenação da utilização dos recursos de hardware pelos aplicativos. • O autor Silberschatz et al. (2004) considera o SO como um alocador de recursos. • É de responsabilidade do SO resolver conflitos na utilização destes recursos. • COMO RESOLVER O SEGUINTE CONFLITO? Cinco usuários com PCs em rede resolvem mandar ao mesmo tempo um texto para uma impressora compartilhada na rede. Qual texto o sistema operacional deve imprimir primeiro? Imprimir parte do texto do usuário 1, em seguida, parte do usuário 2 e assim por diante? Como o sistema operacional resolve este conflito de alocação de recursos? Resolvendo Conflitos SOLUÇÃO: (1) Armazenar os arquivos enviados numa fila de impressão no disco rígido. (2) Imprimir todos os arquivos da fila em sequência. Este é um pequeno exemplo do que acontece a todo o momento em um SO, que é procurar gerenciar a utilização dos recursos da forma mais eficiente possível, procurar minimizar as falhas, efetuar controle de acesso para que os usuários possam acessar apenas os recursos que lhes foram autorizados, entre outros. Em resumo, os objetivos fundamentais dos SOs são executar os aplicativos dos usuários e facilitar a resolução de seus problemas. Evolução Histórica dos Sistemas Operacionais Para estudarmos a história dos SOs devemos estudar a evolução dos computadores, isto porque os dois estão diretamente ligados: • Segundo Machado e Maia (2007) a máquina de cálculos de equações polinomiais conhecida como Máquina Analítica (Analytical Engine) inventada pelo matemático inglês Charles Babbage em 1822 é o que mais se assemelha a um computador atual. Isto porque possuía os conceitos de unidade central de processamento, memória, unidade de controle e dispositivos de entrada/saída. OBS: A Máquina Analítica não possuía SO, apenas sequencias de instruções criadas pela 1ª programadora da história, Augusta Ada Byron discípula de Babbage. Década de 1940: válvulas e painéis com plugs Evolução Histórica dos Sistemas Operacionais • Durante a 2ª guerra mundial houve um esforço muito grande no desenvolvimento de máquinas que pudessem agilizar os procedimentos manuais efetuados na área militar, principalmente para cálculos balísticos. • Assim, em 1943 começou a ser desenvolvido o ENIAC (Electronic Numerical Integrator Analyzer and Computer – Computador Integrador Numérico Eletrônico), 1º computador eletrônico de grande porte idealizado pelos cientistas norte-americanos John Eckert e John Mauchly, da Electronic Control Company. Evolução Histórica dosSistemas Operacionais • A arquitetura dos computadores modernos de hoje (Arquitetura von Neumann), foi idealizado por um dos consultores do projeto ENIAC, o Prof. John von Neumann. • Segundo esta arquitetura, uma máquina digital (computador) deve possuir: 1. Memória: capaz de armazenar em um mesmo espaço dados e instruções dos programas; 2. Unidade de processamento (CPU – Central Processing Unit): responsável por executar as instruções dos programas armazenados na memória; 3. Unidade de controle (CU – Control Unit): responsável pela interpretação das instruções de programa e de controlar a sequência de tempo das atividades necessárias para sua execução; 4. Unidade aritmética e lógica (ALU – Arithmetical and Logical Unit): responsável pela execução das operações aritméticas (somas, subtrações, etc.) e lógicas (comparações, AND, OR, etc.) contidas nas instruções dos programas; 5. Registradores: pequenas áreas de memória localizada na CPU para armazenamento temporário de dados dos programas em execução, resultados de instruções, estado interno da CPU, etc. 6. Dispositivos de entrada e saída: responsáveis por traduzir os dados inseridos pelo usuário no computador (ex.: teclado, cartões perfurados, fitas ou discos magnéticas etc.) para a memória como também traduzir da memória para um formato externo (ex.: fitas ou discos magnéticos, telas de vídeo, etc.) Década de 1950: transistores e sistemas batch Evolução Histórica dos Sistemas Operacionais • O surgimento dos transístores permitiu a diminuição do tamanho dos computadores, antes feitos a válvula, o que proporcionou um aumento do poder de processamento dos equipamentos. Grandes empresas e corporações começaram a adquirir computadores, conhecidos como Mainframes, permitindo a separação entre os operadores, programadores e técnicos de manutenção. • A programação, feita em cartões perfurados, eram entregues ao operador do computador para serem processados. • Os programas, também denominados Jobs, eram lidos por uma leitora e gravados em uma fita de entrada. • O computador então lia a fita e executava um programa de cada vez. • O resultado do processamento era então gravado numa fita de saída. • Esta técnica, onde são processados um conjunto de programas, ficou conhecido como processamento batch. Década de 1950: transistores e sistemas batch Evolução Histórica dos Sistemas Operacionais • Em 1953 os usuários do computador IBM 701, do Centro de Pesquisas da General Motors, desenvolveram o primeiro SO, chamado de Monitor. O Monitor, chamado assim pela sua simplicidade, tinha como objetivo automatizar as tarefas manuais executadas na época. • Neste período surgiram as primeiras linguagens de programação de alto nível, tais como FORTRAN, ALGOL e COBOL. Houve então um grande avanço no desenvolvimento e manutenção dos programas que não mais tinham uma relação direta com o hardware dos computadores. Consequentemente, os SOs evoluíram para atender as demandas das linguagens de programação e assim facilitar o trabalho de codificar, executar e depurar os programas. Década de 1960 - 1980: circuitos integrados e multiprogramação Evolução Histórica dos Sistemas Operacionais • Com o surgimento dos circuitos integrados os computadores tiveram uma redução de custo de aquisição o que proporcionou sua viabilização nas empresas. Várias inovações foram implementadas nos SOs, tais como multiprogramação, multiprocessamento, time- sharing e memória virtual. • A década de 1970 foi marcada com a miniaturização dos componentes (chips) baseadas nas tecnologias de Integração em Larga Escala (Lage Scale Integration – LSI) e a Integração em Muito Larga Escala (Very Lage Scale Integration – VLSI), o surgimento das primeiras redes de computadores, além do desenvolvimento de novas linguagens de programação de alto nível. Década de 1960 - 1980: circuitos integrados e multiprogramação Evolução Histórica dos Sistemas Operacionais • Na década de 1980 os fabricantes de computadores passam a produzir microcomputadores utilizando microprocessadores. A IBM cria a filosofia de computadores pessoais, que ajudou na evolução dos SOs. Os microcomputadores da época possuíam baixa capacidade de armazenamento e os SOs eram monousuário/monotarefa. Os SOs evoluíram para monousuário/multitarefa com a incorporação de discos rígidos e outros periféricos nos microcomputadores. • Em meados da década de 1980 crescem as redes de computadores pessoais utilizando SOs para rede e distribuídos. – Os SOs para rede permitem que os usuários se conectem a máquinas remotas e utilizem recursos compartilhados. O usuário tem plena consciência da existência de vários computadores conectados. – Nos SOs distribuídos os usuários não têm consciência onde estão armazenados seus arquivos ou onde estão sendo executados seus programas. Apesar do SO distribuído ser composto de múltiplos computadores conectados, as operações são executadas de tal forma que o usuário tem impressão de estar trabalhando um único computador. Década de 1990 - 2000: Windows e Linux Evolução Histórica dos Sistemas Operacionais • A Internet surge na década de 1990 e com a decorrência de sua rápida evolução, força os SOs a oferecerem suporte ao protocolo TCP/IP utilizado na Internet. Nesta mesma década o Windows e o Unix, passaram a adotar interfaces gráficas. • Surge o Linux em 1991 através do desenvolvimento do finlandês Linus Torvalds e de trabalhos colaborativos de diversos programadores. A forma colaborativa e os avanços da Internet possibilitaram que outros softwares abertos, como o já citado SO Linux, o banco de dados MySQL, o servidores web Apache entre outros, pudessem ser desenvolvidos e distribuídos sem custos aos seus usuários. • Na década de 2000 houve uma mudança radical no desenvolvimento de computadores frente às exigências cada vez maiores de equipamentos mais eficientes e com maior poder de processamento. Os SOs voltados para as novas arquiteturas de processadores 64 bits, são dotados de interfaces usuário-máquina que exploram cada vez mais imagens, sons e linguagens naturais para proporcionar ao usuário uma interatividade com o computador mais intuitiva, natural e simples. Década de 2010: Cloud Computing, smartphones e tablets Evolução Histórica dos Sistemas Operacionais • O modelo de Computação em Nuvem trouxe mudanças nos modelos econômicos da TI, tanto do lados do consumidor quanto do lado dos fornecedores: – SaaS – Software as a Service; – IaaS – Infraestructure as a Service; – PaaS – Plataform as a Service. • A difusão e popularização de uso de dispositivos móveis em escala global, vem fazendo com que os fabricantes invistam em SOs para estas plataformas. • A evolução das gerações dos smartphones (1G, 2G, 3G e 4G), vem permitindo conexões mais rápidas e qualidades de vídeo e áudio superiores. Estes avanços permitem o desenvolvimento de SOs com diversas funcionalidades de comunicação. Revisão sobre hardware de computadores Um SO está intimamente ligado ao hardware do computador no qual ele é executado e, por isso, vamos revisar brevemente estes componentes: • Alguns dos componentes de um computador pessoal simples. Processadores Revisão sobre hardware de computadores • Também chamado UCP (Unidade Central de Processamento), gerencia todo o SO. • Controla e executa as instruções presentes na memória principal. • Sincroniza suas funções através de um sinal de clock, gerado ciclicamente. – Ciclo básico: (1) buscar a 1ª instrução da memória; (2) decodificá-la e (3) executá-la. • Possui um conjunto específico de instruções que ela consegue executar. Memória Principal Dispositivos de E/ S Processador / UCP Unidade Lógica e Aritmética Registradores Unidade de Controle • UC: Gerencia as atividades (ex: gravação de dados, buscas na memória) dos componentes do computador. • ULA: Realiza as operações lógicas (testes e comparações) e aritméticas (somas e subtrações). • Registradores: Armazenam dadostemporariamente, funcionam como uma memória de alta velocidade. Revisão sobre hardware de computadores • O acesso do processador à memória é mediado por um controlador específico (que pode estar fisicamente dentro do próprio chip do processador): – Unidade de Gerência de Memória (MMU- Memory Management Unit). • Ela é responsável por: – analisar cada endereço de memória acessado pelo processador; – validá-lo; – efetuar conversões de endereçamento porventura necessárias; – executar a operação solicitada pelo processador (leitura ou escrita de uma posição de memória). Processadores Memórias Revisão sobre hardware de computadores • O 2º principal componente em qualquer computador. • O ideal é que uma memória seja: (1) rápida ao extremo (para que a CPU não seja atrasada pela memória); (2) abundantemente grande (3) e muito barata. maior capacidade de armazenamento maior custo e velocidade de acesso Memória Secundária Memória Cache Memória Principal Registradores Nenhuma tecnologia atual satisfaz todas as metas, assim, utiliza-se uma abordagem hierárquica. Memórias Revisão sobre hardware de computadores • REGISTRADORES: Ficam dentro da CPU e não há atraso ao acessá-los. • CACHE: Armazena uma pequena parte do conteúdo da memória principal (as mais requisitadas). Toda vez que o processador faz referência a um dado armazenado na memória, é verificado, primeiramente, se o mesmo encontra-se na memória cache. Caso o processador encontre o dado (cache hit), não há necessidade do acesso à memória principal. Caso negativo, o processador transfere um bloco de dados da memória principal para a cache (cache miss). CPUs modernas têm 2 delas (L1 e L2). • PRINCIPAL: Local onde são armazenados instruções e dados, sendo classificada conforme sua volatilidade. A RAM e CMOS são voláteis, enquanto as ROM, EPROM, flash são tipo não voláteis. • SECUNDÁRIA: Meio permanente de armazenamento de programas e dados (Ex.: HDs). Enquanto o acesso à memória secundária ocorre em milissegundos, o acesso à memória principal é de nanosegundos. Os SSDs, são memórias secundárias, porém, são mais rápidos que os HDs. Dispositivos de Entrada e Saída (E/S) Revisão sobre hardware de computadores • São utilizados para permitir a comunicação entre o SO e o mundo externo. • Consistem em geral em 2 partes: (1) um controlador e (2) o dispositivo em si. – O controlador é um chip (ou um conjunto) que controla fisicamente o dispositivo. Ele aceita comandos do SO, por exemplo, para ler dados do dispositivo, e os executa. • O software que conversa com um controlador, dando a ele comandos e aceitando respostas, é chamado de driver de dispositivo. – Cada fabricante de controladores fornecem um driver para cada SO a que dá suporte. • Para uso, o driver precisa ser colocado no núcleo do SO. Há 3 maneiras para isso: 1. Religando o núcleo com o novo driver e então reinicializar o sistema (UNIX antigos). 2. Informando ao SO que ele precisa do driver e então reinicializar o sistema. No momento da inicialização, o SO vai e encontra os drivers que ele precisa e os carrega (Windows). 3. Capacitando o SO a aceitar novos drivers durante sua execução e instalá-los rapidamente sem precisar ser reinicializado. (Dispositivos hot-pluggable - USB e IEEE 1394/FireWire - carregam drivers dinamicamente). Barramentos Revisão sobre hardware de computadores • Todas as transferências de dados entre processador, memória e periféricos são feitas através dos barramentos. • No geral, possuem linhas: – De endereços: indica a posição de memória (ou o dispositivo) a acessar; – De controle: indica a operação a efetuar (leitura ou escrita); – De dados: transporta a informação a ser transferida entre o processador e a memória ou um controlador de dispositivo. Barramento processador-memória B a rr a m e n to d e E / S B a rr a m e n to d e E / S Adaptador Adaptador Memória Principal UCP Revisão sobre hardware de computadores • Visão geral detalhada: Classificação de Sistemas Operacionais • Com a evolução dos computadores, houve a necessidade da evolução dos SOs para suportar os novos recursos de hardware e das aplicações por ele suportado. • Neste sentido, os SOs podem ser classificados conforme o seu processamento, tarefas, usuários e interface. Sistema Monoprogramáveis/Monotarefas Classificação de Sistemas Operacionais • Foram os primeiros sistemas a serem utilizados. Este tipo de SO tem a característica de permitir a execução de um único programa por vez. • Neste SO, o processador, memória e os periféricos do computador ficam dedicados exclusivamente para um único programa em execução. • Além de executar um programa por vez, os recursos do sistema são alocados para uma tarefa por vez. • Nesse sentido quando o programa está esperando a entrada de um dado pelo usuário, o processador fica parado, sem qualquer tipo de processamento. Sistema Multiprogramáveis/Multitarefa Classificação de Sistemas Operacionais • Têm como característica permitir o compartilhamento dos recursos do computador com vários usuários e aplicações. • Os programas (processos) carregados em memória ficam enfileirados, esperando sua vez de utilizar a UCP. Cada processo recebe um tempo para a utilização do processador. • Para o usuário final a impressão é de que vários programas estão sendo executados simultaneamente. • Esta alternância de processos é denominada de concorrência e é gerenciada pelo SO de forma ordenada e protegida. Sistema Multiprogramáveis/Multitarefa – monousuário e multiusuário Classificação de Sistemas Operacionais Estão relacionados ao número de usuários que interagem com o SO. • Monousuário: Computadores pessoais e estações de trabalho onde há apenas um único usuário interagindo com o sistema. • Multiusuário: São ambientes interativos que possibilitam a diversos usuários conectarem- se ao sistema simultaneamente. Um usuário Dois ou mais usuários Monoprogramação/Monotarefa Monousuário N/A Multiprogramação/Multitarefa Monousuário Multiusuário Classificação de Sistemas Operacionais • Surgiram para serem utilizados nos primeiros computadores, os Mainframes e, posteriormente, nos computadores pessoais utilizados por um usuário por vez. • O MS_DOS, muito utilizado nas décadas de 1980 e 1990 é um exemplo de SO monoprogramável/monotarefa. • Por não compartilhar recursos, como processador, memória e dispositivos de entrada/saída, este tipo de SO é de simples implementação. • A implementação destes SOs são mais complexas, mas apresentam uma maior eficiência que os monoprogramáveis e uma sensível redução de custo, em função da possibilidade de compartilhar os recursos disponíveis de hardware entre diferentes aplicações. Sistema Monoprogramáveis/Monotarefas Sistema Multiprogramáveis/Multitarefa Classificação de Processamento • De acordo como as aplicações são gerenciadas, os sistemas multiprogramáveis podem ser classificados como: – Sistemas Batch, de Tempo Compartilhado ou de Tempo Real. Sistemas Batch (lote) Classificação de sistemas multiprogramáveis • Nesse sistema, a programação era feita com cartões perfurados. – Os cartões eram lidos e armazenados em disco ou fita, que em seguida eram utilizados para carregar os dados para processamento. – Uma vez executados, o resultado do processamento era armazenado em disco ou fita de saída. Apesar do tempo de resposta longo, era considerado muito eficiente. (a) Programadores levavam cartões para o 1401; (b) O 1401 lia o lote de tarefas em uma fita. (c) O operador levava a fita de entrada para o 7094; (d) O 7094 executava o processamento. (e) O operador levava a fita de saída para o 1401; (f) O 1401 imprimia as saídas. Sistemas de Tempo Compartilhado (time-sharing) Classificação de sistemas multiprogramáveis • São sistemas onde o tempo do processador é dividido em pequenas partes (time-slice) permitindo a cada programa utilizar uma destas partes para a sua execução.• Caso a fatia de tempo não seja suficiente para a conclusão do programa, ele é interrompido pelo SO e substituído por um outro, enquanto fica aguardando por uma nova fatia de tempo. • Os usuários interagem com o sistema através de comandos digitados em terminais compostos por teclado, pelo monitor e pelo mouse. • Grande parte das atuais aplicações comerciais é processada neste tipo de sistema. Sistemas de Tempo Real (RTOS) Classificação de sistemas multiprogramáveis • O tempo do processador é distribuído conforme a prioridade de cada aplicação. • O conceito de tempo compartilhado não é aplicado neste tipo de sistema. Assim, o SO deve garantir a disponibilidade de todos os recursos necessários para execução de um programa até que este termine ou que surja um de maior prioridade. • O SO não define as prioridades de execução de um programa, esta definição é feita pela própria aplicação. • Esses sistemas são empregados em aplicações de controle e monitoramento de processos onde o tempo de processamento é fator crítico, como em casos de usinas termoelétricas ou nucleares, refinarias de petróleo, tráfego aéreo, etc. São classificados, basicamente, em: – Críticos: fornece garantias absolutas de que uma ação ocorrerá num determinado momento. – Não Críticos: atrasos ocasionais (não desejáveis), não causam danos permanentes. Sistemas de Tempo Real (RTOS) Classificação de sistemas multiprogramáveis • Críticos • Não Críticos Sistemas com múltiplos processadores • Possuem mais de um processador interligado e trabalhando em conjunto. • Estes processadores podem estar: (1) num mesmo computador; (2) espalhados fisicamente em uma rede de computadores. • Programas podem ser executados simultaneamente, ou um programa pode ser dividido em partes e executados em processadores diferentes numa mesma máquina ou em várias. A forma de comunicação entre os processadores, o grau de compartilhamento da memória principal e dos dispositivos de entrada e saída, definem a classificação destes SOs em: Fortemente acoplados e Fracamente acoplados. Sistemas Fortemente Acoplados (Multiprocessadores) Sistemas com múltiplos processadores • Possuem vários processadores compartilhando uma única memória física e dispositivos de entrada e saída e apenas um SO efetuando o gerenciamento. • Segundo Silberschatz et al. (2004), estes sistemas podem ser divididos em: – Multiprocessamento Simétrico (SMP – Symmetric Multiprocessing); – Multiprocessamento Assimétrico (NUMA – Non-Uniform Memory Access). • SMP: os processadores compartilham o mesmo tempo de memória. • NUMA: o tempo de acesso à memória pode variar dependendo da localização física dos processadores em relação à memória. Sistemas Fracamente Acoplados (multicompudadores) Sistemas com múltiplos processadores • Conectam vários computadores, funcionando independentes, por linhas de comunicação, tendo cada um sua própria UCP, memória, dispositivos de E/S e SO. • Considerando o grau de integração, estes sistemas podem ser classificados como: – Sistemas Operacionais de Rede (SOR); – Sistemas Distribuídos. • SORs: os recursos (diretórios, impressora, serviços, etc.) são compartilhados. O usuário tem conhecimento dos computadores da rede e quais recursos e serviços disponíveis em cada um. • Distribuídos: os recursos e serviços individuais de cada computador são tratados com um único conjunto. O usuário tem a sensação de estar trabalhando num sistema centralizado e não em rede (clusters). Concorrência • É o princípio básico dos SOs multiprogramáveis. • Torna possível que o processador execute várias tarefas ao mesmo tempo, permitindo que vários programas sejam executados concorrentemente pelo SO. • Surgiu a partir de limitações dos SOs monoprogramáveis, nos quais recursos computacionais (UCP, memórias e dispositivos de E/S) eram utilizados de maneira pouco eficiente (ficavam ociosos), limitando o desempenho dessas arquiteturas. 2 (a) Sistema Monoprogramável tempo tempo E/ S E/ S UCP UCPlivre 11 1 (b) Sistema Multiprogramável EX: Enquanto uma leitura em disco é realizada, o processador permanece ocioso. O tempo de espera é longo, já que as operações de E/S são lentas, se comparadas com a velocidade do processador em executar instruções. Interrupções Durante a execução das instruções de um programa, podem ocorrer eventos inesperados, que forcem o processador a desviar da sequência original do programa. • Estes eventos são conhecidos como interrupções. – É sempre gerada por algum evento externo ao programa, onde muitas vezes, um dispositivo precisa informar ao processador rapidamente sobre um evento interno. EX: (1) a chegada de um pacote de rede; (2) um clique de mouse; (3) a conclusão de uma operação de disco. DIAGRAMA: Mecanismo de Interrupção. Durante a ordem de execução de cada instrução de um programa, o processador verifica se houve alguma ocorrência de interrupção. Caso positivo, o processador suspende a execução da próxima instrução e desvia para uma rotina chamada de rotina de tratamento de interrupção, para tratar o evento. Antes de desviar para a rotina, os dados dos registradores são salvos permitindo que após o tratamento da interrupção, o processador possa retornar ao código que estava sendo executado quando recebeu a interrupção. Interrupções Exemplo de um tratamento de interrupção: • está sendo executado um determinado programa pelo processador; • um pen-drive é conectado a porta USB; • a placa de dispositivo de entrada e saída envia uma interrupção para o processador; • o processador para a execução do programa e desvia para um tratamento de interrupção; • a rotina de tratamento é executada, atualizando as estruturas do sistema operacional e exibindo uma mensagem ao usuário informando da conexão do pen-drive; • finalizando a rotina de tratamento da interrupção o processador retorna à execução do programa interrompido anteriormente. A utilização de interrupção permitiu o desenvolvimento de concorrência nos computadores. Interrupções X Exceções Autores distinguem os 2 termos de acordo com o tipo de evento ocorrido: • INTERRUPÇÕES: Decorrentes de eventos assíncronos (não relacionados à instrução do programa corrente - imprevisíveis), gerada por algum periférico. • EXCEÇÕES: Gerada por um evento síncrono (resultado direto da execução de uma instrução do próprio programa), como a divisão de um número por zero. São previsíveis. O mecanismo de interrupção torna eficiente a interação do processador com os dispositivos periféricos. Se não existissem interrupções, o processador perderia muito tempo “varrendo” todos os dispositivos do sistema para verificar se há eventos a serem tratados. Os TRAPs (System Call), também são consideradas como um tipo de desvio/interrupção. Buffering • Utiliza uma área na memória para transferir dados entre os dispositivos de E/S e a memória. • Nessa técnica, os dado são transferidos primeiramente para o buffer, permitindo que o dispositivo inicie uma nova leitura/gravação, enquanto a CPU manipula os dados do buffer. • Reduz o problema da disparidade da velocidade de processamento e dispositivos de E/S. • Objetiva manter CPU e dispositivos de E/S ocupados na maior parte do tempo. • O buffer possui uma fila FIFO podendo conter vários registros (unidade de transferência usada no mecanismo de buffering). Memória Principal UCP Buffer gravação gravação leitura leitura Controlador Spooling (simultaneous pefipheral operation on-line) • Introduzida no final dos anos 50, o processamento por Sistemas Batch era muito utilizado. • Como as operações E/S são lentas, a CPU ficava ociosa à espera de dados. • No spooling, vários programas (JOBS) eram armazenados em uma fita magnética, então eram enviados para processamento, reduzindo o tempo de execução e transição dos jobs. • Da mesma forma um job poderia direcionar as saídas para impressora, para outra fita. • Realiza apenas processamento sequencial, devidoàs fitas magnéticas (em ordem). • Mais eficiência com o surgimento de dispositivos de acesso direto, como discos e atribuição de prioridades aos jobs. Programa ImpressoraArquivo de Spool Sistema OperacionalSistema Operacional É semelhante à técnica de buffering. Está presente atualmente no gerenciamento de impressão. Reentrância • Capacidade de um código executável (código reentrante) ser compartilhado por vários usuários, exigindo apenas uma cópia do programa em memória. • Permite que cada usuário esteja executando um trecho diferente do código reentrante, manipulando dados exclusivos de cada usuário. • Promove o uso mais eficiente da memória e um desempenho maior do sistema. Memória Principal código reentrante área de dados do usuário A usuário A usuário C usuário B usuário D área de dados do usuário B área de dados do usuário C área de dados do usuário D Em sistemas multiprogramáveis, é normal que vários usuários utilizem os mesmos aplicativos simultaneamente, como editores de texto, compiladores, entre outros utilitários. Nestes casos, se cada usuário que fosse utilizar um destes aplicativos trouxesse o código executável para a memória haveria então diversas cópias de um mesmo programa ocupando espaço na memória, o que causaria um grande desperdício de espaço. Estruturas dos Sistemas Operacionais • O SO, através de um conjunto de rotinas (tarefas), oferece serviços aos usuários do sistema, aos programas que estão sendo executados e a outras rotinas do próprio sistema. O conjunto destas rotinas é chamado Kernel (cérebro) ou Núcleo. AS PRINCIPAIS FUNÇÕES DO KERNEL SÃO: • tratamento de interrupções e exceções; • criação e eliminação de processos e threads; • sincronização e comunicação entre processos e threads; • escalonamento e controle dos processos e threads; • gerência de memória; • gerência de sistema de arquivos; • gerência de dispositivos de E/S; • suporte a redes locais e distribuídas; • contabilização do uso do sistema; • auditoria e segurança do sistema. Estruturas dos Sistemas Operacionais • Estrutura de um SO típico em detalhes: u su ár io si st em a so ft w ar e h ar d w ar e COMPONENTES MAIS RELEVANTES: • Núcleo: gerencia os recursos do hardware usados pelas aplicações. • Inicialização: reconhece os dispositivos instalados e carrega o núcleo do sistema na memória. • Drivers: módulos de código para acessar os dispositivos físicos. • Utilitários: funcionalidades complementares: formatação de discos, shell de comandos, interface gráfica, etc. Estruturas dos Sistemas Operacionais • Por questões de segurança, núcleo, drivers, utilitários e aplicações, devem ser diferenciados em sua capacidade de interagir com o hardware. – Enquanto o núcleo e os drivers devem ter pleno acesso ao hardware, para poder configurá-lo e gerenciá-lo, os aplicativos e utilitários devem ter acesso mais restrito a ele, para não interferir nas configurações e na gerência, o que poderia desestabilizar o sistema inteiro. No geral, os processadores modernos implementam 2 níveis de acesso: • MODO KERNEL (Usado pelo núcleo e drivers): Todas as instruções do processador podem ser executadas, e todos os recursos internos (registradores e portas de E/S) e áreas de memória podem ser acessados. • MODO USUÁRIO (Usado pelos utilitários e aplicações): Somente um subconjunto das instruções do processador e registradores estão disponíveis. EX: instruções consideradas “perigosas”, como RESET (reiniciar o processador) e IN/OUT (acessar portas de E/S), são proibidas. Tentativas de acesso inválidas geram exceções, abortando o programa em *execução. *Gerando a famosa frase “este programa executou uma instrução ilegal e será finalizado”, no caso do Windows. Modos/Níveis de Acesso Estruturas dos Sistemas Operacionais • O SO pode configurar a Unidade de Gerência de Memória* (MMU) para criar uma área de memória exclusiva para cada aplicação, isolada das demais e do núcleo. *Memory Management Unit. Separação do Núcleo Estruturas dos Sistemas Operacionais • Atua como um intermediário para que as aplicações acessem os serviços do Kernel chamando uma das suas rotinas (funções). O serviço é processado, com base nos parâmetros definidos na System Call, e retorna à aplicação os resultados obtidos. EXEMPLOS DE FUNÇÕES: • Abrir/ler/escrever/fechar arquivos; • Enviar/receber dados através da rede; • Ler teclado; • Escrever dados na tela. M o d o K e rn e l M o d o U s u á ri o M o d o U s u á ri o Chamada de Sistema (System Call - TRAP) Estruturas dos Sistemas Operacionais • As rotinas do sistema (System Calls) podem ser divididas por grupo de função: FUNÇÕES SYSTEM CALLS Gerência de processos e threads Criação e eliminação de processos e threads Alteração das características de processos e threads Sincronização e comunicação entre processos e threads Obtenção de informações sobre processos e threads Gerência de memória Alocação e desalocação de memória Gerência do sistema de arquivos Criação e eliminação de arquivos e diretórios Alteração das características de arquivos e diretórios Abrir e fechar arquivos Leitura e gravação em arquivos Obtenção de informações sobre arquivos e diretórios Gerência de dispositivos Alocação e desalocação de dispositivos Operações de entrada/saída em dispositivos Obtenção de informações sobre dispositivos Estruturas dos Sistemas Operacionais • O termo System Call é tipicamente utilizado em sistemas Unix, porém, em outros sistemas, o mesmo conceito é apresentado com diferentes nomes: – System Services – OpenVMS; – API¹ Win32 – MS Windows; – API POSIX² – Unix (A maioria dos SOs modernos oferecem algum suporte a esta API). ¹Application Program Interface; ² Portable Operating System Interface for Unix. #include <stdio.h> #include <stdlib.h> int main(void) { printf("Olá Mundo!\n"); return 0; } • As APIs permitem que os programadores não precisem conhecer os detalhes envolvidos, por exemplo, em um simples comando de leitura a um arquivo, utilizando uma linguagem de alto nível. • O comando da linguagem de alto nível é convertido pelo compilador para uma chamada a uma rotina específica que, quando executada, verifica a ocorrência de erros e retorna os dados ao programa de forma transparente ao usuário. Estruturas dos Sistemas Operacionais • Permite que o usuário se comunique de uma forma simples com o SO para realizar tarefas específicas. • Cada SO possui sua linguagem de comandos. • Após ser digitado, o comando é interpretado pelo shell (interpretador), que verifica a sintaxe do comando, faz chamadas a rotinas do sistema e apresenta um resultado ou imagem informativa. • Geralmente, o shell não faz parte do núcleo do SO, permitindo a criação de diferentes linguagens de controle para um mesmo sistema (ex. Unix). • Na maioria dos SOs, as linguagens de comandos evoluíram para permitir uma interação mais amigável com os usuários, utilizando interfaces gráficas. • As linguagens de comandos são poderosas, permitindo criar uma sequência de ações (scripts). Linguagem de Comandos Estruturas dos Sistemas Operacionais • Exemplos de comandos disponíveis no sistema Microsoft Windows. COMANDO DESCRIÇÃO dir Lista o conteúdo de um diretório cd Altera o diretório default type Exibe o conteúdo de um arquivo dell Elimina arquivos mkdir Cria um diretório ver Mostra a versão do Windows Estruturas dos Sistemas Operacionais • Quando o computador é ligado, não há SO carregado na memória da máquina. • O SO pode ser armazenado no HD ou CDs/DVDs. • Os componentes do SO são carregados na memória sempre que a máquina é ligada. • Ao ser desligado, as aplicações e componentes do SO são desativadas ordenadamente, garantindo sua integridade. Ativação (boot) /Desativação do Sistema (shutdown) Disco Memória Principal boot Sistema Operacional Área do Sistema Operacional Arquiteturas do Núcleo • SOs são normalmente grandes e complexas coleções derotinas de software. • Projetistas devem dar grande ênfase à sua organização interna e estrutura. • A estrutura do núcleo do SO, ou seja, a maneira como o código do sistema é organizado e o inter-relacionamento entre seus diversos componentes, pode variar conforme a concepção do projeto. Aspectos a considerar: • Separação entre núcleo e userspace; • Modularização; • Desempenho; • Segurança. VÍDEO: How Linux is Built: https://www.youtube.com/watch?v=yVpbFMhOAwE https://www.youtube.com/watch?v=yVpbFMhOAwE Monolítica Arquiteturas do Núcleo Mónos (único) + Líthos (pedra) = um bloco único. • É um “bloco maciço” de código que opera em modo núcleo, com acesso a todos os recursos do hardware e sem restrições de acesso à memória. • Os componentes internos do SO podem se relacionar entre si conforme suas necessidades. • Os primeiros SOs foram desenvolvidos com base neste modelo. • Vantagens: desempenho (qualquer componente do núcleo pode acessar os demais diretamente); rapidez; compactação. • Desvantagens: robustez (possíveis erros de acesso ao hardware); complexidade no desenvolvimento. Modo kernel aplicação aplicação Modo usuário System call Hardware Ex: MS-DOS, Windows 9x (95 - ME); UNIX; Linux. Microkernel Arquiteturas do Núcleo • Busca tornar o núcleo do SO o menor possível. • Os serviços do sistemas são disponibilizados através de processos responsáveis por oferecer um conjunto específico de funções (figura). • A principal função do núcleo é realizar a troca de mensagens (comunicação) entre a aplicação (cliente) solicitante de serviços, e um determinado processo responsável (servidor). • Vários SOs atuais adotam parcialmente essa estruturação (ex: MacOS X, Windows NT). • Vantagens: estabilidade; modularidade. • Desvantagens: baixo desempenho. Modo kernel Modo usuário Microkernel m e n sa g e m m e n sa g e m Hardware Ex: Minix 3, Symbian. Monolítica X Microkernel Arquiteturas do Núcleo Camadas Arquiteturas do Núcleo • Divisão em níveis sobrepostos (hierarquia). • Cada camada oferece um conjunto de funções que podem ser utilizadas apenas pelas camada superiores. • Neste tipo de implementação, as camadas mais internas são mais privilegiadas que as mais externas. • Muitos SOs mais recentes (ex: Windows NT e seus sucessores, Minix 3, Android) implementam parcialmente esta organização. • Vantagens: isolamento das funções do SO; fácil manutenção e depuração; criação de níveis de acesso, protegendo as camadas internas. • Desvantagens: baixo desempenho (dependendo do nível, é necessário passar por várias camadas). Ex: THE; MULTICS; OpenVMS. Sistemas híbridos Arquiteturas do Núcleo Misturam características dos anteriores: • Monolítico; • Micronúcleo; • em Camadas. • A maioria dos sistemas atuais é híbrida. • As primeiras versões do Windows NT podiam ser consideradas micronúcleo, mas a partir da versão 4 vários subsistemas foram movidos para dentro do núcleo para melhorar seu desempenho, transformando-o em um núcleo híbrido. Os sistemas MacOS e iOS da Apple também adotam um núcleo híbrido chamado XNU, construído a partir dos núcleos Mach (micronúcleo) e FreeBSD (monolítico). Ex: MacOS; Windows 10; MINIX. Máquina Virtual Arquiteturas Avançadas • Apesar de ser um conceito dos anos 1960, ganhou impulso a partir dos anos 2000, com a linguagem Java, a consolidação de servidores e, mais recentemente, a computação em nuvem. • A virtualização cria uma camada entre o hardware e o software que gerencia as VMs de forma independente, onde cada uma oferece uma cópia virtual do hardware (modos de acesso, E/S etc.). • Cada VM pode ter seu próprio SO; Ap1 V M 1 V M 2 V M n Gerência de Máquinas Virtuais Hardware SO1 HV1 Ap2 SO2 HV2 Apn SOn HVn HV: hipervisor, constrói as VMs a partir dos recursos do sistema real.
Compartilhar