Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
10/04/2013 1 SISTEMAS OPERACIONAIS Prof. Dr. João Carlos de Moraes Morselli Jr. Departamento de Ciência da Computação B IBLIOGRAFIA 10/04/2013 2 B IB LIO G R A FIA MODERN OPERATING SYSTEMS. Autor: TANENBAUM, ANDREW S. Editora: S. Prentice-Hall Inc, Englewood Clifs 2003 (traduzido) MODERN OPERATING SYSTEMS. Autor: TANENBAUM, ANDREW S. Editora: S. Prentice-Hall Inc, Englewood Clifs 1975 (!!) MODERN OPERATING SYSTEMS. Autor: TANENBAUM, ANDREW S. Editora: S. Prentice-Hall Inc, Englewood Clifs 2010 (traduzido) 3 Edição BIBLIOGRAFIA SISTEMAS OPERACIONAIS 3 B IB LIO G R A FIA BIBLIOGRAFIA SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS: PROJETO E IMPLEMENTAÇÃO Autor: TANENBAUM, ANDREW S. Autor: WOODHULL, ALBERT S. Editora: BOOKMAN COMPANHIA ED SISTEMAS OPERACIONAIS Autor: SHAY, WILLIAM A. Editora: MAKRON 1996 4 10/04/2013 3 B IB LIO G R A FIA BIBLIOGRAFIA SISTEMAS OPERACIONAIS 5 SISTEMAS OPERACIONAIS UMA VISAO SISTEMATICA Autor: DAVIS, WILLIAM S. Editora: CAMPUS SISTEMAS OPERACIONAIS - CONCEITOS Autor: SILBERSCHATZ, ABRAHAM Autor: GALVIN, PETER BAER Editora: PEARSON BRASIL B IB LIO G R A FIA BIBLIOGRAFIA SISTEMAS OPERACIONAIS 6 OPERATING SYSTEM COMCEPTS, 6th Edition Autores: Abraham Silberschatz, Peter Baer Galvin, Greg Gagne SISTEMAS OPERACIONAIS Autores: Oliveira, R. S. Carissimi, A S.; Editora Sagra Luzzatto, Porto Alegre, 2ª Edição 2001 SISTEMAS OPERACIONAIS (2005) Deitel, Harvey M. / Deitel, Paul J. / Choffnes Prentice Hall Brasil Informatica-sistemas Operacionais 10/04/2013 4 A U LA R ED E AULA REDE : DATAS E MATERIAL DE ESTUDO 7 Acesso à Aula Rede A U LA R ED E QUANTO ÀS AULAS 8 Favor não gravar as aulasFavor não gravar as aulas Permitido uso do celular (toque baixo, atenda fora da sala) Permitido uso do celular (toque baixo, atenda fora da sala) Não rir das perguntas dos colegas Não rir das perguntas dos colegas 10/04/2013 5 R O TEIR O ROTEIRO 9 Módulo 1 Introdução Módulo 2 Processos e thread Módulo 3 IPC Módulo 4 Gerenciamento de memória Módulo 5 Sistemas de arquivos Módulo 6 Gerenciamento de IO Módulo 7 Estudos de casos MÓDULO 1: INTRODUÇÃO 10 10/04/2013 6 M Ó D U LO 1 : IN TR O D U Ç Ã O Definições Definição Tanenbaum “Software que controla o Hardware” Joseph Esot Érico “O sistema Operacional é a alma do computador” John Bab’Aca “O Sistema Operacional é um programa responsável por controlar o funcionamento do computador, como um gerente dos vários recursos disponíveis do sistema.” Tanembaum 11 Depois dos infrutíferos esforços de Babbage surgem progressos na construção de computadores; Surgem as primeiras máquinas de calcular (digital); Ciclos medidos em segundos; Relés substituídos por válvulas; Máquinas enormes; Realizavam cálculos numéricos (tabelas de senos, co- senos, etc); Programação feita via plugs; Surgem os cartões; Projeto do primeiro computador digital: Charles Babbage (1792-1871); Entretanto ele inicia (mas não vê terminada) sua “máquina analítica”; A máquina não possuía SO; Babbage percebe que seria necessário um “software” para ela: contrata Ada Lovelace (filha do poeta inglês Lord Byron). Foi a primeira programadora do mundo; PRIMEIRA GERAÇÃO (1945 -1955) : VÁLVULAS PREFÁCIO HISTÓRICO M Ó D U LO 1 : IN TR O D U Ç Ã O 12 10/04/2013 7 Augusta Ada King, Condessa de Lovelace (1815 - 1852) é principalmente conhecida por ter escrito um programa que poderia utilizar a máquina analítica de Charles Babbage. Ester Gerston “mandando ver” no ENIAC PRIMEIRA GERAÇÃO (1945 -1955) : REGISTROS FOTOGRÁFICOS M Ó D U LO 1 : IN TR O D U Ç Ã O 13 SEGUNDA GERAÇÃO (1955 -1965) : TRANSISTORES/ SO LOTE Transistores tornaram as máquinas mais confiáveis (as válvulas queimavam muito) para que pudessem ser fabricados comercialmente; Os jobs eram escritos em Fortran que depois eram transcritos nos cartões; Dos cartões os jobs eram gravados em fitas magnéticas. O compilador (Fortran) também deveria ser carregado (via cartões); Essas trocas demandavam muito tempo; • Na época as maquinas mais utilizadas eram: IBM 1401: Mais barata (!) utilizada como leitora de cartões (cartão para fita); IBM 7094: Mais cara (U$ 2.400.000,00) utilizada para computação propriamente dita; M Ó D U LO 1 : IN TR O D U Ç Ã O 14 Surge o Sistema em Lote(Batch) cuja função era carregar os compiladores e os jobs automaticamente a partir das fitas 10/04/2013 8 IBM 1401 IBM 7094 REGISTROS FOTOGRÁFICOS M Ó D U LO 1 : IN TR O D U Ç Ã O 15 � Havia grande número de computadores com características incompatíveis; Manter várias linhas de produção demandava grande custo; � IBM lança série System/360; Eram máquinas do porte da 1401 até máquinas mais potentes que a 7094; Todas com softwares compatíveis; � Eram utilizadas para computação científica e comercial; � Usavam Circuitos Integrados; Foi um sucesso instantâneo; Outros fabricantes imitaram(General Eletric); � Ainda existem máquinas desta geração trabalhando até hoje em grandes bancos; � O sistema operacional para a série era o OS/360 (basicamente em lote); � O OS/360 tinha que rodar em todas as máquinas da série, para isso código e mais código foram inseridos (começou aí !!); � SO ≈ Dinossauro (tamanho); � Multiprogramação; TERCEIRA GERAÇÃO (1965 -1980) : CIS E MULTIPROGRAMAÇÃO M Ó D U LO 1 : IN TR O D U Ç Ã O 16 10/04/2013 9 � Spooling (Simultaneous peripheral operation number) para os jobs; � Timesharing: Variante da multiprogramação onde cada usuário se conectava por terminal e utilizava o mainframe; � CTSS (Compatible time sharing system): primeiro SO importante com timesharing (1962); � Surgem alguns “minicomputadores”: DEC PDP-1 (1961) com 4K. Preço? U$120.000,00, 5% do preço do 7094; � MULTICS, sistema operacional interessante, porém que não decolou e serviu de inspiração para a criação do Unix; � IEEE desenvolve o padrão POSIX (Portable Operating System – IX); � Tanembaum desenvolve o Minix (mini Unix, educacional) e Linus Torvalds escreve, sobre o Minix, o Linux (versão gratuita do Minix). � Pra se ter uma idéia, o sistema de arquivos do Linux é do Minix TERCEIRA GERAÇÃO (1965 -1980) : CIS E MULTIPROGRAMAÇÃO M Ó D U LO 1 : IN TR O D U Ç Ã O 17 � LSI (Large Scale Integration): Circuitos integrados em larga escala (chips com milhares de transistores em um centímetro quadrado de silício); VLSI (Very). � 1974 Intel lança processador 8080. Base para o primeiro micro com disco flexível; Sistema Operacional CP/M (Control Program for Microcomputers); � Surge o microprocessador Z80 rodando com CP/M (reescrito); � Início dos anos 80 IBM lança padrão IBM PC e entra em contato com Bill Gates para licenciar seu interpretador Basic; � IBM pede a Gates um sistema operacional; Gates compra da Seattle Computer Products o DOS (Disk Operating System) por U$ 50.000,00 SÓ! � Gates cria a Microsoft e contrata Tim Paterson (que havia participado na criação do DOS). DOS é reescrito: MS-DOS. � Daí para frente parceria IBM e MS-DOS. $$$$$$$$$$$$ QUARTA GERAÇÃO (1980 - PRESENTE) : PC´S M Ó D U LO 1 : IN TR O D U Ç Ã O 18 10/04/2013 10 � PC/M e MS-DOS não tinham interface gráfica (o que é isso?); � Doug Engelbart da Stanford Research Institute desenvolve uma GUI (Graphical User Interface), com janelas, mouse, etc. � Steve Jobs (co-inventor do microcomputador Apple) tomou conhecimento da GUI e partiu para a implementação de um Apple com GUI. Surge o Apple Macintosh. � Gates gostou da idéia e “criou” o Windows. � Até 1995 o Windows era apenas um ambiente gráfico do MS-DOS; Até o Windows 95; � Windows 98, nada de novo. � Windows NT (New Technology), totalmente 32 bits; � Windows Me. � Windows XP/Vista/Seven ...Linux´s ... Unix´s .... QUARTA GERAÇÃO (1980 - PRESENTE) : PC´S M Ó D U LO 1 : IN TR O D U Ç Ã O 19 HOMENAGEM M Ó D U LO 1 : IN TR O D U Ç Ã O 20 MORRE DENNIS RITCHIE, CRIADOR DA LINGUAGEM C E DO UNIX Dennis Ritchie , mais conhecido como o criador da linguagem de programação C e co-criador do sistema operacional UNIX, morreu aos 70 anos de idade depois de uma longa doença, não especificada. O trabalho Ritchie com Ken Thompson no desenvolvimento do sistema operacional UNIX, levou-os a receber o Prêmio Turing em 1993, o a medalha de ouro no IEEE Hamming em 1990, a Medalha Nacional de Tecnologia em 1999 e, mais recentemente, o Prêmio do Japão de Informação e Comunicações em 2011 . O UNIX surgiu a partir de tentativas de Ritchie e de seus colaboradores para criar um sistema operacional mais simples, mais limpo e como uma reação à “síndrome do grande sistema”, que viram em sistemas operacionais contemporâneos a sua época. O UNIX não era apenas um código, mas uma cultura baseada em torno de idéias, tais como pequenos programas ligados por tubos. Foi a cultura Unix que inspirou Linus Torvalds a criar o Linux, o código aberto do sistema operacional UNIX- like. 10/2011 10/04/2013 11 �Permitir que os programas sejam executados sem a interferência de outros programas; �Impor um escalonamento entre programas que solicitam recursos; FUNÇÕES DE UM SISTEMA OPERACIONAL M Ó D U LO 1 : IN TR O D U Ç Ã O 21 � Permitir que os programas armazenem e obtenham informação; �Isolar os programas dos detalhes específicos de hardware; � Controlar o fluxo de dados entre os componentes de um computador; � Facilitar o acesso aos recursos do sistema. � Permitir que os programas independentes cooperem periodicamente e compartilhem informações; �Responder aos erros ou a solicitações dos usuários; programadores e analistas memória discos CPU Usuários Hardware Sistema Operacional fitas impressoras monitores programas, sistemas e aplicativos usuários VIRTUAL MACHINE M Ó D U LO 1 : IN TR O D U Ç Ã O 22 10/04/2013 12 MÁQUINA DE NÍVEIS Sistema Operacional Ling. Orientada a problemas Ling. de Montagem Linguagem de Máquina Microprogramação Lógica Digital M Ó D U LO 1 : IN TR O D U Ç Ã O 23 ARQUITETURA BÁSICA M Ó D U LO 1 : IN TR O D U Ç Ã O 24 10/04/2013 13 O ZOOLÓGICO M Ó D U LO 1 : IN TR O D U Ç Ã O Sistemas operacionais de computadores de grande porte. Sistemas operacionais de servidores. Sistemas operacionais de multiprocessadores. Sistemas operacionais de computadores pessoais. Sistemas operacionais de computadores portáteis. Sistemas operacionais embarcados. Sistemas operacionais de nós sensores (sensor node). Sistemas operacionais de tempo real. Segundo pesquisadores, sistemas sérios apresentam densidade de erro de 1 erro por 100 linhas de código. Assim, um s.o. de 5 milhoes de linhas apresenta 50 mil erros de kernel. 25 O Windows Vista possui 70 milhões de linhas. BOOT LINUX FREEBSD M Ó D U LO 1 : IN TR O D U Ç Ã O 26 10/04/2013 14 TRADUTORES M Ó D U LO 1 : IN TR O D U Ç Ã O De acordo com a forma com que a tradução é realizada, os tradutores podem ser definidos como: • Montadores (Ling Mont para Codigo Objeto) • Compiladores ou • Interpretadores Tradutor Programa Fonte Programa Objeto LINKER 27 PERGUNTINHA ... M Ó D U LO 1 : IN TR O D U Ç Ã O � A evolução dos sistemas operacionais está, grande parte, relacionada ao desenvolvimento de equipamentos cada vez mais velozes, compactos e baratos, e à necessidade de aproveitamento e controle desses recursos. � Hardware muito além do software. 28 Quem evoluiu mais ... Software Hardware ? 10/04/2013 15 DEBBUGER E LINGUAGEM DE CONTROLE (OU DE COMANDO) M Ó D U LO 1 : IN TR O D U Ç Ã O � O depurador (debugger) é o utilitário que permite ao usuário controlar toda a execução de um programa a fim de detectar erros na sua estrutura. Linguagem de controle: É também denominada de linguagem de comando. É a forma mais direta de um usuário se comunicar com o sistema operacional. Esta linguagem é oferecida pelo sistema operacional para que, através de comandos simples, o usuário possa ter acesso a rotinas específicas do sistema 29 MODO USUÁRIO E MODO KERNEL M Ó D U LO 1 : IN TR O D U Ç Ã O 30 • Thread (definir) em modo usuário UsuárioUsuário • Ganha mapa de memória diferente • Acesso a todos os recursos da máquina • Pilha própria • PC próprio KernelKernel 10/04/2013 16 KERNEL M Ó D U LO 1 : IN TR O D U Ç Ã O Conjunto de rotinas (procedimentos) que oferecem serviços aos usuários do sistema e suas aplicações, bem como a outras rotinas do próprio sistema ESTRUTURA DE UM SO Aglomerado de rotinas que interagem livremente; Não há nenhuma estrutura, o SO é escrito como uma coleção de procedimentos. Monolítico Pode ser comparada com uma aplicação que contém vários procedimentos que são compilados separadamente e depois linkados, formando um grande e único programa executável. Vantagem: Grande desempenho Desvantagem: O excesso de liberdade torna o sistema vulnerável. 31 Ex. Linux, Windows e FreeBSD. ESTRUTURA DE UM SO M Ó D U LO 1 : IN TR O D U Ç Ã O Em Camadas Divide o sistema operacional em camadas sobrepostas � cada modulo oferece um conjunto de funções que podem ser utilizadas por outros módulos; �módulos de uma camada podem fazer referência apenas a módulos das camadas inferiores; �Lembra paradigma camadas ISO/OSI Dijkstra na Holanda em 1968 Em lote, bem simples. Exemplo 1. Sistema THE (Technische Hogeschool Eindhoven) 32 10/04/2013 17 ESTRUTURA DE UM SO (CONTINUA EM CAMADAS) M Ó D U LO 1 : IN TR O D U Ç Ã O Exemplo 2. Sistemas MULTICS e VMS Camadas concêntricas (as mais internas são mais privilegiadas que as mais externas). Exemplo 3. Exemplo 4. UNIX 33 ESTRUTURA DE UM SO M Ó D U LO 1 : IN TR O D U Ç Ã O Cliente - Servidor Kernel Hardware Cliente Servidor Impressão Servidor Arquivo Modo usuário Modo kernel Request() Tendência dos sistemas operacionais modernos • tornar o núcleo do sistema operacional o menor e o mais simples possível; 34 10/04/2013 18 ESTRUTURA DE UM SO M Ó D U LO 1 : IN TR O D U Ç Ã O Máquina Virtual SO Virtual Programa Usuário SO Nativo Exemplos: PVM e MPI. Virtualização (VM Ware, Xen, Vbox, etc) 35 ESTRUTURA DE UM SO M Ó D U LO 1 : IN TR O D U Ç Ã O MicroKernel ExoKernel Exemplos: QNX, Android, Symbian e Minix 3 Código reduzido para melhorar confiabilidade. Núcleos com 3000 linhas, por exemplo. Ao invés de clonar uma máquina, como é feito em virtualização, é dado a cada usuário um subconjunto dos recursos da máquina (conceito de hypervisor). Exemplo: VM/370. 36 10/04/2013 19 ESTRUTURA DE UM SO M Ó D U LO 1 : IN TR O D U Ç Ã O Exokernel 37 TIPO DE SISTEMAS OPERACIONAIS M Ó D U LO 1 : IN TR O D U Ç Ã O 38 Multitarefa Multiprogramável Multiprocessado Monotarefa Monoprogramavel Sistemas Operacionais CPU Memória I/O Usuário Usuário Usuário 10/04/2013 20 SISTEMAS FORTEMENTE ACOPLADOS M Ó D U LO 1 : IN TR O D U Ç Ã O 39 UCP UCP Memória Principal Dispositivos de E/S Dispositivos de E/S SISTEMAS FRACAMENTE ACOPLADOS M Ó D U LO 1 : IN TR O D U Ç Ã O 40 UCP UCP Dispositivos de E/S Dispositivos de E/S link de comunicação 10/04/2013 21 SISTEMAS EM LOTE (BATCH) M Ó D U LO 1 : IN TR O D U Ç Ã O 41 � Os sistemas batch (lote) caracterizam-se por terem seus programas armazenados em disco ou fita, onde esperam para ser executados seqüencialmente. � Os jobs executados nesse sistema não exigem interação com os usuários, lendo e gravando dados em discos ou fitas. � Exs: compilações, link edições, entre outros. SISTEMAS DE TEMPO COMPARTILHADO (TIME SHARING) M Ó D U LO 1 : IN TR O D U Ç Ã O 42 � Os sistemas de tempo compartilhado (time-sharing) permitem a interação dos usuários com o sistema (interação on-line); � Compartilha o processador, a memória e os periféricos; � Cria um ambiente de trabalho dedicado a cada usuário. SISTEMAS DE TEMPO REAL � Os sistemas de tempo real (real-time) são bem semelhantes aos sistemas de tempo compartilhado. A maior diferença é o tempo de resposta regular exigido na execução das tarefas. � Não existe a idéia de fatia de tempo, um programa executa o tempo que for necessário, ou até que apareça outro prioritário em função de sua importância. 10/04/2013 22 EXEMPLOS M Ó D U LO 1 : IN TR O D U Ç Ã O 43 Windows Embedded Compact MULTIPROGRAMAÇÃO M Ó D U LO 1 : IN TR O D U Ç Ã O 44 tempo � Um dos problemas existente nos sistemas monoprogramáveis é a baixa utilização de recursos do sistema, como processador, memória e periféricos. Processo 1 Processo 2 10/04/2013 23 INTERRUPÇÕES (SIGNALS) M Ó D U LO 1 : IN TR O D U Ç Ã O 45 � Na execução de um programa, alguns eventos podem ocorrer durante o processamento (interrupções) , obrigando a intervenção do SO e o desvio no fluxo de execução; � Eventos responsáveis pelas interrupções: � execução de um programa; � gerado pelo SO; � gerado por dispositivo de hardware. Obs: Utiliza-se o barramento de controle para a emissão dos sinais de interrupção INTERRUPÇÕES (SIGNALS) M Ó D U LO 1 : IN TR O D U Ç Ã O 46 Interrupções de software ou traps gerada por um evento síncrono (o próprio processo provoca); Exemplo: “o processo C++ chama clrscr()” ; overflow; etc. Interrupções de hardware ou de E/S É gerada por eventos assíncronos (não é o próprio processo que gera. Pode ser o SO ou algum dispositivo de hardware); Exemplo: um periférico avisa à CPU que está pronto para transmitir algum dado. Interrupções por erro (exceções) ex: erro de paridade na memória. Interrupções de relógio Gerada pelo relógio do processador, serve para sincronizar as unidades. 10/04/2013 24 INTERRUPÇÕES M Ó D U LO 1 : IN TR O D U Ç Ã O 47 ..... ..... ..... ..... ..... Instrução 1 Instrução 2 Instrução 3 Instrução 4 Instrução 5 Instrução 6 Salvar os registradores Identifica a origem da interrupção Obtém o endereço da rotina de tratamento (chamada de vetor de int.) Restaura os registradores Rotina de Interrupção Interrupção Ex.: divisão por zero exemplo.c OPERAÇÕES de I/O M Ó D U LO 1 : IN TR O D U Ç Ã O 48 � Em sistemas mais primitivos, a comunicação entre a CPU e os periféricos era controlada por um conjunto de microinstruções especiais, denominadas instruções de I/O, executadas pela própria CPU. CPU Memória Controladora Discos Vídeo Rede Não existiam placas controladoras! Controladora Controladora 10/04/2013 25 BUFFERING M Ó D U LO 1 : IN TR O D U Ç Ã O 49 CPU Memória Controladora I/OBuffer Gravação Leitura Gravação Leitura Permite que a CPU continue realizando outras operações enquanto operações de I/O são realizadas. mailbox Som automotivo SPOOLING M Ó D U LO 1 : IN TR O D U Ç Ã O 50 � O Sistema Operacional mantém os dados separadamente (cada usuário). � Se não existisse o spooling o que aconteceria ? Arquivos de Spool SOPrograma 10/04/2013 26 REENTRÂNCIA M Ó D U LO 1 : IN TR O D U Ç Ã O 51 código reentrante área de dados do usuário A área de dados do usuário B área de dados do usuário C área de dados do usuário D Capacidade de um código de programa ser compartilhado por diversos usuários, ou mesmo outros processos, exigindo apenas uma cópia do código do programa na memória. PROTEÇÃO DO SISTEMA OPERACIONAL M Ó D U LO 1 : IN TR O D U Ç Ã O 52 � Alguns cuidados devem ser tomados pelo SO para proteger o sistema: � um programa não deve acessar a área de memória pertencente a outro programa; � o compartilhamento de dispositivos de I/O deve ser controlado de forma centralizada pelo SO; � toda vez que o usuário desejar utilizar um recurso, ele terá que requerer ao SO através system calls; SYSTEM CALLS Chamada ou invocação de uma rotina do kernel. 10/04/2013 27 SYS CALL´S M Ó D U LO 1 : IN TR O D U Ç Ã O 53 Para proteger o núcleo do sistema e como conseqüência os seus serviços, é implementado um mecanismo chamado de System Calls, ou chamadas do sistema. Gerência de Memória ex.: msgrcv Gerência de Memória ex.: msgrcv Gerência de Entrada e Saída ex.: filecopy Gerência de Entrada e Saída ex.: filecopy Gerência de Processos ex.: Kill Gerência de Processos ex.: Kill As System Calls podem ser divididas em grupos: EXEMPLO DE SYSCALL M Ó D U LO 1 : IN TR O D U Ç Ã O 54 Sintaxe: copyfile abc xyz //copia o conteúdo do arq abc em xyz, se este não existir cria. #include ... // definições de tipos, chamadas prototipadas, etc.. void main(int argc, char *argv[]); // argc =3 (num. arg. da chamada) // argv[0] = “copyfile”; argv[1] = “abc”; agrv[2] = “xyz” # DEFINE Buf_size 4096 // qtde. de info. A ser tratada (4K) #DEFINE MODE 0666 // modo arquivo (rw - rw -rw) void main (int argc, char *argv[]) { int src, dst, in, out; // identificadores e contadores do buffer char buf[Buf_size]; // buffer If (argc!=3) exit(); // num. param. Errados src = open(argv[1], RDONLY); If (src<0) exit(); // pau na abertura dst = creat(argv[2], MODE); If (dst<0) exit(); // pau na abertura ou criação copyfile 10/04/2013 28 EXEMPLO DE SYSCALL M Ó D U LO 1 : IN TR O D U Ç Ã O 55 // tudo certo para fazer a cópia While (1) { in = read(src, buf, Buf_size); If (in == 0) Break; out = write(dst, buf, in); } close(src); close(dst); exit(); } Núm. de bytes realmente lidos Quanto será escrito MODE DE EXECUÇÃO DOS PROCESSOS - PROTEÇÃO M Ó D U LO 1 : IN TR O D U Ç Ã O 56 O mecanismo de proteção é chamado de estado de execução. É uma característica, associada ao programa, que determina se ele pode ou não executar certas instruções ou rotinas. É divido em 2 estados: ♦Usuário: o programa só pode executar instruções que não afetem diretamente outros programas (Ex.: compilar, criar diretórios, etc.) ♦Supervisor: qualquer instrução pode ser executada e consequentemente, todas as rotinas do sistema (root). Programa Usuário B Programa Usuário A Chamada de rotina do sistema kernel Sistema operacional executa no modo servidor Programas dos usuários executam no estado usuário Memória 10/04/2013 29 O SO é formado por um conjunto de rotinas que oferecem serviços para os usuários do sistema e para o próprio sistema. Esse conjunto de rotinas é chamado de núcleo ou kernel. São funções do kernel: FUNÇÕES IMPORTANTES DO KERNEL M Ó D U LO 1 : IN TR O D U Ç Ã O 57 tratamento de interrupçõestratamento de interrupções criação e eliminação de processoscriação e eliminação de processos sincronização e comunicação entre processossincronização e comunicação entre processos gerência de: Memória, do Sistema de Arquivo e de I/Ogerência de: Memória, do Sistema de Arquivo e de I/O segurança do sistemasegurança do sistema M Ó D U LO 1 : E X ER C ÍC IO S 58 1. O que é multiprogramação ? 2. Explique a técnica de spooling. 3. Explique a técnica de reentrância. 4. Explique a técnica de buffering. 5. Qual a diferença entre uma trap e uma interrupção ? 6. Descreva o processo de interrupção. 7. Para um programador, uma chamada de sistema se parece com qualquer chamada a uma rotina de biblioteca. É importante que um programador saiba quais rotinas de biblioteca resultam em chamadas de sistema? Sob quais circunstâncias e por que? 8. Sob quais condições a multitarefa possui melhor desempenho ? 9. Cite 3 funções importantes do SO. Exercícios 10/04/2013 30 MÓDULO 2: PROCESSOS E THREADS 59 PROCESSO M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 60 Um processo é um programa em execução, ou melhor, um ambiente onde se executa um programa. 10/04/2013 31 PROCESSO M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 61 BLOCO DE CONTEXTO DO PROCESSO M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 62 O SO manipula o processo através de uma estrutura chamada PID Nome do Processo Estado do Processo Prioridade Lista de Arq. Abertos Limites de Memória . . . OBS: A execução de um mesmo programa em processo diferentes pode gerar resultados diferentes. BCP (Bloco de Controle de Processo). 10/04/2013 32 TROCA DE CONTEXTO M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 63 Quando um processo é interrompido para que outro processo utilize a CPU, é realizada a Troca de Contexto. Processo A Salva BCP de PA Salva BCP de PB Carrega BCP de PB Carrega BCP de PA executando Processo B executando executando ESTADOS DE UM PROCESSO M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 64 Um processo pode se encontrar em um dos seguintes estados: Execução, Pronto e Espera. Execução ProntoEspera B A C D 10/04/2013 33 ESTADOS DE UM PROCESSO LINUX M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 65 FILAS DE BCP´S M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 66 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . prontos BCP#5 BCP#9 BCP#1 BCP#2 BCP#4 espera 10/04/2013 34 PROCESSOS DO SITEMA OPERACIONAO (CLIENTE SERVIDOR) M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 67 Várias funções do SO são executadas na forma de processos, pois assim estamos diminuindo o tamanho do núcleo e economizando memória (pois cada processo pode ficar ativo ou não). Alguns exemplos: serviços de rede serviços de rede shellshell comunicação de eventos comunicação de eventos gerência de impressão gerência de impressão SHELL M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 68 10/04/2013 35 TIPOS DE PROCESSOS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 69 Os processos são classificados de acordo com o tipo de processamento que realizam. I/O-bound I/O CPU tempo I/O CPU tempo CPU-bound NOMENCLATURA LINUX M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 70 Processos interativos • são iniciados a partir de, e controlados por uma sessão terminal. Estes processos podem rodar tanto em foreground como em background. Processos batch • ou em lote, são processos não associados a nenhum terminal. Ao invés disso, são submetidos a uma fila, da qual jobs são executados seqüencialmente. UNIX oferece um comando batch muito primitivo Processos Daemons • são processos servidores (processos do SO), inicialmente inicializados durante o boot, que rodam continuamente enquanto o sistema estiver ativo, esperando, em background, até que um processo requisite seus serviços. Por exemplo, network daemons ficam em estado idle até que um processo requisite serviço de rede. 10/04/2013 36 PRODUTOR E CONSUMIDOR M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 71 Na maioria dos SO’s, é comum termos processos compartilhando recursos (arquivos, memória, etc. ). Mas este compartilhamento gera alguns problemas. O exemplo mais clássico de comunicação é o Produtor X Consumidor (processos concorrentes). PProdutor PConsumidor bufferbuffer M Ó D U LO 2 : E X ER C ÍC IO S 72 Exercícios 1.Considere a seguinte situação (Exclusão Mútua): Dois processos, executando paralelamente, desejam acessar uma mesma variável. Esboce um algoritmo que permita que os dois processos acessem essa variável sem que haja conflito. 2.Considere outra situação (Sincronização):Dois processos, executando paralelamente, acessam um mesmo vetor. Um dos processos consome informação do vetor e o outro produz informação. Supondo que o tamanho do vetor seja M, esboce um algoritmo que permita que os dois processos acessem esse dado sem que haja falta de dados ou excesso. 10/04/2013 37 P1 SUB-PROCESSOS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 73 Um processo (pai) pode criar outros processos (filhos) de forma hierárquica e estes também podem criar outros e assim por diante ..... P2 P3 P4 Cada processo tem o seu contexto de hardware, contexto de software e espaço de endereçamento distintos. Fork()Fork() Fork() THREADS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 74 � Num sistema multithread, cada thread do processo possui o seu contexto de hardware e software (pois uma thread “disputa” a CPU com as outras threads e processos). � A diferença com os sub processos é que todas as threads de um processo compartilham o mesmo espaço de endereçamento (gerando concorrência entre as threads). Contexto de hardware Contexto de hardware Contexto de hardware Espaço de endereçamento Co n te xt o de so ftw a re Thread 3Thread 2Thread 1 10/04/2013 38 THREADS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 75 Espaço de endereçamentoProcesso Programa Principal Co n te xt o de H a rd w a re Co n te xt o de H a rd w a re Co n te xt o de H a rd w a re Call Sub_1 Call Sub_2 Thread_1 Thread_2 Thread_3 PC SP PC SP PC SP Fim Sub_2 Variáveis Ret Sub_1 Ret . . . . . . THREADS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 76 10/04/2013 39 THREADS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 77 THREADS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 78 #include "mthread.c" #include "mtcrtlib.c" void proc_A(void) { int i; MTputs("\n A started\n"); for(i=0; i<300; i++){ MTputchar('A'); } MTputs("\nA finished\n"); } void proc_B(void) { int i; MTputs("\n B started\n"); for(i=0; i<300; i++){ MTputchar('B'); } MTputs("\n B finished\n"); } void proc_C(void) { int i; MTputs("\n C started\n"); for(i=0; i<300; i++){ MTputchar('C'); } MTputs("\n C finished\n"); }} void main(void) { MTInitialise(); MTputs("\nMicroThread demonstration"); MTAddThread(proc_A, 1); MTAddThread(proc_B, 1); MTAddThread(proc_C, 1); MTputs("\nStarting multithreading..."); MTStartMultiThreading(); MTputs("\nMultithreading ended"); 10/04/2013 40 TROCA DE MENSAGENS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 79 Outro mecanismo de comunicação / sincronização de processos são as rotinas SEND e RECEIVE (bloqueantes e não bloqueantes). Send(destino, mensagem); Receive(fonte, mensagem); Transmissor Receptor Transmissor Receptor mailbox RPC (1984) M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 80 Objetivo: Ocultar características inerentes às primitivas de comunicação (send e receive, que serão vistas mais adiante) Proposta: Permitir que programas chamem procedimentos localizados em outras máquinas sem utilizar explicitamente as rotinas de comunicação Processo A (); {... processo B(); ... } Máquina 1 Processo B (); {... ... ..... } Máquina 2 Meio de Comunicação 10/04/2013 41 RPC M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 81 Cliente empacota Desemp. STUB Servidor empacota desemp. STUB Meio Físico “Esta santa ignorância do cliente faz a beleza de todo o esquema” Tanembaum rotina REGIÃO CRÍTICA M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 82 Vamos verificar como ocorre o problema de compartilhamento de recursos, no nosso caso um arquivo. Num sistema bancário, vamos analisar o procedimento de atualização da conta corrente. READ (Arq_Contas, Reg_Cliente); READLN(Valor_Dep); Reg_Cliente.saldo :=Reg_Cliente.saldo + Valor_Dep; WRITE(Arq_Contas, Reg_Cliente); 10/04/2013 42 Para resolver o problema de compartilhamento de recursos podemos utilizar a idéia de exclusão mútua: .......... Protocolo-de-entrada-da-região-crítica; Região Crítica; Protocolo-de-saída-da-região-crítica; ........... Para garantirmos a exclusão mútua é necessário que o mecanismo que a implemente permita o acesso aos recursos compartilhados somente de forma sincronizada. REGIÃO CRÍTICA M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 83 REGIÃO CRÍTICA M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 84 10/04/2013 43 PROBLEMAS DE SINCRONIZAÇÃO M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 85 A sincronização, entre os processos que compartilham o mesmo recurso, enfrenta alguns problemas: ♦ Velocidade de Execução dos Processos; ♦ Starvation; ♦ Sincronização Condicional (recurso ainda não está pronto). VELOCIDADE DE EXECUÇÃO M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 86 char Vez; Processo_A( ) { do{ while(Vez==‘B’); Regiao_Critica( ); Vez=‘B’; ImprimeRelatório( ); }while(1); } Quando temos processos com velocidade de execução muito distintas, teremos o problema em questão: Processo_B( ) { do{ while(Vez==‘A’); Regiao_Critica( ); Vez=‘A’; }while(1); } main( ) { Vez=‘A’; PARBEGIN Processo_A( ); Processo_B( ); PAREND; } Starvation é a situação na qual um processo nunca consegue executar a sua região crítica (acessar o recurso compartilhado). Solução: Política de alocação de recursos. 10/04/2013 44 SINCRONIZAÇÃO CONDICIONAL M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 87 #define N 100; Main( ) { int count=0; PARBEGIN Producer( ); Consumer( ); PAREND; } void Consumer(void ) { int item; While (true) {if (count==0)* sleep(); Remove_item(&item); count--; if (count==N-1) wakeup(Producer); Consume_item(item); } } void Producer(void ) { int item; While(true) { Produce_item(&item); if (count==N) sleep(); Enter_item(item); count++; if (count==1) wakeup(consumer) } } SOLUÇÕES DE HARDWARE M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 88 Desabilitando Interrupções É uma solução simples e eficiente, basta desabilitar as interrupções (via instrução) antes de entrar na região crítica e habilitá-las novamente ao sair da região crítica. Como a troca de contexto só ocorre via interrupção, ela passará a não ocorrer durante a execução da região crítica. { Desabilita interrupções} Acessa {Habilita Interrupções} Qual a grande desvantagem? 10/04/2013 45 TEST AND SET M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 89 É uma solução utilizada no compartilhamento de memória. Uma instrução test-and-set, irá ler uma variável, armazenar o seu conteúdo numa outra variável e ter o seu valor atualizado. Todas estas atividades ocorrem de forma indivisível. Test-and-Set( X, Y ) {//onde: o valor lógico de Y é copiado para X e Y recebe o valor lógico verdadeiro(1). X=Y ; Y=1; } TEST AND SET M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 90 int Bloqueio; main( ) { bloqueio=0; PARBEGIN Processo_A( ); Processo_B( ); PAREND; } Processo_A( ) { do{ int espera_A = 1; while(espera_A) Test-and-Set(espera_A,bloqueio); Regiao_Critica( ); Bloqueio=0; }while(1);} Processo_B( ) {do{int espera_B = 1; while(espera_B) Test-and-Set(espera_B,bloqueio); Regiao_Critica( ); Bloqueio=0; }while(1);} BUSY WAIT 10/04/2013 46 SEMÁFOROS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 91 � Um semáforo é uma variável inteira, positiva, que é manipulada por duas primitivas: DOWN(s) e UP(s). Cada recurso tem um semáforo associado. � Dijkstra, 1965. Holanda Struct semaforo{ int valor; fila fila-espera; }; SEMÁFOROS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 92 A primitiva DOWN é o protocolo de entrada na região crítica, sendo que quando a variável semáforo tem o seu valor = 0 indica que o recurso já está em uso. Caso contrário, o recurso pode ser utilizado pelo processo (região crítica). { if (s>0) s=s-1; // acessa recurso else sleep(); } Down (s) 10/04/2013 47 SEMÁFOROS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 93 A primitiva UP é o protocolo de saída da região crítica, sendo que quando ela verifica se existe algum processo querendo utiliza o recurso (na fila), se tiver retira esse processo da fila e o coloca em execução. {if (tem_processo_esperando) wakeup(próximo_processo); else s = s +1;} Up (s) Processo acessa a região crítica SEMÁFOROS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 94 Processo deseja entrar na região crítica 10/04/2013 48 Processo acessa a região crítica SEMÁFOROS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 95 Processo deseja entrar na região crítica Processo acessa a região crítica Fila de espera de processos UP (S) - processo sai da região crítica Libera processo da fila de espera SEMÁFOROS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 96 Exemplo de semáforo implementando a exclusão mútua: main( ) {int s=1; PARBEGIN Processo_A( ); Processo_B( ); PAREND; } Processo_A( ) { do{ Down(s); Região_Crítica( ); Up(s); }while(1); } Processo_B( ) { do{ Down(s); Região_Crítica( ); Up(s); }while(1); } Processo_C( ) { do{ Down(s); Região_Crítica( ); Up(s); }while(1); } Processo_D( ) { do{ Down(s); Região_Crítica( ); Up(s); }while(1); } 10/04/2013 49 SEMÁFOROS: PRODUTOR E CONSUMIDOR M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 97 #define MAX 10; int vazio, cheio,mutex; char buffer[MAX]; main( ) { vazio=MAX; cheio=0; mutex=1; PARBEGIN Produtor( ); Consumidor( ); PAREND; } Produtor( ) { char d; do{ d=Produz_Dado( ); Down(vazio); Down(mutex); Grava_Dado(d,buffer); Up(mutex); Up(cheio); }while(1); } Consumidor( ) { char d; do{ Down(cheio); Down(mutex); d=Le_Dado(buffer); Up(mutex); Up(vazio); Consome_Dado(d ); }while(1); } SEMÁFORO MUTEX M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 98 10/04/2013 50 JANTAR DOS FILÓSOFOS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 99 PROBLEMA DOS COMBOIOS M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 100 10/04/2013 51 � O semáforo é uma ótima solução, mas depende muito do programador gerar um código correto para que funcionem. � Os monitores implementam de forma automática o acesso a região crítica. MONITORES M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 101 Declaração de variáveis globais Procedimentos Fila de entrada Inicialização de variáveis Proc. 1 Proc. 2 Proc. n M o n ito r DEADLOCK M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 102 Um processo está em deadlock quando espera por um evento que nunca ocorrerá. Esta situação ocorre quando vários processos compartilham vários recursos de forma exclusiva. PB PA Recurso 1Recurso 2 Recurso2 alocado por PB Recurso1 alocado por PA PA solicita Recurso2 PB solicita Recurso1 10/04/2013 52 DEADLOCK M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 103 DEADLOCK M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 104 Para ocorrer o deadlock é necessário que pelo menos 4 situações ocorram ao mesmo tempo: 1. Utilizar a exclusão mútua; 3. Não-preemptivo (o recurso não pode ser liberado para outro processo); 10/04/2013 53 ESCALONAMENTO DE PROCESSOS 105 O mecanismo responsável por escolher qual processo deve entrar em execução é chamado Escalonador (scheduler) e para realizar tal operação ele segue alguns critérios: � Utilização da CPU (utilização máxima da CPU);� Utilização da CPU (utilização máxima da CPU); � Throughput (processos por intervalo de tempo);� Throughput (processos por intervalo de tempo); � Tempo de Resposta.� Tempo de Resposta. � Turnaround (tempo entre o início e término);� Turnaround (tempo entre o início e término); M Ó D U LO 2 : P R O C ESSO S E T H R EA D S ESCALONAMENTO DE PROCESSOS 106 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S Objetivos dos algoritmos de escalonamento 10/04/2013 54 ESCALONAMENTO DE PROCESSOS 107 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S Alto Nível Médio Nível Baixo Nível Decidir quem entra ou não no sistema Quais processos podem realmente concorrer pela CPU Quais processos no estado “pronto” devem obter o controle da CPU ESCALONAMENTO DE PROCESSOS 108 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S Pode-se classificar as políticas de escalonamento de baixo nível em duas categorias: P4 P3 P2 CPU P1 P4 P3 P2 CPU P1 P5 Causas da preempção: Venceu o quantum, prioridade, etc. Não - Preemptivo Preemptivo 10/04/2013 55 ESCALONAMENTO DE PROCESSOS: FIFO 109 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S CPUABC Lista dos processos Prontos Características: • Fácil implementação; • Favorece os “idosos”; • Baixo overhead; • Começou, vai até o fim. Cuidados: • Processos I/O bound; • Tempo de espera pode inviabilizar; Término ESCALONAMENTO DE PROCESSOS: FIFO 110 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S CPUBC Lista dos processos Prontos Características: • Fácil implementação; • Favorece os “idosos”; • Baixo overhead; • Começou, vai até o fim. Cuidados: • Processos I/O bound; • Tempo de espera pode inviabilizar; Término 10/04/2013 56 ESCALONAMENTO DE PROCESSOS: FIFO 111 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S CPUC Lista dos processos Prontos Características: • Fácil implementação; • Favorece os “idosos”; • Baixo overhead; • Começou, vai até o fim. Cuidados: • Processos I/O bound; • Tempo de espera pode inviabilizar; Término ESCALONAMENTO DE PROCESSOS: POR REVEZAMENTO (ROUND ROBIN) 112 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S Término CPUABC RETORNA Lista dos processos Prontos Causas do retorno: • processo terminou; • expirou seu quantum; • espera um evento. Cuidados: • � No. Processos = � espera; • Calcular o quantum (complexo); algumas variantes propõem um tempo fixo para todos 10/04/2013 57 ESCALONAMENTO DE PROCESSOS: POR REVEZAMENTO (ROUND ROBIN) 113 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S Término CPUBCA RETORNA Lista dos processos Prontos Causas do retorno: • processo terminou; • expirou seu quantum; • espera um evento. Cuidados: • � No. Processos = � espera; • Calcular o quantum (complexo); algumas variantes propõem um tempo fixo para todos ESCALONAMENTO DE PROCESSOS: MULTIPLAS FILAS 114 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S CPU ABC Lista dos processos Prontos DEF GHI Término •cada lista com uma prioridade diferente •o escalonador busca um processo da lista com maior prioridade •para os processos com mesma prioridade = FIFO •processo interrompido pode voltar com prioridade diferente •os quanta podem variar por fila. 10/04/2013 58 ESCALONAMENTO DE PROCESSOS: MULTIPLAS FILAS 115 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S CPU BC Lista dos processos Prontos DEF GHI Término •cada lista com uma prioridade diferente •o escalonador busca um processo da lista com maior prioridade •para os processos com mesma prioridade = FIFO •processo interrompido pode voltar com prioridade diferente •os quanta podem variar por fila. ESCALONAMENTO DE PROCESSOS: MULTIPLAS FILAS 116 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S CPU C Lista dos processos Prontos DEF GHI Término •cada lista com uma prioridade diferente •o escalonador busca um processo da lista com maior prioridade •para os processos com mesma prioridade = FIFO •processo interrompido pode voltar com prioridade diferente •os quanta podem variar por fila. 10/04/2013 59 ESCALONAMENTO DE PROCESSOS: MULTIPLAS FILAS 117 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S CPU Lista dos processos Prontos DEF GHI Término •cada lista com uma prioridade diferente •o escalonador busca um processo da lista com maior prioridade •para os processos com mesma prioridade = FIFO •processo interrompido pode voltar com prioridade diferente •os quanta podem variar por fila. ESCALONAMENTO DE PROCESSOS: MULTIPLAS FILAS 118 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S CPU Lista dos processos Prontos EF GHI Término •cada lista com uma prioridade diferente •o escalonador busca um processo da lista com maior prioridade •para os processos com mesma prioridade = FIFO •processo interrompido pode voltar com prioridade diferente •os quanta podem variar por fila. 10/04/2013 60 ESCALONAMENTO DE PROCESSOS: MULTIPLAS FILAS 119 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S CPU Z Lista dos processos Prontos EF GHI Término •cada lista com uma prioridade diferente •o escalonador busca um processo da lista com maior prioridade •para os processos com mesma prioridade = FIFO •processo interrompido pode voltar com prioridade diferente •os quanta podem variar por fila. ESCALONAMENTO DE PROCESSOS: MULTIPLAS FILAS COM REALIMENTAÇÃO 120 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S 10/04/2013 61 ESCALONAMENTO DE PROCESSOS: SHORTEST JOB FIRST (SJF) 121 M Ó D U LO 2 : P R O C ESSO S E T H R EA D S � Para escolher qual processo entrará em execução, o SO deve selecionar o que necessita menor tempo para o seu encerramento. � Pode ser utilizado junto às políticas vistas anteriormente. � Possui uma variante: SRJN - Shortest Remaining Job Next, onde são escalonados os processos com menores tempos para serem terminados. ESCALONAMENTO DE PROCESSOS: SISTEMAS DE TEMPO REAL � São sistemas onde o fator tempo é crítico, não existindo portanto o fator time-slice ou quantum para o escalonamento do processo. � Toda vez que chega um novo processo na lista dos prontos é verificado se este é mais prioritário que o processo atualmente em execução, em caso afirmativo, o escalonador deve interromper a execução e colocar o processo mais prioritário em execução. M Ó D U LO 2 : E X ER C ÍC IO S 122 Exercícios 1.Diferencie subprocessos e threads. 2. Descreva o mecanismo utilizado pelo shell. 3. Implemente um processo que incremente uma variável até 100 e só depois outro processo deverá decrementar esta variável até zero. 4. Explique o código do produtor e consumidor. 5. Diferencie variáveis semáforos mutex e variáveis semáforos multivaloradas. 6. Explique o mecanismo de troca de contexto. Ache na literatura os valores de tempo que levam para a troca de contexto em um computador convencional. 7. Explique deadlock, starvation , busy wait e livelock. 8. Escreva sobre as políticas de escalonamento. 10/04/2013 62 MÓDULO 3: IPC - INTER PROCESS COMMUNICATION 123 IPC M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 124 PIPES SOCKETS PIPES SOCKETS 10/04/2013 63 IPC M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 125 PIPES PIPES PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 126 10/04/2013 64 PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 127 � Os pipes são canais de comunicação entre dois processos em uma mesma máquina. � Quando um processo escreve no pipe, o outro processo pode ler a partir dele. � Um pipe pode armazenar informação de forma que o processo escritor possa deixar lá várias mensagens, sem que o leitor as tenha lido primeiro. � Quando o pipe fica cheio, então sim, o processo escritor tem que suspender a sua atividade até que o leitor leia alguma das mensagens. PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 128 Nota: Nada impede um processo de ler no mesmo pipe que escreve. No entanto, o processo "arrisca-se" a ler o que escreveu! Após ser criado pela chamada de sistema pipe( ), retorna dois descritores, um para escrita e outro para leitura, que são manipulados pelas mesmas funções read( ) e write( ) utilizadas para manipulação de arquivos. 10/04/2013 65 PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 129 Antes, vamos relembrar a syscall FORK(): P1 P1’ Execução da fork() O Processo pai (P1) executa a chamada Fork(). Essa chamada cria um outro processo P2 (filho) com o MESMO CÓDIGO que P1. Id = fork() If (id>0) = pai If (id=0) = filho If (id<0) = PAU PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 130 10/04/2013 66 PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 131 PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 132 Declaração: int pipe1[2], // comunicação pai -> filho pipe2[2]; // comunicação filho -> pai Chamada: if (pipe(pipe1)<0 || pipe(pipe2) <0) { printf("Erro na chamada PIPE"); exit(0); } 10/04/2013 67 PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 133 Fork(): // Fork para criar o processo filho if ( (descritor = fork()) <0) { printf("Erro na chamada FORK"); exit(0); } if (descritor >0) // PROCESSO PAI { } else // PROCESSO FILHO {} if (descritor >0) // PROCESSO PAI { } else // PROCESSO FILHO {} PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 134 Pai Pipe1[0] close Pipe1[1] escrita Filho Pipe1[0] leitura Pipe1[1] close Neste pipe o pai escreve e o filho lê. 10/04/2013 68 PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 135 Pai Pipe1[0] close Pipe1[1] escrita Pipe2[0] leitura Pipe2[1] close Filho Pipe1[0] leitura Pipe1[1] close Pipe2[0] close Pipe2[1] escrita PIPE1 PIPE2 PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 136 10/04/2013 69 PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 137 PIPES M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 138 10/04/2013 70 IPC M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 139 SOCKETS SOCKETS SOCKETS M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 140 Objetivo: Comunicação entre processos em máquinas distintas. 10/04/2013 71 SOCKETS M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 141 SOCKETS M Ó D U LO 3 : IP C – IN TER P R O C ESS C O M M U N IC A TIO N 142 Ver código em aula rede (Lab de SO) 10/04/2013 72 MÓDULO 4: GERENCIAMENTO DE MEMÓRIA 143 OVERLAY M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 144 Memória Principal Cadastramento Impressão SO2 Kb 3 Kb 4 Kb 4 Kb 2 Kb 2 Kb 1 Kb Módulo principal Área de overlay Área livre Área não utilizada 10/04/2013 73 FRAGMENTAÇÃO EXTERNA M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 145 Memória PrincipalMemória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb 6 Kb Processo A Processo B C FRAGMENTAÇÃO INTERNA M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 146 Memória PrincipalMemória Principal Sistema Operacional 4 Kb 3 Kb 7 KbProcesso C 6 Kb Processo A Processo B C Quando o programa não é múltiplo do tamanho estabelecido para os blocos sobrará memória no último bloco que será desperdiça. 10/04/2013 74 GERENCIAMENTO DE MEMÓRIA M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 147 A gerência e organização da memória são fatores importantes no projeto de um SO, pois na maioria dos casos influenciam diretamente no seu desempenho. Os principais esquemas de organização e gerência da memória são: Memória Virtual; Alocação Contígua Simples; Alocação Particionada; ALOCAÇÃO CONTIGUA SIMPLES M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 148 Era utilizada em sistemas Monousuário / Monoprogramáveis. Sistema Operacional Área para o programa do usuário RAM Sistema Operacional Programa do usuário RAM Área livre Residentes Transientes 10/04/2013 75 GERENCIAMENTO DE MEMÓRIA: PARTICIONADA M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 149 A Alocação Particionada surgiu com os sistemas Multiprogramáveis / Multiusuários visando permitir o compartilhamento da memória. É dividida em: Alocação Particionada Estática Alocação Particionada Dinâmica PARTICIONADA ESTÁTICA M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 150 As partições têm o tamanho definido pelo SO na inicialização do sistema. ABCDE 3kb 6kb 1kb 4kb 2kb Sistema Operacional Partição1 - 2kb Partição2 - 5kb Partição3 - 8kbD AC BE 10/04/2013 76 PARTICIONADA ESTÁTICA M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 151 As partições têm o tamanho definido pelo SO na inicialização do sistema. ABCDE 3kb 6kb 1kb 4kb 2kb Sistema Operacional Programa A Programa E Programa B DC Área Livre Área Livre PARTICIONADA DINÂMICA M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 152 As partições têm o tamanho alterado de acordo com o tamanho dos programa. BCE Sistema Operacional 11kb Sistema Operacional Programa B Área Livre Programa C Programa A Programa E ABCDE 3kb 6kb 1kb 4kb 2kb 10/04/2013 77 ESTRATÉGIAS DE ALOCAÇÃO M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 153 Três Estratégias: Independente de qual estratégia é utilizada, SO mantém lista com endereços livres 1. Best Fit: Escolhe a melhor partição (aquela que o processo deixa o menor espaço sem utilização). Desvantagem: fragmentação. 2. Worst Fit: Escolhe a pior partição (aquela que o processo deixa o maior espaço sem utilização) 3. First Fit: Escolhe a primeira partição livre de tamanho suficiente para carregar o programa. A lista de áreas livres fica ordenada por endereços crescentemente. Desta forma, grandes partições podem ser alocadas no fim. Esta é a técnica mais rápida e mais utilizada. MEMÓRIA VIRTUAL M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 154 Memória Virtual: “Técnica de gerenciamento de memória que combina memória principal e secundária dando a ilusão que a memória principal é muito maior” Para que isto seja possível: Endereço Real ou Físico Endereço Virtual (disco) Tabela de Conversão 10/04/2013 78 MEMÓRIA VIRTUAL M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 155 Memória Virtual Memória Principal Memória Secundária SWAPPING M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 156 Trashing Falta espaço ou alto índice de page fault Memória Principal Sistema Operacional Programa A Programa G Swap out Programa E Programa B Memória Principal Sistema Operacional Programa A Área Livre Swap in Arquivo de Swap Programa E Programa H 10/04/2013 79 PAGINAÇÃO E SEGMENTAÇÃO M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 157 � MMU (Memory Management Unit) que fica no processador; � Para gerenciar a memória virtual (Swapping) existem duas técnicas: Paginação e Segmentação. As duas técnicas podem ocorrer (e na maioria das vezes ocorrem) ao mesmo tempo em um SO. O programa é dividido em páginas de tamanho fixo (definido pelo SO); Normalmente 4K. Cada página pode estar ou não na memória principal; Paginação Os programas são divididos logicamente em sub rotinas e estruturas de dados Cada segmento pode ter um tamanho diferente um do outro Segmentação SEGMENTAÇÃO M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 158 Página 0 Página 1 Página 2 Página 3 Página 4 Inicialização WHILE () DO BEGIN END; Imprime resultados Código muito conexo 10/04/2013 80 SEGMENTAÇÃO M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 159 Página 0 Fragmento 1 Página 2 Inicialização WHILE () DO BEGIN Imprime resultados END; WORKING SET M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 160 Taxa de page fault x limite de páginas reais � Dispositivo de hardware � Mapear endereços virtuais em endereços físicos sem passar pela tabela de páginas. Usualmente, ela faz parte da MMU. Constitui-se de um pequeno número de entradas, muito rápidas, contendo as tabelas de páginas mais utilizadas. � São rápidas pois a busca se dá pelo conteúdo e não pelo endereço. TLBs – Translation Lookside Buffers – Memória Associativa 10/04/2013 81 ESTRATÉGIAS PARA ATUALIZAÇÃO DE PÁGINAS M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 161 LFU (Least Frequently Used): Privilegia as que são mais acessadas. (Pode haver uma velhinha mas bastante acessada!) A melhor estratégia seria aquela que escolhesse para sair do working set aquela página que jamais será acessada (!) Estratégias Aleatória: Sem critério, retira qualquer página. FIFO: A primeira página utilizada será a primeira a sair. Simples LRU (Least Recently Used): Sai a que foi acessada menos recentemente (temporal). Boa estratégia. Overhead: atualizar acessos e buscar páginas. NRU (Not Recently Used): Sai a que NUNCA foi acessada. M Ó D U LO 4 : G ER EN C IA M EN TO D E M EM Ó R IA 162 Exercícios 1. Defina overlay e sua função. 2. O que aconteceria se um SO fosse privado da técnica de reentrância. 3. Qual a idéia de fragmentação. Diferencie os tipos. 4. Como funciona a memória virtual. 5. O que é MMU. 6. O que aconteceria se não existisse memória virtual em um computador. 7. Defina page fault e sua relação com o working set. 8. Descreva as diferenças entre paginação e segmentação. 9. Descreva as políticas de substituição de páginas. 10/04/2013 82 MÓDULO 5: SISTEMAS DE ARQUIVOS 163 SISTEMAS DE ARQUIVOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 164 Definição: “O sistema de arquivos de um SO é o módulo (ou conjunto de rotinas) do SO que associado à um protocolo de execução organiza, manipula e protege os arquivos”Eu A informação deve sobreviver ao término do processo; REQUISITOS BÁSICOS 10/04/2013 83 DIVERSIDADE DE SISTEMAS DE ARQUIVOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 165 CONTINUA ... M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 166 10/04/2013 84 PUTS ... AINDA CONTINUA M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 167 A opção do sistema de arquivos a ser usado depende da situação O DISCO M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 168 Cluster = conjunto de setores Um disco é formado por: faces, trilhas e setores. Exemplo: Num disco com2 faces, 80 trilhas, 18 setores e 512 bytes por setor Tem-se : 512 x 18 x 80 x 2=1,44 Mb 10/04/2013 85 TEMPO DE ACESSO M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 169 T = + + Deve atingir velocidade suficiente e constante t1 Busca pela trilha t2 Espera, na mesma trilha, a chegada do setor t3 Read/write t4 t1 t2 t3 t4+ CD M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 170 Compact Disk (CD ISO 9660) � Não existem cilindros concêntricos (espiral) � CD-ROM: Ausência de controle de blocos livres 16 blocos iniciais (cada bloco 2048 bytes) são para informações do fabricante (ex. boot) Depois mais um bloco com informações referentes ao volume, identificador do SO, do editor, etc. 10/04/2013 86 PARTIÇÕES M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 171 São divisões existentes no disco rígido que marcam onde começa onde termina um sistema de arquivos. Por causa destas divisões, nós podemos usar mais de um sistema operacional no mesmo computador (como o GNU/Linux, Windows e DOS), ou dividir o disco rígido em uma ou mais partes para ser usado por um único sistema operacional. Uma partição de disco não interfere em outras partições existentes, por este motivo é possível usar o Windows, GNU/Linux e qualquer outro sistema operacional no mesmo disco ARQUIVOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S Um arquivo é identificado por um nome e uma extensão. Ex: teste.txt (mera convenção p/ usuário). As Formas de Estrutura do Arquivo: Fornece flexibilidade, o usuário armazena qualquer tipo de dado nos arquivos. SO não ajuda, nem atrapalha Sequência de registros de tamanho fixo para poder fazer operações de leitura e gravação de uma só vez; Pré-história dos cartões: cada registro era constituído por 80 caracteres. Último SO que utilizou essa forma: CP/M-86, pai do MS- DOS, do Bill byte registro 10/04/2013 87 ARQUIVOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 173 Um arquivo pode ser constituído por uma árvore de registros A árvore é ordenada por uma chave para permitir buscas rápidas Objetivo não era determinar o próximo registro mas um entre vários. Alguns mainframes ainda utilizam. Ana Cláudia Teresa Beatriz Camila Daniele Patrícia Tina Vanessa Isabela Maria Registro TIPOS DE ARQUIVOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 174 TIPOS DE ACESSOS SEQUENCIAL ALEATÓRIO 10/04/2013 88 ATRIBUTOS DE ARQUIVOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 175 Além do nome e de um conjunto de informações, o arquivo também deve conter vários atributos que são importantes para o seu gerenciamento. OPERAÇÕES SOBRE ARQUIVOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 176 Create; Delete; Open; Close; Read; Write; Append; Seek; Get Attributes; Set Attributes; Rename; tmpusrlibect ect lib usr tmp edu ze edu ze CAMINHOS RELATIVOS X ABSOLUTOS 10/04/2013 89 DIRETÓRIOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 177 O SO utiliza um sistema hierárquico para manipular os arquivos, chamado diretório. Um diretório contém um conjunto de entradas, uma para cada arquivo ou diretório filho (subdiretório). DIRETÓRIO UNIX LIKE M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 178 bin Arquivos executáveis(binários) de comandos essenciais pertencentes ao sistema e que são usados com freqüencia. boot Arquivos estáticos de boot de inicialização(boot-loader) dev Arquivos de dispositivos de entrada/saída etc Configuração do sistema da máquina local com arquivos diversos para a administração de sistema. home Diretórios local(home) dos usuários lib Arquivos da biblilotecas compartilhadas usados com freqüencia mnt Ponto de montagem de partição temporários root Diretório local do superusuário (root) sbin Arquivos essenciais do SO tmp Arquivos temporários gerados por alguns utilitários usr Todos os arquivos de usuários devem estar aqui (segunda maior hierárquia) var Informação variável 10/04/2013 90 COMPARTILHAMENTO DE ARQUIVOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 179 Alguns arquivos devem compartilhados por vários usuários como: arquivos de configuração, bases de dados e arquivos de projetos, entre outros. / A B C A B C B B ? C C C Diretório Arquivo Dois diretórios (B e C) mantém entradas iguais. IMPLEMENTAÇÃO DE SISTEMAS DE ARQUIVOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 180 Um ponto importante no desempenho do SO é a maneira como é implementado o Sistema de Arquivos, ou seja, como os arquivos são associados aos blocos do disco. As implementações mais usuais são: Alocação Contígua Alocação Encadeada Alocação com Índices I - nodes 10/04/2013 91 ALOCAÇÃO CONTÍGUA M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 181 Problema: � É necessário sabermos o tamanho do arquivo no momento da sua criação; É o esquema mais simples de alocação. Arq1 Arq2 Arq3 Bloco 12K 10K 5K 3K ALOCAÇÃO CONTÍGUA M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 182 É o esquema mais simples de alocação. 10/04/2013 92 ALOCAÇÃO ENCADEADA M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 183 Bloco 0 do Arq1 Bloco 1 do Arq1 Bloco 2 do Arq1 0 Bloco 3 do Arq1 Bloco 0 do Arq2 Bloco 1 do Arq2 0 Bloco 2 do Arq2 � O acesso randômico ao disco é extremamente lento e mais difícil de ser implementado do que o seqüencial; � O tamanho do bloco não é totalmente utilizado para o armazenamento dos dados (2 bytes para o ponteiro). Consiste em manter o espaço alocado ao arquivo através de uma lista ligada de blocos, atenuando o problema da fragmentação. Problemas: ALOCAÇÃO ENCADEADA M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 184 Início 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Arquivo Bloco A.TXT 6 . . . . . . . . . . . . . . . . . . . . . . . . Cada bloco, em disco, deve armazenar o índice do próximo. A tabela só mantém o primeiro bloco do arquivo. 10/04/2013 93 LISTA DE ÍNDICE (FAT) M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 185 Problema: A tabela deve estar na memória principal durante todo o tempo (FAT). Este método resolve os problemas da Lista Ligada, mantendo os ponteiros em uma tabela. LISTA DE ÍNDICE (FAT) M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 186 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Bloco de Índices (FAT) 3 10 11 7 Vai para a memória RAM A tabela mantém todos os blocos do arquivo. 10/04/2013 94 I-NODES M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 187 I-NODES Não existe fragmentação: Todo arquivo é mantido a partir de um “ramo” da árvore. Qualquer acesso ao arquivo ficará limitado a este ramo. Na exclusão de arquivos desliga-se apenas os ponteiros para o bloco inicial. A combinação dos blocos, originalmente composto por 512K, pode ser alocado em conjunto a outros blocos formando espaços de endereçamento com diferentes tamanhos. Utiliza uma estrutura hierárquica maleável para endereçar os blocos do arquivo (é utilizado pelos UNIX- like). I-NODES M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 188 Atributos Endereço bloco 0 Endereço bloco 1 Endereço bloco 2 Endereço bloco 3 Endereço bloco 4 Endereços adicionais Endereços adicionais Endereços adicionais I-node Bloco de dados 10/04/2013 95 I-NODES M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 189 CONTROLE DE BLOCOS LIVRES M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 190 Existem três modos para controlar os blocos livres de um disco Blocos Livres Mapa de bits Tabela de blocos livres Lista de blocos 10/04/2013 96 LISTA DE BLOCOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 191 Cada bloco livre aponta para outro bloco livre. O primeiro da lista será o próximo a ser utilizado. Início Lista encadeada MAPA DE BITS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 192 Cada bloco do disco tem um bit correspondente, sendo que zero indica bloco livre e um indica bloco ocupado. Independente da quantidade de blocos livres temos o mesmo espaço ocupado pelo mapa de bits. (Ext3, etc) 11001101 11100000 . . . 01110100 10000111 Mapa de bits 10/04/2013 97 TABELA DE BLOCOS LIVRES ("ANTI-FAT") M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 193 O sistema operacional mantém em disco uma tabela (constantemente atualizada) que identifica o endereço dos blocos livres Bloco Endereço 4 2 10 1 25 20 13 7 50 5 Tabela de blocos livres FAT – FILE ALOCATION TABLE M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 194 Disco Rígido P1 P2 P3 ... A B C .... A. Setor de Boot Primário: contém informação para boot inicial, é lida pela ROM, altamente dependente de máquina, contém tamanho dos setores, tamanho do diretório raiz,qual partição está ativa, etc. B. C. Partições do disco: cada uma delas pode conter um sistema operacional diferente e independente. 10/04/2013 98 FAT – FILE ALOCATION TABLE M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 195 FAT1 FAT2 Root P1 DadosBS . Disco Rígido P1 P2 P3 ... A B C .... BS. Boot Secundário: contém endereços e info. sobre o SO que será carregado (end. do dir. raiz) FAT: Duplicada, contém entradas para cada bloco de dados Root: diretório raiz. Dados: dados do usuário FAT – FILE ALOCATION TABLE M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 196 X X eof 13 2 9 8 free 4 12 3 free eof eof eof eof 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 } Informações a respeito do tamanho do disco Arquivo A: 6 → 8 → 4 → 2 Arquivo B: 5 → 9 → 12 Arquivo C: 10 → 3 → 13 A entrada de cada diretório contém apenas o bloco inicial para cada arquivo. A FAT cuida do resto! 10/04/2013 99 NFS – NETWORK FILE SYSTEM M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 197 Primeiro passo para se ter um sistema distribuído. Filosofia que engloba os sistemas de arquivos para SO´s Unix-like, i. e., não representa um sistema de arquivos propriamente dito. NFS Arquitetura ProtocolosImplementação NFS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 198 Arquitetura � Idéia básica: compartilhar os arquivos comuns � Cada servidor exporta (automaticamente, no Boot) seus arquivos que estão no diretório /etc/exports � Muitas estações SUN são diskless, neste caso cada cliente monta (mount) seu próprio diretório no servidor 10/04/2013 100 Protocolos NFS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 199 � É a “conversa” que existe entre servidor e clientes para negociar o compartilhamento e acesso aos arquivos (tamanho dos nomes, atributos de segurança, propriedade, etc.) � Cada requisição pode exigir uma resposta � Não é necessário que o servidor conheça algo sobre seus clientes (idem ao contrário) NFS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 200 Cliente Chamada de sistema SO Local i-node MSG para servidor Servidor Sistema de arquivos virtual SO LocalServidor NFS i-nodeMSG do cliente Implementação Read, close, etc Sistema de arquivos virtual Identifica se o arquivo é local Cliente NFS Contém R-node 10/04/2013 101 JOURNALING M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 201 Ext3 (Third Extended File System) Ext3 = Ext2 + Journaling Journaling: baseado em transações de SGBD. É uma área reservada no disco onde funciona um sistema de log circular.Todas as operações solicitadas ao sistemas de arquivos são realizadas primeiramente no journal, somente após o fim das operações no journal é que as alterações são efetivadas no disco. SISTEMAS DE ARQUIVOS M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S 202 10/04/2013 102 203 Exercícios 1. Defina arquivo. 2. Descreva os principais atributos de um arquivo e alguns métodos. 3. Como pode ser realizada a implementação de um sistema de arquivo.] 4. Descreva os métodos vistos em aula sobre controle de blocos livres. 5. Porque não existe fragmentação em i-nodes. 6. Como funciona o protocolo NFS. 7. O que é uma “anti-fat”. 8. Descreva as formas de alocação de arquivos estudadas. 9. Descreva a relação SO virtual x sistemas de arquivos. M Ó D U LO 5 : SISTEM A S D E A R Q U IV O S MÓDULO 6: GERENCIAMENTO DE I/O 204 10/04/2013 103 205 M Ó D U LO 6 : G ER EN C IA M EN TO D E I/O TÓPICOS JÁ VISTOS spooling Paralelismo interno buffering interrupções 206 M Ó D U LO 6 : G ER EN C IA M EN TO D E I/O DISPOSITIVOS E SUAS CONTROLADORAS � Em sistemas mais primitivos, a comunicação entre a CPU e os periféricos era controlada por um conjunto de microinstruções especiais, denominadas instruções de I/O, executadas pela própria CPU. CPU Memória Controladora Discos Vídeo Rede Não existiam placas controladoras! Controladora Controladora 10/04/2013 104 207 M Ó D U LO 6 : G ER EN C IA M EN TO D E I/O DISPOSITIVOS E SUAS CONTROLADORAS As unidades de E/S consistem em : Componente Eletrônico (Controlador CI) Ex.: placa de vídeo Componente Mecânico Ex.: vídeo+ E/S A interface entre estes dois componentes é feita através de uma interface de nível muito baixo: “Escovação de bits”. Define-se fluxo de bits, preâmbulo de mensagens, etc. 208 M Ó D U LO 6 : G ER EN C IA M EN TO D E I/O FUNÇÕES DAS CONTROLADORAS Tratamento de erros nas operações de E/S Tratamento de erros nas operações de E/S BufferizaçãoBufferização Interface padronizada com os device drivers Interface padronizada com os device drivers Mecanismo de proteção de acesso aos dispositivos Mecanismo de proteção de acesso aos dispositivos 10/04/2013 105 209 M Ó D U LO 6 : G ER EN C IA M EN TO D E I/O TIPOS DE DISPOSITIVOS Blocos • HD, Floppy Disk, etc • Armazenam informações em blocos de tamanho fixo (512 Kb, 1024Kb, etc) • Lê-se um bloco n ou escreve-se um bloco n • A troca de informações é em fluxo de bits. Caracteres • Impressora, Mouse, Interface de Redes, etc. • Enviam e recebem um fluxo de caracteres sem considerar qualquer estrutura. • Tamanhos variáveis. 210 M Ó D U LO 6 : G ER EN C IA M EN TO D E I/O FORMAS DE REALIZAÇÃO DE I/O • O SO “vive” de interrupções. • CPU participa em todos os momentos E/S Programada • Nível de participação da CPU moderado • Ela é avisada quando necessário E/S Orientada à interrupção • Mínima participação da CPU nas operações de I/O. • DMA assume responsabilidades E/S por DMA 10/04/2013 106 211 M Ó D U LO 6 : G ER EN C IA M EN TO D E I/O DISCOS OPTICOS CD - ROM: � Maior densidade de gravação (pioneiros: Philips/Sony) � Suposta duração: 100 anos � Produção através de laser infra vermelho queimando orifícios de 0.8 mícron de diâmetro. � São feitas depressões (pits), em espiral, em uma resina de policarbonato em contrapartida às superfícies (lands) � Luz refletida na depressão acusa ‘bit’ 0 212 M Ó D U LO 6 : G ER EN C IA M EN TO D E I/O INTERAÇÃO 10/04/2013 107 MÓDULO 7: ESTUDOS DE CASOS 213 214 M Ó D U LO 7 : ESTU D O D E C A SO S ESTUDOS DE CASOS 10/04/2013 108 215 M Ó D U LO 7 : ESTU D O D E C A SO ESTUDO DE CASO 216 M Ó D U LO 7 : ESTU D O D E C A SO - SIN G U LA R ITY ESTUDO DE CASO: SINGULARITY � A Microsoft não está mais focada apenas no Windows como seu sistema operacional. Ela desenvolveu um novo SO baseado em microkernel, com cerca de 300.000 linhas de código, que não tem raízes no Windows. � Singularity é um projeto de SO da Microsoft focado no conceito de dependable systems, pense nisso como sistemas em que se pode confiar, de verdade, sistemas seguros não só em privilégios de acesso, senha, comunicação, vírus, invasões, etc.; mas até na forma em que os programas são desenvolvidos, instalados e interagem. � Cosmologia: singularidade é uma região do espaço-tempo onde as leis da física atualmente conhecidas entram em colapso e as equações perdem o seu significado - como o momento anterior ao BigBang.(!) 10/04/2013 109 217 M Ó D U LO 7 : ESTU D O D E C A SO - SIN G U LA R ITY ESTUDO DE CASO: SINGULARITY � Linguagem de programação que extendeu do Spec#, que por sua vez teve origem na C#, com a intenção de utilizá-la no desenvolvimento do projeto Singularity. � Implementa o suporte a utilização de canais de comunicação � Possibilita construções de programas em baixo nível. Um aspecto chave no Singularity é o modelo de extensão baseado em Software-Isolated Processes (SIPs), que encapsula pedaços de uma aplicação ou sistema e fornece informações, isolamento de falhas e interfaces fortes. SIPs são usadas por todo o sistema operacional e aplicações. �Por exemplo, cada programa, driver ou extensão do sistema roda em sua própria SIP. Elas não compartilham memória nem modificam seu próprio código. �SIPs são os processos do sistema operacional do Singularity: todo código fora do kernel (núcleo) é executado numa SIP. A Microsoft acredita que construir um sistema com esta abstração levará a programas mais confiáveis. 218 M Ó D U LO 7 : ESTU D O D E C A SO - SIN G U LA R ITY ESTUDO DE CASO: SINGULARITY � Componente privilegiado do Sistema � Possuí seu próprio coletor de lixo � Fornece Application Binary Interface (ABI, análogas às syscalls) �Troca de escalonador em tempo de compilação O kernel �Prevenção de erros desalocando memória. �Todo processo é passível ao coletor de lixo. �Não existe um GC universal �Cada SIP tem seu próprio GC �Escalonador independente de GC. Garbage Collection 10/04/2013 110 219 M Ó D U LO 7 : ESTU D O D E C A SO - SIN G U LA R ITY ESTUDO DE CASO: SINGULARITY 220 M Ó D U LO 7 : ESTU D O D E C A SO - SIN G U LA R ITY ESTUDO DE CASO: SINGULARITY 10/04/2013 111 221 M Ó D U LO 7 : ESTU D O D E C A SO – W IN D O W S V ISTA ESTUDO DE CASO 222 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA 1985 – windows 1.0 1987 – windows 2.0 Ms-dos Ms-dos based NT 2009 – windows 7 10/04/2013 112 223 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA 0 10000000 20000000 30000000 40000000 50000000 60000000 70000000 Linhas de Código 224 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA Linhas de Código 10/04/2013 113 225 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA “Mescla estranha entre um sistema de arquivos e uma base de dados...” Registros do Windows 226 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA Conceitos básicos para Gerenciamento de CPU 10/04/2013 114 227 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA Prioridades no Windows Vista 228 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA Sistema de Arquivos - NTFS 10/04/2013 115 229 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA O NTFS armazena os nomes de arquivos, diretórios e volumes usando Unicode. Foi usado o Unicode para tornar o sistema utilizável sem mudanças para qualquer tipo de idioma, tornando o sistema o mais universal possível. Unicode fornece um número único para cada caractere, não importa a plataforma, não importa o programa, não importa a língua. Qual o ascii desta letra do alfabeto cirílico (zé ou Je)?! Җ Alfabeto cirílico é um alfabeto cujas variantes são utilizadas para a grafia de seis línguas nacionais eslavas bielorrusso, búlgaro, macedônio, russo, sérvio e ucraniano) , ahhhh!!! Sistema de Arquivos - NTFS 230 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA Sistema de Arquivos - NTFS Capacidade de armazenamentoCapacidade de armazenamento NTFS aloca clusters e usa 64 bits para endereçá-los, cada um com até 64Kb. Cada arquivo pode ter até 1844674407370955161 6 bytes de extensão. (hexabytes: quinquilhão). NTFS aloca clusters e usa 64 bits para endereçá-los, cada um com até 64Kb. Cada arquivo pode ter até 1844674407370955161 6 bytes de extensão. (hexabytes: quinquilhão). O tamanho do cluster é ajustável, com um tamanho mínimo de 512 bytes para discos menores e máximo de 64Kb para discos grandes O tamanho do cluster é ajustável, com um tamanho mínimo de 512 bytes para discos menores e máximo de 64Kb para discos grandes Embora o NTFS use 64bits (8 bytes) para representar cada alocação de disco, ele codifica os endereços de modo que ocupem apenas de 3 a 5 bytes (meu Deus...) Embora o NTFS use 64bits (8 bytes) para representar cada alocação de disco, ele codifica os endereços de modo que ocupem apenas de 3 a 5 bytes (meu Deus...) 10/04/2013 116 231 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA Sistema de Arquivos - NTFS POSIX O sistema NTFS suporta POSIX (Portable Operating System Interface) totalmente. O padrão POSIX exige: nomes de diretórios e arquivos se diferenciem pela caixa alta e caixa baixa, uma marca de "hora de mudança do arquivo" e atalhos (links) Posix define características como proteção entre processos (crash protection), carregamento por demanda, redes TCP/IP, alem de nomes de arquivos com até 255 caracteres, suporte a UNICODE, shared libraries, memória virtual, etc. Posix define características como proteção entre processos (crash protection), carregamento por demanda, redes TCP/IP, alem de nomes de arquivos com até 255 caracteres, suporte a UNICODE, shared libraries, memória virtual, etc. 232 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA Sistema de Arquivos - NTFS Tabela de Arquivo Mestre (MFT – Master File Table) A MFT é a principal estrutura localizada no disco. A MFT é uma matriz de registro de arquivo de 1Kb cada, logicamente a MFT contém uma linha para cada arquivo no volume. Além da MFT cada volume contém uma série de arquivo de metadados (arquivo de log, arquivo de cluster defeituosos, além de outros usados pelo sistema), o restante dos arquivos são arquivos e diretórios de usuários. Ou seja, pegaram a FAT e deram um trato nela. Fizeram escova, passaram um batonzinho... 10/04/2013 117 233 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA Sistema de Arquivos - NTFS Compactação de dados O NTFS suporta a compactação dos dados do disco automaticamente, apenas é necessário especificar quais locais do volume serão compactados. Escolher esta opção de compactação dos dados denigre o desempenho do sistema para escrita e leitura dos dados, muitas vezes não sendo indicados para usuários que necessitem de desempenho, já que hoje em dia espaço em disco não é um custo tão alto A compactação no NTFS pode ser realizada em arquivo, diretório ou volume, além disso apenas arquivos do usuário são compactados, não compactando os arquivos de metadados (bitmaps, bootstrap, MFT,etc). 234 M Ó D U LO 7 : ESTU D O D E C A SO - W IN D O W S V ISTA ESTUDO DE CASO – WINDOWS VISTA Sistema de Arquivos - NTFS Tolerância a Falhas Conjunto de espelhos: No conjunto de espelho, o conteúdo de uma partição em disco é duplicado em uma partição do mesmo tamanho em outro disco. Quando um programa grava em C:, FtDisk grava os mesmos dados no mesmo local na partição espelho. Além disso, o conjunto espelho pode ajudar na atividade de I/O, em sistemas muito sobrecarregados, equilibrando suas operações de leitura entre as duas partições. As operações de leitura podem ser feitas normalmente, mas quando um arquivo é modificado as duas partições devem ser gravadas, mas as gravações são feitas assincronamente, de modo que o desempenho geralmente não é afetado pela atualização extra do disco. 10/04/2013 118 235 M Ó D U LO 7 : ESTU D O D E C A SO - LIN U X ESTUDO DE CASO 236 M Ó D U LO 7 : ESTU D O D E C A SO - LIN U X ESTUDO DE CASO: LINUX - SURGIMENTO MULTICS UNICS (UNIX)UNICS (UNIX) UNIX AT&TUNIX AT&T UNIX BERKELEY (BSD) UNIX BERKELEY (BSD) MINIXMINIX LINUX (1991) MIT, Bell e GEKen Thompson, da Bell em Assembly Em C aprimoramento de “B” de BCPL por Dennis Ritchie e Ken Thompson Embate entre as duas versões origina o POSIX Tanembaum 11.800 linhas C e 800 assembly Linus Torvalds e Richard Stallman (GNU) 10/04/2013 119 237 M Ó D U LO 7 : ESTU D O D E C A SO - LIN U X ESTUDO DE CASO: LINUX – IDENTIFICAÇÃO DO KERNEL A.B.C.D Revisões mínimas Versão do núcleo Revisões Importantes Correção de pequenos erros 100 mais populares 238 M Ó D U LO 7 : ESTU D O D E C A SO - LIN U X ESTUDO DE CASO: LINUX – DISTRIBUIÇÕES 10/04/2013 120 239 M Ó D U LO 7 : ESTU D O D E C A SO - LIN U X EVOLUÇÃO DA POPULARIDADE DAS DISTRIBUIÇÕES 240 M Ó D U LO 7 : ESTU D O D E C A SO - LIN U X CAMADAS DO LINUX 10/04/2013 121 241 M Ó D U LO 7 : ESTU D O D E C A SO - LIN U X KERNEL DO LINUX 242 M Ó D U LO 7 : ESTU D O D E C A SO - LIN U X ESCALONAMENTO NO LINUX FIFO Tempo Real • Maior prioridade entre as 3 classes • Não sofrem preempção, exceto por uma thread da mesma categoria mas que acabou de ser gerada • Prioridades de 0 a 99 Chaveamento Circular em Tempo Real • Parecida com as FIFOS, porém, preemptivas e com quantum. Tempo Compatilhado • Convencionais • Prioridades de 100 a 139. Linux distingue três classes de threads 10/04/2013 122 243 M Ó D U LO 7 : ESTU D O D E C A SO - LIN U X ESCALONAMENTO NO LINUX: FILA DE EXECUÇÃO Threads expiradas Threads Ativas Próxima a executar 244 M Ó D U LO 7 : ESTU D O D E C A SO - S YM B IA N ESTUDO DE CASO: SYMBIAN 10/04/2013 123 245 M Ó D U LO 7 : ESTU D O D E C A SO - SYM B IA N ESTUDO DE CASO: SYMBIAN Motorola EricssonNokia Psion Symbian Sistema Operacional EPOC 246 M Ó D U LO 7 : ESTU D O D E C A SO - SYM B IA N ESTUDO DE CASO: SYMBIAN 10/04/2013 124 247 M Ó D U LO 7 : ESTU D O D E C A SO - SYM B IA N ESTUDO DE CASO: SYMBIAN Orientado a objetos Cliente-servidor Foco em smartphones Busca pelo desempenho Microkernel Multitarefa e multithread Suporta FAT-16 FAT-32 e NTFS 248 M Ó D U LO 7 : ESTU D O D E C A SO - SYM B IA N SYMBIAN Por ser microkernel, as chamadas de sistemas são realizadas através de troca de mensagens entre os objetos. Isso degrada um pouco o desempenho. Nanonúcleo possui as funções mais básicas do Symbian Aplicações modo usuário Aplicações modo usuário Servidores do núcleo: Telefone, tela, etc Servidores do núcleo: Telefone, tela, etc NúcleoNúcleo NanonúcleoNanonúcleo 10/04/2013 125 249 M Ó D U LO 7 : ESTU D O D E C A SO - SYM B IA N SYMBIAN