Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros,...

29
Sistemas Operativos: Introdução February 13, 2017

Transcript of Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros,...

Page 1: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Sistemas Operativos: Introdução

February 13, 2017

Page 2: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Sumário

Organização dum SO

Arranque dum Sistema Operativo

Lab 2

Diretórios

Page 3: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Sumário

Organização dum SO

Arranque dum Sistema Operativo

Lab 2

Diretórios

Page 4: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Organização dum SO

Núcleo/kernel A parte do sistema operativo que executa emmodo priveligiado.

I Maior parte do código é reactivo, i.e. executado emreposta a:Chamadas ao sistema realizadas por processos de

aplicação.Interrupções geradas por dispositivos de E/S.

I Outra parte, inclui processos/threads que executamem modo priveligiado

Biblioteca de chamadas ao sistema Que oferece a interfaceprogramática para aceder aos serviços do SO.

Processos de sistema Processos que não executam em modopriveligiado, mas que oferecem alguns dos serviços do SO.

Page 5: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Implementação do Kernel dum SO

I O kernel dum SO consiste em código escrito para a ISAdo processador:

I Idealmente, o kernel deveria ser independente doprocessador, ou melhor da ISA;

I Na prática, mais de 90% do kernel é escrito numalinguagem de alto nível, p.ex. C, e posteriormentecompilado para a ISA do processador. O restante dependedo ISA do processador, pelo que tem que ser reescritopara cada ISA suportada.

I Em termos de organização, há 2 particularmente comuns:Monolítica , p.ex. Linux eMicro-Kernel , p.ex., QNX

Page 6: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Implementação MonolíticaI Não faz uso de processos de sistema.I Todos os serviços do SO são fornecidos pelo kernel

I Implementados como um conjunto de funçõesI As estruturas de dados são implementadas em kernel

space, sendo por isso partilhadas.I Há risco de bugs numa função do kernel causarem

problemas noutras funções do kernelI Em qualquer caso, o código está tipicamente organizado

em módulos, como acontece p.ex. com o Windows 2000:

POSIX program

POSIX subsystem

Win32 program

Win32 subsystem

OS/2 program

OS/2 subsystemService process

System interface (NT DLL.DLL)

System services

Hardware

Hardware Abstraction layer (HAL)

Kernel

File sys

I/O mgrObject

mgrProcess

mgrMemory

mgrSecurity

mgrCache

mgrPnP mgr

Power mgr

Config mgr

LPC mgr

Win32 GDI

Video driverD K

erne

l mod

eU

ser m

ode

Page 7: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Implementação baseada em Micro-Kernel

Applic.Mem.

Server

File Server

ukernel

I O kernel do SO oferece apenas funções essenciais para:I gestão de processos/threadsI comunicação entre processosI gestão de memória (dependendo do hardware)

I A restante funcionalidade é implementada por processosde sistema.

I Maior fiabilidadeI Quanto menos código, menos bugsI É mais difícil que bugs num processo sejam propagados a

outros processos.I Menor eficiência

I A generalidade dos serviços requer a intervenção de pelomenos um processo adicional.

Page 8: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Sumário

Organização dum SO

Arranque dum Sistema Operativo

Lab 2

Diretórios

Page 9: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Arranque dum Computador/Boot(strapp)ingI Os pormenores desta fase são tipicamente dependentes

do processador e do computador.I Em qualquer caso pode-se identificar 3 fases/tarefas

genérica s:Teste do hardware assim que o sistema é ligado

I O código necessário reside em memória principal nãovolátil, fazendo parte do que se designa por firmware

I O início deste programa encontra-se tipicamente noendereço da posição de memória com que o programcounter é inicializado após reset /arranque doprocessador.

Boot(strapp)loading durante a qual o kernel do SO écarregado na memória principal

I Esta fase poderá não ocorrer, se o kernel estiverguardado em memória principal não volátil, comoacontece tipicamente em sistemas embebidos maissimples

Inicialização do SO durante a qual o SO detecta ohardware e é inicializado.

Page 10: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Boot(strapp)loading

I Este processo é tipicamente realizado por um programa, obootloader , que está também guardado em memóriaprincipal não volátil, i.e. faz parte do firmware.

I Frequentemente, o espaço disponível em ROM é reduzido,e.g. nos PC, pelo que a carga de kernel exige pelo menos2 bootloaders:

I Tipicamente, cada bootloader é usado apenas paracarregar o bootloader seguinte.

I Em particular, o bootloader em firmware apenas carrega obootloader seguinte.

Questão Onde se encontra esse booloader?Resposta Normalmente nos primeiros “sectores” do dispositivo

com o SO, seja ele um disco duro, um CD ou uma USB-pen

