Programação de Sistemas



Documentos relacionados
Programação de Sistemas

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Aspectos de Sistemas Operativos

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Sistemas Operacionais

Introdução. Sistemas Operacionais

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

Sistemas Operacionais

Figura 01 Kernel de um Sistema Operacional

Capítulo 8. Software de Sistema

Sistemas Operacionais I Parte III Estrutura dos SOs. Prof. Gregorio Perez gregorio@uninove.br Roteiro. Componentes do Sistema

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal

Sistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes.

SISTEMAS OPERACIONAIS

Mecanismo de Interrupção

SISTEMAS OPERACIONAIS 2007

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola

Componentes de um Sistema de Operação

Sistemas Operacionais. Roteiro. Hardware. Marcos Laureano

4 Estrutura do Sistema Operacional Kernel

Programação de Sistemas

Sistemas Operacionais. Conceitos de um Sistema Operacional

Visão Geral de Sistemas Operacionais

Sistemas Operacionais

Everson Scherrer Borges João Paulo de Brito Gonçalves

Introdução à Ciência da Computação

SISTEMAS OPERACIONAIS

Sistema Operacional Ex: Complexo Computador multiusuário com vários terminais Tem que administrar todos os pedidos de usuários e assegurar que eles

Infra-Estrutura de Software. Introdução. (cont.)

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração:

ESTRUTURA DE UM SISTEMA OPERACIONAL

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

ESTUDO DE CASO WINDOWS VISTA

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

Introdução aos Computadores

Sistemas Operativos. Sumário. Estruturas de sistemas de computação. ! Operação de um sistema de computação. ! Estruturas de E/S

Arquitetura de Sistemas Operacionais

Processos e Threads (partes I e II)

Introdução aos Sistemas Operativos

Sistemas Operacionais. Prof. André Y. Kusumoto

Capítulo 1. Introdução

discos impressora CPU memória AULA 04 - Estruturas de Sistemas Computacionais Operação dos sistemas de computação Controlador de disco

Computador = Hardware + Dados

Componentes básicos de um sistema computacional. Cap. 1 (Stallings)

Arquitetura e Organização de Computadores I

Introdução a Computação

Estrutura, Processos e Threads

6 - Gerência de Dispositivos

E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro. Programação Concorrente em Linux

SO Sistemas Operacionais

Conceitos de Sistemas Operacionais: Chamadas de Sistema. Prof Rafael J. Sandim

Componentes de um Sistema de Operação

Sistemas Operacionais

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais

Sistema Operacional LINUX

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

UFRJ IM - DCC. Sistemas Operacionais I. Unidade I Introdução. 11/02/2014 Prof. Valeria M. Bastos

ENTRADA E SAÍDA DE DADOS

Programação de Sistemas

Programação de Sistemas

UFRJ IM - DCC. Sistemas Operacionais I

Introdução aos Sistemas Operativos

Componentes de um Sistema de Operação

Sistemas Operacionais. INTRODUÇÃO Prof. Rafael Alberto Vital Pinto FACSUL/CESUR

Sistemas Operacionais

Sistemas Operacionais

Programação Concorrente Processos e Threads

Sistemas Operacionais

Windows NT 4.0. Centro de Computação

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Dispositivos de Entrada e Saída

7 Processos. 7.1 Introdução

(Aula 15) Threads e Threads em Java

Conceitos Básicos sobre Sistemas Operacionais

Máquinas virtuais. Máquina virtual de um processo. Máquinas virtuais (3) Máquina virtual de sistema. Máquinas virtuais (1) VMware para Windows e Linux

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1

Organização de Computadores 1

2 SYSCALLs: O que são

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

BARRAMENTO DO SISTEMA

Introdução à Computação: Sistemas Operacionais II

Processamento de Dados

Prof. Sandrina Correia

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Sistemas Operacionais

Transcrição:

Programação de Sistemas Arquitectura dos Sistemas Operativos Programação de Sistemas Arquitectura : 1/25 Introdução (1) Um sistema operativo de uso geral é formado por diversas componentes: Gestor de processos (PS-process scheduler): multiplexa o processador entre entidades lógicas designadas por processos (que serão tema central do próximo capítulo). Gestor de memória (MM-memory manager) : controla acesso dos processos à memória central RAM. Comunicação entre processos (IPC-interprocess communication). Entradas/saídas (I/O-input/output) * : comunicação com dispositivos do computador (disco, ) e exteriores ao computador. Interpretador de comandos: aplicação de interface para utilizadores (dado no 1º laboratório). * Descrito de forma muito resumida nesta disciplina Programação de Sistemas Arquitectura : 2/25

