Você está na página 1de 366

DISCIPLINA: SISTEMAS OPERATIVOS

CURSO: ENGENHARIA INFORMÁTICA


2º ANO
UNI-CV

1º S
FTC
EIC
SO

PROFESSOR: JOSÉ OLAVO DA PAZ TEIXEIRA

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


JOSÉ OLAVO DA PAZ TEIXEIRA
MESTRE EM

FCT
EIC
SO

ENGENHERIA LICENCIATURA EM TIC TRABALHO


INFORMÁTICA
• Em Espanha • UNICV • UNI-CV DESDE 2007
• Universidade (UCM) • 2005-2009
• 2013-2015

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Apresentação dos Estudantes:

1 2 3

FCT
EIC

Nome do Experiência Conhecimento


SO

estudante Profissional s em Sistemas


Operativos:

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
ENQUADRAMENTO DA DISCIPLINA:
• Sendo o curso de EIC um espaço de exploração criativa e de desenvolvimento de soluções
tecnológicas e inovadoras, Sistemas Operativos são elementos fundamentais para o
funcionamento de praticamente qualquer sistema de computação, desde sistemas
embarcados e telemóveis aos gigantescos centros de processamento de dados das grandes
empresas.

FCT
EIC
SO

• Apesar da imensa diversidade de sistemas operativos existentes, eles tentam resolver


problemas de mesma natureza e seguem basicamente os mesmos princípios.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
ENQUADRAMENTO DA DISCIPLINA:

• Conhecer sistemas operativos a fundo não é algo reservado a hackers, mas importante para
todo profissional de computação, pois os mecanismos implementados pelo sistema operativo
afetam diretamente o comportamento e o desempenho das aplicações.

FCT
• Além disso, o sistema operativo é uma peça chave na configuração de serviços de rede e na
EIC
SO

segurança do sistema.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Sumário

✓ Contexto
✓ Objetivos
✓ Enquadramento

FCT
EIC
SO

✓ Programa e Ficha da U.C.


✓ Avaliação
✓ Planeamento
✓ Bibliografias
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Contexto:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Contexto:

about
O Sistema Operativo – é um programa que funciona como
intermediário entre o utilizador do computador e os recursos físicos.

Utilizador

FCT
EIC
SO

Aplicação

Sistema
operativo

Hardware
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Contexto:

about

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Objetivos de Aprendizagem:

O objetivo desta UC é o de apresentar os princípios fundamentais dos Sistemas Operativos,


de forma a permitir uma compreensão detalhada da sua arquitetura e funcionamento,
introduzir um sistema operativo e suas principais componentes:
• Gestão de processos,
• comunicação entre Processo e sincronização ou Inter-Process Communication (IPC)

FCT
EIC
SO

• gestão de memória
• gestão de entradas e saídas
• gestão de ficheiros
• virtualização de sistemas e Docker

• sistema operativo para sistemas embarcados

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Objetivos
Para que os alunos adquirem conhecimentos fundamentais que lhes possibilitem serem expertos em
Sistemas Operativos, a UC tem como principais objetivos:
• Conhecer os princípios dos Sistemas Operativos atuais e identificar os vários componentes que o
constituem.
• Iniciar os alunos em sistemas operativos LINUX (UBUNTU), comandos e familiarizando com gestão
de utilizadores e grupos.
• Possuir uma visão global de gestão de processos, memória, de entradas e saídas, ficheiros, e
virtualização de sistemas em ambiente LINUX e Docker

FCT
• Apresentar as técnicas algorítmicas de escalonamento de processos em ambiente LINUX
EIC
SO

• Possuir uma visão geral sobre interrupção, interfaces system calls, e proteção do núcleo
• Saber configurar e modificar funcionalidades e componentes do sistema Linux, e adaptá-lo a
vários tipos de utilizações e plataformas.
• Programação de SO FreeRTOS, Intender a arquitetura do KERNEL, system call
• Intender e implementar vários tipos de system calls, em estados de processos utilizando linguagem
de programação C
• Intender a arquitetura do Kernel Linux e Kernel FreeRTOS, conseguindo configurar, compilar um
novo Kernel Linux

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Processo Sumário
de Avaliação:

É dada particular importância à avaliação contínua, permitindo que o aluno possa, ao longo do
semestre, demonstrar faseadamente as competências adquiridas com o seu trabalho.

O aluno deverá ainda no final do semestre ter demonstrado a aquisição de um mínimo de

FCT
EIC

competências para poder ter sucesso no exame final, sendo também possível que este mesmo fique
SO

dispensado desse exame se demonstrou à equipa docente ter adquirido as competências julgadas
suficientes e necessárias.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Programa da Sumário
Unidade Curricular:
1. ID UNIDADE LETIVA DETALHE
Introdução aos Introdução/Motivação, Definição de Sistema Operativo, Objetivos de um Sistema Operativo, Arquitetura de
CP1 Sistemas Operativos Sistemas Operativos e Abstração de Recursos
(conceitos Gerais)

Função de Sistemas Gestão de processador, Gestão da memória, Gestão dos dispositivos, Gestão de ficheiro, Gestão de proteção
Operativos
Tipo de Sistemas Sistema Operativo Monoprogramado (Monotarefa), Sistema Operativo Multiprogramado (Multitarefa), Sistema
Operativos Operativo Multiprogramado (Multitarefa) e Sistema Operativo Multiprocessador

FCT
EIC
SO

Estrutura básico
de um sistema Núcleo, Drivers de Dispositivos, Código de Inicialização, Programas utilitários
operativo
Interrupção, Proteção no Núcleo e Chamadas de Sistema (interfaces System calls, Arquitetura SO GNU/LINUX,
Conceitos de
Kernel, Arquitetura Kernel Linux, Sistema de ficheiros Virtual e Processo de inicialização do Kernel Linux)
Hardware
Programa e Processo Conceito de Multiprogramação , Conceito de Processo, componentes de um processo, a
estrutura de um processo, modelo de um processo, caraterística de um processo, Escalonamento, Criação de
Processo, ciclo de vida de um processo, Bloco de controle de processo (PCB), Threads, prática em Linux sobre
processo,Estados de um Processos, , Escalonamento (sheduling) de Processos, objetivo e métricas do
CP2 Gestão de
escalonador, troca de contexto componentes envolvidos, algoritmo de escalonamento
Processos
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Programa da Sumário
Unidade Curricular:
1. ID UNIDADE LETIVA DETALHE
CP3 Comunicação entre
Processo e Por que Comunicação entre Processos(IPC)?, O que são interrupções?, Condições de Corrida ou Race
sincronização ou Conditions, Região Críticas, Exclusão Mútua, Sincronização de Processo em linguagem C, Conceito de Sinal,
Inter-Process Definição, geração e processamento de sinal, Tipo de Sinais em Linux, Gestores de Sinais em Linux,
Communication (IPC)
CP4 Introdução, hierarquia da Memória, Tarefa do gestor da memória, Modelos de gestão de memória em
ambientes monoprogramados, Modelos de gestão de memória em ambientes multiprogramados, Memória
Virtual, memory management unit (MMU), tipos de memórias particionadas(partição fixas e partição variável),
Gestão de Memória Acesso aos dispositivos, gestão da memoria com mapa de bits e gestão da memória com lista encadeado,
algoritmo de gestão da memoria, gestão da memoria virtual, técnica de memória virtual e Outras
Considerações

FCT
EIC
SO

Gestão de Input Output, operações realizadas em I/O, Princípio de hardware de I/O(Dispositivo de blocos e
dispositivos de caractere, controladora, registradores), Velocidade dos periféricos é variável, Input Output
CP5 Gestão de Software, Input Output Programada ,Input Output interrupções, Proteção e segurança, Chamadas de sistemas
Input/Output

Conceito de Ficheiros, utilização de ficheiros, Sistema de Diretório, Sistema de Ficheiro, Proteção de Ficheiros
CP6 Sistemas de ficheiros

O conceito de virtualização, Tipos de máquinas virtuais, Construção de máquinas virtuais e Virtualização na


CP7 Virtualização de prática
sistemas

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Processo Sumário
de Avaliação:
Os elementos de avaliação são os seguintes, com os pesos na nota final indicadas:

REGIME DE AVALIAÇÃO CONTÍNUA


ELEMENTO DE AVALIAÇÃO INTERCALAR (%) TOTAL
T1 - Teste 1 35 %
T2 - Teste 2 35 %

FCT
EIC
SO

TIP- Trabalho Individual e 10%


Participação
TG – Trabalho Grupo 20% 100 %
EXAME

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Processo Sumário
de Avaliação:

As notas intermédias são arredondadas para duas casas decimais. A nota final é um número inteiro.

FCT
EIC
SO

OBS: Qualquer tipo de fraude em qualquer elemento de avaliação implica a impossibilidade de


fazer a cadeira no ano letivo corrente (mesmo que haja exames marcados).

Alternativa: Exame final (100%). O exame final é obrigatório para quem tiver menos de 9,5 (em
20) valores após a soma dos componentes de avaliação contínua.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Processo Sumário
de Avaliação:

DATA ENTREGA DO
VIA DE CONTACTO
ELEMENTOS PRJ / REALIZAÇÃO DOS TESTES /
ENVIO/ENTREGA S/ LOCAL
MINI TESTES

Email /

FCT
Trabalhos A DEFINIR A DEFINIR
MOODLE
EIC
SO

Acompanhamento
do Projeto / Ao longo das aulas páticas
Trabalhos Práticos
1ºTeste 12-2022 A DEFINIR

2º Teste 01-2023

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Bibliografias:
• MACHADO, FRANCIS B.; MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais. Rio de Janeiro:
Livros Técnicos e Científicos, 2002.
• Tanenbaum, A. (2003). Sistemas Operacionais Modernos. Prentice-Hall (ISDN 85-7054-059-0)
• TANENBAUM, A. S., WOODHULL. Sistemas Operacionais: projeto e implementação. 2a. ed.. Porto
Alegre : Bookman, 2000. ISBN 8573075309.

FCT
EIC

• Silberschatz, A., Galvin, P.T., Gagne, G., Wiley, S. (2001). Operating System Concepts.8th edition,
SO

ISBN 0-470-12872-0
• Silberschatz, A., Galvin, P.T., Gagne, G., Wiley, S. (2012). Operating System Concepts.9th edition,
ISBN 978-1-118-06333-0 9
• Maziero, C. (2019). Sistemas Operacionais: Conceitos e Mecanismos, ISBN: 978-85-7335-340-2
• Trezentos, P., Cardoso, A. (2001). Fundamental de Linux. FCA, ISBN 972-722-328-1.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Observações:

A assistência às aulas nesta disciplina é de carácter obrigatório e distribuída da seguinte forma:

• Aulas teóricas a presença é obrigatória em pelo menos 80% das aulas lecionadas;

• Aulas práticas a presença é obrigatória em pelo menos 90% das aulas lecionadas.

FCT
O não cumprimento das percentagens indicadas no ponto anterior impede o aluno de ser avaliado à
EIC
SO

disciplina salvaguardando o disposto no regulamento geral.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Dúvidas/Perguntas:

???:.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário

FCT
EIC
SO

OBRIGADO PELA ATENÇÃO!

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


SistemaSumário
Operativo:
Sistemas operativos são necessários nos mais simples microcomputadores
domésticos ou nos mais sofisticados supercomputadores de institutos de
pesquisa ou de grandes corporações.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


SistemaSumário
Operativo:

O Sistema Operativo é o primeiro sistema que entra em funcionamento


quando ligamos um computador, tablet, smartphone, smart tv e etc.

FCT
EIC
SO

SO tem a capacidade de colocar em funcionamento o hardware, pois


fornece as informações básicas para inicialização e processamento de
dados necessários para início das tarefas básicas do eletroeletrônico.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Sistema Operativo:

about

FCT
EIC
SO

SISTEMA OPERATIVO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sistema Operativo:

about
O Sistema Operativo – é um programa que funciona como
intermediário entre o utilizador do computador e os recursos físicos.

Utilizador

FCT
EIC
SO

Aplicação

Sistema
operativo

Hardware
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
SistemaSumário
Operativo:

O sistema operativo - é um programa que controla e coordena o uso


do hardware do computador entre os vários programas de aplicação
para os vários utilizadores.

FCT
Assim, podemos dizer que o sistema operativo é um conjunto de módulos
EIC
SO

de software que fazem gestão dos recursos do sistema, resolvem seus


conflitos, simplificam o uso da máquina e otimizam seu desempenho
global.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


SistemaSumário
Operativo:
Aplicação sem Sistema Operativo
• Gasta maior tempo de programação
• Aumento de dificuldade
• Utilizador preocupado com detalhes de hardware

FCT
EIC
SO

Utilizador Aplicação
Rotinas de E/S

Hardware

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


SistemaSumário
Operativo:
Aplicação com Sistema Operativo
• Maior racionalidade
• Maior dedicação aos problemas de alto nível
• Maior portabilidade

FCT
EIC
SO

Utilizador Aplicação
Sistema
operativo
Hardware

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Objetivos de umSumário
Sistema Operativo:
1. Executar programas do utilizador e tornar mais fácil a resolução de
problemas. Suporte e gestão dos recursos lógicos (software).

2. Tornar conveniente a utilização do computador. Proporcionar uma

FCT
EIC

máquina estendida (serviços)


SO

3. Utilizar os recursos físicos (hardware) do computador de forma


eficiente

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Objetivos de umSumário
Sistema Operativo:
Abstração de Recursos
Aceder os recursos de hardware de um sistema de computação pode ser uma tarefa complexa,
devido às características específicas de cada dispositivo físico e a complexidade de suas interfaces.

Como seria os passos para abertura de um ficheiro em linguagem C?


Ex: FOPEN(“ficheiroA.txt”,”WR”);

FCT
EIC
SO

fscanf();
fprintf();
Abstrair significa ter interfaces simples e homogêneas:
• Aplicativos deve funcionar indepentendes do hardware e acesso homogênos a dispositivos com
tecnologias diferente.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Objetivos de umSumário
Sistema Operativo:
Gestão de Recursos
Os programas aplicativos usam o hardware para atingir seus objetivos:
• Ler e armazenar dados,
• editar e imprimir documentos,
• navegar na Internet,

FCT
EIC
SO

• tocar música,
• e etc.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Objetivos de umSumário
Sistema Operativo:
Gestão de Recursos
Em um sistema com várias atividades simultâneas, podem surgir conflitos no uso do
hardware, quando dois ou mais aplicativos precisam dos mesmos recursos para
poder executar.