I De novo, o espaço disponível é frequentementeinsuficiente, daí necessidade dum bootloader adicional

Page 11: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Inicialização do SO

I A última acção do último bootloader é passar o controlopara o kernel que acabou de carregar em memória RAM

I O kernel procede então à inicialização do SO, a qualtipicamente inclui os seguintes passos:

I Detectar e inicializar o hardware, p.ex. controladoresexistentes

I Inicializar as estruturas de dados do kernelI Iniciar os processos/threads ao nível do kernelI Inicia a execução de um ou mais processos de sistema (i.e.

ao nível do utilizador)

Page 12: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Sumário

Organização dum SO

Arranque dum Sistema Operativo

Lab 2

Diretórios

Page 13: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Ficheiros

I Abstraiem/virtualizam o disco e outros dispositivos dearmazenamento de dados

I Representam uma fonte/poço de informaçãoI Usados para virtualizar outros dispositivos de E/S

I Suportam três operações básicas: leitura, escrita eexecução

I Tipicamente organizados duma forma hierárquica, usandodirectórios:

Ficheiros que contêm outros ficheiros.I Cada ficheiro/directório tem um utilizador que é o seu

donoI Usado para controlo de acesso

Page 14: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Sistema de Ficheiros

I Os ficheiros estão organizados em sistemas de ficheirosI Conjunto de ficheiros

I Mais dependente da implementação do que duma relaçãológica entre eles

I Um SO pode ter múltiplos sistemas de ficheiros.I Exemplificar usando mount

I Designa também a parte do SO que gere o sistema deficheiros

I Para operar sobre um ficheiro é necessário um nome

Page 15: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Nomes de um Ficheiro

Identificador único no contexto dum sistema de ficheiros.Relacionado com a implementação

Caminho (path) string que localiza o ficheiro no conjunto desistema de ficheiros do computador.Absolutos localização do ficheiro em relação à raiz do

sistema de ficheiros respetivoRelativos localização do ficheiro em relação ao diretório

corrente (present working directory )Descritor (file descriptor) um número que identifica o ficheiro

no contexto dum processoI O SO mantém uma tabela de ficheiros abertos por

processo.

Page 16: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Modelo Acesso a Ficheiros

I Sequencial (fita magnética)

headI para aceder a um byte/registo tem-se que aceder a todos

os que o precedem;I não é possível saltar para a frente ou para trás.

I Directo (random)I permite posicionar a cabeça de leitura/escrita em qualquer

byte/registo do ficheiro;I nem todos os dispositivos de E/S suportam este tipo de

acesso:I por exemplo, porta série.

Page 17: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Chamadas ao Sistema (System Calls)

Problema: Como se acede ao sistema de ficheiros?Solução: Através de chamadas ao sistema (ou através

de programas utilitários):I Chamadas ao sistema são a interface

programática (API) dum SO.I Para cada tipo de serviço, o SO oferece um

conjunto de chamadas ao sistema.I Do ponto de vista do programador, fazer uma

chamada ao sistema consiste em invocar umafunção (/usr/share/man/man2).

Page 18: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Chamadas ao Sistema: Gestão de Ficheiros

Operação Chamada ao Sistema em UnixCriar open() (creat()– obsoleta)Lêr read()Escrever write()Reposicionar cabeça lseek()Lêr atributos fstat(), lstat(), stat()Alterar atributos chmod(), chown() . . .Mapear na Memória mmap(), munmap

I Em Unix:I tem-se que invocar open() antes de aceder a um ficheiro;

I O SO realiza várias ações para tornar as operaçõessubsequentes mais rápidas

I deve-se invocar close() quando não se pretende acedermais ao ficheiro.

I Permite que o SO liberte alguns recursos.

Page 19: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Protótipo das Chamadas ao Sistema

// To open a file that already existsint open(const char *pathname, int flags);// To create a fileint open(const char *pathname, int flags, mode_t mode);// To close a fileint close(int fd);// To read data from a filessize_t read(int fd, void *buf, size_t count);// To write data to a filessize_t write(int fd, const void *buf, size_t count);// To position the offset of the file,// so that the next read/write syscall will// start at that positionoff_t lseek(int fd, off_t offset, int whence);

Page 20: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Chamadas ao Sistema para Ficheiros: Exemplo

/* File display program. Minimal error checking */#define BUF_SIZE 256

