Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Sistemas Operacionais Prof. Douglas Machado http://www.douglasmachado.com professor@douglasmachado.com v. 20110204 Sistemas Operacionais Sobre o professor Pesquisador no NP2TEC/UNIRIO (desde 2009) Professor na FES/JF (desde 2007) Coordenador do curso de Tecnologia em Redes de Computadores (desde 2010) Analista de sistemas em empresa privada (1999-2011) Certificado em Qualidade de Software (PROQUALITI) Mestrando em Informática (UNIRIO) Especialista em Melhoria de Proc. de Software (UFLA) Tecnólogo em Processamento de Dados (CES/JF) Técnico em Informática Industrial (UFJF/CTU) Sistemas Operacionais Por que estudar sistemas operacionais:? • Muitas mudanças têm ocorrido na área de TI • Computação ubíqua: os computadores estão cada vez mais presentes em nossas vidas: em casa, no trabalho, nos estudos, no lazer, no governo… • Grande quantidade de equipamentos: desktops, servidores, smartphones, notebooks, netbooks, tablets, consoles de games... • Os sistemas operacionais são fundamentais para o funcionamento da maioria desses equipamentos • Apesar das rápidas mudanças nos sistemas operacionais, os conceitos fundamentais continuam os mesmos Sistemas Operacionais Contextualização da disciplina • Ensinar os fundamentos de sistemas operacionais • Relacionar os fundamentos a tarefas e problemas conhecidos nas implementações mais usuais • Possibilitar a solução de problemas com fundamentação teórica • Possibilitar a solução de problemas fazendo bom uso das características de cada sistema • Fornecer grau de conhecimento que diferencie profissionais com uma formação adequada dos demais Sistemas Operacionais Ementa • Conceitos fundamentais de Sistemas Operacionais • Relações entre os sistemas operacionais conhecidos e respectiva classificação • Conceitos de unidade de alocação • Carga e execução de um programa (processos e threads) • Concorrência e sincronização entre processos • Mecanismos de gerência de recursos • Sistema de arquivos Sistemas Operacionais Objetivos gerais • Compreender os conceitos e características dos Sistemas Operacionais • Relacionar as atividades executadas pelo processador e demais componentes de um sistema de computação • Compreender os componentes necessários ao projeto dos sistemas operacionais • Relacionar os módulos de um sistema operacional com as atividades exercidas pelo usuário Sistemas Operacionais Objetivos específicos • Classificar adequadamente um sistema operacional • Compreender os conceitos e estados de processos e threads • Entender os mecanismos de alocação do processador • Identificar problemas de concorrência • Identificar problemas de alocação de memória • Entender os princípios de funcionamento de memória virtual • Relacionar as atividades do sistema com questões de desempenho • Entender o funcionamento de dispositivos de E/S • Entender a interface de dispositivos de E/S com o usuário e com o sistema operacional • Implementar regras de segurança de arquivos Sistemas Operacionais Unidades • Unidade I - Introdução a Sistemas Operacionais • Unidade II - Processos • Unidade III – Gerência de processador • Unidade IV - Gerência de Memória • Unidade V - Gerência de Entrada e Saída • Unidade VI - Sistema de Arquivos Sistemas Operacionais Unidade I – Introdução a Sistemas Operacionais • Conceitos Fundamentais de Sistemas Operacionais • Evolução Histórica dos Sistemas Operacionais • Classificação de Sistemas Operacionais • Interrupções • Conceitos de concorrência • Estruturas dos Sistemas Operacionais Sistemas Operacionais Unidade II – Processos • Conceito de Processo • Estados de um processo • Threads • Comunicação entre Processos • Sincronização entre Processos Sistemas Operacionais Unidade III – Gerência de Processador • Fundamentos • Critérios de Escalonamento – FCFS – Prioridade – SJF – Round Robin (Circular) – Múltiplas filas com realimentação • Cálculo estimado de tempo de resposta Sistemas Operacionais Unidade IV – Gerência de Memória • Funções • Espaço de Endereçamento Físico e Lógico • Estratégias de alocação • Memória Virtual Sistemas Operacionais Unidade V – Gerência de Entrada e Saída • Subsistemas de entrada e saída • Componentes de hardware de E/S • Componentes de Software de E/S Sistemas Operacionais Unidade VI – Sistema de Arquivos • Conceitos de Arquivos e Diretórios • Métodos alocação • Gerência de espaços livres • Proteção de acesso Sistemas Operacionais Bibliografia • Título : Arquitetura de Sistemas Operacionais • Autores : Francis Berenger Machado e Luiz Paulo Maia • Editora : LTC • Ano: 2007 • Edição: 4ª • Título : Fundamentos de Sistemas Operacionais • Autores : Silberschatz, Galvin e Gagne • Editora : LTC • Ano: 2009 • Edição: 6ª Sistemas Operacionais Mapa conceitual • <arquivo anexo> Sistemas Operacionais Relação com outras disciplinas • Organização de Computadores • Algoritmos Sistemas Operacionais Datas das avaliações • AV1: • AV2: • AV3: Unidade I – Introdução a Sistemas Operacionais Objetivos • Compreender as funções de um sistema operacional • Entender a posição que um sistema operacional ocupa em um sistema computacional • Conhecer os componentes de um sistema operacional • Conhecer a evolução histórica dos sistemas operacionais • Diferenciar os tipos de sistemas operacionais existentes • Compreender a importância de conhecer o funcionamento de um sistema operacional para solução de problemas Unidade I – Introdução a Sistemas Operacionais Conceitos fundamentais de sistemas operacionais • Conjunto de rotinas executado pelo processador • Conjunto de programas responsável pela gerência de recursos (hardware, segurança de acesso e utilização, interface com usuário) • Atua como uma interface entre o usuário e o computador (torna a utilização do computador mais fácil e segura) • Sem um sistema operacional um usuário precisaria conhecer profundamente detalhes sobre o hardware Conceitos fundamentais de sistemas operacionais Componentes básicos – Interface com usuário – Gerência de processador – Gerência de memória – Gerência de dispositivos – Sistema de arquivos • Componentes avançados – Segurança de acesso – Ferramentas de auditoria Conceitos fundamentais de sistemas operacionais Funções básicas: – Facilitar acesso aos recursos do sistema – Compartilhar recursos de forma organizada e protegida Conceitos fundamentais de sistemas operacionais program adores e ana listas m em ór ia d iscos UCP Usuár ios Hardw are Sistem a O peraciona lSistem a O peraciona l f i tas im pressoras m oni tores program as, sistem as e ap lica tivos usuários Conceitos fundamentais de sistemas operacionais Utilitários Circuitos Eletrônicos Microprogramação Linguagem de Máquina Sistema Operacional Aplicativos Evolução histórica dos sistemas operacionais Intimamente ligada à evolução dos computadores Antes da década de 1940: – 1642: Blaise Pascal (matemático francês) inventou uma máquina de somar – 1673: Gottfried Leibniz (matemático e filósofo alemão) criou uma máquina capaz de somar e multiplicar – 1820: Charles Colmar (francês) inventou uma máquina capaz de executar as quatro operações – 1822: Charles Babbage (matemático inglês) inventou uma máquina para cálculo de equações polinomiais – 1833: Charles Babbage (matemático inglês) aprimora a máquina anterior para executar qualquer tipo de operação Evolução histórica dos sistemas operacionais – 1854: George Boole (matemático inglês) criou a lógica booleana (base para o modelo de computação digital da década de 1940) – 1890: Herman Hollerith (fundador da IBM) cria os cartões perfurados • 1896: fundou a Tabulating Machine Company • 1924: mudou de nome para International Business Machine (IBM) – 1930: primeiras tentativas de se criar calculadoras eletrônicas Evolução histórica dos sistemas operacionais Década de 1940: – Primeiros computadores eletromecânicos (calculadoras) – Eram formados por milhares de válvulas – Ocupavam áreas enormes – Lentos e de funcionamento duvidoso – Utilizados basicamente para aplicações militares (cálculos matemáticos) Evolução histórica dos sistemas operacionais Mark I Evolução histórica dos sistemas operacionais ENIAC Evolução histórica dos sistemas operacionais EDSAC Evolução histórica dos sistemas operacionais Outros: – EDVAC – ORDVAC – ELLIAC – WEIZAC Evolução histórica dos sistemas operacionais Características mais comuns dos computadores da época – Para utilizá-los era preciso conhecer profundamente o hardware – A programação era feita em painéis, através de milhares de conectores, utilizando linguagem de máquina – Cálculos que levariam 24 horas para serem feitos manualmente eram feitos em questão de segundos – Programar cálculos simples era uma atividade que poderia durar dias – Não possuiam dispositivos de interface com usuário (teclado, monitor, mouse...) – Não existia o conceito de sistema operacional Evolução histórica dos sistemas operacionais Década de 1950: – Transistor substitui válvula e memória magnética passa a ser usada: • Processamento mais rápido e confiável • Acesso a dados mais rápido • Maior capacidade de armazenamento • Computadores menores – Empresas da época: Raytheon, RCA, Burroughs e IBM – Programas passam a ser perfurados em cartões, ao invés de serem codificados diretamente na máquina Evolução histórica dos sistemas operacionais Evolução histórica dos sistemas operacionais – Início do processamento batch • Programas eram escritos em cartões perfurados • Leitoras liam os cartões e gravavam em fita magnética • As fitas eram lidas e processadas, sendo os resultados gravados em outra fita • Os resultados eram então impressos Evolução histórica dos sistemas operacionais Processamento Processamento Processamento (a) (b) (c) fita de entrada fita de entrada cartões perfurados fita de saída relatórios fita de saída job 2 job n relatório 1 relatório 2 relatório n job 1 Evolução histórica dos sistemas operacionais – Principal vantagem: programas não precisavam ser submetidos um a um (com isso o processador ficava menos tempo ocioso) 1953 – Criação do primeiro sistema operacional – Desenvolvido pela General Motors (eram usuários do IBM 701) – Objetivo: automatizar tarefas manuais Surgimento das primeiras linguagens de programação “altonível” – FORTRAN – ALGOL – COBOL Programas deixam de ter ligação direta com o hardware dos computadores (facilidade e agilidade na criação de programas) Evolução histórica dos sistemas operacionais Linguagens de programação evoluem Sistemas operacionais evoluem: – Facilitação do trabalho de codificação, submissão, execução e depuração de programas – SOs passam a ter seu próprio conjunto de rotinas para operações de E/S – Programadores não precisam mais implementar rotinas de leitura/gravação para cada tipo de hardware (independência de dispositivos) – Sistemas operacionais da época: SOS (SHARE Operating System), FMS (FORTRAN Monitor System) e IBSYS (todos para máquinas IBM) Evolução histórica dos sistemas operacionais Década de 1960: – Redução dos custos: difusão de computadores nas empresas (antes restritos a aplicações militares e governamentais) – Aumento de poder de processamento e diminuição de tamanho dos computadores – Introdução das técnicas de multiprogramação, multiprocessamento, time-sharing e memória virtual – Substituição de fitas (sequenciais) por discos magnéticos: a ordem de execução dos programas batch pode ser facilmente alterada Evolução histórica dos sistemas operacionais – Sistemas operacionais da época: • MCP (Master Control Program) para o computador B-5000 (Burroughs): multiprogramação e memória virtual. • OS/360 para System/360 (IBM), que fazia uso de arquitetura escalonável: multiprogramação, sistema on-line, time-sharing. • CTSS (MIT) para o IBM 7094: tempo compartilhado. • Unix (Ken Thompson) para PDP-8 (DEC) // o Unix ainda não era conhecido por este nome – Introdução de novos dispositivos de E/S: terminal de vídeo e teclado Evolução histórica dos sistemas operacionais Década de 1970: – Principal SO: CP/M (Control Program Monitor), da Digital Research – Surgimento dos microprocessadores – Surgimento dos microcomputadores – Destaque para a criação da Apple e da Microsoft – Criação da linguagem de programação PASCAL – Criação da linguagem de programação C Evolução histórica dos sistemas operacionais Década de 1980: – IBM entra na briga pelo mercado de PCs, com o IBM PC, utilizando o sistema operacional DOS, comercializado pela Microsoft (muito semelhante ao CP/M) – Difusão de sistemas multiusuário – Universidade de Berkeley desenvolve sua própria versão do UNIX (BSD – Berkeley Software Distribution) – Destaque para a criação do protocolo TCP/IP – Principais Sos da época • DOS (Microsoft) • SunOS (Sun) • Sun Solaris (Sun) • Windows (Microsoft): interface gráfica • OS/2: interface gráfica Evolução histórica dos sistemas operacionais Década de 1990: – Consolidação dos SOs baseados em interface gráfica – Difusão das famílias Windows, Unix e Linux – Difusão do softwara aberto (MySQL, Apache, Linux...) – Consolidação de SOs para ambientes corporativos: Windows NT e Unix (HP-UX, IBM-AIX, Sun Solaris) Evolução histórica dos sistemas operacionais Evolução histórica dos sistemas operacionais Década de 2000: – Evolução do multiprocessamento – Introdução do conceito de processamento distribuído – Sistemas operacionais cada vez mais simples e intuitivos – Forte uso de linguagem natural, som e imagem Tipos de sistemas operacionais 2010 em diante: possivelmente haverá grande propagação de sistemas operacionais para dispositivos móveis Evolução histórica dos sistemas operacionais Tipos de sistemas operacionais Tipos de Sistemas Operacionais Sistemas Monoprogramáveis/ Monotarefa Sistemas com Múltiplos Processadores Sistemas Multiprogramáveis/ Multitarefa Tipos de sistemas operacionais Monoprogramáveis/monotarefa: – Gerenciam apenas uma tarefa por vez – Todos os recursos computacionais (CPU, memória e dispositivos de E/S) são alocados para um único programa – Mesmo que o processador esteja ocioso aguardando por uma operação de E/S (digitação/impressão de um dado, por exemplo), nenhum outro programa é executado – Foram utilizados nos primeiros computadores da década de 1960 e voltaram a ser usados nos computadores pessoais da década de 1970 Tipos de sistemas operacionais Memória Principal Dispositivos de E/S UCP programa/ tarefa Tipos de sistemas operacionais Multiprogramáveis/multitarefa: – Antes o processador ficava ocioso enquanto aguardava pela leitura ou gravação em um dispositivo de E/S – Em sistems multiprogramáveis os recursos computacionais são utilizados por diferentes programas – Quando o processador está ocioso (geralmente aguardando por uma operação de E/S), outro programa pode ser processado – Garantem um uso muito mais otimizado dos recursos do que os sistemas monotarefa, entretanto sua implementação é muito mais complexa Tipos de sistemas operacionais – Podem ser monousuário ou multiusuário – Monousuário: apenas um usuário interage com o sistema por vez – Multiusuário: mais de um usuário pode interagir com o sistema simultaneamente Tipos de sistemas operacionais Memória Principal Dispositivos de E/ S UCP programa/ tarefa programa/ tarefa programa/ tarefa programa/ tarefa programa/ tarefa Tipos de sistemas operacionais Tipos de sistemas operacionais Sistemas batch: – São também sistemas multitarefa – Foram implementados no início da década de 1960 – Os programas (também conhecidos como jobs) eram submetidos à execução através de cartões perfurados e armazenados em disco ou fica – Em seguida os programas aguardavam sua execução – As saídas eram gravadas em outra fita – Nesses sistemas a interação com o usuário não era necessária Tipos de sistemas operacionais Sistemas de tempo compartilhado: – São também sistemas multitarefa – O tempo de uso do processador é dividido igualmente para diferentes programas – Cada programa tem sua fatia de tempo (time-slice) – Se a time-slice não for suficiente, o programa em execução é substituído por outro e fica aguardando sua próxima execução – Tem-se a impressão de que o sistema está totalmente alocado para um determinado programa, quando na verdade o tempo está sendo compartilhado Tipos de sistemas operacionais Sistemas on-line: – São também sistemas multitarefa – Permitem a interação com o usuário – Normalmente o tempo de resposta para o usuário é baixo Tipos de sistemas operacionais Sistemas de tempo real: – São também sistemas multitarefa – Semelhante ao sistema de tempo compartilhado, entretanto não existe o conceito de time-slice – Um programa utiliza o processador o tempo que for necessário, até que haja algum programa com prioridade maior – Geralmente estão presentes em sistemas de missão crítica, como refinarias de petróleo, controle de tráfego aéreo, usinas termoelétricas e nucleares.... Tipos de sistemas operacionais Sistemas com múltiplos processadores – Também chamados de multiprocessados – São sistemas que têm a capacidade de gerenciar mais de um processador simultaneamente – Diferentes programas podem fazer uso de diferentes processadores – O mesmo programa pode fazer uso de mais de um processador – Tem os mesmos benefícios dos sistemas multiprogramados Tipos de sistemas operacionais Tipos de sistemas operacionais Tipos de sistemas operacionais Tipos de sistemas operacionais – Principais vantagens: • Escalabilidade: aumenta-se o poder de processamento simplesmente aumentando-se a quantidade de processadores • Disponibilidade: se um processador tem seu funcionamento interrompido, o trabalho é desviado para os demais Família Windows Versão Data Versão Data Windows 1.0 1985 Windows NT Server 4.0 1996 Windows 2.03 1987 Windows 98 1998 Windows 2.86 1989 Windows 2000 2000 Windows 3.0 1990 Windows 2000 Server 2000 Windows 3.1 1992 Windows Me 2000 Windows NT 3.1 1993 Windows XP 2001 Windows 3.11 1993 Windows Server 2003 2003 Windows 3.51 workstation 1995 Windows Vista 2006 Windows 95 1995 Windows 7 2009 Windows NT 4 1996 Windows 1.01 (1985) Windows 2.03 (1987) Windows 3.0 (1990) Windows 3.1 (1992) Windows NT 3.11 (1993) Windows NT 3.11 (1993) Windows NT 3.51 Workstation (1995) Windows 95 (1995) Windows NT 4.0 (1996) Windows NT Server 4.0 (1996) Windows 98 (1998) Windows 2000 (2000) Windows 2000 Server (2000) Windows Me (2000) Windows XP (2001) Windows 2003 Server (2003) Windows Vista (2006) Windows 7(2009) Unidade I: conceitos, evolução e classificação dos SOs Revisão 1. Ao longo do curso foram apresentadas diferentes definições para sistemas operacionais. Neste contexto, defina o que você compreendeu por ser um sistema operacional. 2. De acordo com o que foi estudado, um sistema operacional desempenha duas funções fundamentais para os sistemas computacionais. Descreva e explique essas funções. 3. Explique a diferença entre sistemas operacionais monotarefa e multitarefa. 4. Explique a diferença entre sistemas monousuário e multiusuário. 5. No contexto de sistemas operacionais, multitarefa tem o mesmo significado que multiprocessado? Explique. 6. Pode-se dizer que todo sistema operacional multiusuário é multitarefa? Explique. 7. Um sistema multitarefa é, necessariamente, um sistema multiusuário? Explique. Unidade I: conceitos, evolução e classificação dos SOs 8. Dentre os tipos de sistemas operacionais foi apresentado o sistema operacional de tempo real. Quais são as características desse tipo de sistema? 9. É correto dizer que em sistemas multitarefa a execução de diferentes programas é simultânea? Explique. 10.Explique como um usuário faria uso de um computador que não fosse dotado de um sistema operacional 11.Quais seriam as principais dificuldades de um programador no desenvolvimento de uma aplicação para um computador que não tivesse um sistema operacional? 12.Pode-se dizer que em sistemas monoprogramados há subutilização de recursos? Explique. 13.Um sistema monousuário pode ser, ao mesmo tempo, multitarefa? Explique. Unidade I: Introdução a Sistemas Operacionais Conceitos de concorrência Interrupções Estruturas dos sistemas operacionais Unidade I: concorrência, interrupções e estrutura Objetivos – Compreender os fundamentos de sistemas concorrentes – Entender a importância e o funcionamento dos mecanismos de interrupção – Identificar as estruturas existentes de sistemas operacionais – Entender o funcionamento de uma chamada ao sistema (system call) Unidade I: concorrência, interrupções e estrutura Concorrência – Segundo Pinkert (1990), sistema operacional pode ser definido como“conjuntoderotinasexecutadasdeformaconcorrentee ordenada” – Desta forma, o conceito de concorrência é fundamental para a implementação da multiprogramação – Possibilita que instruções sejam executadas ao mesmo tempo que outras operações (ex.: E/S) Unidade I: concorrência, interrupções e estrutura Monoprogramação x multiprogramação 2 (a) Sistema Monoprogramável tempo tempo E/S E/S UCP UCPlivre 11 1 (b) Sistema Multiprogramável Unidade I: concorrência, interrupções e estrutura – Em sistemas monoprogramáveis, perdia-se muito tempo de processamento durante as operações de E/S – Operações de E/S são muito mais lentas do que operações de processamento Unidade I: concorrência, interrupções e estrutura – Exemplo de utilização do sistema Leitura de um registro 0,0015s Execução de 100 instruções 0,0001s TOTAL 0,0016s % de utilização da CPU (0,0001/0,0015s) = 0,066 = 6,6% Unidade I: concorrência, interrupções e estrutura – Não é só o processador que é subutilizado em sistemas monoprogramáveis: memória e dispositivos de E/S (como discos, impressoras e etc.) também são – Destaca-sequeumatarefapodedeixaraCPUpor“vontade própria”(quandoaguardaumaoperaçãodeE/S,porexemplo) ou por uma interrupção Unidade I: concorrência, interrupções e estrutura Interrupções e exceções – Durante a execução de um programa podem ocorrer eventos inesperados – Esses eventos podem causar um desvio forçado no fluxo de execução de um programa – Tais eventos são conhecidos por interrupção ou exceção Unidade I: concorrência, interrupções e estrutura – Uma interrupção independe da instrução que está sendo executada – É sempre gerada por algum evento externo ao programa – São as interrupções que permitem que o sistema operacional sincronize diferentes atividades, como rotinas, programas dos usuários e dispositivos Unidade I: concorrência, interrupções e estrutura – Exemplo: • Suponhaqueo“Prog.2”estejafazendousodoprocessador enquantoo“Prog.1”fazusodeumaimpressora • Quando a impressão terminar, o processador precisa ser “avisado”dessaoperação • Neste momento tem-se a interrupção Unidade I: concorrência, interrupções e estrutura – Ao final da execução de cada instrução, a unidade de controle verifica se ocorreu alguma interrupção – Em caso positivo, o programa em execução é interrompido e o controle é desviado para uma rotina de tratamento de interrupção – Importante: para que o programa anterior à interrupção possa voltar a ser executado é necessário que algumas informações sejam preservadas (basicamente, o conteúdo dos registradores) Unidade I: concorrência, interrupções e estrutura Unidade I: concorrência, interrupções e estrutura – Parte da interrupção é executada via hardware, parte via software – Interrupção passo a passo: VIA HARDWARE: 1.Um sinal de interrupção é gerado para o processador 2.O processador termina de executar a instrução corrente 3.O processador identifica o pedido de interrupção 4.Os conteúdos dos registradores (PC e de status) são salvos 5.O processador identifica qual rotina de tratamento que será executada 6.O registrador PC é carregado com o endereço da rotina de tratamento de interrupção Unidade I: concorrência, interrupções e estrutura VIA SOFTWARE: 1.A rotina de tratamento salva o conteúdo dos demais registradores do processador na pilha de controle do programa 2.A rotina de tratamento é executada 3.A rotina de tratamento termina e restaura todos os registradores (PC, status e uso geral) 4.O programa interrompido retoma o uso do processador a partir de onde parou Unidade I: concorrência, interrupções e estrutura – Para cada tipo de interrupção existe uma rotina de tratamento – O fluxo de execução é sempre desviado para a rotina correspondente – No momento da interrupção o processador deve saber para qual rotina desviar o fluxo Unidade I: concorrência, interrupções e estrutura – Lembra-se dos conflitos de IRQ, comuns em versões antigas do Windows? Unidade I: concorrência, interrupções e estrutura – As interrupções são decorrentes de eventos assíncronos (que não têm relação com o programa que está em execução) – Esses eventos são imprevisíveis e podem ocorrer inúmeras vezes (ex: diferentes dispositivos de E/S informam ao processador que estão prontos para serem execu Unidade I: concorrência, interrupções e estrutura – As interrupções são decorrentes de eventos assíncronos (que não têm relação com o programa que está em execução) – Esses eventos são imprevisíveis e podem ocorrer inúmeras vezes (ex: diferentes dispositivos de E/S informam ao processador que estão prontos para serem executados novamente) – Dessa forma, pode acontecer de diferentes pedidos de interrupção serem gerados ao mesmo tempo – Algumas rotinas de tratamento de interrupção inibem outros pedidos de interrupção quando alguma rotina de tratamento está sendo executada (mascaramento de interrupções) – Outra maneira é controlar as interrupções por prioridades através do controlador de pedidos de interrupção (interrupções em cascata) Unidade I: concorrência, interrupções e estrutura – Exceções • É resultado direto da execução do próprio programa • Parte de um evento síncrono, e não de um evento assíncrono • Eventos síncronos são previsíveis e só podem acontecer um de cada vez • Se um programa for executado novamente com a mesma entrada de dados, a mesma exceção será gerada na mesma instrução • Exemplos: divisão por zero, overflow Unidade I: concorrência, interrupções e estrutura • O mecanismo de tratamento de exceção é bem semelhante ao tratamento de interrupções • A maior diferença é que o próprio programador pode escrever o mecanismo de tratamento de exceções • Isso evita que o programa será encerrado caso ocorra uma exceção • Em PASCAL pode-seusarafunção“try/except”,conforme exemplo a seguir Unidade I: concorrência, interrupções e estrutura Program divisor; var R1, R2: Double; begin Try Write('Digite um número: '); ReadLn(R1); Write('Digite outro número: '); ReadLn(R2); Writeln('Resultado da divisão do primeiro pelo segundo número:', R1/R2); except On EZeroDivide do Writeln('Você não pode dividir por zero!'); On EInOutError do Writeln('Este não é um número válido!'); end; end. Unidade I: concorrência, interrupções e estrutura Utilitários Hardware Núcleo do Sistema Operacional Aplicativos Unidade I: concorrência, interrupções e estrutura – Funções do kernel • Tratamento e 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 de processos e threads • Gerência de memória • Gerência do 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 Unidade I: concorrência, interrupções e estrutura – Os“problemas”damultiprogramação • Diversos usuários compartilham os mesmos recursos (memória, processador e dispositivos de E/S) – Como garantir a confiabilidade na execução concorrente de todos os programas? – Como garantir a confiabilidade nos dados dos usuários? – Como garantir a integridade do próprio sistema operacional? • Vários programas fazendo uso do processador – Comoimpedirqueumprograma“monopolize”ousodo processador? Unidade I: concorrência, interrupções e estrutura • Vários programas ocupam a memória simultaneamente – Como garantir para que cada programa tenha sua área reservada na memória, para armazenamento do código e dos dados? – Se um programa tentar acessar uma posição de memória fora de sua área, deve ser emitido um erro de violação de acesso Unidade I: concorrência, interrupções e estrutura – Para que diferentes programas acessem a mesma área de memória o sistema operacional deve prover mecanismos para essa atividade, que deve ser sincronizada e controlada • Um disco pode armazenar arquivos de diferentes usuários – Como garantir a integridade dos dados? – Como garantir a confidencialidade dos dados? – Como permitir que mais de um usuário tenha acesso ao mesmo arquivo? – Todos esses problemas originados da multiprogramação são tratados através dos mecanismos de proteção do sistema operacional (que controlam o acesso concorrente a diversos recursos do sistema) Unidade I: concorrência, interrupções e estrutura – Modo usuário • Programas só podem executar instruções não-privilegiadas • É concedido acesso a um número reduzido de instruções – Modo kernel • Acesso ao conjunto total de instruções do processador – Para que uma aplicação execute instruções privilegiadas (como gravar um arquivo em disco ou iniciar um novo processo) é necessário que o modo usuário seja alterado de usuário para kernel – Determinação do modo de acesso: • O modo de acesso corrente é determinado em um conjunto de bits localizado no registrador de status do processador • É o próprio hardware, através desse dispositivo, que verifica o modo de acesso antes de executar uma instrução Unidade I: concorrência, interrupções e estrutura – Uma aplicação só pode executar rotinas do SO através das system calls System Call Aplicação Biblioteca Hardware Núcleo do Sistema Operacional Núcleo do Sistema Operacional Unidade I: concorrência, interrupções e estrutura – Etapas • Uma aplicação deseja chamar uma rotina do SO • O mecanismo de system call é ativado • O SO verifica se a aplicação possui os privilégios necessários para executar a rotina do SO desejada • A partir daí a aplicação pode possuir ou não o privilégio necessário Unidade I: concorrência, interrupções e estrutura – 1o caso: a aplicação não possui o privilégio necessário • O SO impedirá o desvio para a rotina do sistema • O programa que solicitou acesso à rotina é informado da negação do pedido – Este é um mecanismo de proteção por software – O SO garante que aplicações só poderão executar rotinas do SO que estejam devidamente autorizadas – O mecanismo de autorizações será visto mais adiante Unidade I: concorrência, interrupções e estrutura – 2o caso: a aplicação possui o privilégio necessário • O SO salva o conteúdo corrente dos registradores • O SO troca o modo de acesso do processador de usuário para kernel • O SO realiza o desvio para a rotina (alterando o registrador PC para o endereço da rotina chamada) • Ao término da execução da rotina o modo de acesso retorna a usuário • O contexto dos registradores é restaurado • A aplicação continua a execução a partir da instrução que chamou a rotina do sistema Unidade I: concorrência, interrupções e estrutura Unidade I: concorrência, interrupções e estrutura – Proteção por hardware • Uma aplicação sempre deve ser executada com o processador em modo usuário • Se uma aplicação tentar executar uma instrução privilegiada diretamente (sem ser através de uma system call) o mecanismo de proteção por hardware garantirá a proteção do sistema • O próprio hardware do processador sinalizará um erro • Uma exceção é gerada e a execução do programa é interrompida • Esse mecanismo visa proteger o núcleo do sistema Unidade I: concorrência, interrupções e estrutura – Funções das 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 Unidade I: concorrência, interrupções e estrutura – Cada sistema operacional possui seu próprio conjunto de rotinas – Nomes, parâmetros e formas de ativação são específicos – Dessa forma, uma aplicação desenvolvida para utilizar chamada a rotinas de um determinado sistema operacional não pode ser portada diretamente para outro sistema Unidade I: concorrência, interrupções e estrutura GetSystemTime (SystemTime); DataHoraT := SystemTimeToDateTime(SystemTime); DataHoraS := DateTimeToStr(DataHoraT); RichEdit1.Lines.Add(DataHoraS); - A API GetSystemTime obtém a data e hora do MS Windows - A função SystemTimeToDateTime converte a data e a hora para o formato DataHoraT do Delphi - A função DateTimeToStr converte para o formato texto - A última linha exibe a data e a hora em uma janela Unidade I: concorrência, interrupções e estrutura – POSIX (Portable Operating System Interface for Unix) • Tentativa de criação de uma biblioteca de chamadas padrão • Inicialmente criado para unificação das várias versões do Unix • Atualmente a maioria dos SOs oferece algum suporte (Windows, IBM-AIX, HP-UX, Sun Solaris) Unidade I: concorrência, interrupções e estrutura – Linguagem de comandos – Trata-se de mais uma camada na estrutura do sistema operacional – Permite que o usuário se comunique diretamente com o sistema operacional – Cada comando é interpretado pelo interpretador de comandos (shell, no Linux) – Em geral, não faz parte do núcleo do sistema operacional Unidade I: concorrência, interrupções e estrutura – Alguns comandos Windows – ASSOC – Mostra ou modifica as associações feitas às extensões de arquivos – Digitar apenas ASSOC mostra todas as associações – Digitar ASSOC .bmp mostra o programa associado à extensão .bmp – Digitar ASSOC .bmp = “Imagem Paint” associa “ImagemPaint”àextensão.bmp Unidade I: concorrência, interrupções e estrutura – ATTRIB – Exibe ou modifica os atributos de um arquivo – Digitar ATTRIB arquivo.extensão mostrará os atributos de um arquivo específico – Digitar apenas ATTRIB mostrará os atributos de todos os arquivos do diretório corrente – Parâmetros – R read only (somente leitura) – A arquive (arquivo) – S system file (arquivo de sistema) – H hidden (oculto) – + acrescenta um atributo – - remove um atributo – Exemplo: ATTRIB + R teste.txt (torna o arquivo teste.txt somente leitura) Unidade I: concorrência, interrupções e estrutura – BCDEDIT – Gerencia as informações de boot que controlam o boot loader – CACLS – Gerencia a lista de controle de acesso (ACL) – CALL – Permite que um arquivo .bat seja chamado a partir de outro arquivo .bat – CD – Exibe o diretório local ou acessa outro diretório – Exemplo: – CD c:\windows altera o diretório atual – CD .. retorna um nível acima – CD ../.. retorna dois níveis acima Unidade I: concorrência, interrupções e estrutura – CHCP – Exibe ou altera o código de página do console – Digitar apenas CHCP mostrará o código atual – Digitar CHCP 850 alterará o código para 850 (multilingual latin I) – Exemplos de códigos: – 860 português – 437 americano – 866 russo Unidade I: concorrência, interrupções e estrutura – CHKDSK – Utilitário de checagem de disco – Pode checar uma unidade especificamente – Exemplo: – CHKDSK C: (irá checar apenas a unidade C) – CLS – “Limpa”atela – CMD – Permite checar e alterar vários parâmetros do interpretador de comandos – Exemplo: – CMD /t:64 altera as cores da fonte e do fundo – COLOR – Altera a cor de fonte e de fundo do interpretador de comandos Unidade I: concorrência, interrupções e estrutura – COMP – Compara arquivos – Sintaxe: comp arquivo1 arquivo2 [opções] – COMPACT – Compacta um arquivo – Só funciona em partições NTFS – Sintaxe: compact [opções] arquivo – /c compactar – /u descompactar – CONVERT – Converte um volume FAT em NTFS Unidade I: concorrência, interrupções e estrutura – COPY – Copia arquivos – Sintaxe: copy diretorio\arquivo_origem diretorio\arquivo_destino [opções] – Append de arquivos: copy arq1 + arq2 arq3 – Neste caso o conteúdo de arq1 e arq2 será colocado em arq3 – DATE – Informa a data do sistema e aguarda a digitação de uma nova – /t parâmetro que evita que o interpretador de comandos solicite a entrada de uma nova data Unidade I: concorrência, interrupções e estrutura – DEL – Apaga arquivos – DIR – Exibe os arquivos de um diretório – DISKCOMP – Compara o conteúdo de dois disquetes – DISKCOPY – Copia o conteúdo de um disquete para outro disquete – DISKPART – Utilitário de particionamento de disco – DRIVERQUERY – Exibe uma lista com todos os drivers instalados – ECHO – echo off :remove o prompt da tela – echo on :retorna com o prompt Unidade I: concorrência, interrupções e estrutura – EXIT – Sai do interpretador de comandos – FC – Compara dois ou mais arquivos e mostra a diferença entre eles – FIND – Procura por uma string em um arquivo – Sintaxe: find “string” path – FORMAT – Formata uma unidade de disco – FSUTIL – Exibe e configura informações do filesystem – FILETYPE – Associa descrições de arquivos a comandos Unidade I: concorrência, interrupções e estrutura – IF – Condicional “se” – Muito usado em arquivos .bat – Exemplos – IF EXIST teste1.txt echo o arquivo existe – IF NOT EXIST arq2.txt echo não existe – LABEL – Exibe informações sobre a partição e permite que se altere o nome do volume – MD – Cria um diretório – MOVE – Move arquivos de um diretório para outro – RD – Remove um diretório Unidade I: concorrência, interrupções e estrutura – REN – Renomeia arquivos – SUBST – Criar drives virtuais – Exemplo: – SUBST W: C:\Douglas – Será criado drive“W”que na verdade é um link para a pasta C:\Douglas – SYSTEMINFO – Exibe todas as informações do sistema (processador, memória, data de boot, nome do host, versão do BIOS, etc.) Unidade I: concorrência, interrupções e estrutura – TASKLIST – Exibe uma lista de todos os processos em execução (nome do processo, pid, utilização da memória, etc.) – TASKKILL – Interrompe uma tarefa ou processo – TIME – Exibe a hora atual – TREE – Exibe os diretórios deforma“gráfica” – TYPE – Exibe o conteúdo de um arquivo texto – VER – Exibe a versão do Windows Unidade I: concorrência, interrupções e estrutura – Tipos de estrutura – Os sistemas operacionais podem ser classificados quanto às atribuições do kernel – Arquitetura monolítica – Arquitetura em camadas – Arquitetura microkernel Unidade I: concorrência, interrupções e estrutura – Contextualizando... – Desenvolver um sistema operacional é extremamente complexo – Principais requisitos – Confiabilidade – Portabilidade – Fácil manutenção – Flexibilidade – Desempenho Unidade I: concorrência, interrupções e estrutura – Os primeiros sistemas operacionais foram desenvolvidos em Assembly – IBM OS/360 1 milhão de instruções – MULTICS 20 milhões de instruções – A vantagem do Assembly é o desempenho – A desvantagem é a complexidade – Com o tempo foram incorporadas linguagens de alto nível, como PL/I e Algol – Atualmente as mais comuns são C e C++ – Windows 2000: 40 milhões de LINHAS de código – Drivers, escalonador, rotinas de tratamento de interrupções e outras partes críticas continuam sendo feitas em Assembly Unidade I: concorrência, interrupções e estrutura – Arquitetura monolítica – Foi o modelo de desenvolvimento dos primeiros sistemas operacionais – Trata-se de um conjunto de módulos que funcionam como se fosse um único programa – Foi adotada no MS-DOS e nos primeiros sistemas UNIX Unidade I: concorrência, interrupções e estrutura Modo kernel aplicação aplicação Modo usuário System call Hardware Unidade I: concorrência, interrupções e estrutura – Arquitetura de camadas – Introduzida a partir do surgimento das técnicas de programação estruturada e modular – O sistema é dividido em níveis sobrepostos – Cada camada oferece um conjunto de funções que podem ser utilizadas apenas pela camada superior – Exemplos – THE (Technische Hogeschool Eindhoven) – Dijkstra (1968) – MULTICS – OpenVMS Unidade I: concorrência, interrupções e estrutura Unidade I: concorrência, interrupções e estrutura – Vantagens – As funções do sistema operacional ficam isoladas nas camadas mais internas (facilidade de manutenção e depuração) – Criação de uma hierarquia de modos de acesso, o que protege as camadas mais internas Unidade I: concorrência, interrupções e estrutura – Desvantagem – Desempenho – Cada nova camada implica uma mudança no modo de acesso – Atualmente a maioria dos sistemas operacionais utiliza o modelo de duas camadas – Modo usuário (não privilegiado) – Modo kernel (privilegiado) – A maioria das versões Unix e Windows se baseia nesse modelo Unidade I: concorrência, interrupções e estrutura – Arquitetura microkernel – Principal objetivo: tornar o núcleo do sistema operacional o menor e mais simples possível – Os serviços do sistema são disponibilizados através de processos – Cada processo é responsável por oferecer um conjunto específico de funções (gerência de arquivos, de processos, de memória, escalonamento, etc.) Unidade I: concorrência, interrupções e estrutura – Quando uma aplicação deseja um serviço, é realizada uma solicitação ao processo responsável, através de uma mensagem – A resposta se dá através do envio de outra mensagem – A principal função do núcleo é realizar esta comunicação (a troca de mensagens) Unidade I: concorrência, interrupções e estrutura Modo kernel Modo usuário Microkernel m en sa ge m m ensagem Hardware Unidade I: concorrência, interrupções e estrutura – Este conceito surgiu no sistema operacional Mach / Universidade Carnegie-Mellon (década de 1980) – Existiam, basicamente, quatro serviços – Gerência de processos – Gerência de memória – Comunicação por troca de mensagens – Operações de E/S Unidade I: concorrência, interrupções e estrutura – Neste modelo, se um serviço parar o kernel não é comprometido (aumento de disponibilidade) – Apesar das vantagens, sua implementação é muito mais difícil Unidade I: concorrência, interrupções e estrutura – Revisão 1. Explique o conceito de concorrência nos sistemas multiprogramáveis 2. Você considera que o mecanismo de interrupção é importante para a multiprogramação? Justifique. 3. Explique o mecanismo de funcionamento das interrupções 4. Dê exemplos de eventos associados ao mecanismo de exceções 5. Qual a diferença entre versão e distribuição Linux? 6. O que são instruções privilegiadas e não privilegiadas? 7. Dê um exemplo de como acontece a mudança de modo de acesso Unidade I: concorrência, interrupções e estrutura – Revisão 9. Explique como são os mecanismos de proteção do kernel 10. Explique o que são system calls 11. Compare as arquiteturas monolítica e de camadas, descrevendo suas vantagens e desvantagens 12. Descreva as vantagens e desvantagens da arquitetura microkernel Unidade I: concorrência, interrupções e estrutura Atividade prática. Todas as operações descritas nesta atividade devem ser realizadas no interpretador de comandos do Microsoft Windows, sem que seja feito uso da interface gráfica Para abrir o interpretador de comandos, siga os passos abaixo: 1. Clique em iniciar / executar 2. Digite CMD e tecle <enter> Unidade I: concorrência, interrupções e estrutura 1. Atravésdoprograma“edit”,crieumarquivotextocomumconteúdo qualquer e salve-ocomonome“arq1.txt” 2. Através do comando ATTRIB, verifique os atributos deste arquivo 3. Altereosatributosdoarquivopara“somenteleitura” 4. Verifique se os atributos foram atribuídos corretamente 5. Tenteeditarestearquivoparaconfirmarqueeleédotipo“somente leitura” 6. Removaoatributo“somenteleitura”everifiqueseoarquivopassou a ser editável 7. Crieumdiretóriochamado“dir1”eacesse-o 8. Em seguida, volte para o diretório anterior 9. Insira um pen-drive em seu computador e faça uma checagem de erros através do CHKDSK. Observe as informações no término Unidade I: concorrência, interrupções e estrutura 10. Altere a cor de fonte e de fundo de seu interpretador de comandos 11. Crie dois arquivos: arqA.txt e arqB.txt. Insira conteúdo diferente em ambos e compare, através do comando COMP, se eles são realmente diferentes 12. Através do comando COPY, faça uma cópia do arquivo arqB.txt e salve-o com o nome arqC.txt. Compare-os através do comando COMP e veja se eles realmente são iguais. 13. Altere uma única linha no arquivo ArqC.txt e compare-o com o arquivo ArqB.txt através do comando FC. 14. Explique a diferença entre a comparação feita com o COMP e com o FC nos exercícios anteriores 15. Compacte algum arquivo através do comando COMPACT e veja se o tamanho do arquivo diminuiu. 16. Tente compactar algum arquivo em um pen-drive. Analise e explique os resultados. Unidade I: concorrência, interrupções e estrutura 17. Experimente exibir a data e a hora do sistema operacional na tela 18. Apague o arquivo arqA.txt, através do comando DEL 19. Verifique, através do comando DIR, se o arquivo foi mesmo apagado 20. Altereonomedaunidade“C:”paraoseunome 21. Movaoarquivoarq1.txtparaodiretório“dir1” 22. Removaodiretório“dir1” 23. RenomeieoarquivoarqA.txtpara“arquivoA.txt” 24. Crie uma pasta para você em C:\Seu_nome” 25. Associeodrive“w”aessapasta 26. Grave um arquivo em w:\ e veja se este arquivo está em c:\seu_nome 27. Confira as informações exibidas pelo comando systeminfo Unidade I: concorrência, interrupções e estrutura 28. Observe a saída do comando TASKLIST 29. Interrompa algum processo através do comando TASKKILL e confira se ele realmente foi eliminado 30. Crie três diretórios no raiz do seu drive W. Em cada diretório, crie pelo menos um subdiretório. E em cada subditetório crie mais um subdiretório. No total, você terá criado 9 diretórios. 31. Através do comando TREE, visualize a estrutura criada no exercício anterior 32. Confira a versão de seu Windows através do comando VER Unidade I: concorrência, interrupções e estrutura Atividade prática extra. Leia o texto abaixo: William é um analista de suporte muito competente, que via telefone está tentando descobrir por que o software de automação comercial de seu cliente parou de funcionar. Todas as suas alternativas se esgotaram. William pede, então, ajuda ao programador que desenvolveu a aplicação. O programador nunca entra em contato com o cliente, mas precisa de uma série de informações para conseguir solucionar o problema. Ele então solicita que William repasse as seguintes informações: - Número da versão do Windows; - Lista de todos os arquivos que estão no diretório C:\Windows\System32 - Lista de todos os programas que estão em execução - Lista de todos os drivers instalados - Lista com todas as informações do sistema operacional (processador, memória disponível, memória alocada, etc.) - Atributos do arquivo C:\autoexec.bat Janete, secretária de William, não faz a mínima ideia de como obter essas informações. William não pode se deslocar até o cliente e nem pode acessar a máquina remotamente. Uma boa opção seria William enviar um arquivo .bat para Janete, de forma que ela apenas executasse-o e enviasse para William os arquivos com as respostas. Crie um arquivo .bat que obtenha todas as informações que William precisa e salve-as em arquivos separados (versao.txt, system32.txt, processos.txt, drivers.txt, info.txt, autoexec.txt) Referências EVOLUTION of Microsoft Windows – 1985-2009. Hongkiat.com. Disponível em: http://www.hongkiat.com/blog/evolution-of-microsoft- windows-1985-2009/. Acesso em 26/10/2010.