FCT
EIC
SO

Cabe ao sistema operativo definir políticas para gestão do uso dos recursos de
hardware pelos aplicativos, e resolver eventuais disputas e conflitos.
Ex: Comando top em linux

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Gestão de Recursos - Sistema Operativo:
Vejamos algumas situações onde a gestão de recursos do hardware se faz necessária:
1. Cada computador normalmente possui menos processadores que o número de tarefas em
execução.
• Por isso, o uso desses processadores deve ser distribuído entre os aplicativos de forma que
cada um deles possa executar na velocidade adequada sem prejudicar os demais.
• O mesmo ocorre com a memória RAM, que deve ser distribuída de forma justa entre as

FCT
EIC
SO

aplicações.
2. A impressora
• É um recurso cujo acesso deve ser efetuado de forma mutuamente exclusiva (apenas um
aplicativo por vez), para não ocorrer mistura de conteúdo nos documentos impressos.
• O sistema operativo resolve essa questão definindo uma fila de trabalhos a imprimir (print
jobs) normalmente atendidos de forma sequencial (FIFO).
3. Ataques de negação de serviço (DoS – Denial of Service) são comuns na Internet.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Sumário
AULA PRÁTICA UBUNTU

INSTALAR VIRTUAL BOX


INSTALAR UBUNTU DESKTOP

FCT
EIC
SO

WSL
PUTTY
WINSCP
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
EIC Sumário
AULA PRÁTICA UBUNTU
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


EIC Sumário
AULA PRÁTICA UBUNTU
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Função do Sistema Operativo

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Função do Sistema Operativo:
Na pratica um SO é a interface entre o utilizador e a máquina cujas principais funções são:

1. Gestão de processador
2. Gestão da memória
3. Gestão dos dispositivos

FCT
EIC
SO

4. Gestão de ficheiro
5. Gestão de proteção

More /proc/cpuinfo

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Função do Sistema Operativo:
1. Gestão de Processador:

• Também conhecida como gestão de processos ou de atividades, esta


funcionalidade visa distribuir a capacidade de processamento de forma justa
entre as aplicações, evitando que uma aplicação monopolize esse recurso e

FCT
EIC
SO

respeitando as prioridades dos utilizadores.

• O S.O fornece a ilusão de que existe um processador independente para cada


tarefa, o que facilita o trabalho dos programadores de aplicações e permite a
construção de sistemas mais interativos.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Função do Sistema Operativo:
2. Gestão de Memória:
• Tem como objetivo fornecer a cada aplicação uma área de memória própria.
• Caso a memória RAM existente seja insuficiente para as aplicações, o S.O pode
aumentá-la de forma transparente às aplicações, usando o espaço disponível em
um meio de armazenamento secundário. Uma importante abstração construída

FCT
EIC
SO

pela gestão de memória é a noção de memória virtual, que desvincula os


endereços de memória vistos por cada aplicação dos endereços acedido pelo
processador na memória RAM.
• Com isso, uma aplicação pode ser carregada em qualquer posição livre da
memória, sem que seu programador tenha de se preocupar com os endereços de
memória onde ela irá executar.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Sumário
Função do Sistema Operativo:
3. Gestão de Dispositivos(I/O):
• Cada periférico do computador possui suas particularidades; assim, o
procedimento de interação com uma placa de rede é completamente diferente
da interação com um disco rígido.
• A função da gestão de dispositivos é implementar a interação com cada

FCT
EIC
SO

dispositivo por meio de drivers e criar modelos abstratos que permitam agrupar
vários dispositivos distintos sob a mesma interface de acesso.
• Por exemplo, é possível criar uma abstração única para a maioria dos
dispositivos de armazenamento como pendrives, discos SATA ou SSD etc; na
forma de um vetor de blocos de dados.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Função do Sistema Operativo:
4. Gestão de ficheiros(Files):
• Esta funcionalidade é construída sobre a gestão de dispositivos e visa criar
ficheiros e diretórios, definindo sua interface de acesso e as regras para seu uso.
• É importante observar que os conceitos abstratos de ficheiro e diretório são tão
importantes e difundidos, que muitos sistemas operativos os usam, para permitir o

FCT
EIC
SO

acesso a recursos.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Função do Sistema Operativo:
5. Gestão de Proteção:
• Com computadores conectados em rede e partilhados por vários utilizadores, é
importante definir claramente os recursos que cada utilizador pode aceder, as
formas de acesso permitidas (leitura, escrita, etc.) e garantir que essas definições
sejam cumpridas.

FCT
EIC
SO

• Para proteger os recursos do sistema contra acessos indevidos, é necessário:


a) Definir utilizadores e grupos de utilizadores;
b) Identificar os utilizadores que se conectam ao
sistema, através de procedimentos de autenticação;
c) Definir e aplicar regras de controlo de acesso aos
recursos, relacionando todos os utilizadores, recursos
e formas de acesso;
d) Registar o uso dos recursos pelos utilizadores, para
fins de auditoria e contabilização.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Estrutura de um Sistema

FCT
EIC
SO

Operativo

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Estrutura de umSumário
Sistema Operativo:
• Um SO é composto de diversos componentes com objetivos e funcionalidades
complementares. Alguns dos componentes mais relevantes de um sistema
operativo típico são:

1. Núcleo

FCT
EIC
SO

2. Drivers de dispositivos
SO 3. Código de inicialização
4. Programas utilitários

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Estrutura de umSumário
Sistema Operativo:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Estrutura de umSumário
Sistema Operativo:

1. Núcleo
• É o coração do sistema operativo, responsável pela gestão dos

FCT
EIC
SO

recursos do hardware usados pelas aplicações.

• Ele também implementa as principais abstrações utilizadas

SO
pelos programas aplicativos.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Estrutura de umSumário
Sistema Operativo:

2. Drivers de Dispositivos
• Módulos de código específicos para aceder os dispositivos

FCT
EIC
SO

físicos. Existe um driver para cada tipo de dispositivo, como


discos rígidos IDE, SATA, SSD, portas USB, placas de vídeo, etc.

SO
• Muitas vezes o driver é construído pelo próprio fabricante do
hardware e fornecido em forma compilada (em linguagem de
máquina) para ser conectado ao restante do sistema operativo.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Estrutura de umSumário
Sistema Operativo:

3. Código de Inicialização
• A inicialização do hardware requer uma série de tarefas

FCT
EIC
SO

complexas, como reconhecer os dispositivos instalados, testá-


los e configurá-los adequadamente para seu uso posterior.

SO
• Outra tarefa importante é carregar o núcleo do sistema
operativo em memória e iniciar sua execução.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Estrutura de umSumário
Sistema Operativo:

4. Programas Utilitários
• São programas que facilitam o uso do sistema computacional,

FCT
EIC
SO

fornecendo funcionalidades complementares ao núcleo, como


formatação de discos, configuração de dispositivos,
manipulação de ficheiro (mover, copiar, apagar), interpretador

SO
de comandos, terminal, interface gráfica, gestão de janelas, etc.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Tipos de Sistemas Operativos

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Tipos de Sistemas Operativos:
Processo
Processo/Job /Job Processo
/Job

Processo
Processo /Job
/Job
Dispositivos Dispositivos
E/S E/S
Processo
/Job

FCT
EIC
SO

Processo
/Job Processo
/Job

Processo
Processo /Job
/Job

Processo
Dispositivos /Job
E/S

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Tipos de Sistemas Operativos:
• Os sistemas operativos podem ser classificados segundo diversos parâmetros e
perspetivas, como tamanho, velocidade, suporte a recursos, acesso à rede, etc.
• Batch - os SOs mais antigos, todos os programas a executar eram colocados em uma fila.
Executa tarefas sequenciais (transações, etc). O processador recebia os programas e os
processava sem interagir com os usuários, o que permitia um alto grau de utilização do
sistema.

FCT
EIC
SO

• De rede - aceder recursos em outros computadores da rede, como ficheiros e impressoras


• Distribuído - os recursos de cada computador estão disponíveis a todos na rede, de forma
transparente. Ao lançar uma aplicação, o usuário interage com sua interface, mas não sabe
onde ela está executando ou armazenando seus ficheiros.
• Multiusuário deve suportar a identificação do “dono” de cada recurso dentro do sistema
(ficheiros, processos, áreas de memória, conexões de rede) e politica de acesso
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Sumário
Tipos de Sistemas Operativos:
• CONT…
• Servidor : Um SO servidor deve permitir a gestão eficiente de grandes quantidades de
recursos (disco, memória, processadores), impondo prioridades e limites sobre o uso dos
recursos pelos usuários e seus aplicativos. Normalmente um SO servidor também tem suporte
a rede e multiusuários.
• Desktop: Suas principais características são a interface gráfica, o suporte à interatividade e

FCT
EIC
SO

a operação em rede. Exemplos de sistemas desktop são os vários sistemas Windows (XP,
Vista, 7, 10, etc.), MacOS e Linux.
• Móvel: um SO móvel como smartphones e tablets. As principais prioridades são a gestão
eficiente da energia (bateria), a conectividade nos diversos tipos de rede (wifi, GSM,
Bluetooth, NFC, etc) e a interação com uma grande variedade de sensores. Android e iOS
são bons exemplos desta categoria.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Tipos de Sistemas Operativos:
• CONT…
• Embarcado : é dito embarcado (embutido ou embedded) quando é construído para operar
sobre um hardware com poucos recursos de processamento, armazenamento e energia.
Aplicações típicas desse tipo de sistema aparecem em sistemas de automação e
controladores automotivos, equipamentos eletrônicos de uso doméstico.
• Tempo Real: Os sistemas de tempo real (real-time) - são sistemas nos quais o tempo é

FCT
EIC
SO

essencial, não precisa ser necessariamente ultrarrápido; sua característica essencial é que o
tempo de resposta deve ser previsível.
• Existem sistemas de tempo real críticos (hard real-time systems), nos quais a
perda de um prazo pelo sistema pode perturbar seriamente o sistema físico sob
seu controle, com graves consequências humanas, econômicas ou ambientais.
• sistemas de tempo-real não-críticos (soft real-time systems), a perda de um prazo é perceptível e degrada
o serviço prestado, sem maiores consequências. Exemplos desse tipo de sistema são os softwares de
reprodução de mídia: em caso de atrasos, podem ocorrer falhas na música que está sendo tocada.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Sumário
AULA PRÁTICA UBUNTU

Principais Comandos do Terminal no LINUX


EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


.:DOCENTE:. José Olavo Teixeira
Principais Comandos do Terminal no LINUX:.
1. ls (lista o conteúdo de um diretório)
Exemplo: $ ls

2. ls -a (lista os diretórios, ficheiro oculto e executáveis)


Exemplo: $ ls -a

3. ls -l (Lista o conteúdo de um diretório detalhadamente)


Exemplo: $ ls -l

4. pwd (mostra o diretório corrente)


Exemplo: $ pwd

5. cd (muda de diretório)
Exemplo: $ cd /etc
58
Principais Comandos do Terminal no LINUX:.
• Ferramentas: Putty e WinSCP
1. sudo apt-get update -> atualizar o ubuntu
2. ifconfig -> ver endereço IP
3. sudo apt install net-tools
4. ifconfig
5. fechar a maquina mudar de nat para bridge
6. reboot ->reiniciar server
7. sudo apt install openssh-server
8. sudo service ssh restart
9. sudo service ssh status
10. usa terminal de qualquer lugar ou putty
11. endereço IP do server porta 22
12. User /password

59
Principais Comandos do Terminal no LINUX:.
6. cd - (volta para o diretório anterior)
Exemplo: $ cd -

7. cd .. (volta um diretório acima)


Exemplo: $ cd ..

8. cd ~ (volta para seu diretório /home)


Exemplo: $ cd ~

9. mkdir [pasta] (cria uma pasta com o nome desejado)


Exemplo: $ mkdir programas

10. mkdir [pasta1] [pasta2] (cria pasta1 e pasta2 ao mesmo tempo)


Exemplo: $ mkdir teste1 teste2
60
Principais Comandos do Terminal no LINUX:.
11. mkdir -p [pasta]/[sub-pasta] (cria um diretório e um sub-diretório)
Exemplo: $ mkdir -p teste3/teste3_1

12. rm -r [pasta/ficheiro] (deleta uma pasta ou ficheiro)


Exemplo: $ rm -r teste3

13. mv [ficheiro1] [ficheiro2] (renomeia uma pasta)


Exemplo: $ mv teste teste2

14. mv [ficheiro] [caminho] (move o ficheiro para um determinado caminho)


Exemplo: $ mv imagem.jpg ~/Desktop

15. cp [ficheiro] [caminho] (copia um ficheiro para um determinado caminho)


Exemplo: $ cp imagem.jpg ~/ Desktop/pasta1 ou cp -r teste2 pasta1
61
Principais Comandos do Terminal no LINUX:.

16. cat > [ficheiro] (cria novo ficheiro e digite o conteúdo do ficheiro)
Exemplo: $ cat > teste.txt
O comando a seguir copiará o conteúdo de file1.txt para file2.txt
cat file1.txt > file2.txt

17. touch [ficheiro] (cria um ficheiro)


Exemplo: $ touch teste
• who –u Mostra utilizadores conectados ao sistema
o Exemplo: $ who –u
• Whoami Mostra o utilizador com quem a sessão do terminal foi iniciada

62
Principais Comandos do Terminal no LINUX:.
• sudo su root Altere o utilizador atual para nome de utilizador (ele solicitará a senha do
utilizador com quem queremos fazer login)
o Exemplo: $ sudo su root
• who –b Exibe a data e hora da última reinicialização do sistema
• ps –A Mostrar todos os processos em execução e identificador de processo (PID)
• kill -9 numeroprocesso Feche o processo especificado pelo PID (número do processo)
o Exemplo: $ kill -9 4544
• apt-get install nomeaplicação Instale o aplicativo especificado (se você tiver uma
conexão com a Internet), disponível apenas nas distribuições Debian
o Exemplo: $ apt-get install mysql-server
• apt-get update Atualize o base de dados de pacotes a serem atualizados ou instalados a
partir do ficheiro '/etc/apt/sources.list'. O base de dados é um conjunto de ficheiros
localizado em '/ var / lib / apt / lists /'

63
Principais Comandos do Terminal no LINUX:.
• apt-get upgrade Atualize todos os pacotes instalados no sistema para a versão mais
recente disponível

• ifconfig Mostra o IP do PC e a configuração de rede

• uname -a Mostrar informações do sistema

