Você está na página 1de 37

Introdução Chamada de Sistema Utilitários Componentes

Aula 3: Núcleo de um SO

Prof. M.Sc. Rodrigo Costa e Prof. M.Sc. Carlos Maurı́cio


rodccosta@gmail.com e cmauriciojd@gmail.com
Curso de Informática - Propriedades dos Sistemas Operacionais

Fortaleza-CE, Brasil
Introdução Chamada de Sistema Utilitários Componentes

Sumário

Introdução

Chamada de Sistema

Utilitários
Shell
Interface gráfica
Bibliotecas

Componentes
Introdução Chamada de Sistema Utilitários Componentes

Revisão

Objetivos de sistema operacional


◮ executar programas de forma conveniente para o usuário;
◮ gerenciar os recursos de software e hardware como um todo;
◮ utilizar os recursos de hardware de forma eficiente e segura.

Caracterı́sticas desejáveis
◮ concorrência de processos;
◮ utilização eficiente dos recursos;
◮ desempenho.
Introdução Chamada de Sistema Utilitários Componentes

Núcleo

Funcionamento do SO
As rotinas de um Sistema Operacional não possuem um fluxo de execução
sequencial.

Execução sob demanda (eventos assı́ncronos)


◮ Atendimento ao hardware (Vetor de Interrupções)
◮ Tarefas do próprio SO

Cada rotina oferece um serviço


O Conjunto de rotinas que fornece serviços é chamado Núcleo do Sistema
ou Kernel.
Introdução Chamada de Sistema Utilitários Componentes

Núcleo
Segurança:
◮ O kernel possui o uso exclusivo
de instruções privilegiadas;
◮ As aplicações não podem fazer
esse acesso direto, tendo que
solicitar ao kernel a liberação
da informação.

Chamadas de sistema
◮ Funciona como interface para
acesso ao núcleo;
◮ Para cada serviço existe uma
system call associada e cada
SO tem o seu próprio conjunto
Figura 1: estrutura do Sistema
(biblioteca) de chamadas. Operacional (SO). Fonte: [6].
Introdução Chamada de Sistema Utilitários Componentes

Modo Dual

Figura 2: diagrama do modelo de execução de tarefas pelo SO utilizando o Sistema


Dual. Fonte: [7]
Introdução Chamada de Sistema Utilitários Componentes

Modos de Acesso

Ha 2 tipos de instruções:
◮ Privilegiadas: Podem comprometer o sistema
◮ Não-privilegiadas: Não oferecem perigo ao sistema
Existem instruções que as aplicações comuns não podem ter acesso,
para não comprometer o SO. Para isto, foram criados modos de
acesso a estas instruções:

Modo usuário Modo kernel


◮ Aplicação so pode executar ◮ Aplicação so pode executar
instruções não-privilegiadas instruções privilegiadas
◮ Pode ter acesso a um numero ◮ Pode ter acesso ao conjunto
reduzido de instruções total de instruções
Introdução Chamada de Sistema Utilitários Componentes

Modo de Acesso
As chamadas de sistema permitem o acesso privilegiado aos recursos
do sistema, efetuando a troca do modo de operação, conforme
mostrado na Figura.

Figura 3: troca de modo de operação realizado através das chamadas de sistema e


interrupção. Fonte: [6].
Introdução Chamada de Sistema Utilitários Componentes

Chamada de Sistema
Chamada de Sistema (System Calls) consistem na interface entre o
Sistema Operacional (SO) e os programas de usuário.

Figura 4: chamada de sistema. Fonte: [6].

Para cada serviço existe uma system call associada e cada Sistema
Operacional (SO) tem o seu próprio conjunto (biblioteca) de
chamadas.
Introdução Chamada de Sistema Utilitários Componentes

Tipos de Chamadas de Sistema

Gerencia de Processos:
◮ criação e eliminação de processos
◮ suspensão e retomada de processos
◮ prover mecanismos para sincronização de processos
◮ prover mecanismos para comunicação de processos
◮ prover mecanismos para tratar deadlock
Introdução Chamada de Sistema Utilitários Componentes

Tipos de Chamadas de Sistema

Gerencia de memoria:
◮ controlar quais regiões de memória são utilizadas e por qual processo
◮ decidir qual processo deve ser carregado para memória, quando
espaço for disponı́vel
◮ alocar e desalocar espaço de memória