int main(int argc, char *argv[]) {int in_fd, rd_cnt, wr_cnt;char buf[BUF_SIZE];if (argc != 2) /* incorrect number of args */

exit(1);in_fd = open(argv[1], O_RDONLY); /* open source file */if (in_fd < 0 )

exit(2); /* error in open */while (TRUE) { /* loop until done, or an error */

rd_cnt = read(in_fd, buf, BUF_SIZE); /* read from source */if (rd_cnt <= 0)

break; /* end of file, or error */wr_cnt = write(STDOUT_FILENO, buf, rd_cnt); /* write block read */if (wr_cnt < 0)

exit(4); /* error writing */}close( in_fd); /* close files */if( rd_cnt == 0 ) /* no error on last read */

exit(0);else /* error on last read */

exit(5);}

I write() não garante que o SO escreve todos os bytes.I Deveria usar um ciclo

Page 21: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Sumário

Organização dum SO

Arranque dum Sistema Operativo

Lab 2

Diretórios

Page 22: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Diretórios

I A associação entre ficheiros e a respetiva localização nodisco é feita através de diretórios:

F1F3

F2 F4

F5

Files

Directory

I Quer os ficheiros quer os diretórios residem no disco:I Em Unix, os diretórios são um tipo especial de ficheiros.

Page 23: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Diretórios Planos

I Há um único diretório:

Root directory

A A B C

I As letras indicam os “donos” do ficheiro correspondente.

I Todos os ficheiros pertencem ao mesmo diretório:+ Simplicidade de implementação.- Conflitos de nomes são inevitáveis.

I Essencialmente, esta solução não escala, mas pode seruma solução para um sistema embebido.

Page 24: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Diretórios Estruturados em ÁrvoreI Quase todos os sistemas de ficheiros suportam uma

hierarquia de diretórios:

bin dev varusr etc

bin

emacs

I O uso duma àrvore permite:I evitar conflitos de nomes;I agrupar ficheiros de alguma forma relacionados;I resolver nomes duma forma eficiente.

Nome (absoluto) inclui todos os componentes desde a raiz( ) até ao ficheiro/diretório, separados por /. P.ex.:/usr/bin/emacs

Page 25: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Diretório Corrente (.) e Nomes de Ficheiros

Problema Os nomes (pathnames) absolutos podem serdemasiado compridos e pouco convenientes

Solução Cada processo está associado a um diretório corrente(current/working diretory), que pode variar ao longo da suavida (chdir())

Nome relativo inclui todos os componentes desde o diretóriocorrente até ao ficheiro/diretório. P.ex.: bin/emacs.

I Nomes começando com um separador são absolutosI Em Unix, chroot() permite especificar o diretório raiz

dum processo – usado para controlo de acesso.I Componentes com significado especial:

. representa o diretório corrente;.. representa o diretório pai.

Page 26: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Diretórios como Grafos AcíclicosI Frequentemente, é conveniente poder atribuir nomes

diferentes ao mesmo ficheiro:I o grafo resultante deixa de ser uma árvore:

Root directory

B

B B C

C C

CA

B C

B

? C C C

A

Shared file

I Unix usa o conceito de link (referência)Hard Links mapeiam nomes em (identificadores de)

ficheirosSoft Links mapeiam nomes em outros nomes

Page 27: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Montagem de Sistemas de FicheirosI Um sistema de ficheiros não ocupa mais de um disco.I Unix permite enxertar (mounting) sistemas de ficheiros: o

nome dos ficheiros é independente do dispositivo que oscontém.

/

a b a

c

p q r q q r

d

/

c d

b

Diskette

/

Hard diskHard disk

x y z

x y z

I Este mecanismo é extremamente flexível, permite acedera sistemas de ficheiros:

I em suportes removíveis, p.ex., USB pens;I remotos, p.ex. Network File System (NFS).

Page 28: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Operações sobre Diretórios

Operação Chamada ao Sistema em UnixCriar um diretório mkdir()Remover um diretório rmdir()Mudar o diretório corrente chdir()Mudar o diretório raiz chroot()Ler elementos dum diretório getdents()Criar um ficheiro open()Criar um nome novo link()Criar um link simbólico symlink()Remover um ficheiro unlink()Alterar o nome dum ficheiro rename()

I A chamada ao sistema getdents() não é fácil de usar:é preferível usar funções da libc (man readdir).

Page 29: Sistemas Operativos: Introduçãopfs/aulas/so2017/at/2intro_p2.pdfJosé Alves Marques e outros, Sistemas Operativos, FCA - Editora Informática, 2009 I Secções 1.5 e 1.6 de

Leitura Adicional

I Secções 2.1, 2.2, 2.3, 2.4 e 2.5 deJosé Alves Marques e outros, Sistemas Operativos,FCA - Editora Informática, 2009

I Secções 1.5 e 1.6 deModern Operating Systems, 2nd Ed.

I Secções 2.3, 2.4, 2.5, 2.7 e 2.10 deSilberschatz e outros, Operating System Concepts,7th Ed.

I Outra documentação (transparências e enunciadosdos TPs) na página da disciplina