64
Ligando, Desligando e Reinicializado o Linux:.
• Saindo do Sistema com Logout
• Ao terminar seu trabalho você deve sair do sistema, o comando logout é utilizado para fechar
sua conta. Ex: logout gnome-session-quit
• Você pode também sair do terminal usando o comando exit

• Desligando e Reinicializando o Sistema


• Outra forma de sair do sistema é desligando a máquina. Nunca desligue a máquina sem os
comandos apropriados, pois isto pode corromper o sistema de ficheiros do Linux. Ao se desligar
a máquina corretamente, o Linux finalizará os programas, gravará os dados no disco rígido e
começará a mostrar procedimentos de finalização (FS, sinais KILL, SIGTERM para os processos
residentes na memória).

65
Ligando, Desligando e Reinicializado o Linux:.
• Desligando Imediatamente
• Para desligar o computador utilizamos o comando shutdown . Se quiser desligar imediatamente
utilize o comando shutdown -h now . Ele vai pedir a senha do administrador para desligar a
máquina. A opção h significa que é para parar o computador. Para desligar a máquina você terá
que ter a senha de root.
• Outra maneira de desligar a máquina é utilizar o comando poweroff . Ex: sudo poweroff
• Desligando após um determinado tempo. Se você quer desligar a máquina após 3 minutos
utilizamos o mesmo comando, mas passamos como argumento o tempo.
• Ex: sudo shutdown -h +3

66
Ligando, Desligando e Reinicializado o Linux:.
• Desligando em uma hora específica
• Para desligar em uma hora determinada basta passar a hora desejada como argumento. O
exemplo apresenta o comando para desligar a máquina às 10:10 da manhã.
• $ sudo shutdown -h 10:10

• Cancelando um shutdown
• Quer interromper o comando de shutdown? Vamos supor que tenha digitado o seguinte
comando (Desligando em 5 minutos ): $ sudo shutdown -h +5
• Para cancelar um shutdown vá em outro terminal e digite o comando: sudo shutdown -c

67
Ligando, Desligando e Reinicializado o Linux:.
• Reinicializado a máquina
• Para reinicializar uma máquina podemos utilizar o comando reboot.
• ex: sudo reboot
• O comando apresentado a seguir tem o mesmo resultado do comando reboot.
• ex sudo shutdown -r now

• Reinicializando após determinado tempo


• Para programar o tempo na qual a máquina irá reinicializar utilizamos a opção -r +tempo. A
Listagem 2.12 apresenta o comando.

68
Principais Comandos do Terminal no LINUX:.

• Gestão de Utilizador
• Gestão de Grupos
• Permissões para proprietário, grupo e todos

69
Gestão de Utilizador em Linux :.

• Criar utilizadores no Linux é mais simples ainda, você só precisa digitar:


o sudo adduser nomeutilizador
• Caso queira alterar a senha desse utilizador posteriormente, utilize o
comando:
o sudo passwd nomeutilizador
• Se precisamos ver todos os utilizadores presentes no sistema,
simplesmente olhe no ficheiro /etc/passwd. Por exemplo:
o cat /etc/passwd
70
Gestão de Utilizador em Linux :.
• Para apagar qualquer utilizador do Linux, utilize userdel, exemplo:
o sudo userdel nomeutilizador
• Por exemplo, se eu quisermos dar o privilégio de utilização do “sudo” (superutilizador)
para qualquer utilizador ficaria assim:
o sudo adduser nomeutilizador sudo
• Mudar utilizador
o usermod -l novo-utilizador antigo-utilizador

71
Gestão de Grupos em Linux :.
• Para criar qualquer grupo no Linux, basta utilizar groupadd, veja:
o sudo groupadd financeiro
• Para apagar qualquer grupo utilize delgroup, veja:
o sudo delgroup financeiro
• Para adicionar qualquer utilizador em um novo grupo, utilize novamente adduser,
porém agora mencione o grupo que deseja.
o sudo adduser nomeutilizador nomegrupo
• Como listar todos os utilizadores que estão no mesmo grupo:
o cat /etc/group
72
Gestão de Grupos em Linux :.
• Para listar utilizadores de um grupo em específico, digite o seguinte:
o grep nomegrupo /etc/group
• Para ver todos os utilizadores do grupo sudo do Ubuntu:
o grep sudo /etc/group

73
Permissões em Linux :.

• Permissões, são conjuntos de direitos que são aplicados a


ficheiros ou diretórios do sistema de ficheiro.

• Elas garantem que um utilizador que não se enquadre nas


permissão atribuídas a um ficheiro, não tenha acesso ao mesmo,
ou não possa executá-lo, ou ainda alterá-lo.

74
Permissões em Linux :.

• Aplicado em três classes de privilégio:


✓Utilizador (proprietário)
✓Grupo
✓ Outros
• Tais permissões são “read” (ler), “write” (escrever) e “execute”
(executar). “rwx”.

75
Permissões em Linux :.

• Um utilizador que tem controle total em determinado ficheiro,


terá os bits de cada uma das permissões ligados (com valor 1):

rwx
111
• Utilizando a conversão de binário para decimal, sabemos que 111
daria 7 (sete), portanto, essa é a maior permissão que um
utilizador poderia ter em um ficheiro ou diretório.
76
Permissões em Linux :.

• Se um utilizador não tem determinada permissão, o bit referente àquela


permissão estará desligado (valor 0).
• Por exemplo, um utilizador que não pode escrever em um ficheiro ou
diretório teria a seguinte permissão:
r-x
101
• Novamente, utilizando a conversão de binário para decimal, 101 seria 5.

77
Permissões em Linux :.

• rwx • -wx
111 = 7 (Ler, escrever e executar) 011 = 3 (Escrever e executar)
• rw- • -w-
110 = 6 (Ler e escrever) 010 = 2 (Escrever)
• r-x • --x
101 = 5 (Ler e executar) 001 = 1 (Executar)
• r-- • ---
100 = 4 (Ler) 000 = 0 (Nenhuma permissão)

78
Permissões para proprietário, grupo e todos :.
• No Linux sempre temos três tipos permissões, que são para o
proprietário do ficheiro ou diretório (o dono que o criou), para o
grupo e para todos. Portanto, temos três combinações de “rwx”
divididas em três grupos.
• Por exemplo, uma pasta poderia ter a seguinte permissão:
✓drwxr-x--- utilizador grupo
• diretórios recebem um “d” inicial.

79
Permissões para proprietário, grupo e todos :.
✓drwxr-x--- utilizador grupo
• Veja o exemplo acima detalhado abaixo:
✓ d: É um diretório (pasta)
✓ rwx: Permissão do proprietário do diretório (7 – controle total)
✓ r-x: Permissão do grupo do diretório (5 – Ler e executar)
✓ ---: sem permissão
✓ utilizador: O Proprietário do ficheiro
✓ grupo: O grupo do ficheiro
80
Permissões para proprietário, grupo e todos :.
• Para visualizar as permissões de qualquer coisa dentro do Linux,
tanto para ficheiro quando diretórios utilizamos o comando:
✓ ls -l /caminho/pasta
• Isso é exibido para todos os ficheiro e diretórios da pasta que
você escolheu.

81
Permissões para proprietário, grupo e todos :.
• Alterando permissões de ficheiros e pastas no Linux
• Utilizamos o comando chmod para alterar permissões de
ficheiros e pastas no Linux. Este comando tem o seguinte
formato:
✓chmod [permissões] [ficheiro/diretório] [-R]

82
Permissões para proprietário, grupo e todos :.
✓chmod [permissões] [ficheiro/diretório] [-R]
• Para [permissões] eu devo indicar quais serão as permissões para o proprietário
• Para [ficheiro/diretório] eu simplesmente indico o caminho do local onde desejo
alterar as permissões.
• O [-R] é opcional, caso você esteja alterando permissões de diretórios, ele indicará que
o chmod deverá alterar as permissões de todos os ficheiros dentro daquele diretório
de maneira recursiva. Observação: Somente o Superusuário poderá alterar permissões
de ficheiro e pastas, portanto, é necessário utilizar sudo antes do comando. Exemplo:

✓ sudo chmod 750 pasta/ -R


83
Proprietário e grupo de ficheiros e diretórios:.
Proprietário Grupo todos
rwx rwx r-x
7 7 5

• Proprietário, grupo e todos(rwxrwxrwx)


• Modificando as permissões (chmod)
• Modificando o proprietário(chown)
• Modificando o grupo (chgrp)

84
Proprietário e grupo de ficheiros e diretórios:.
• Alterando o proprietário e grupo de ficheiros e diretórios
• Depois das permissões do Linux, podemos começar a
manipular quem é dono e qual é o grupo de determinado
ficheiro ou pasta.
• Para alterar o proprietário de um ficheiro ou pasta qualquer,
utilizamos o comando “chown” (change owner). Este
comando tem a seguinte sintaxe:

85
Proprietário e grupo de ficheiros e diretórios:.
• Chown [novo proprietário] [caminho/pasta/ficheiro] [-R]
• Para [novo proprietário] utilizamos o nome de usuário do
novo proprietário.
• Para [caminho/pasta/ficheiro] indicamos o caminho da pasta
ou do ficheiro que queremos alterar.
• O [-R] serve para pastas e indica “modo recursivo”, ou seja,
altere a pasta e todos os ficheiros dentro dela. Ele é opcional.

86
Proprietário e grupo de ficheiros e diretórios:.
• Para modificar o grupo de ficheiros e pastas dentro do Linux,
utilizamos o comando “chgrp” (change group) com a seguinte
sintaxe:
• chgrp [novo grupo] [caminho/pasta/ ficheiro] [-R]
• O [novo grupo] é o nome do novo grupo, [caminho/pasta/
ficheiro] é o caminho da pasta ou ficheiro e [-R] indica para
alterar todos os ficheiros dentro daquela pasta.

87
Conceitos de Hardware

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware

1. Interrupções

2. Proteção do núcleo

FCT
EIC
SO

3. Chamadas de Sistema

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware
• Estrutura de um SO
• O sistema operativo interage
diretamente com o hardware
para fornecer serviços às
aplicações.

FCT
EIC
SO

• Para a compreensão dos


conceitos implementados pelos
sistemas operativos, é necessário
ter uma visão clara dos recursos
fornecidos pelo hardware e a
forma de acedê-los.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
ConceitosSumário
de Hardware
Os principais elementos constituintes do computador estão interligados por um ou
mais barramentos (para a transferência de dados, endereços e sinais de controle).

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware
Endereços de dispositos

Dispositivo Endereços de acesso

FCT
EIC
SO

temporizador 0040-0043
teclado 0060-006F
porta serial COM1 02F8-02FF
controlador SATA 30BC-30BF
controlador Ethernet 3080-309F
controlador 3000-303F

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware
Interrupções
• Quando um controlador de periférico tem uma informação importante a fornecer
ao processador, ele tem duas alternativas de comunicação:

1. Aguardar até que o processador o consulte, o que poderá ser demorado caso o

FCT
EIC
SO

processador esteja ocupado com outras tarefas (o que geralmente ocorre);

2. Notificar o processador através do barramento de controle, enviando a ele uma


requisição de interrupção (IRQ – Interrupt ReQuest).

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware
Tratamentos de Interrupções (placa de rede)

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware
Tratamentos de Interrupções (placa de rede)
1. Um pacote vindo da rede é recebido pela placa Ethernet;
2. A placa envia uma solicitação de interrupção (IRQ) ao processador;
3. O processamento é desviado do programa em execução para a rotina de
tratamento da interrupção;

FCT
EIC
SO

4. A rotina de tratamento é executada para receber as informações da placa de


rede (via barramentos de dados e de endereços) e atualizar as estruturas de
dados do sistema operativo;
5. A rotina de tratamento da interrupção é finalizada e o processador retorna à
execução do programa que havia sido interrompido.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
ConceitosSumário
de Hardware
Proteção do Núcleo
• Como impedir as aplicações de aceder o hardware diretamente?

S.O faz gestão dos recursos de hardware,


fornecendo-os às aplicações conforme as suas
necessidades.

FCT
Proteção
EIC
SO

do Núcleo
Então proteção de núcleo garante a integridade
dessa gestão. Assegurar que as aplicações não
consigam aceder o hardware diretamente, mas
sempre através de pedidos ao S.O, que avalia e
intermedeia todos os acessos ao hardware
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
ConceitosSumário
de Hardware
Proteção do Núcleo
• Como interagir com o hardware?
o O núcleo e os drivers devem ter total acesso ao hardware, para poder
configurá-lo e fazer gestão,
o Os utilitários e os aplicativos devem ter acesso mais restrito,

FCT
EIC
SO

o Aplicações com acesso total ao hardware tornariam inúteis os mecanismos


de segurança e controle de acesso aos recursos (tais como ficheiros,
diretórios e áreas de memória).

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware
Proteção do Núcleo
• Para diferenciar os privilégios de execução utilizamos os níveis de privilégios
de execução
• Níveis Básicos de Privilégios:

FCT
EIC
SO

Níveis
Nível Nível
Básicos de
núcleo Utilizador
Privilégios

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware
Proteção do Núcleo
1. Nível Núcleo: Denominado (Nível Supervisor, Sistema, Monitor, Kernel
Space) Para um código executando nesse nível, todo o processador deve estar
acessível.

FCT
• Recursos Internos (Registradores, Portas Entrada/Saída);
EIC
SO

• Áreas de Memória podem ser acedidos ;


• Todas as instruções do processador podem ser executadas. Ao ser ligado, o
processador entra em operação neste nível

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware
Proteção do Núcleo
2. Nível Utilizador: (ou Userspace) neste nível, somente um subconjunto das
instruções do processador, registradores e portas de entrada/saída estão
disponíveis .

FCT
São restringidos/proibidos, por exemplo:
EIC
SO

• Usar instrução HALT (Parar processador);


• Usar instrução RESET (Reiniciar processador);
• Restringe o uso da memória, permitindo
acesso somente a áreas previamente definidas;

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware
Proteção do Núcleo
O que acontece se o código em execução tentar executar uma instrução proibida?

FCT
EIC
SO

O hardware irá gerar uma exceção, desviando a execução para uma rotina de
tratamento dentro do núcleo, que provavelmente irá abortar o programa em
execução.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


ConceitosSumário
de Hardware
Separação entre o núcleo e as aplicações

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
Chamada de Sistema ou System Calls
• A separação de cada aplicação em sua área de memória, imposto pela MMU
aos acessos em memória em nível usuário, provê firmeza e confiabilidade ao
sistema, pois garante que uma aplicação não poderá interferir nas áreas de
memória de outras aplicações ou do núcleo.