Introdução (2) Gestor de ficheiros (FS-file system): organiza logicamente os dispositivos de memória de massa (disco, ). Funções de sistema (SCI): interface de serviços para as aplicações informáticas. [Def] Núcleo ( kernel ) do SO: conjunto dos componentes essenciais (ex: PM, MM, IPC e FS) que residem na memória central. [Def] Espaço do núcleo (kernel space): zona de memória onde o núcleo executa e disponibiliza serviços. [Def] Espaço de utilizador (user space): zona de memória onde os processos de utilizador correm. Programação de Sistemas Arquitectura : 3/25 Introdução (3) [Def] Serviço: trabalho descrito de forma genérica, a executar pelo SO a pedido de uma aplicação ou de outro serviço. Exemplo: impressão de um documento numa impressora. [Def] Utilitário: trabalho separado do SO, normalmente usado para apoiar gestores e utilizadores. No Linux os utilitários são categorizados em Gestão do sistema de ficheiros (read, ) Comunicações locais e de rede Editores Filtros e processadores de texto Compiladores (gcc, ) Programação de Sistemas Arquitectura : 4/25

Introdução (4) [Def] Função de sistema: tarefa que implementa uma das partes constituintes dos serviços ou utilitários do SO. As funções manipulam estruturas de dados internas ao sistema operativo. Exemplo: criação de um processo, que é representado internamente por uma tabela armazenada em listas. [Def] API (Application Programming Interface): conjunto de funções do sistema. norma POSIX (Portable Operating System Interface) do IEEE para o Unix. Windows API. Programação de Sistemas Arquitectura : 5/25 Introdução (5) Aplicação API Interface chamadas sistema MM IPC Espaço utilizador Espaço núcleo hardware memória disco rede Programação de Sistemas Arquitectura : 6/25

Arquitectura (1) Os diversos componentes de um SO podem ser organizados de acordo com a arquitectura adoptada. A. Monolítico SO formado por um único módulo (idealmente desenvolvido por abstracção de dados-adt). O SO reside numa única zona de memória. Exemplos: MSDOS, Unix inicial Vantagens: fácil de implementar, bom desempenho. Inconvenientes: difícil de estender e alterar. Programação de Sistemas Arquitectura : 7/25 Arquitectura (2) Aplicações Interface chamadas sistema Espaço utilizador Espaço núcleo Núcleo PS MM IPC FS IO Programação de Sistemas Arquitectura : 8/25

Arquitectura (3) B. Camadas ( layered ) Componentes distribuídos por diversas camadas, cada uma agrupando componentes com funcionalidades semelhantes. A camada inferior é constituída por hardware e a camada de topo pelas aplicações. Componentes de uma camada interagem apenas com as camadas de nível imediatamente inferior. Exemplos: THE (1º SO por camadas), Multics Vantagens: bem estruturado, fácil de alterar. Inconvenientes: acesso lento a serviços disponibilizados em camadas distantes. Programação de Sistemas Arquitectura : 9/25 Arquitectura (4) Camadas do THE Aplicações IO MM PS hardware 0 1 2 3 4 Espaço núcleo Programação de Sistemas Arquitectura : 10/25

Arquitectura (5) C. Micronúcleo Caso especial do SO por camadas, com apenas 2 (a debaixo com serviços essenciais do núcleo, de cima com restantes serviços). Exemplos: Windows NT, Mach Vantagens: erros nos serviços a nível de utilizador não indisponibilizam o SO. Inconvenientes: núcleo não corre sozinho, aumento da intecomunicação entre processos. Programação de Sistemas Arquitectura : 11/25 Arquitectura (6) Aplicações Interface chamadas sistema FS IO PS Espaço utilizador Núcleo IPC Espaço núcleo MM Sincronização Programação de Sistemas Arquitectura : 12/25

Arquitectura (7) D. Máquina virtual Caso especial do SO por camadas, na parte inferior um SO básico, por cima um virtualizador e no topo vários SOs. Exemplos: IBM VM-CP, no topo AIX / CMS e outros; JVM para o mesmo programa Java correr em plataformas distintas (Windows, Linux, ) Vantagens: permite o mesmo computador correr vários SOs em simultâneo, facilita portabilidade de aplicações. Inconvenientes: baixo desempenho. Programação de Sistemas Arquitectura : 13/25 Arquitectura (8) Aplicação Aplicação Aplicação Núcleo Núcleo Núcleo Máquina virtual Hardware Programação de Sistemas Arquitectura : 14/25

Interrupções (1) Um sistema operativo é guiado por interrupções ( interrupt-driven ), de vários tipos Dispositivos entrada/saída, para indicar que os dados foram transferidos. Temporizadores, para indicar que terminou a fatia de tempo concedida a um processo. Hardware, por exemplo tentativa de acesso a memória (inexistente ou não satisfazendo condições de acesso). Programas (ex: divisão por zero, mudança de modo). Programação de Sistemas Arquitectura : 15/25 Interrupções (2) Durante alguns períodos, o sistema operativo pode inibir ( disable ) que interrupções interrompam a execução das instruções. Na maior parte das vezes, há permissão ( enable ) para as interrupções transfirem o CPU para uma área de tratamento da interrupção ( interrupt hander ). O tratamento da interrupção deve iniciar pela salvaguarda dos registos do processo (acumulador, ponteiro para a pilha, ). Mais tarde, os registos carregados com esses valores, para que seja possível retornar a execução do programa como se não tivesse havido interrupção (o único efeito é demorar um pouco mais a terminar o programa). Programação de Sistemas Arquitectura : 16/25

