Sistemas Operacionais Aula 01 - Introdução Prof. Maxwell Anderson www.maxwellanderson.com.br Capítulo 1: Introdução • • • • • O que é um sistema operacional? Componentes de um sistema operacional O que faz parte de um sistema operacional? Sistema operacional como máquina virtual (estendida) Sistema operacional como gerenciador de recursos O que é um sistema operacional? • Um programa que atua como intermediário entre o usuário e o hardware de um computador. • Propósitos de um sistema operacional: – Executar programas do usuário; – Tornar o uso de um sistema computacional conveniente; • Usar o hardware de um computador de uma maneira eficiente Um sistema operacional é um componente importante de um sistema computacional. Um sistema computacional pode ser dividido em três camadas importantes: Sistema bancário Navegador WEB Jogos Compiladores Editores Interpretador de comandos Sistema operacional Hardware Sistema operacional Programas de sistema e aplicativos Linguagem de máquina Hardware • • • Programas de sistema e aplicativos Componentes de um sistema computacional Microarquitetura Dispositivos físicos Componentes de um sistema computacional Hardware – Fornece os recursos básicos para computação – É composto por: • Unidade Central de Processamento (CPU) • Memória • Dispositivos de entrada e saída (I/O – Input/Output) – Possui os níveis: Linguagem de máquina Microarquitetura Dispositivos físicos Componentes de um sistema computacional Dispositivos físicos – – – – Chips de circuitos integrados Fontes de alimentação Tubos de raios catódicos ou telas LCD Fios Linguagem de máquina Microarquitetura Dispositivos físicos Componentes de um sistema computacional Microarquitetura – Registradores – Caminho de dados Microarquitetura Dispositivos físicos Componentes de um sistema computacional Linguagem de máquina – – – – Conjunto de instruções em nível de linguagem de máquina Também chamado de nível ISA - Instruction Set Architecture Uma CPU possui cerca de 50 a 300 instruções O conjunto de instruções controlam tudo o que a máquina pode fazer Linguagem de máquina Microarquitetura Componentes de um sistema computacional Linguagem de máquina – instruções típicas – LOAD, STORE - realizam o movimento de dados e instruções entre memória e registradores – MOVE - realizam cópia de valores entre registros – ADD, SUB, MULT,... - realizam operações aritméticas – AND, OR, XOR, ... - realizam operações lógicas – EQ, NEQ, LEQ,... - realizam operações de comparação – GOTO - operação de desvio Linguagem de máquina Componentes de um sistema computacional Linguagem de máquina – exemplo: ; Este código soma 5 + 10 MOV MOV ADD SUB HLT AX, BX, AX, AX, 5 10 BX 1 Abrir montador assembler Componentes de um sistema computacional Sistema operacional – Controla e coordena o uso do hardware entre as várias aplicações que vários usuários utilizam. – Fornece instruções mais simples. UNIX: Windows: fork – Crie um novo processo exit– Termine a execução open – Crie um arquivo ou abra um arquivo existente close – Feche um arquivo read – Leia dados de um arquivo write – Escreva dados em um arquivo CreateProcess() – Crie um novo processo ExitProcess() – Termine a execução CreateFile() – Crie um arquivo ou abra um arquivo existente CloseHandle() – Feche um arquivo ReadFile() – Leia dados de um arquivo WriteFile() – Escreva dados em um arquivo Componentes de um sistema computacional Sistema operacional – exemplos de uso das instruções – Fornece instruções mais simples import win32.winbase; import win32.windef; import win32.winuser; extern(Windows) int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBoxA(null, "Hello", "Hello World", MB_OK); return (0); } – Mais exemplos com tutorial em http://www.winprog.org/tutorial/ Componentes de um sistema computacional Sistema bancário Navegador WEB Jogos Compiladores Editores Interpretador de comandos Programas de sistema – – – – Compiladores, interpretadores: C/C++, Java, Perl etc. Gerenciadores de janelas: Explorer, X Editores: vi, edit, notepad etc. Interpretador de comandos ou shell: ms-dos, cygwin, bash, cmd etc. Programas aplicativos – Sistemas em geral: Gerenciador Financeiro, MS Word, AutoCAD etc. – Navegador WEB: Firefox, Internet Explorer, Chrome etc. – Jogos. O que faz parte de um S.O.? Sistema operacional “Não existe uma definição universalmente aceita do que faz e do que não faz parte do sistema operacional. Um ponto de vista simples é aquele que diz que um S.O. é tudo aquilo que o fornecedor entrega para você.” Silberschatz “Uma definição comum é que o S.O. é um programa que sempre está sendo executado em um computador, chamado de núcleo ou kernel, todo o resto consistindo em programas aplicativos” Silberschatz “Essa parte que sempre está sendo executado em um computador é dito que o S.O. está sendo executado em modo supervisor ou modo núcleo.” Tanenbaum S.O. como máquina virtual Sistema operacional como máquina virtual pag 4 e 5 – A arquitetura da maioria dos computadores em nível de linguagem de máquina é primitiva e de difícil programação, especialmente para I/O. – Exemplo: I/O da unidade de discos flexíveis. “Chip controlador NEC-PD765, possui 16 comandos. Os comandos mais básicos são o READ e o WRITE, cada um dos quais requerendo 13 parâmetros, acondicionados em 9 bytes. Tais parâmetros especificam o endereço do bloco a ser lido do disco, o número de setores por trilha, o modo de gravação no meio físico, o espaçamento entre setores, entre outras coisas. Quando a operação se completa, o chip controlador retorna ao processador, 23 campos de estado, acondicionados em 7 bytes. Como se isto não bastasse, o programador da unidade de disco flexível tem de se preocupar com o fato do motor do disco estar ligado ou desligado. Se o motor estiver desligado, ele precisa ser ligado antes que o dado possa ser lido ou gravado. O motor não pode permanecer ligado por muito tempo sob pena de danificar o disquete.” [1] S.O. como máquina virtual Sistema operacional como máquina virtual – Exemplo em um nível mais baixo em Material de Exemplo – Exemplos em um nível mais alto: S.O. como máquina virtual Sistema operacional como máquina virtual – “O programa que esconde o verdadeiro hardware do usuário e apresenta-lhes um esquema simples de arquivos identificados que podem ser lidos ou escritos é o sistema operacional. Da mesma forma que o sistema operacional isola o usuário dos detalhes da operação do disco, ele também trata de uma série de outras questões tais como interrupções, os temporizadores, a gerência da memória e outras. Em cada caso, a abstração apresentada ao usuário do sistema operacional é mais simples e mais fácil de utilizar que o próprio hardware.” [1] – “Neste aspecto, a função do sistema operacional é a de apresentar ao usuário uma máquina estendida ou máquina virtual equivalente ao hardware, porém muito mais simples de programar.” [1] S.O. como gerenciador de recursos Sistema operacional como gerenciador de recursos [1] pag 5 – “Imagine o que poderia acontecer se três processos, rodando em um dado computador, resolvessem imprimir suas saídas simultaneamente na mesma impressora. As três primeiras linhas da listagem poderiam ser do processo 1, as seguintes do processo 2 e assim por diante, até que os três terminassem a impressão. Fica claro que tal situação não é admissível em nenhum sistema que se preze. O sistema operacional tem por função colocar ordem neste caos potencial, armazenando em disco todas as saídas destinadas à impressora, durante a execução dos processos.” – “No caso do computador possuir múltiplos usuários, a necessidade de gerência e proteção da memória, dos dispositivos de entrada/saída e dos demais recursos do sistema fica ainda mais aparente.” – “Pelo exposto acima, esta outra visão da função de um sistema operacional mostra que sua tarefa principal é a de gerenciar os usuários de cada um dos recursos da máquina, contabilizando o tempo de uso de cada um e garantindo o acesso ordenado de usuários a recursos através da mediação dos conflitos entre as requisições dos diversos processos usuários do sistema”. Referências Bibiográficas • [1] Tanenbaum, Andrew S. Sistemas Operacionais Modernos 2. ed. Prentice Hall ( Pearson ), 2003 • [2] Silberschatz, Abraham. Sistemas Operacionais. Editora CAMPUS, 2001.