Escolar Documentos
Profissional Documentos
Cultura Documentos
1º S
FTC
EIC
SO
FCT
EIC
SO
1 2 3
FCT
EIC
FCT
EIC
SO
• 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.
✓ Contexto
✓ Objetivos
✓ Enquadramento
FCT
EIC
SO
FCT
EIC
SO
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
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
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
É 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.
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.
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
FCT
EIC
SO
As notas intermédias são arredondadas para duas casas decimais. A nota final é um número inteiro.
FCT
EIC
SO
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.
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
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.
• 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
???:.
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
about
FCT
EIC
SO
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:
FCT
Assim, podemos dizer que o sistema operativo é um conjunto de módulos
EIC
SO
FCT
EIC
SO
Utilizador Aplicação
Rotinas de E/S
Hardware
FCT
EIC
SO
Utilizador Aplicação
Sistema
operativo
Hardware
FCT
EIC
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.
FCT
EIC
SO
• tocar música,
• e etc.
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
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
FCT
EIC
SO
WSL
PUTTY
WINSCP
José Olavo da Paz Teixeira | Sistemas Operativos | Engenharia Informática
EIC Sumário
AULA PRÁTICA UBUNTU
SO
FCT
EIC
SO
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
FCT
EIC
SO
FCT
EIC
SO
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.
FCT
EIC
SO
acesso a recursos.
FCT
EIC
SO
FCT
EIC
SO
Operativo
1. Núcleo
FCT
EIC
SO
2. Drivers de dispositivos
SO 3. Código de inicialização
4. Programas utilitários
FCT
EIC
SO
1. Núcleo
• É o coração do sistema operativo, responsável pela gestão dos
FCT
EIC
SO
SO
pelos programas aplicativos.
2. Drivers de Dispositivos
• Módulos de código específicos para aceder os dispositivos
FCT
EIC
SO
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.
3. Código de Inicialização
• A inicialização do hardware requer uma série de tarefas
FCT
EIC
SO
SO
• Outra tarefa importante é carregar o núcleo do sistema
operativo em memória e iniciar sua execução.
4. Programas Utilitários
• São programas que facilitam o uso do sistema computacional,
FCT
EIC
SO
SO
de comandos, terminal, interface gráfica, gestão de janelas, etc.
FCT
EIC
SO
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
FCT
EIC
SO
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.
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
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 -
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
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
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
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
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 :.
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 :.
74
Permissões em Linux :.
75
Permissões em Linux :.
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 :.
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:
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
1. Interrupções
2. Proteção do núcleo
FCT
EIC
SO
3. Chamadas de Sistema
FCT
EIC
SO
FCT
EIC
SO
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
1. Aguardar até que o processador o consulte, o que poderá ser demorado caso o
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
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
FCT
EIC
SO
Níveis
Nível Nível
Básicos de
núcleo Utilizador
Privilégios
FCT
• Recursos Internos (Registradores, Portas Entrada/Saída);
EIC
SO
FCT
São restringidos/proibidos, por exemplo:
EIC
SO
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.
FCT
EIC
SO
FCT
EIC
SO
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
FCT
EIC
SO
FCT
EIC
SO
A seguinte sequência de
passos é realizada:
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
FCT
EIC
SO
FCT
EIC
SO
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
FCT
EIC
SO
FCT
EIC
SO
• Composto por:
FCT
EIC
SO
❑ ficheiros escrito em C
❑ e ASSEMBLY .
• MicroKernel:
• Kernel em Camadas :
FCT
EIC
SO
• Kernel híbridos
FCT
EIC
SO
• Vantagens: desempenho
FCT
EIC
SO
FCT
o políticas de uso de memória
EIC
SO
FCT
EIC
SO
• Características gerais:
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
Comunicação
Gestão de Processos
entre Processos
FCT
EIC
SO
1. Gestão de Processos
• Foco principal na execução do processo;
• Mantém estruturas de dados do processo;
FCT
EIC
SO
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
FCT
EIC
SO
FCT
• Os mecanismos implementados são:
EIC
SO
❑ Memória partilhada;
❑ Filas de mensagens;
❑ Semáforos.
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
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
mantidas em arch/*/lib;
FCT
EIC
SO
FCT
EIC
SO
FCT
Inicialização da CPU
EIC
SO
FCT
EIC
SO
FCT
Ativa a MMU - Memory Management Unit
EIC
SO
• Inicializa a CPU
• Reinicializa portas e controladores
•
FCT
Interrupções são ativadas
EIC
SO
FCT
•
EIC
SO
• 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.
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
Programa
Processo 1 Processo 2
FCT
EIC
SO
WINDOWS :.
FCT
EIC
SO
FCT
EIC
SO
LINUX
FCT
EIC
•
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
recursos sistemas
• 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.
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
processador;
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
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)
FCT
EIC
SO
EXECUTANDO
• Um processo pode estar em um
dos seguintes estados:
SUSPENSO
TERMINADO
• NOVO:
• O processo está sendo criado,
FCT
EIC
SO
• 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.
• SUSPENSO:
• O processo não pode executar porque depende
FCT
EIC
SO
• TERMINADO:
• A execução do processo foi
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
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.
FCT
• top: mostra a atividade do sistema, atualizando a tela a cada N segundos.
EIC
SO
FCT
EIC
SO
FCT
• %MEM : percentagem da memória usada pelo processo.
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
• ./nome_programa
FCT
EIC
SO
FCT
EIC
SO
FCT
PID =01
EIC
SO
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);
}
}
FCT
EIC
SO
FCT
EIC
SO
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);
}
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
#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
1
2 4
FCT
EIC
SO
1
2 4
FCT
EIC
SO
5 6
1
2 4
FCT
EIC
SO
5 6
processos Lineal
7
FCT
EIC
SO
• 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
FCT
EIC
SO
FCT
EIC
SO
FCT
processo
EIC
SO
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
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
Escalonamento (scheduling)
FCT
EIC
SO
ou de um sistema distribuído,
FCT
EIC
SO
FCT
EIC
SO
processos prontos.
FCT
EIC
SO
processos a 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
FCT
EIC
SO
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
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.
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):
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
• Tempo médio de espera (Tw) das tarefas
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
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
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
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).
FCT
EIC
SO
FCT
EIC
SO
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.
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
• Sistemas críticos:
• Piloto automático de avião;
• Monitoramento de pacientes em hospitais e controle de automação em
fabricas
FCT
EIC
SO
FCT
EIC
SO
FCT
• Informação disponível previamente; sobre processos e prazos
EIC
SO
FCT
EIC
SO
OU
• Inter-Process Communication (IPC)
FCT
EIC
SO
FCT
espaços uns dos outros?
EIC
SO
FCT
EIC
SO
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.
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
FCT
EIC
SO
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.
FCT
EIC
SO
• Direta ou indireta
• Síncrona ou assíncrona
FCT
EIC
SO
• Confiável ou não-confiável
• Número de participantes
• Comunicação direta:
FCT
EIC
SO
• Comunicação indireta:
FCT
EIC
SO
• As operações de envio/receção podem bloquear as tarefas .O emissor será bloqueado até que a
FCT
EIC
SO
FCT
EIC
SO
• 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
• 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,
FCT
EIC
SO
acesso sequencial.
• cada mensagem consiste de um pacote de dados. Esse pacote é recebido ou descartado pelo receptor
FCT
EIC
SO
• 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
• 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
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
• Capacidade finita (0 < n < ∞): o canal pode armazenar uma quantidade finita de dados.
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
• 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
• 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
FCT
EIC
SO
FCT
EIC
SO
• Mecanismos de comunicação
1. Pipes UNIX
FCT
EIC
SO
2. Filas de mensagens
3. Memória partilhada
• Um dos mecanismos de comunicação entre processos mais simples de usar no ambiente UNIX é o pipe,
ou “cano”.
FCT
EIC
SO
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
• O comando sort ordena a linhas recebidas em sua entrada padrão e as envia para sua saída padrão.
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
• Objetivo é criar 2 processos: um que envia mensagem(write) e outro que recebe mensagem(read)
• Funções
FCT
EIC
SO
• 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);
• Exemplo: WRITE.
FCT
EIC
SO
• Exemplo: READ.
FCT
EIC
SO
Filas de mensagens
FCT
EIC
SO
operativo.
FCT
EIC
SO
• As filas de mensagens são mecanismos de comunicação entre vários processos (N:M ou N:1),
• 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;
• a variante mq_timedsend: permite definir um prazo máximo de espera: caso o envio não ocorra
• mq_receive: recebe uma mensagem da fila; caso a fila esteja vazia, o receptor é bloqueado até
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
• Caso dois clientes em terminais diferentes tentem depositar valores na mesma conta ao
concorrente.
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
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
FCT
se e somente se as seguintes condições forem atendidas:
EIC
SO
FCT
código:
EIC
SO
FCT
crítica.
EIC
SO
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)
FCT
EIC
SO
• Espera limitada: uma tarefa que aguarda acesso a uma seção crítica deve ter esse acesso
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
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
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
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
FCT
EIC
SO
FCT
EIC
SO
FCT
EIC
SO
sinal chegou,
processo para fornecer um método com o qual lidar com eventos assíncronos.
• hardware,
• etc.
• estes podem ocorrer quando o usuário pressiona certas teclas (por exemplo,
Delete) em um terminal,
com o que um processo pode enviar sinais para outro processo ou grupo de
processos.
• ignore o sinal,
• capture-o
• 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
• Os sinais que podem ser geridos pelo sistema, juntamente com seus nomes, são
incluído em <signal.h>
• Esta rotina pode ser desenvolvida pelo próprio programador, ou será associado
• Diz-se então que o processo está pronto para capturar esses sinais.
• 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
include <signal.h>
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.
• Sua definição é:
• include <signal.h>
função.
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:
• include <unistd.h>
• 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
• include <signal.h>