FCT
EIC
SO

• Entretanto, essa proteção introduz um novo problema:


• como invocar, a partir da aplicação, as rotinas oferecidas pelo núcleo
para o acesso ao hardware e demais serviços do SO?

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
Chamada de Sistema ou System Calls
• Se uma aplicação precisa realizar alguma instrução privilegiada(ex print/write
um ficheiro), Ela realiza uma System Calls, que altera do nível utilizador para
nível Kernel;
aplicação

FCT
EIC
SO

Nível utilizador
System Call SO Nível Kernel

HD
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Sumário
System Calls
Chamada de Sistema ou System Calls
• O que é Chamadas de Sistema?
1. São portas de entrada para se ter acesso ao Kernel do sistema operativo.
2. As chamadas do sistema são o método simples de permitir que os processos do
utilizador interage com o kernel.

FCT
EIC
SO

3. São funções que permitem o acesso aos serviços do núcleo como por exemplo:
❑ Abrir/ler/escrever/fechar ficheiros
❑ Enviar/receber dados através da rede
❑ Ler teclado
❑ Escrever dados na tela
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Sumário
System Calls
Chamada de Sistema ou System Calls
• Uso de chamadas de sistema em ambiente Linux

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
Chamada de Sistema ou System Calls
• Esse código em C, ao ser
reescrito em Assembly
x86, mostra claramente a
preparação e invocação

FCT
EIC
SO

das chamadas de sistema:

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
Chamada de Sistema ou System Calls
• funcionamento básico da
chamada de sistema write,
que escreve dados em um
ficheiro previamente aberto.

FCT
EIC
SO

A seguinte sequência de
passos é realizada:

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
Chamada de Sistema ou System Calls
A maioria dos sistemas operativos implementa centenas de chamadas de
sistema distintas, para as mais diversas finalidades.
O conjunto de chamadas de sistema oferecidas por um núcleo define a API (Application
Programming Interface) do sistema operativo .

FCT
EIC
SO

Exemplos de APIs bem conhecidas são:


a) A Win32, oferecida pelos sistemas Microsoft derivados do Windows NT,
b) e a API POSIX que define um padrão de interface de núcleo para sistemas UNIX

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
Chamada de Sistema ou System Calls
• O conjunto de chamadas de sistema de um SO pode ser dividido nas seguintes
grandes áreas:
❑ Gestão de processos: criar, carregar código, terminar, esperar, ler/mudar atributos.
❑ Gestão da memória: alocar/liberar/modificar áreas de memória.

FCT
EIC
SO

❑ Gestão de ficheiros: criar, remover, abrir, fechar, ler, escrever, ler/mudar


atributos.
❑ Comunicação: criar/destruir canais de comunicação, receber/enviar dados.
❑ Gestão de dispositivos: ler/mudar configurações, ler/escrever dados.
❑ Gestão do sistema: ler/mudar data e hora, desligar/suspender/reiniciar o sistema.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
Interfaces das System Calls :

User Space - é o espaço no qual os


aplicativos de utilizadores são
executados.
GNU C Library (glibc) - Fornece a

FCT
EIC

interface de chamada do sistema que


SO

se conecta ao kernel e fornece o


mecanismo para transição entre o
aplicativo User Space e o kernel.
Kernel Space - O kernel envia
respostas às solicitações dos programas,
programas estes que são executados no
user space.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
Interfaces das System Calls:

Exemplo: Programa C que invoca a


chamada da biblioteca printf(), que
chama write() a chamada do
sistema

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
• Interfaces das System Calls:
• A maioria dos programadores nunca vê os detalhes das chamadas do sistema.
Normalmente, os desenvolvedores de aplicativos projetam programas de acordo
com uma API - Application programming interface.

FCT
EIC
SO

• A API especifica um conjunto de funções que estão disponíveis para um


programador de aplicativos, incluindo os parâmetros que são passados para cada
função e os valores de retorno que o programador pode esperar.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
• Interfaces das System Calls:
• API serve como o link para system calls disponibilizadas pelo SO
• A maioria das linguagens de programação fornece uma interface de chamada do
sistema
• Geralmente escrita em linguagem de alto nível(c, c++ ou java)

FCT
EIC
SO

• Usualmente são acedidos por programas via uma API do que diretamente pelo uso
de chamadas de sistema.
• Interface que encapsula acesso direto as chamadas ao sistemas

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
• Interfaces das System Calls:
• A biblioteca C implementa a API principal em sistemas UNIX, incluindo a
biblioteca padrão de C e o “system calls interface”
• Pontos de vista
❑ Para o programador, a API é essencial

FCT
EIC
SO

❑ Para o kernel o chamada de sistema é tudo

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
System Calls
• Tipos de System Calls:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• O que é Kernel:
• Núcleo ou componente central do sistema operativo. Que fornece serviços

aos programas das camadas superiores.

• Composto por:

FCT
EIC
SO

❑ ficheiros escrito em C

❑ e ASSEMBLY .

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Tipo de Kernel:
• Kernel monolitico:

• MicroKernel:

• Kernel em Camadas :

FCT
EIC
SO

• Kernel híbridos

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Tipo de Kernel:
• Kernel monolitico:

• Todo o núcleo roda em modo privilegiado com acesso a todos os recursos

do hardware e sem restrições de acesso à memória. Por isso, os

FCT
EIC
SO

componentes internos do sistema operativo podem se relacionar entre si

conforme suas necessidades.

• Vantagens: desempenho

• Desvantagens: complexidade, fragilidade


José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
KernelSumário
ou Núcleo
• Tipo de Kernel:
• Kernel monolitico:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Tipo de Kernel:
• MicroKernel:

• O Kernel implementa: • Ficam fora do Kernel:


o espaços de memória protegidos o políticas de escalonamento
o atividade (thread, ...)

FCT
o políticas de uso de memória
EIC
SO

o comunicação entre atividades o sistemas de ficheiros


o protocolos de rede

Vantagens: estabilidade, modularidade


Desvantagens: baixo desempenho

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Tipo de Kernel:
• MicroKernel: Minix3

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Tipo de Kernel:
• Kernel em Camada:

• Princípio: Organizar o núcleo em camadas de abstração

• Características gerais:

FCT
EIC
SO

• Camada inferior: interface com o hardware

• Camadas intermediárias: abstração e gestão

• Camada superior: define as chamadas de sistema

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Tipo de Kernel:
• Kernel Híbrido:

• Combinam características dos anteriores:

• Monolítico, MicroKernel e Kernel em camadas

FCT
EIC
SO

• A maioria dos sistemas atuais é híbrida.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Tipo de Kernel:
• Exemplo Kernel Híbrido:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Arquitetura do Kernel Linux:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Arquitetura do Kernel Linux:

Constituída por 5 principais subsistemas:

Comunicação
Gestão de Processos
entre Processos

FCT
EIC
SO

Gestão de Memória Redes


Sistema de Ficheiros
Virtual
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
KernelSumário
ou Núcleo
• Arquitetura do Kernel Linux:

1. Gestão de Processos
• Foco principal na execução do processo;
• Mantém estruturas de dados do processo;

FCT
EIC
SO

• Principal componente é o escalonador de processos,


• responsável pelo gestão do uso da CPU por processos concorrentes;
• Principais ficheiros:
❑ sched.c: código do escalonador;
❑ fork.c: criação de processos;
❑ sched.h: estrutura task_struct.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
KernelSumário
ou Núcleo
• Arquitetura do Kernel Linux:

2. Gestão de Memória
• Gestão de acesso à memória principal do sistema;
• Possui estruturas de dados para realizar o mapeamento de endereço físico

FCT
EIC
SO

para endereço virtual;


• Principais ficheiros:
• memory.c: paginação;
• filemap.c: mapeamento de memória e cache de página;
• buffer.c: cache do buffer;
• swap_state.c e swapfile.c: cache do swap.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
KernelSumário
ou Núcleo
• Arquitetura do Kernel Linux:

3. Sistema de Ficheiros Virtual


• Provê uma camada de acesso comum para as implementações de sistemas
de ficheiros;

FCT
EIC
SO

• Abstrai os detalhes dos dispositivos físicos e dos sistemas de ficheiros lógicos;


• Principais ficheiros:
❑ fs.h
❑ buffer.c

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Arquitetura do Kernel Linux:

4. Comunicação entre Processos (IPC)

• Provê os mecanismos para comunicação entre processos no sistema;

FCT
• Os mecanismos implementados são:
EIC
SO

❑ Memória partilhada;

❑ Filas de mensagens;

❑ Semáforos.

• Os ficheiros de código fonte encontram-se no diretório ipc/.


José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
KernelSumário
ou Núcleo
• Arquitetura do Kernel Linux:
5. Redes (Network)
• Provê acesso e controle para os diferentes drivers de rede;
• Implementa uma API para acesso aos recursos de rede;

FCT
• Possui um módulo de protocolos de rede que implementa vários tipos de
EIC
SO

protocolo;
• Possui uma interface independente de protocolo para acesso às
implementações da pilha de rede;
• Principais ficheiros:
❑ socket.c
❑ net/core/*
❑ net/ipv4/* José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
KernelSumário
ou Núcleo
• Estrutura do Kernel Linux:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Estrutura do Kernel Linux:
• arch: código dependente de arquitetura de processadores (ex: arch/i386,
arch/arm/arm64);

• init: código de inicialização do kernel do Linux (após a inicialização de

FCT
EIC
SO

hardware). Inicialização dos endereços de página, escalonador, chamadas


de sistema, interrupção e assim por diante;
• crypto: implementação de algoritmos de criptografia. São implementados
como módulos do núcleo do Linux;
• Documentation: contém a documentação do código fonte;

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Estrutura do Kernel Linux:
• drivers: código de implementação de drivers de dispositivos. São
implementados como módulos do kernel do Linux.

• kernel: código dos principais subsistemas do kernel do Linux. Por exemplo,

FCT
EIC
SO

chamada de sistemas, escalonadores, DMA e interrupção. O código


específico de arquitetura é mantido sobre arch/*/kernel;

• include: cabeçalhos genéricos do núcleo do Linux;

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Estrutura do Kernel Linux:
• ipc: código para os três sistemas de IPC (semáforos, memória partilhada e
filas de mensagens);

• lib: bibliotecas do núcleo do Linux. Bibliotecas específicas de arquitetura são

FCT
EIC
SO

mantidas em arch/*/lib;

• mm: código comum para gestão de memória e do subsistema de memória


virtual. Código específico de arquitetura arch/*/mm;

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Estrutura do Kernel Linux:
• net: código para o subsistema de rede. Por exemplo, implementação de
protocolos e soquetes de rede;

• scripts: scripts e código para configurar e compilar o núcleo do Linux;

FCT
EIC
SO

• security: funções de segurança. São implementadas como módulos do


núcleo do Linux;

• virt: código para suporte a virtualização (kvm).

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Estrutura do Processo de inicialização do kernel LINUX

O sistema do computador passa por várias fases

FCT
EIC
SO

de processos de arranque desde o ligar da energia


até que oferece, ao utilizador, o sistema operativo
(SO) totalmente funcional.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Estrutura do Processo de inicialização do kernel LINUX
BIOS Boot Loader BootStrap Kernel Init

• POST (Power On Self Test)


FCT
Inicialização da CPU
EIC
SO

• Verificação da memória RAM


• Inicialização dos dispositivos básicos
• Criação do mapa de memória
• O BIOS (Basic Input / Output System) reconhece o setor de MBR
(Master Boot Record ), se houver um e não estiver corrompido

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Estrutura do Processo de inicialização do kernel LINUX
BIOS Boot Loader BootStrap Kernel Init

• BIOS carrega o (MBR, os primeiros 512 bytes do HD)

FCT
EIC
SO

para a RAM e o executa.


• Carrega o Boot Loader - GRUB
• Carrega a imagem do kernel do Linux para a memória

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Estrutura do Processo de inicialização do kernel LINUX
BIOS Boot Loader BootStrap Kernel Init

• Força a CPU para o modo protegido


FCT
Ativa a MMU - Memory Management Unit
EIC
SO

• Descompacta a imagem ("Decompressing Linux ...")


• Chama a função "start_kernel“
• Inicializa todos os dispositivos, escalonadores, console, etc.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Estrutura do Processo de inicialização do kernel LINUX
BIOS Boot Loader BootStrap Kernel Init

• Inicializa a CPU
• Reinicializa portas e controladores

FCT
Interrupções são ativadas
EIC
SO

• File system é inicializado para permitir leitura de disco


• Monta o sistema de ficheiros raiz, conforme especificado no
“root =” no grub.conf
• Kernel executa a sbin / programa / init
• O init será o primeiro programa a ser executado pela Linux
Kernel, que tem o ID do processo (PID) de 1
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
KernelSumário
ou Núcleo
• Estrutura do Processo de inicialização do kernel LINUX
BIOS Boot Loader BootStrap Kernel Init

• O init é o primeiro processo iniciado no Linux, logo após a carga


do kernel do sistema.

FCT

EIC
SO

Quando é disparado, o init continua a carga do sistema,


geralmente executando vários scripts que irão verificar e montar
sistemas de ficheiros, configurar teclado e iniciar servidores,
entre outras tarefas.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Compilar o kernel do Linux no Ubuntu

• Hoje em dia, não é tão recorrente que precisamos compilar um kernel, apesar
de que há algum tempo atrás foi.

FCT
EIC
SO

• Hoje isso é feito por alguma necessidade específica ou pelo simples fato de
aprender como é feito.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Compilar o kernel do Linux no Ubuntu
• Entre as razões existentes para compilar um kernel, temos:
• Você é um desenvolvedor de kernel.
• Você precisa compilar um kernel com algum recurso especial que um kernel
oficial não possui.

FCT
EIC
SO

• Você está se preparando para consertar um bug no kernel oficial da sua


distribuição.
• Você tem hardware que o kernel oficial da sua distribuição não suporta.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


KernelSumário
ou Núcleo
• Compilar o kernel do Linux no Ubuntu
• Todo o processo de compilação pode ser resumido nas seguintes etapas:
1. Obtenha as fontes do kernel.
2. Instale as ferramentas necessárias para compilação (gcc, build-essentials, etc.).
3. Descompacte os fontes do kernel em / usr / src /

FCT
EIC
SO

4. Configure o kernel (por exemplo, make menuconfig).