Gerencia de entrada/saida:
operações de entrada e saı́da e manipulação de arquivos e diretórios.
Introdução Chamada de Sistema Utilitários Componentes

Comandos Disponı́veis

Controle de Processos
create process, end, abort, execute...

Manipulação de Arquivos
create file, open, close, read, write,..

Manipulação de dispositivos
EX: request device, release device, read, write...

Manutenção de Informações
Ex: get time, set time, get file attributes, ...

Comunicações
Ex: create communication connection, send message, etc.
Introdução Chamada de Sistema Utilitários Componentes

Exemplo: Windows API (API Win32)

parâmetros
ReadFile(): função para leitura ◮ HANDLE file: arquivo a ser lido;
de um arquivo possui a sintaxe: ◮ LPVOID buffer: local aonde os dados serão
BOOL ReadFile( lidos/gravados;
HANDLE file,LPVOID buffer, ◮ DWORD bytesToRead:quantidade de bytes a
ser lida no buffer;
DWORD bytesToRead, LPDWORD ◮ LPDWORD bytesRead: quantidade de bytes
bytesRead, LPOVERLAPPED lida durante a última leitura;
ovl ); ◮ LPOVERLAPPED ovl: indica se o
Entrada/Saı́da (E/S) sobreposto está sendo
usado.
Introdução Chamada de Sistema Utilitários Componentes

Exemplo: Linux (POSIX)

parâmetros
read(): função para leitura de
◮ FILE fileID: arquivo a ser lido;
um arquivo possui a sintaxe: ◮ int * buffer: local aonde os dados serão
contador = read( lidos/gravados;
FILE fileID,int * buffer, ◮ int nbytes: quantidade de bytes lida durante
int nbytes ); a última leitura;
◮ contador: quantidade de bytes efetivamente
lidos.
Introdução Chamada de Sistema Utilitários Componentes

Funcionamento

Figura 5: os onze passos na realização de uma chamada de sistema read(fd,buffer,


nbytes);. Fonte: [8].
Introdução Chamada de Sistema Utilitários Componentes

APIs Windows e Linux

Figura 6: algumas chamadas de sistemas do Windows e Linux. Fonte: [8].


Introdução Chamada de Sistema Utilitários Componentes

Programas de Sistema

Utilitários ou programas de sistema


São programas normais executados fora do kernel do sistema operacional.
Eles utilizam as mesmas chamadas de sistemas disponı́veis aos demais
programas.

Muitas vezes são confundidos com as Chamada de


Sistemas (SCs)
Elas implementam tarefas essenciais para a utilização do computador,
distribuı́dos (geralmente) junto com o Sistema Operacional (SO).

São executados fora do núcleo e compõe o ambiente.


◮ Compiladores, ligadores, bibliotecas
◮ Interpretadores de comandos (shell, no Unix)
Introdução Chamada de Sistema Utilitários Componentes

Linguagem de comandos

Linguagem de comandos ou de controle


Permite que o usuário se comunique de uma forma simples com o
sistema operacional, capacitando-o a executar diversas tarefas especı́ficas
do Sistema Operacional (SO).

Mais importante programa do sistema


É ativado pelo Sistema Operacional (SO) sempre que um usuário inicia sua
sessão de trabalho. Sua tarefa é servir de interface ao usuário. Para isto,
ele recebe as solicitações do usuário, analisa seu conteúdo e em seguida
executa as SCs do Sistema Operacional (SO).
Introdução Chamada de Sistema Utilitários Componentes

Formas de se utilizar as linguagens de comandos

Figura 7: dois tipos de interface com o sistema operacional (à esquerda o


interpretador de comandos e à direita a interface gráfica.) Fonte: [6].
Introdução Chamada de Sistema Utilitários Componentes

Shell
Em geral, não faz parte do SO
Por causa disto, possibilita a criação de diferentes linguagens em um
mesmo sistema. No Linux, existem vários shells, em que, os mais usuais
são:

◮ sh (chamado “Bourne shell”);


◮ bash (“Bourne again shell”);
◮ csh (“C Shell”);
◮ Tcsh (“Tenex C shell”):
◮ ksh (“Korn shell”) ;
◮ zsh (“Zero shell”).
Figura 8:

É possı́vel escolher o shell do usuário editando o arquivo /etc/passwd.


Introdução Chamada de Sistema Utilitários Componentes

Shell Script

Shell Script
O shell também implementa um linguagem simples de programação que
permite o desenvolvimento de pequenos programas, os Shell Scripts.

Os Shell Scripts não são programas


São apenas um conjunto de comandos sequenciais armazenados em um
arquivo de texto, podendo utilizar estruturas de interação (laços) e
decisão(ifs).
Introdução Chamada de Sistema Utilitários Componentes

Shell Script no Linux I

1. Crie um arquivo de texto para armazenar os comandos.


Exemplo
cat > meuscript
echo "Data e hora:"
date
echo "meu usuario:"
whoami
ctrl + D
2. Forneça a permissão para execução
chmod +x comando
3. execute o script
./comando
Introdução Chamada de Sistema Utilitários Componentes

Interface Gráfica

Forma evoluı́da do interpretador de comandos


Ao invés de inserirem comandos diretamente em modo de texto, os usuários
possuem uma interação mais amigável com os usuários utilizando janelas,
ı́cones e menu.

Gerenciador de Janelas
Estas aplicações transformam a interface de comando em linha de texto
em interface gráfica.

Personalização
São os gerenciadores que possibilitam a personalização do visual do
sistema, dependendo da criatividade do utilizador.
Introdução Chamada de Sistema Utilitários Componentes

Gerenciadores de Janela Linux

Exemplos de Gerenciador de Janelass (WMs) presentes no


Linux
GNOME KDE

Figura 9: Ilustração dos ambientes gráficos do Linux. Fonte: [1, 2, 4].


Introdução Chamada de Sistema Utilitários Componentes

Gerenciadores de Janela Linux

Exemplos de WMs presentes no Linux


XFCE Fluxbox

Figura 9: Ilustração dos ambientes gráficos do Linux. Fonte: [1, 2, 4].


Introdução Chamada de Sistema Utilitários Componentes

Bibliotecas

Bibliotecas
Forma de acesso à chamadas de sistema em linguagens de alto nı́vel através
da definição de chamadas de procedimentos (funções).

Compilador
Responsável por traduzir as chamadas a procedimento em chamadas ao
sistema.

Dependência do SO
Para cada serviço existe uma system call associada e cada Sistema
Operacional (SO) tem o seu próprio conjunto (biblioteca) de chamadas.
Por exemplo, existe a biblioteca para acesso à de interface gráfica para
desenhar as interfaces gráficas.
Introdução Chamada de Sistema Utilitários Componentes

Exemplo

Figura 10: exemplo de tradução entre chamada de procedimento e chamada de


sistema. Fonte: [5].
Introdução Chamada de Sistema Utilitários Componentes

Libc: Biblioteca padrão C

Cada compilador C possui sua implementação da biblioteca


padrão C.
Como os compiladores C geralmente oferecem funcionalidades adicionais
que não são especificadas pelo ANSI C.

Headers(.h) ou cabeçalho possui apenas os cabeçalhos da


função.
Consistem em um arquivo que possui apenas o nome e as caracterı́sticas
de cada função, mas a implementação das funções está em um arquivo
separado (muitas vezes, dentro das bibliotecas do sistema ou em bibliotecas
próprias).
Introdução Chamada de Sistema Utilitários Componentes

Exemplo de bibliotecas do C Padrão

Tabela 1: principais bibliotecas da libc.

biblioteca função
ctype.h Funções usadas para classificar caracteres pelo tipo ou
para converter entre caixa alta e baixa independentemente
da codificação.
limits.h Constantes de propriedades especı́ficas de implementação
da biblioteca de tipos inteiros, como a faixa de números
que pode ser representada ( MIN, MAX).
math.h Funções matemáticas comuns em computação.
stddef.h Diversos tipos e macros úteis.
stdio.h Manipulação de entrada/saı́da.
stdlib.h Diversas operações, incluindo conversão, geração de
números pseudo-aleatórios, alocação de memória, controle
de processo, sinais, busca e ordenação.
string.h Tratamento de cadeia de caracteres.
Introdução Chamada de Sistema Utilitários Componentes

Exemplos de bibliotecas para Windows