Interrupções (3) O processo é executado sequencialmente processo IH para I1 Interrupção I1 Salvaguarda registos Restaura registos Interrupção I2 Inibe interrupções Permite interrupções IH para I2 Salvaguarda registos Nota: as interrupções podem ser inibidas dentro do IH, ou autorizadas apenas as de prioridade superior Restaura registos Programação de Sistemas Arquitectura : 17/25 Chamadas de sistema (1) Uma aplicação interage com o SO através de chamadas de sistema ( system call ). Algumas chamadas do sistema podem ser introduzidas pelo utilizador. Por exemplo, a instrução em C count=read(fd,buffer,nbytes) é equivalente ao comando do interpretador de comandos Shell (palavras colocadas numa tabela ou em várias variáveis) read [-u fd] [-n nbytes] [-a aname] [nome1] Tabela onde são colocadas as palavras 1ª palavra Programação de Sistemas Arquitectura : 18/25

Chamadas de sistema (2) No Linux, as chamadas ao sistema são agrupadas em 5 categorias: Controlo do processo: fork, execute, wait, Manipulação de ficheiros: open, read, set, Manipulação de dispositivos: request, read, Informação de manutenção: date, ps, Comunicações: send, Unix iniciais definiam 60 chamadas ao sistema Linux (ver códigos em /usr/include/asm/unistd.h): Kernel 2.0 160 Kernel 2.2 190 Kernel 2.4 220 Kernel 2.6 define 286 Programação de Sistemas Arquitectura : 19/25 Chamadas de sistema (3) Execução da função read do C {1-3} Carrega na pilha os parâmetros da função, da direita para a esquerda (nota: funções com número variável de parâmetros, ex: printf, inserem à esquerda os parâmetros fixos). {4} Chama nread = fread(inputbuf, OBJSIZE,numerobjs,fileptr) definida na biblioteca /usr/include/stdio.h código residente no arquivo /usr/lib/libc.a {5} Inicializa registos (EAX no Pentium, valor indicado no unistd.h para NR_read é 3) Figura 1-17, Modern Operating Systems Programação de Sistemas Arquitectura : 20/25

Chamadas de sistema (4) {6} Executa um TRAP (Pentium: instrução INT 80h, ARM: instrução swi), que salva contexto corrente (registos) passa de modo U para modo S transfere PC- program counter para localização específica do núcleo. {7-8} De acordo com valores de {5}, o despacho invoca o manipulador de dispositivo ( device handler ) correspondente, com prefixo sys_ (neste caso, asmlinkage int sys_read(unsigned fd,char *buf,int count) {9} O manipulador de dispositivo entra em bloqueio até conclusão da transferência de dados. Quando a transferência for concluída é executada a instrução iret, de retorno para a função de biblioteca. Programação de Sistemas Arquitectura : 21/25 Chamadas de sistema (5) {10} Retorna à instrução read do C Chamadas a funções de sistema retornam inteiro indicando o resultado 0 determina execução com sucesso Código da causa do erro afixada na variável de ambiente errno Nome lógido para códigos de erro lista no ficheiro /usr/include/asm-generic/errno-base.h Ex: #define EACCES 13 /* Permission denied */ Mensagem explicativa enviada para stderr pela função biblioteca (parâmetro acrescentado à mensagem) #include <stdio.h> void perror(const char *string); Programação de Sistemas Arquitectura : 22/25

Chamadas de sistema (6) Comando strace[opções]prog imprime no terminal todas as chamadas de sistema durante a execução de prog. -f acompanha cada processo lançado, indicando no início da linha o PID do processo que faz a chamada de sistema. -t imprime, no final da linha a duração de cada chamada do sistema na forma <0.000104>. asterix.ist.utl.pt> strace -f -T testawait execve("./testawait", ["testawait"], [/* 48 vars */]) = 0 uname({sys="linux", node="asterix.ist.utl.pt",...}) = 0 <0.000022> [pid 4145] getpid() = 4145 <0.000017> [pid 4146] getppid() = 4145 <0.000013> [pid 4146] exit_group(20) =? Process 4145 resumed Programação de Sistemas Arquitectura : 23/25 Tabelas de controlo do SO Normalmente, o SO controla 4 componentes base: Processos Memória Dispositivos Ficheiros Programação de Sistemas Arquitectura : 24/25

Manual O comando man disponibiliza informação sobre o Linux. As páginas estão organizadas por 9 secções: 1. Comandos de utilizador 2. Chamadas de sistema 3. Funções de biblioteca do C 4. Controladores de dispositivos 5. Ficheiros de configuração 8. Comandos de manutenção O man procura a página a partir da secção 1. O utilizador pode indicar a secção entre o comando e o tópico. man 1 read : página do comando de utilizador read man 2 read : página da chamada de sistema read man 3 fread : página da função de biblioteca fread Programação de Sistemas Arquitectura : 25/25