5. Compile (make), compile os módulos (make modules), instale os módulos, (make
modules_install).
6. Instale o kernel compilado (make install).
7. Crie a imagem (initrd) para o novo kernel e ajuste o grub para encontrá-lo.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Gestão de Processo

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo

Programa

Processo 1 Processo 2

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo

WINDOWS :.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo

FCT
EIC
SO

LINUX

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Enquanto executam, os processos apresentam 2 tipos de
comportamento:
• Ou usam a CPU:
• Cálculo, operações sobre a memória/registradores

FCT
EIC


SO

Ou fazem Entrada/saída – liberam a CPU


• Escrita na tela, entrada teclado, som, vídeo, rede, disco…

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Um sistema de computação quase sempre tem mais
atividades a executar que o número de processadores
disponíveis

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Programa & Processo :

Um Programa – pode ser várias instancias em execução (em diferente processos).


É a forma como o programador vê o processo a ser executado.

FCT
EIC
SO

Um processo – é único. Código acompanhado de dados e estado. Forma pelo


qual SO vê um programa e possibilita sua execução.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Conceito de Processo :
• Programa: ficheiro com comandos (Estáticos)
• Processo: abstração de um programa em execução (Dinâmico)
• A CPU é um recurso importantíssimo
• Mais processos que CPUs -> Que processo usar?

FCT
EIC
SO

• Ocorre igual com outros recursos limitados(ex: memória)


• Multiprogramação: a CPU passa de um processo a outro rapidamente dando-
lhe a cada um pequeno tempo de computação -> mudança de contexto ->
algoritmo de planificação
• Multiprocessador -> verdadeiro paralelismo (varios cores que executa ao
mesmo tempo varios processos)
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
Conceito de Processo :
• Um processo pode ser considerado como um programa em execução.
• Um processo necessitará de certos recursos – como:
• tempo de CPU, memória, ficheiros e dispositivos de E/S para realizar sua
tarefa.

FCT
EIC
SO

• Esses recursos são alocados para o processo mesmo quando é criado ou


enquanto ele está sendo executado.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Conceito de Processo :
• Os primeiros computadores permitiram que apenas um programa fosse
executado de cada vez.

• Este o programa tinha controle completo do sistema e tinha acesso a todos os

FCT
EIC
SO

recursos sistemas

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Conceito de Processo :
• Os sistemas informáticos atuais permitem que vários programas sejam
carregados na memória e executados simultaneamente.

• Esta evolução exigiu um controle mais firme e uma maior distribuição dos vários

FCT
EIC
SO

programas;
• e essas necessidades resultaram na noção de um processo, que é um programa
em execução.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Conceito de Processo :
• Quanto mais complexo for o sistema operativo, mais espera-se que seja feito em
nome dos seus utilizadores.
• Embora a principal preocupação seja a execução de programas de utilizadores,
Ele também precisa cuidar de várias tarefas do kernel em si.

FCT
EIC
SO

• Um sistema, portanto, consiste em uma coleção de processos:

• processos do sistema operativo, executando o código do sistema

• e os processos do utilizadores, executando o código de utilizador.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Programa & Processo :

Como gerir os processos do sistema?


• Sistemas Monotarefa
• Sistemas Multitarefa

FCT
EIC
SO

• Sistemas de tempo partilhado ou time-sharing

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Programa & Processo :
• Sistemas Monotarefa
• Executam um único processo de cada vez:
1. O programa é carregado do disco para a memória
2. Os dados do programa são carregado na memória

FCT
EIC
SO

3. O programa executa até sua conclusão


4. Os resultados do programa são salvos
5. Repete para o próximo programa
Problemas nos sistemas monotarefa:
• Tarefas esperando por entrada/saída ficam paradas.
• Custo de operação do computador era muito elevado
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
Programa & Processo :
• Sistemas Monotarefa

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Programa & Processo :
• Sistemas Monotarefa - Estados

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Programa & Processo :
• Sistemas Multitarefa
• Carregar vários processos na memória
• Usar o processador ocioso para tratar outros processos
• Um software monitor coordena a troca de tarefas

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Programa & Processo :
• Sistemas Multitarefa
• Diagrama de estados de uma tarefa em um sistema multitarefas

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Programa & Processo :
• Sistemas Multitarefa
• Problema:
• Aplicações em laço infinito podem bloquear o sistema
• Aplicações interativas não funcionam bem

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Programa & Processo :
• Sistemas de tempo partilhado ou time-sharing
• Cada processo recebe uma fatia de tempo (quantum) de CPU
• O processo perde a CPU ao acabar seu quantum

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Programa & Processo :
• Sistemas de tempo partilhado ou time-sharing

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Componentes de um Processo :
1. Conjunto de instruções
2. Espaço de Endereçamento (espaço reservado para que o processo possa ler e
escrever - 0 até max)

FCT
EIC
SO

3. Contexto de hardware (valores nos registradores, ponteiro de pilha e


registradores de propósitos gerais)

4. Contexto de Software (atributos em geral, como lista de ficheiros abertos,


variáveis, etc.)

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• A estrutura de um processo na memória:

2. Um processo geralmente também inclui a pilha (STACK) de


processos, que contém dados temporários (como a função
parâmetros, endereços de retorno e variáveis ​locais)

FCT
EIC
SO

4. Um processo também pode incluir um HEAP, que é memória que


é alocada dinamicamente durante o tempo de execução do
processo.

3. e uma seção de dados (DATA), que contém variáveis ​globais.

1. um processo é um programa em execução. Um processo é mais do


que o código do programa, que às vezes é conhecido como a seção
de texto (TEXT).
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
• O modelo de Processo:
• Todo o software executável se organiza em processos

• Processo: programa em execução que inclui:

• Contador de programa, registros, variaveis, etc...

FCT
EIC
SO

• Na teoria cada processo tem a sua propria CPU

• Realmente so uma CPU muda de um processo a outro: multiprogramação

• So um contador de programa real PC, e muitos virtuais

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Características de Processo:
• Processos CPU-bound (orientados à CPU): processos que utilizam muito o

processador;

• Tempo de execução é definido pelos ciclos de processador;

FCT
EIC
SO

• Processos I/O-bound (orientados à E/S): processos que realizam muito E/S;

• Tempo de execução é definido pela duração das operações de E/S;

• IDEAL: existir um balanceamento entre processos CPU-bound e I/O-bound;

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Criação de Processos:
• Necessitamos de mecanimos de criar e terminar processo -> nem todos os
processos podem estar em memoria
• Criação de processos. Quando se cria?
• Inicio do sistema: processo interativo(primeiro plano) vs daemon (segundo

FCT
EIC
SO

plano ex: email, linux ps)


• Chamada de sistema para criar processo: unix fork() + exec(), win32
CreateProcess -> Dividir o problema em subproblemas
• O utilizador iniciar um processo: Ja seja em modo gráfico ou terminal(ex:
duplo clique do mouse)
• Inicio de um Job por lotes: sistemas Maimframes
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
• Criação de Processos:
• No UNIX com a função fork()

• Cria clone do processo pai: copias exatas na memoria com identificadores


diferentes.

FCT
EIC
SO

• Seria um TRAP, ou seja, um chamadas de sistema (System calls)

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Ciclo de vida dos Processos:
NASCEM
• No momento da
sua criação(via
system calls -fork)

FCT
EIC
SO

MORREM
• Ou porque terminaram VIVEM
sua execução • Executam na CPU,
• Ou porque um outro programa de
processo os matou: utilizadores, programa
Erro, acesso não- de do sistema
autorizado, falha (Deemons)

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Estados de Processo :
NOVO
• À medida que um processo é
executado, ele muda de
PRONTO
estado.

FCT
EIC
SO

EXECUTANDO
• Um processo pode estar em um
dos seguintes estados:
SUSPENSO

TERMINADO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Estados de Processo :
NOVO PRONTO EXECUTANDO SUSPENSO TERMINADO

• NOVO:
• O processo está sendo criado,

FCT
EIC
SO

ou seja, seu código está sendo


carregado em memória, junto
com suas bibliotecas;
• As estruturas de dados do
kernel estão sendo atualizadas
para permitir sua execução
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
• Estados de Processo :
NOVO PRONTO EXECUTANDO SUSPENSO TERMINADO

• PRONTO:
• Está em memória, pronto para ser

FCT
executado, aguardando a
EIC
SO

disponibilidade do processador;
• IMPORTANTE: Os processos
“prontos” são organizados em
uma fila cuja ordem é
determinada por algoritmos de
escalonamento.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
• Estados de Processo :
NOVO PRONTO EXECUTANDO SUSPENSO TERMINADO

• EXECUTANDO:
• O processador está

FCT
EIC
SO

dedicado à processo,
executando suas
instruções e fazendo
avançar seu estado.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Estados de Processo :
NOVO PRONTO EXECUTANDO SUSPENSO TERMINADO

• SUSPENSO:
• O processo não pode executar porque depende

FCT
EIC
SO

de dados externos ainda não disponíveis (do


disco ou da rede, por exemplo), aguarda algum
tipo de sincronização (o fim de outra tarefa ou a
liberação de algum recurso partilhado) ou
simplesmente espera o tempo passar (em uma
operação sleeping, por exemplo).

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Estados de Processo :
NOVO PRONTO EXECUTANDO SUSPENSO TERMINADO

• TERMINADO:
• A execução do processo foi

FCT
EIC
SO

encerrada e ele pode ser


removido da memória do
sistema.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Transições entre Estados de Processo :.

• Pronto -> executando


o Algoritmo de escalonamento
• Executando -> pronto
o Interrupção de tempo, Interrupção devida
ao escalonador ou decisão espontânea

FCT
EIC
SO

• Executando -> bloqueado


o E/S – sincronização
• Bloqueado -> pronto
o Interrupção
• Executando -> encerrado
o Interrupção (Ctrl-C, kill)
o Término normal
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
• Transições entre Estados de Processo :.
• Suspenso
• A CPU é muito mais rápida do que a memória;
• A memória é de tamanho finito. Precisa-se, então, poupar a memória.
• Por isso:

FCT
EIC
SO

• Processos bloqueados que estão na memória podem ser transferidos


para o disco (swap) até sua E/S ser acabada.
• Processos prontos podem também ser descarregados para o disco.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Criação de processos com função fork() :.
• FORK() funcionamento:
• Verifica se há lugar na Tabela de Processos;
• Tenta alocar memória para o filho;
• Altera mapa de memória e copia para a tabela;

FCT
EIC
SO

• Copia imagem do pai para o filho;


