Lucas Gabriel Bento Belmonte
1 Introdução aos Sistemas Operacionais Eleri Cardozo FEEC/Unicamp 1 Definição de Sistema Operacional Um sistema operacional é um gerenciador de recursos de hardware ou uma máquina virtual que oferece uma interface mais simples para interagir com os recursos de hardware (Tanenbaum) Um sistema operacional é um intermediário entre o usuário e o harware de maneira que o usuário possa executar seus programas de maneira eficiente e conveniente (Silberschatz). Um sistema operacional é um ambiente de execução no qual programas do usuário podem executar (Vahalia). Um sistema operacional é um conjunto de programas que gerencia o hardware e provê serviços para os programas manipulados pelo usuário (aplicativos) (Wikipedia). 2
2 Definição de Sistema Operacional Um sistema operacional é um software que facilita o processamento, armazenamento e transferência de informação. Note que: Não utilizamos na definição acima os termos hardware, usuário e aplicativo. A definição acima é centrada na informação. 3 Relacionamento SO-Hardware Conceitos importantes: Ciclo de execução de instruções (busca-decodifica-executa). Contexto do processador (registradores, SP, PSW, etc.). Interrupção e Manipuladores de Interrupção. Modo do processador (usuário/supervisor). Em um SO: Apenas o sistema operacional pode manipular interrupções geradas pelo hardware. Apenas o sistema operacional (a rigor, uma parte deste) pode executar em modo supervisor. 4
3 Interrupções Interrupção é o meio pelo qual o hardware reporta ao software a ocorrência de determinado um evento. Cada interrupção está associada a um evento específico. Exemplo de eventos: - Exceções aritméticas: divisão por zero, under/overflow. - Violação de segmentação: acesso a uma região de memória não permitida ao programa. - Alarmes (interrupções de relógio). - Notificações assíncronas (periféricos de entrada/saída). Para cada interrupção é possível definir um tratador ou manipulador de interrupção: uma rotina que executa assim que a interrupção ocorre. Vetor de interrupção: relaciona a interrupção (seu número) com o respectivo manipulador. 5 Modo do Processador Define os privilégios de execução em termos do conjunto de instruções permitidas para o modo. Existem pelo menos dois modos, usuário e supervisor. A passagem do modo usuário para o modo supervisor se dá quando ocorre: - uma interrupção assíncrona, por exemplo, gerada por um periférico de entrada/saída; - uma exceção durante a execução de um programa, por exemplo, exceções ariméticas; - um trap. Traps são instruções de máquina que alteram o modo do processador de usuário para supervisor. Na arquitetura x86 esta alteração se dá pela instrução INT. Ao ser executada, esta instrução gera uma interrupção de hardware. OBS: Manipuladores de interrupção executam em modo supervisor. 6
4 Arquitetura de um SO Processos do Sistema Processos do Usuário Chamadas de Sistema Subsistema de Processos Subsistema de Memória Subsistema de Arquivos Subsistema de Entrada e Saída Núcleo do Sistema Operacional Manipuladores de Interrupção Hardware 7 Arquitetura de um SO Podemos identificar quatro subsistemas importantes cujas funções são desempenhadas pelo núcleo e por processos de sistema: Subsistema de processos. Subsistema de memória. Subsistema de arquivos. Subsistema de entrada e saida. 8
5 Arquitetura de um SO Note que os manipuladores de interrupções agem sobre todos estes subsistemas, por exemplo: - No subsistema de processos uma interrupção de relógio faz com que o sistema operacional comute o processo (programa) que detem a posse da CPU (Unidade Central de Processamento). - No subsistema de memória uma interrupção gerada pela CPU pode indicar que o programa em execução tentou acessar uma região inválida de memória. - No subsistema de arquivos uma interrupção gerada pelo controlador de acesso direto à memória (DMA - Direct Memory Access) pode indicar que a cópia de um bloco do disco para a memória foi concluída. - No subsistema de entrada e saída uma interrupção gerada por um acionador de dispositivo (device driver) pode indicar que uma operação de entrada e saída foi concluída. 9 Chamadas de Sistema Para facilitar o processamento, armazenamento e transferência de informação, o sistema operacional deve expor aos programas aplicativos um conjunto de serviços. Estes serviços são denominados chamadas de sistema (system calls). Chamadas de sistema são funções em uma dada linguagem de programação, usualmente na linguagem C. Estas funções permitem obter serviços dos subsistemas que compõem um sistema operacional, por exemplo: - Iniciar, terminar, suspender e retomar a execução programas aplicativos (subsistema de processos). - Alocar, realocar e desalocar segmentos de memória durante a execução de um programa (subsistema de memória). - Criar, renomear e remover arquivos e diretórios (subsistema de arquivos). - Ler e escrever dados em arquivos e conexões de rede (subsistema de entrada e saída). OBS: Chamadas de sistema executam no modo supervisor. 10
6 Chamada se Sistema Fluxo de execução: 1. O programa do usuário efetua a chamada de sistema (o processado encontra-se no modo usuário). 2. A interface de chamadas de sistema identifica a chamada e armazena seu índice (número inteiro) em um registrador da CPU. Em seguida executa um trap alterando o modo do processador para supervisor. 3. O tratador de interupção associado ao trap (código do sistema operaracional) busca o índice da chamada no registrador e executa a chamada de sistema correspondente (em modo supervisor). 4. Quando a chamada de sistema retorna, o tratador de interrupção comuta o modo do processador de supervisor para usuário e retorna. 5. O programa do usuário retoma sua execução em modo usuário como se tivesse executado uma função de seu próprio código. 11 Propriedades do Núcleo O núcleo de sistemas operacionais atuais possuem duas propriedades: - Preempção: o núcleo é capaz de interromper a qualquer momento qualquer programa em execução e retomar a CPU para, por exemplo, proceder a troca de contexto (alocá-la a outro programa). - Reentrância: o núcleo é capaz de interromper processos executando em modo supervisor (ou seja, durante o processamento de uma chamada de sistema) e retomar a CPU. 12
7 SOs e Linguagens de Programação Um SO pode ser utilizado a partir de diferentes linguagens de programação: C/C++: a partir desta linguagem tem-se acesso direto às chamadas de sistema. Java, Python, C#: possuem classes de nível mais alto que as chamadas de sistema para funções semelhantes (exemplo: classe File em Java). Android: SO que utiliza o núcleo do sistema Linux, mas todas as funcionalidades são disponibilizadas na linguagem Java. 13 Arquitetura do SO Android Java C C e Assembly fonte: 14
Multithreading & Comunicação Serial usando Arduino e C# Marcelo Vinícius Cysneiros Aragão
Multithreading & Comunicação Serial usando Arduino e C# Marcelo Vinícius Cysneiros Aragão http://www.contactify.com/bf737 Introdução: C# e.net Framework Linguagem OO fortemente tipada, baseada em C++,