Tabela 2: exemplos de bilbiotecas.

biblioteca função
conio.h Opções de console avançadas do DOS
d3d9 Funções para uso de instruções do Direct 3D 9.
glut.h Funções para uso de instruções do OpenGL.
unistd.h Funções para uso de instruções definidas no padrão
POSIX
winsock.h Funções para uso dos sockets em C.
w32api.h Funções para chamada de sistemas do Windows 32
bits.
Introdução Chamada de Sistema Utilitários Componentes

Componentes do núcleo

Núcleo
Define a abstração de uma máquina virtual sobre uma máquina real
Formado por:
◮ Gerência do processador
◮ Gerência de memória real e
virtual
◮ Gerência de E/S

Figura 11: divisão do SO em seus


gerenciadores de recursos. Fonte: [3].
Introdução Chamada de Sistema Utilitários Componentes

Gerenciamento de memória

Necessidade
tomar conta que partes da memória estão em uso e por quem decidir que
partes de processos colocar em memória ou remover de memória, isto é,
alocar ou desalocar memória para processos

Papeis de um Sistema Operacional (SO) Moderno:


◮ distinguir a memória de diferentes processos, evitando que um
interfira no outro;
◮ dividir a memória de cada processo em pedaços com fins diferentes;
◮ disponibilizar a memória virtual como uma forma de aumentar a
capacidade de armazenamento da memória principal
Introdução Chamada de Sistema Utilitários Componentes

Subsistema de Entrada/Saı́da (E/S)

Esconde peculiaridades de dispositivos de hardware


Trata da gestão de memória de Entrada/Saı́da (E/S):
◮ buffering: armazenamento temporário;
◮ caching: armazenamento para reúso mais rápido;
◮ spooling: sobreposição de I/O de diferentes tarefas.

Oferece interface genérica com dispositivos


Disponibiliza drivers para hardwares diferentes.
Introdução Chamada de Sistema Utilitários Componentes

Sistema de Arquivos

Transparência
Caracterı́stica importante de um Sistema Operacional (SO) é a capacidade
de esconder peculiaridades de discos e outros elementos de E/S e apresentar
um modelo abstrato de arquivos independentes de dispositivo.

Diretório:
forma de agrupamento de arquivos.

Sistema de Arquivo
As entradas de diretório podem ser arquivos ou outros diretórios, formando
uma hierarquia
Introdução Chamada de Sistema Utilitários Componentes

Boot

Ativação do sistema ou
boot
Processo que consiste
em carregar para a
memória principal todos
os componentes do Sistema
Operacional (SO) toda
vez que o computador é
ligado. Após isto, são Figura 12: Ativação do sistema. Fonte: [6].
carregados arquivos de
inicialização em que são
realizados procedimentos de
configuração e customização
do usuário.
Introdução Chamada de Sistema Utilitários Componentes

Abreviaturas I

GUI Interface Gráfica de Usuário (Graphical User Interface)


E/S Entrada/Saı́da
SO Sistema Operacional
SC Chamada de Sistema (System Call)
GUI Interface gráfica(Graphics User Interface)
WM Gerenciador de Janelas (Windows Manager)
Referências

Referências I

[1] Espanish Academic. Entorno de escritorio, 2010. URL


http://www.esacademic.com/dic.nsf/eswiki/38432.
[2] OS Arena. Fluxbox, 2010. URL http://osarena.net/2011/02/fluxbox-to-pio-elafri-g
[3] Cristina Boeres, 2010. URL http://www.ic.uff.br/~ boeres/soI.html.
[4] Conectiva. Guia do usuário do conectiva linux, 2010. URL
http://conectiva.com/doc/livros/online/8.0/usuario/interfaces.html.
[5] Edeyson Andrade Gomes. Sistemas operacionais, 2010. URL www.edeyson.com.br.
[6] F. M. Machado and L. P. Maia. Arquitetura de Sistemas Operacionais. Grupo Gen:
LTC, Rio de Janeiro, 4 edition, 2007.
[7] Prof. Ernesto Massa, 2010. URL http://ernestomassa-so.blogspot.com.
[8] Andrew S. Tanenbaum. Sistemas Operacionais Modernos. Pearson do Brasil, São
Paulo, 3 edition, 2010.

Você também pode gostar