• Copia para a tabela de processos a informação do processo pai (pid,
prioridades, estado, etc);
• Atribui um pid ao filho
• Informa o Kernel (do SO e o sistema de ficheiros que foi criado um novo
processo.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
Criação de processos :
• Cada processo executando no sistema em um determinado momento é
identificado por um número único, o PID - Process IDentifier. Além disso, cada
processo possui outras informações que o caracterizam, como:
1. Usuário proprietário (aquele que lançou o processo)

FCT
EIC
SO

2. Sessão de shell de onde foi lançado (se foi lançado através de um shell)
3. Estado atual (Running, Suspended, SWapped, …)
4. Linha de comando usada para lançá-lo.
5. Uso de memória e CPU
6. etc.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Criação de processos :
• No UNIX, os seguintes comandos permitem observar a atividade dos processos no
sistema:
• ps - fe permite listar todos os processos ativos no sistema pai/filho.
• ps: permite listar todos os processos ativos no sistema.
• pstree: mostra as dependências entre processos.

FCT
• top: mostra a atividade do sistema, atualizando a tela a cada N segundos.
EIC
SO

free: apresenta informações gerais sobre uso de CPU e memória.


• vmstat: gera estatísticas sobre o uso de memória virtual, CPU, etc.
• renice: permite alterar a prioridade de base dos processos, que vai de -20
(máxima) a +20 (mínima), tendo como prioridade default o valor zero (0).
Usuários normais só podem alterar as prioridades dos seus próprios processos, e
só podem diminuir as prioridades.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Criação de processos:
• Para obter uma listagem completa dos processos em execução no sistema usa-se as o

comando ps aux, que geram uma listagem como a que segue:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Criação de processos:
• Os principais campos dessa listagem são:
• USER : o proprietário do processo, que pode ser quem o lançou ou, no caso de executáveis com o bit
• SUID habilitado, o proprietário do ficheiro executável.
• PID : número do processo.
• %CPU : percentagem da CPU usada pelo processo.

FCT
• %MEM : percentagem da memória usada pelo processo.
EIC
SO

• SIZE : memória total usada pelo processo.


• RSS : memória física (RAM) usada pelo processo.
• TTY : terminal ao qual o processo está ligado.
• STAT : status do processo (rodando, suspenso, …).
• START : data de lançamento do processo.
• TIME : tempo total de CPU usado pelo processo.
• COMMAND : comando usado para lançar o processo.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Estrutura dos Processo

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Execução da chamada de sistema fork:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Criação de processos com função fork() :.
• Função FORK():

• Se pid == 0 então processo é processo é filho

FCT
EIC
SO

• Se pid > 0 então processo é processo é pai

• Se pid =-1 error

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Criação de processos com função fork() :.
• Função FORK():
• Cria processo Pai e processo Filho com mesmo endereçamento;

• Depois o processo Filho tem endereçamento separado;

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Criação de processos com função fork() :.
• Função FORK():
• Retorna:
• 0 - para o processo filho
• pid do filho - para o processo pai

FCT
EIC
SO

• -1 - se houve erro e o serviço não foi executado

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Criação de processos com função fork() :.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Criação de processos com função fork() :.
• Compilar e executar em Linux C:

• gcc nome_programa.c -o nome_programa

FCT
EIC
SO

• ./nome_programa

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Criação de processos com função fork() :.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Criação de processos com função fork() :.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Criação de processos com função fork() :.
• Árvores de Processos:
Getppid();
Getpid();
PAI BASH
(TERMINAL)

FCT
PID =01
EIC
SO

Getppid() – obter o identificador


do pai do processo que é invocado
Getppid();
Getpid() - obter o identificador do
FILHO Getpid();
processo que é invocado
PID =02
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
• Árvores dos processos: -> Resultado
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{

FCT
EIC
SO

int pid;
switch(pid = fork()){
case 0: printf("processo filho %d pai %d",getpid(),getppid()); while(1);
case -1: printf("error\n");exit(1);
default: printf("processo pai %d meu pai %d\n",getpid(),getppid()); while(1);
}
}

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Árvores dos processos: -> Resultado

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Árvores dos processos: -> Resultado

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Árvores dos processos: -> Exponencial

PAI

Fork();

FCT
EIC
SO

Fork();
Fork();
𝒏
𝟐
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
• Árvores dos processos: -> Exponencial

int main()
{
fork();

FCT
EIC
SO

fork();
fork();
printf("sou um processo\n");while(1);
}

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Árvores dos processos: -> Exponencial
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main()

FCT
{
EIC
SO

int i;
for(i = 0; i < 3; i++)
fork();
printf("sou um processo\n");while(1);
}
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
Árvores dos processos linear:

PAI

FILHO

Fork();

FCT
EIC
SO

Fork();
Evitando que pai crie processo
Fork();
𝒏
𝟐
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
Árvores dos processos linear:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main()

FCT
{
EIC
SO

int i;
for(i = 0; i < 3; i++)
if(fork() != 0 ) break;
printf("sou um processo\n");while(1);
}
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
Árvores dos processos exponencial :

FILHO
FILHO PAI
Fork();

FCT
EIC
SO

Fork(); FILHO

Fork();
𝒏
𝟐 Evitar que processos Filhos sejam criados

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Árvores dos processos exponencial :

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main()

FCT
{
EIC
SO

int i;
for(i = 0; i < 3; i++)
if(fork() == 0 ) break;
printf("sou um processo\n");while(1);
}
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
Árvores dos processos exercício :

1
2 4

FCT
3
EIC
SO

5 6

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Árvores dos processos exercício :

1
2 4

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Árvores dos processos exercício :

1
2 4

FCT
EIC
SO

5 6

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Árvores dos processos exercício :

1
2 4

FCT
EIC
SO

5 6

processos Lineal
7

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Criação de processos:
• Fork(): duplica o processo atual.

• Execve (file): substitui o código executável do processo por outro código

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Árvores dos processos exercício :

• int main()
• { break;
• int i,j, k;
• for(i = 0; i < 3; i++){ }
• if(fork() == 0 ) { }
• if(i == 1){
• for(j = 0; j < 2; j++) {

FCT
}

EIC
SO

if(fork() == 0){
• if(j ==1){ break;
• for(k = 0; k < 2; k++){ }
• if(fork() != 0) break; }

• } while(1);
}
• }


José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
Criação de processos:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Criação de processos com execve:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Criação de processos com variável:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Threads
• Thread - Fluxo de execução operando dentro de um processo ou dentro do Kernel do sistema
operativo.
• Um processo pode conter uma ou mais threads, cada uma executando seu próprio
código e partilhando recursos com as demais threads localizadas no mesmo

FCT
processo
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Threads
• Tipos de threads:
1. Threads de usuário:
• fluxos de execução dentro de um processo, associados à execução da
aplicação.

FCT
EIC
SO

2. Threads de núcleo:
• fluxos de execução dentro do núcleo; representam threads de usuário ou
atividades do núcleo.
• Modelos de implementação: N:1, 1:1 ou N:M

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Threads

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Uso de modelo de threads N:1
• Características:
• Criar threads dentro do processo usando bibliotecas.
• Modelo utilizado por ser leve e de fácil implementação.
• Bom para aplicações com milhares/milhões de threads.

FCT
EIC
SO

• Problemas: O núcleo não “vê” as threads, apenas uma


por processo. Se uma thread bloquear (E/S), todas param

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Uso de modelo de threads 1:1
• Características:
• Gestor de threads incorporada ao núcleo.
• Cada thread de usuário é mapeada em uma thread de
núcleo.

FCT
EIC
SO

• As threads são escalonadas de forma independente,


podendo usar vários processadores.
• É a implementação mais frequente nos sistemas atuais.

• Problemas: Pouco escalável (alguns milhares de threads)

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Uso de modelo de threads N:M
• Características:
• modelo híbrido entre N:1 e 1:1
• Uma biblioteca no processo gere user threads
• Essas threads são mapeadas em threads do núcleo

FCT
EIC
SO

• O thread pool do núcleo varia com a demanda da


aplicação
• Modelo implementado no FreeBSD e Solaris
• Problemas:
• Maior complexidade de implementação
• maior custo de gestão dos threads de núcleo

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Uso de processos versus threads

• Ao implementar um programa com várias tarefas:


• Colocar cada tarefa em um processo distinto
• Colocar tarefas como threads no mesmo processo

FCT
EIC
SO

• Híbrido: usar vários processos com várias threads

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Comparativo entre uso de processos e de threads

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
Programando em C com Threads

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo

Escalonamento (scheduling)

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonamento (scheduling)
• O escalonamento de processos ou agendador de tarefas (scheduling) é

uma atividade organizacional feita pelo escalonador (scheduler) da CPU

ou de um sistema distribuído,

FCT
EIC
SO

• possibilitando executar os processos mais viáveis e concorrentes,

• priorizando determinados tipos de processos.

• A troca de processos é feita pelo escalonador de processos

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• O que é Escalonador (scheduler)?
• Escalonador é a parte do SO que faz a escolha de qual processo será

executado na CPU, devido a situação de dois ou mais processos estarem

simultaneamente em estado pronto.

FCT
EIC
SO

• Existem diversas opções de algoritmos para escalonamento de processos

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Um dos componentes mais importantes da gestão de processos é o

escalonador (task scheduler), que decide a ordem de execução dos

processos prontos.

FCT
EIC
SO

• O algoritmo utilizado no escalonador define o comportamento do S.O,

permitindo obter sistemas que tratem de forma mais eficiente e rápida os

processos a executar.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Antes de se definir o algoritmo usado por um escalonador, é necessário
ter em mente a natureza dos processos que o sistema irá executar.

FCT
• Existem vários critérios que definem o comportamento de um processo;
uma primeira categoria de algoritmo escalonamento possível diz respeito
EIC
SO

ao seu comportamento temporal:


• Processos de sistema em lote (batch),
• Processos de sistema interativas
• e Processos de sistema de tempo real

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Objetivos e métricas do Escalonador :

• Ao se definir um algoritmo de escalonamento, deve-se ter em mente


seu objetivo;

FCT
EIC
SO

• O desenvolvedor do sistema tem de escolher o que priorizar, em


função do perfil das aplicações a suportar.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Métricas definidas para avaliação de escalonadores:
1. Tempo de vida (tt): tempo entre a criação de uma tarefa e seu encerramento.
2. Tempo de espera (tw): tempo perdido pela tarefa na fila de prontas.
3. Tempo de resposta (tr): tempo entre a chegada de um evento ao sistema e a

FCT
EIC
SO

resposta a ele.
4. Justiça : distribuição adequada do processador entre as tarefas prontas
5. Eficiência: indica o grau de utilização do processador na execução das tarefas do
utilizador. Ela depende sobretudo da rapidez da troca de contexto e da
quantidade de tarefas orientadas a entrada/saída no sistema

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Bloco de Controlo de Processo (PCB) :
• O Kernel do sistema operativo mantém descritores de processos, denominados
PCBs (Process Control Blocks) ou tabela de processos, para armazenar as
informações referentes aos processos ativos.
• Cada processo possui um identificador único no sistema, o PID – Process

FCT
EIC
SO

IDentifier.
• Associando-se tarefas a processos, o descritor (TCB) de cada tarefa pode ser
bastante simplificado: para cada tarefa, basta armazenar seu identificador, os
registradores do processador e uma referência ao processo ao qual a tarefa
está vinculada.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Bloco de Controlo de Processo (PCB) :
• BCP é a estrutura de dados que contém a informação a
cerca de um processo.
• Elementos do BCP
• Informações importantes para o controle
• identificação do processo, estado em que ele se encontra,
prioridade.

FCT
EIC
SO

• registradores, status
• ponteiros: pilha, código e dados
• tempos: início, de CPU, alarmes, dos filhos
• diretórios: raiz, trabalho
• descritores de ficheiros
• e tudo mais que deve se salvo, então passar do estado
executável para o estado pronto ou bloqueado, e também
reiniciado.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
• Escalonador (scheduler)
• Troca de Contexto
• Troca de contexto leva um overhead de tempo (é uma tarefa cara):

• É preciso guardar as informações do processo que está

FCT
EIC
SO

deixando/entrando a/na CPU em o seu BCP.


• Guardar o conteúdo dos registradores

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Troca de Contexto
• o estado do processo que sai (para poder ser retomado posteriormente) e
carregar o estado do processo que entra.

FCT
EIC
SO

• O estado do processo é guardado no PCB do processo.

• A troca de contexto é um overhead, o sistema não está a fazer nada de útil


enquanto processa a troca.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Troca de Contexto Componentes Envolvidos:
• Despachante(Dispatcher):
• Armazena e recupera o contexto;
• Atualiza as informações no BCP;

FCT
EIC
SO

• Processo relativamente rápido (0,1 ms).


• Escalonador(Scheduler):
• Escolhe a próxima tarefa a receber o processador;
• Define a ordem de execução

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Troca de Contexto Componentes Envolvidos:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Quando Escalonador (scheduler) é chamado?
1. Quando se cria um novo processo (ex: pai ou filho, quem será executado?).

2. Na terminação do processo, pois outro processo em estado pronto aguarda, ou

FCT
EIC
SO

ainda é executado em processo inativo gerado pelo sistema.

3. Quando um processo bloqueia, outro precisa ser selecionado para executar.

4. No caso de interrupção de E/S, quando acabar o trabalho, o processo que estava


bloqueado esperando E/S pode ficar pronto para execução.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• O escalonador de um S.O pode ser:
1. Preemptivo:
• Quando um processo pode, por algum motivo perder o seu uso no CPU(ex:
execute uma chamada de sistema ou caso ocorra uma interrupção que acorde

FCT
EIC
SO

uma tarefa mais prioritária);

2. Cooperativo (não Preemptivo)


• Permite que o processo que está sendo executado continue executando ate:
Termine; Libere a CPU voluntariamente;

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Há três Categoria de Algoritmo de Escalonamento :

• Processos de sistema em Lote (batch)

• Processos de sistema Interativos:

FCT
EIC
SO

• Processos de sistema de Tempo Real

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Há três Categoria de Algoritmo de Escalonamento :

1. Processos de Sistema em Lote (batch)

• São tarefas sem requisitos temporais explícitos, que normalmente

FCT
EIC
SO

executam sem intervenção do utilizador, como procedimentos de

backup, varreduras de antivírus, cálculos numéricos longos,

renderização de animações, etc

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Há três Categoria de Algoritmo de Escalonamento :

2. Processos de Sistema Interativos:


• são tarefas que recebem eventos externos (do utilizador ou

FCT
EIC
SO

através da rede) e devem respondê-los rapidamente, embora


sem os requisitos de previsibilidade das tarefas de tempo real.
• Esta categoria de tarefas inclui a maior parte das aplicações dos
sistemas desktop (editores de texto, navegadores Internet, jogos)
e dos servidores de rede (e-mail, web, base de dados).

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Escalonador (scheduler)
• Há três Categoria de Algoritmo de Escalonamento :

3. Processos de Sistema de Tempo Real


• exigem previsibilidade em seus tempos de resposta aos eventos

FCT
EIC
SO

externos, pois geralmente estão associadas ao controle de


sistemas críticos, como processos industriais, tratamento de fluxos
multimídia, etc.
• O escalonamento de tarefas de tempo real é um problema
complexo

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Para a descrição do funcionamento de cada algoritmo será considerado um
sistema monoprocessador e um conjunto hipotético de tarefas (t1 · · · t5) na
fila de prontas do sistema operativo, descritas na tabela a seguir.

FCT
EIC
SO

• Para simplificar a análise dos algoritmos, as tarefas t1 · · · t5 são orientadas


a processamento, ou seja, não param para realizar operações de
entrada/saída.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
GestãoSumário
de Processo
• Algoritmos de escalonamento
• Métricas a considerar:
• Tempo médio de execução (Tt) das tarefas

FCT
• Tempo médio de espera (Tw) das tarefas
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• First-Come, First Served (FCFS) OU FIFO
• A forma de escalonamento mais elementar consiste em simplesmente atender as tarefas
em sequência, à medida em que elas se tornam prontas (ou seja, conforme sua ordem
de ingresso na fila de tarefas prontas). Esse algoritmo é conhecido como FCFS – First

FCT
EIC
SO

Come - First Served – e tem como principal vantagem sua simplicidade.


• Os quadros sombreados no slide seguinte representam o uso do processador (observe
que em cada instante apenas uma tarefa ocupa o processador). Os quadros brancos
representam as tarefas que já ingressaram no sistema e estão aguardando o
processador (tarefas prontas)

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• First-Come, First Served (FCFS) OU FIFO

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• First-Come, First Served (FCFS) OU FIFO
• Calculando o tempo médio de execução (Tt) e o tempo médio
• de espera (Tw) para a execução, temos:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Round-Robin(RR)
• Escalonamento FCFS dá origem a outro algoritmo de escalonamento bastante popular,
conhecido como escalonamento Round-Robin.
• Considerando as tarefas definidas na tabela anterior e um quantum tq = 2s, seria

FCT
EIC
SO

obtida a sequência de escalonamento apresentada na figura seguinte.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Round-Robin(RR)

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Round-Robin(RR)

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Round-Robin(RR)
• Calculando o tempo médio de execução Tt e o tempo médio de espera Tw para a
execução, temos:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Shortest Job First (SJF)
• O algoritmo de escalonamento que proporciona os menores tempos médios de execução
e de espera é conhecido como menor tarefa primeiro, ou SJF (Shortest Job First).

FCT
EIC
SO

• Como o nome indica, ele consiste em atribuir o processador à menor (mais curta) tarefa
da fila de processos prontos. Pode ser provado matematicamente que esta estratégia
sempre proporciona os menores tempos médios de espera.
• É cooperativo. Em caso de empate aplica FIFO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Shortest Job First (SJF)

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Shortest Job First (SJF)
• Calculando o tempo médio de execução Tt e o tempo médio de espera Tw para a
execução, temos:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Shortest Job First (SJF)
• A maior dificuldade no uso do algoritmo SJF consiste em estimar a priori a duração de
cada tarefa, antes de sua execução.
• por exemplo, como estimar por quanto tempo um editor de textos irá ser utilizado?

FCT
EIC
SO

• Por causa desse problema, o algoritmo SJF puro é pouco utilizado.


• No entanto, ao associarmos o algoritmo SJF ao algoritmo RR, esse algoritmo pode ser
de grande valia, sobretudo para tarefas orientadas a entrada/saída.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Shortest Remaining Time First (SRTF)
• O algoritmo SJF é cooperativo, ou seja, uma vez que uma tarefa recebe o processador,
ela executa até encerrar (ou liberá-lo explicitamente).
• Em uma variante preemptiva, o escalonador deve comparar a duração prevista de

FCT
EIC
SO

cada nova tarefa que ingressa no sistema com o tempo de processamento restante das
demais tarefas presentes, inclusive aquela que está executando no momento. Caso a
nova tarefa tenha um tempo restante menor, ela recebe o processador. Essa abordagem
é denominada por alguns autores de menor tempo restante primeiro (SRTF – Short
Remaining Time First).

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Shortest Remaining Time First (SRTF)

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Shortest Remaining Time First (SRTF)
• Calculando o tempo médio de execução Tt e o tempo médio de espera Tw para a
execução, temos:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Escalonamento por Prioridades:
• Cada processo possui uma prioridade(Número inteiro);
• Primeiro é executado o processo mais prioritário
• Em caso de empate aplica-se o FIFO

FCT
EIC
SO

• Round Robin, pressupõe igual prioridade, se assume que todos chegam em tempo 0,
mais tem ordem de chegada
• O escalonamento por prioridade pode ser cooperativo ou preemptivo.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• PRIOc: por prioridades, cooperativo
• Prioridades: t1:2 t2: 3 t3: 1 t4: 4 t5: 5

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• PRIOc: por prioridades, cooperativo
• Prioridades: t1:2 t2: 3 t3: 1 t4: 4 t5: 5

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• PRIOp: por prioridades, preemptivo
• Prioridades: t1:2 t2: 3 t3: 1 t4: 4 t5: 5

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• PRIOp: por prioridades, preemptivo
• Prioridades: t1:2 t2: 3 t3: 1 t4: 4 t5: 5

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Escalonamento por prioridades dinâmicas
• Problema das prioridades estáticas:
• Tarefas de baixa prioridade têm pouco acesso à CPU.
• Se houverem muitas tarefas, as de menor prioridade podem “morrer de fome”

FCT
EIC
SO

• Fenômeno chamado “inanição” (starvation).


• Solução: uso de prioridades dinâmicas
• Aumentar aos poucos a prioridade das tarefas paradas.
• Ao executar, a tarefa volta à sua prioridade original.
• Algoritmo de “envelhecimento” (aging)

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Algoritmo de Tempo Real:
• Tempo é um fator critico;
• O computador dever reagir apropriadamente dentro de um intervalo fixo de
tempo

FCT
EIC
SO

• Sistemas críticos:
• Piloto automático de avião;
• Monitoramento de pacientes em hospitais e controle de automação em
fabricas

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Algoritmo de Tempo Real:
• Tipo de Sistema Tempo Real:
• Hard Real Time: atrasos não são tolerados;
• Aviões, centro nucleares, hospitais;

FCT
EIC
SO

• Soft Real Time: atrasos ocasionais são tolerados;


• Bancos; Multimídia;

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Algoritmo de Tempo Real:
• Evento causam a execução de processos;
• Quando um sensor é detetado, cabe ao escalonador arrumar os processos de modo
que todos os prazos sejam compridos

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


GestãoSumário
de Processo
• Algoritmos de escalonamento
• Algoritmo de Tempo Real:
• Algoritmos podem ser estáticos ou dinâmicos;

• Estáticos: decisões de escalonamento antes do sistema começar;

FCT
• Informação disponível previamente; sobre processos e prazos
EIC
SO

• Dinâmicos: decisões de escalonamento em tempo de execução;

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


• Comunicação entre Processo e sincronização

FCT
EIC
SO

OU
• Inter-Process Communication (IPC)

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Por que Comunicação entre Processos(IPC)?

• Nos SOs que implementam a multiprogramação, ou seja, técnica que


permite que vários processos estejam na memória ao mesmo tempo, tem-
se a impressão que cada processo possui seu próprio processador,

FCT
EIC
SO

parecendo que eles estão rodando em paralelo.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Por que Comunicação entre Processos(IPC)?

• Como um processo passa informação para outro processo?


• Como garantir que dois ou mais processos não entrem em conflito, invadindo

FCT
espaços uns dos outros?
EIC
SO

• Ex: dois processos em sistema de reserva de bilhete avião, cada um


tentando conseguir o último assento

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Por que Comunicação entre Processos(IPC)?
• Qual é a sequencia adequada quando existe dependência entre
processos?
• Ex:
• a = d + c;
• x = a + y;

FCT
EIC
SO

• Esses aspetos importantes que acabamos de ver tem haver com:


• Condições de Corrida ou Race Conditions
• Região Críticas
• Exclusão Mútua

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo

• Muitas implementações de sistemas complexos são estruturadas como várias


tarefas interdependentes, que cooperam entre si para atingir os objetivos
da aplicação, como por exemplo em um navegador Web.

FCT
EIC
SO

• Para que as várias tarefas que compõem uma aplicação possam cooperar,
elas precisam comunicar e coordenar suas atividades, para garantir que os
resultados obtidos sejam coerentes.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Cooperar: trabalhar em conjunto para atingir um objetivo.
• Existem várias razões para justificar a construção de sistemas baseados em tarefas cooperantes,
entre as quais podem ser citadas:
• Atender vários usuários simultâneos: Um servidor de base de dados, de e-mail ou servidor web.
• Uso de computadores multiprocessador: Para aumentar a velocidade de execução de uma
aplicação, esta deve ser “quebrada” em várias tarefas cooperantes, que poderão ser

FCT
escalonadas simultaneamente nos processadores disponíveis.
EIC
SO

• Modularidade: um sistema muito grande e complexo pode ser melhor organizado dividindo suas
atribuições em módulos sob a responsabilidade de tarefas interdependentes.
• Aplicações interativas: navegadores Web, editores de texto e jogos são exemplos de
aplicações com alta interatividade, usam threads para melhorar interatividade

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Cooperação entre tarefas

Comunicação Coordenação COOPERAÇÃO

FCT
EIC
SO

Communição: troca de informações entre processos


Coordenação: ordem e dependência das ações dos processos

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Escopo da comunicação
• Tarefas cooperantes precisam trocar informações entre si.
• Implementar a comunicação entre tarefas pode ser simples ou complexo, dependendo das três
situação:
1. Se as tarefas estão no mesmo processo, elas partilham a mesma área de memória e a
comunicação pode então ser implementada facilmente, usando variáveis globais comuns.

FCT
EIC
SO

2. caso as tarefas pertençam a processos distintos, não existem variáveis partilhadas; neste caso, a
comunicação tem de ser feita por intermédio do kernel do SO, usando chamadas de sistema.

3. Caso as tarefas estejam em computadores distintos, o kernel deve implementar mecanismos de


comunicação específicos, fazendo uso de mecanismos de comunicação em rede.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Escopo da comunicação
• Apesar da comunicação poder ocorrer entre threads, processos locais ou computadores distintos, os
mecanismos de comunicação são “mecanismos IPC” (Inter-Process Communication).

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• A comunicação pode ser:

• Direta ou indireta

• Síncrona ou assíncrona

• Por mensagens ou por fluxos

FCT
EIC
SO

• Capacidade dos canais

• Confiável ou não-confiável

• Número de participantes

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Comunicação direta ou indireta

• Comunicação direta:

• Emissor e recetor são identificados . Ex: comando KILL

• Enviar dados a uma tarefa: enviar (destino, dados)

FCT
EIC
SO

• Receber dados de uma tarefa: receber (origem, dados)

• Comunicação indireta:

• Emissor e recetor comunicam através de um canal

• Enviar dados ao canal: enviar (canal, dados)

• Receber dados do canal: receber (canal, dados)

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação

• Comunicação direta • Comunicação indireta

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Comunicação síncrona(bloqueante)

• As operações de envio/receção podem bloquear as tarefas .O emissor será bloqueado até que a

informação seja recebida pelo recetor, e vice-versa

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Comunicação assíncrona(ou não-bloqueante)
• As primitivas de envio e recepção não são bloqueantes: caso a comunicação não seja possível no
momento em que cada operação é invocada, esta retorna imediatamente com uma indicação de
erro.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Semissíncrona (ou semibloqueante)

• Têm um comportamento síncrono (bloqueante) durante um prazo pré-definido. Caso esse prazo se

esgote sem que a comunicação tenha ocorrido, a primitiva se encerra com uma indicação de erro.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação

• Formato de envio

• A informação enviada pelo emissor ao recetor pode ser vista basicamente de duas formas:

1. como uma sequência de mensagens independentes, cada uma com seu próprio conteúdo,

2. ou como um fluxo sequencial e contínuo de dados, imitando o comportamento de um ficheiro com

FCT
EIC
SO

acesso sequencial.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Formato de envio: mensagem

• cada mensagem consiste de um pacote de dados. Esse pacote é recebido ou descartado pelo receptor

em sua íntegra; não existe a possibilidade de receber “meia mensagem”

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Formato de envio: fluxo de dados

• o canal de comunicação é visto como o equivalente a um ficheiro: o emissor “escreve” dados nesse

canal, que serão “lidos” pelo receptor respeitando a ordem de envio dos dados.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Capacidade dos canais

• Capacidade do canal é a capacidade que o canal tem em armazenar dados em transito, ou seja, as

informações enviadas pelo emissor e que ainda não foram recebidas pelo receptor. três situações

devem ser analisadas:

FCT
EIC
SO

• Capacidade nula (n = 0): a comunicação é feita por transferência direta entre emissor e receptor.

• Capacidade infinita (n = ∞): o emissor sempre pode enviar dados, que serão armazenados no

buffer do canal enquanto o receptor não os consumir.

• Capacidade finita (0 < n < ∞): o canal pode armazenar uma quantidade finita de dados.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Capacidade dos canais

• Exemplo de comunicação bloqueante usando um canal com capacidade 2

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Confiabilidade dos canais

• Um canal de comunicação pode ser:

• Confiável: transporta ao destino todos os dados, mantendo a integridade e ordem de envio.

• Não-Confiável: podem ocorrer perdas:

FCT
EIC
SO

• De dados: dados enviados podem não ser recebidos

• De integridade: dados podem chegar alterados

• De ordem: os dados podem chegar fora de ordem

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Confiabilidade dos canais

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Número de participantes

• Nas comunicação apresentadas até agora, cada canal de comunicação envolve apenas um emissor e

um receptor. No entanto, existem situações em que uma tarefa necessita comunicar com várias outras,

Dessa forma, os mecanismos de comunicação também podem ser classificados de acordo com o número

FCT
EIC
SO

de tarefas participantes:

• 1:1 : um emissor e um recetor interagem através do canal de comunicação. por exemplo nos pipes

UNIX e no protocolo TCP.

• M:N : um ou mais emissores enviam mensagens para um ou mais recetores. Cada mensagem é

recebida por apenas um recetor (mailbox) Cada mensagem é recebida por todos os recetores

(canal de eventos)
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Número de participantes

• Comunicação M:N através de um mailbox.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo
• Aspectos da comunicação
• Número de participantes

• Canal de eventos ou ainda canal publish-subscribe

• A Comunicação é de M:N através de um barramento de mensagens onde cada mensagem pode

ter vários recetores

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo

• Mecanismos de comunicação
1. Pipes UNIX

FCT
EIC
SO

2. Filas de mensagens
3. Memória partilhada

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Pipes

• Um dos mecanismos de comunicação entre processos mais simples de usar no ambiente UNIX é o pipe,

ou “cano”.

• Um pipe é um canal de comunicação unidirecional entre dois processos.

• Permite conectar a entrada e saída-padrão de processos:

FCT
EIC
SO

• stdin: entrada padrão (scanf, getchar, ...)

• stdout: saída padrão (printf, ...)

• stderr: saída de erro (perror, ...)

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Pipes

• Pipe liga a saída de um processo à entrada de outro:

• who | grep marcos | sort

• Indireto, bloqueante, por fluxo, 1:1, confiável, capacidade finita

FCT
• Esse comando lança simultaneamente os processos who, grep e sort, conectados por dois pipes.
EIC
SO

• O comando who gera uma listagem de usuários conectados ao computador em sua saída padrão.

• O comando grep marcos é um filtro que lê as linhas de sua entrada padrão e envia para sua saída

padrão somente as linhas contendo a string “marcos”.

• O comando sort ordena a linhas recebidas em sua entrada padrão e as envia para sua saída padrão.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Pipes

• who | grep marcos | sort

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Pipes

• Pipes através de nome (Pipes nomeados):

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Pipes

• Exemplo: Pipes através de nome linguagem C em Linux.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Pipes

• Exemplo: Pipes através de nome linguagem C em Linux.

• Objetivo é criar 2 processos: um que envia mensagem(write) e outro que recebe mensagem(read)

• Modo de leitura: O_WRONLY (escrita) e O_RDONLY(leitura)

• Funções

FCT
EIC
SO

• Para criar ficheiro: int mkfifo(const char *pathname, mode_t mode)

• Para abrir ficheiro: int open(const char *pathname, int flags);

• Para escrever no ficheiro: ssize_t write(int fd, const void *buf, size_t count);

• Para ler o ficheiro: ssize_t read(int fd, void *buf, size_t count);

• Para fechar a comunicação ficheiro: int close(int fd);

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Pipes

• Exemplo: WRITE.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Pipes

• Exemplo: READ.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação

Filas de mensagens

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Filas de mensagens

• As filas de mensagens são um bom exemplo de implementação do conceito de mailbox,

permitindo o envio e receção ordenada de mensagens tipadas entre processos em um sistema

operativo.

FCT
EIC
SO

• As filas de mensagens são mecanismos de comunicação entre vários processos (N:M ou N:1),

confiáveis, orientadas a mensagens e com capacidade finita.

• As operações de envio e receção podem ser síncronas ou assíncronas, dependendo da

implementação e a critério do programador.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Filas de mensagens

• As principais chamadas para usar filas de mensagens POSIX na linguagem C são:

• mq_open: abre uma fila já existente ou cria uma nova fila;

• mq_setattr e mq_getattr: permitem ajustar ou obter atributos (parâmetros) da fila, que definem

FCT
EIC
SO

seu comportamento, como o tamanho máximo da fila, o tamanho de cada mensagem, etc.;

• mq_send: envia uma mensagem para a fila; caso a fila esteja cheia, o emissor fica bloqueado até

que alguma mensagem seja retirada da fila, abrindo espaço para o envio;

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Filas de mensagens

• As principais chamadas para usar filas de mensagens POSIX na linguagem C são:

• a variante mq_timedsend: permite definir um prazo máximo de espera: caso o envio não ocorra

nesse prazo, a chamada retorna com erro;

• mq_receive: recebe uma mensagem da fila; caso a fila esteja vazia, o receptor é bloqueado até

FCT
EIC
SO

que surja uma mensagem para ser recebida;

• a variante mq_timedreceive permite definir um prazo máximo de espera;

• mq_close: fecha o descritor da fila criado por mq_open;

• mq_unlink: remove a fila do sistema, destruindo seu conteúdo.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Filas de mensagens

• Filas POSIX - recetor

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Mecanismo de comunicação
• Filas de mensagens

• Filas POSIX - emissor

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo

Coordenação entre tarefas

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Introdução

• sistemas complexos são estruturadas como várias tarefas

interdependentes, que cooperam entre si para atingir os objetivos da

aplicação, como por exemplo em um navegador Web.

FCT
EIC
SO

• Communição: troca de informações entre processos

• Coordenação: ordem e dependência das ações dos processos

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Introdução

• Nesta sessão serão estudados os problemas que podem ocorrer quando

duas ou mais tarefas acedem os mesmos recursos de forma concorrente;

FCT
EIC
SO

• também serão apresentadas algumas técnicas usadas para coordenar os

acessos das tarefas aos recursos partilhados

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• O problema da concorrência

• Quando duas ou mais tarefas acedem simultaneamente um recurso

partilhado, podem ocorrer problemas de consistência dos dados ou do

estado do recurso acedido.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exemplo do problema da concorrência

• Função de depósito em uma conta bancária:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exemplo do problema da concorrência

• Após a compilação em uma plataforma Intel 64 bits, a função depositar

assume a seguinte forma em Assembly:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exemplo do problema da concorrência

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Condições de disputa

• Caso dois clientes em terminais diferentes tentem depositar valores na mesma conta ao

mesmo tempo, existirão duas tarefas t1 e t2 acedendo os dados da conta de forma

concorrente.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Operações de depósitos não-concorrentes.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Operações de depósitos concorrentes.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Condições de disputa

• O que são Condições de disputa (Race Condition)?

• São erros e inconsistências gerados por acessos concorrentes a dados partilhados

• Podem ocorrer em sistemas onde várias tarefas acedem de forma concorrente

FCT
EIC
SO

recursos partilhados (variáveis, áreas de memória, ficheiros abertos, etc.)

• Envolvem ao menos uma operação de escrita

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Condições de disputa

• As Condições de disputa são erros dinamicos:


• erros que não aparecem no código fonte
• e que só se manifestam durante a execução.
• são difícil de detetar através da simples análise do código fonte

FCT
EIC
SO

• uma condição de disputa poderá permanecer latente no código durante anos, ou mesmo
nunca se manifestar.
• A depuração de programas contendo condições de disputa pode ser muito complexa

• É melhor prevenir condições de disputa porque consertá-las é custoso

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Condição de Bernstein:
• Condições de disputa entre tarefas paralelas podem ser formalizadas através das
chamadas condições de Bernstein, assim definidas: dadas duas tarefas t1 e t2, sendo
R(ti) o conjunto de variáveis lidas por ti e W(ti) o conjunto de variáveis escritas por ti,
essas tarefas podem executar em paralelo sem risco de condição de disputa (t1 || t2)

FCT
se e somente se as seguintes condições forem atendidas:
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Seções críticas ou regiões críticas:
• Seções críticas são todos os trechos de código que manipulam dados partilhados onde
podem ocorrer condições de disputa.

• As seções críticas das tarefas t1 e t2 são idênticas e resumidas à seguinte linha de

FCT
código:
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• Diversos mecanismos podem ser definidos para garantir a exclusão mútua, impedindo o
entrelaçamento de seções críticas, de modo que apenas uma tarefa esteja na seção
crítica a cada instante.
• Todos eles exigem que o programador defina os limites (início e o final) de cada seção

FCT
crítica.
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• Dada uma seção crítica csi podem ser definidas as primitivas:
• enter(csi), para que uma tarefa indique sua intenção de entrar na seção crítica csi,
• e leave(csi), para que uma tarefa que está na seção crítica csi informe que está
saindo da mesma.

FCT
• A primitiva enter(csi) é bloqueante: caso uma tarefa já esteja ocupando a seção crítica
EIC
SO

csi, as demais tarefas que tentarem entrar deverão aguardar até que a primeira libere
csi através da primitiva leave(csi)

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• Usando as primitivas enter() e leave(), o código da operação de depósito visto
anteriormente pode ser reescrito como segue:

FCT
EIC
SO

• A variável conta representa uma seção crítica

• A variável conta representa uma seção crítica

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• Os critérios de exclusão mútua devem garantir:
• Exclusão mútua: somente uma tarefa pode estar dentro da seção crítica em cada instante

• Espera limitada: uma tarefa que aguarda acesso a uma seção crítica deve ter esse acesso

garantido em um tempo finito, ou seja, não pode haver inanição.

FCT
EIC
SO

• Independência de outras tarefas : o acesso à seção crítica depende somente das tarefas que

querem usá-la.

• Independência de fatores físicos: a solução deve ser puramente lógica e não depender da

velocidade de execução das tarefas, de temporizações, do número de processadores no sistema

ou de outros fatores físicos.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• Proibição de interrupções
• Uma solução simples para a implementação da exclusão mútua consiste em impedir as
trocas de contexto dentro da seção crítica. Ao entrar em uma seção crítica, a tarefa desativa
as interrupções que possam provocar trocas de contexto, e as reativa ao sair da seção crítica.
Solução é simples, mas raramente é usada para a construção de aplicações devido a vários

FCT
EIC
SO

problemas:
• A preempção por tempo para de funcionar
• As interrupções de entrada/saída não são tratadas
• A tarefa que está na seção crítica não pode realizar E/S
• Só funciona em sistemas mono-processados

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• Proibição de interrupções
• Acesso concorrente a uma variável por muitas threads, sem controle.
O código de base consiste em 100 threads, onde cada thread tenta fazer 100.000 incrementos em uma
variável global partilhada sum. Se tudo correr bem, o valor final da variável sum deve ser 100×100.000 =
10.000.000.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• Proibição de interrupções

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• A solução trivial
• Uma solução trivial para o problema da seção crítica consiste em usar uma variável busy
para indicar se a seção crítica está livre ou ocupada.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• A solução trivial
• Uma solução trivial para o problema da seção crítica consiste em usar uma variável busy
para indicar se a seção crítica está livre ou ocupada.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• A solução trivial: Infelizmente, essa solução simples não funciona!

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• A solução alternar o uso:
• consiste em definir uma variável turno, que indica de quem é a vez de entrar na seção
crítica. Essa variável deve ser ajustada cada vez que uma tarefa sai da seção crítica, para
indicar a próxima tarefa a usá-la.

FCT
EIC
SO

• Nessa solução, cada tarefa aguarda seu turno de usar a seção crítica, em uma sequência
circular: t0 -> t1 -> t2 -> · · · -> tn−1 -> t0.
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• A solução alternar o uso:
• Ao sair da seção crítica, cada thread incrementa o valor dessa variável, fazendo com que a
próxima thread tenha acesso à seção crítica.

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• Solução: Operação atómicas:
• projetistas de hardware criaram instruções em código de máquina que permitem testar e
atribuir um valor a uma variável de forma atômica (indivisível, sem possibilidade de troca de
contexto entre essas duas operações).
• A execução atômica das operações de teste e atribuição impede a ocorrência de condições
de disputa sobre a variável busy.

FCT
EIC
SO

• Um exemplo de operação atômica simples é a instrução de máquina Test-and-Set Lock (TSL),


que é executada atomicamente pelo processador.

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• Solução: Operação atómicas:
• Implementação de enter e leave usando TSL:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sumário
Comunicação entre Processo – Coordenação entre tarefas
• Exclusão mútua:
• Solução: Operação atómicas:
• Implementação de enter e leave usando TSL:

FCT
EIC
SO

José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática


Sincronização de Processo em C

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Conceito de Sinal:
• Em um sistema, os processos que funcionam simultaneamente interagem uns
com os outros.
• Isso acontece quando vários processos querem aceder os mesmos recursos do
sistema operativo, por exemplo, um dispositivo de entrada e saída.
• Para resolver esta situação, o S.O possui um gestor de processos que determina a
ordem de acesso a esses recursos; Além disso, tem um mecanismo para poder
enviar mensagens para processos.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Conceito de Sinal:
• Os sinais podem ser considerados um tipo de mensagens, embora, se forem
comparados com outros meios de processos de comunicação (sockets, pipes,
etc.) são um mecanismo mais pobre, uma vez que não permitem a transmissão
de dados.
• Assim, o uso de sinais é um método simples de aviso de incidentes (para
circunstâncias do próprio processo ou pela intervenção de outro processo) entre
o kernel e os processos.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Conceito de Sinal:
• Os sinais podem aparecer em qualquer momento, então os processos

não podem limitar-se a verificar uma variável para verificar se um

sinal chegou,

• mas deve iniciar uma rotina de processamento de sinal com a qual

sua receção é gerido automaticamente no momento aparece.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Definição, geração e processamento de sinal:
• Os sinais - são interrupções de software que podem ser enviadas para um

processo para fornecer um método com o qual lidar com eventos assíncronos.

• As interrupções de software enviadas a um processo podem ser geradas :

• pelo kernel do sistema operativo,

• pelo utilizador de linha de comando,

• ou por qualquer outro processo que conhece o PID do processo.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Definição, geração e processamento de sinal:
• Os sinais produzidos pelo kernel ocorrem quando um erro de software ou

hardware é detetado na execução do processo.

• Ocorre um erro de software, por exemplo, quando um processo tenta aceder um

espaço de memória que não corresponde a ele; Naquele momento, é gerado um

sinal de violação de segmentação que pode causar a conclusão desse processo.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Definição, geração e processamento de sinal:
• Além disso, os sinais são usados para informar de certas falhas detetadas pelo:

• hardware,

• como divisões por zero,

• referências memória inválida,

• etc.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Definição, geração e processamento de sinal:
• No caso dos sinais produzidos pelo utilizador:

• estes podem ocorrer quando o usuário pressiona certas teclas (por exemplo,

Delete) em um terminal,

• e também através da linha de comando: o comando kill permite ao utilizador

enviar sinais para um processo ou grupo dos processos.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Definição, geração e processamento de sinal:
• Para a geração de sinais em um processo, se utilizam as funções kill and killpg,

com o que um processo pode enviar sinais para outro processo ou grupo de

processos.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Definição, geração e processamento de sinal:

• Como os sinais podem aparecer a qualquer momento, o processo deve

comunicar ao kernel o que tem de fazer quando recebe um certo sinal.

• kernel pode interferir de três maneiras diferentes:

• ignore o sinal,

• capture-o

• ou aplique a rotina por defeito


.:DOCENTE:. José Olavo Teixeira
Sincronização de Processo em C:.
• Tipo de Sinais em Linux:

• Cada sinal possui um nome que começa com SIG, enquanto o resto dos

caracteres está relacionado ao tipo de evento que representa. Além disso, cada

sinal carrega associado a um número inteiro positivo, que é aquele que troca

com o processo quando ele recebe o sinal.

• Ex: SIGUSR1, SIGALRM

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Tipo de
• Sinais
• em
• Linux:

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Tipo de Sinais em Linux:

• A função kill é um caso especial

• Os sinais que podem ser geridos pelo sistema, juntamente com seus nomes, são

definidos no ficheiro de cabeçalho </linux/signal.h>, que por sua vez está

incluído em <signal.h>

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Gestores de Sinais em Linux:

• A consequência do envio de um sinal para um processo, se não estiver preparado

para aceitar o referido sinal, o processo "morre".

• Se o processo tiver um gestor de sinal, o processo responderá ao sinal

executando a rotina atribuída pelo programador aos sinais.

• Esta rotina pode ser desenvolvida pelo próprio programador, ou será associado

por defeito ao sinal.


.:DOCENTE:. José Olavo Teixeira
Sincronização de Processo em C:.
• Gestores de Sinais em Linux:

• O gestor de sinal anuncia que o processo está preparado para aceitar um

determinado tipo de sinais e fornece a direção da rotina de processamento de

sinal, no caso de seja este de categoria especial.

• Diz-se então que o processo está pronto para capturar esses sinais.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Função Kill em Linux:

• A função kill permite enviar um sinal para um processo; Se você não especifica o

que, será, Por padrão, o sinal de término. Isso encerrará os processos que não o

capturam; Para aqueles que querem e querem terminar, será necessário mande

matar com o sinal 9, uma vez que não pode ser capturado ou ignorado. Com ele

mesmo fim, o comando kill pode ser usado

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Função Kill em Linux:

• A definição da função kill é:

include <signal.h>

int kill (int pid, int sig);

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Função Signal em Linux:

• A função de sinal é o gestor de sinal por excelência. Permite especificar a ação

que deve ser feito quando um processo recebe um sinal e o prepara para receber

um certo tipo de sinais. Prevê que será necessário adicionar uma chamada ao

sinal para cada tipo de sinal que deseja que o processo seja recebido sem causar

a sua finalização.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Função Signal em Linux:

• Sua definição é:

• include <signal.h>

• void (*signal (int signum, void (*func) (int))) (int);

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Função Signal em Linux:

• A definição da função em ANSI C afirma que requer dois parâmetros – o número

do sinal e do tipo de ação a ser executada - e retorna um ponteiro para uma

função.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Função Signal em Linux:

• Através de uma chamada com a função de signal, um gestor de sinal é

estabelecido para o sinal signum (número do sinal). Func permite que você

escolha uma das três ações que pode executar quando o sinal é recebido:

• SIG_IGN: ignora o sinal.

• SIG_DFL: retorna ao sinal seu comportamento padrão.

• O endereço da função especificada pelo usuário.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Função Pause em Linux:

• A função de pause permite suspender a execução de um processo até a receção

de um sinal. Diz-se então que o processo está em espera; como a chegada de um

o sinal interrompe esse estado, diz-se que a pausa aguarda a chegada de um

sinal. A definição dessa função é

• include <unistd.h>

• int pause (void);

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.
• Função Sleep em Linux:

• A função de Sleep impede a execução de um processo até que algum sinal seja recebido.

• Receberá como parâmetro um número que indica o tempo em segundos que Você quer

interromper a execução de um processo.

• include <signal.h>

• int sleep (int segundos);

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.

.:DOCENTE:. José Olavo Teixeira


Sincronização de Processo em C:.

.:DOCENTE:. José Olavo Teixeira


3 pilares de atuação
OBRIGADO PELA ATENÇÃO

Você também pode gostar