sistemas operacionais ii - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · sistemas...

50
Sistemas Operacionais II Aula 1 Autor: Ren ˆ e de Souza Pinto Orientac ¸ ˜ ao: Prof. Dr. Francisco Jos ´ e Monaco [email protected], [email protected] Universidade de S ˜ ao Paulo Instituto de Ci ˆ encias Matem ´ aticas e Computac ¸ ˜ ao - ICMC Escola de Engenharia de S ˜ ao Carlos - EESC Sistemas Operacionais II - Aula 1 – p. 1

Upload: tranthuy

Post on 09-Nov-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Sistemas Operacionais IIAula 1

Autor: Rene de Souza Pinto

Orientacao: Prof. Dr. Francisco Jose Monaco

[email protected], [email protected]

Universidade de Sao Paulo

Instituto de Ciencias Matematicas e Computacao - ICMC

Escola de Engenharia de Sao Carlos - EESC

Sistemas Operacionais II - Aula 1 – p. 1

Page 2: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Sumario

Revisão teórica

Sistemas de Arquivos

Prática 1: Chamadas de sistemas

Sistemas Operacionais II - Aula 1 – p. 2

Page 3: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Revisao

O que é um sistema operacional (S.O.)?

Sistemas Operacionais II - Aula 1 – p. 3

Page 4: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Revisao

O que é um sistema operacional (S.O.)?

Segundo Tanenbaum[1]:Gerenciador de Recursos:Processador, Memória, Discos, Teclado, Vídeo,todos os periféricos da máquina devem sergerenciados

Sistemas Operacionais II - Aula 1 – p. 3

Page 5: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Revisao

O que é um sistema operacional (S.O.)?

Segundo Tanenbaum[1]:Gerenciador de Recursos:Processador, Memória, Discos, Teclado, Vídeo,todos os periféricos da máquina devem sergerenciados

Máquina Virtual (ou Máquina Extendida):Abstrai o hardware para o programador provendouma estrutura padronizada: Sistema de arquivos echamadas de sistemas (syscalls)

Sistemas Operacionais II - Aula 1 – p. 3

Page 6: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Visao em Camadas

S.O.: Camada entre o hardware e osaplicativos

Sistemas Operacionais II - Aula 1 – p. 4

Page 7: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Camadas

Hardware: É a parte física da máquina:Processador, memória, controladoras, etc.

Sistemas Operacionais II - Aula 1 – p. 5

Page 8: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Camadas

Kernel: É o núcleo do sistema, gerencia todoo hardware assim como provê as chamadasde sistemas (syscalls). Pode ser visto como oS.O. em si.

Micro-kernel: Baseado no paradigmacliente-servidor. Várias funcionalidadessão providas por softwares externos aokernel, que se comunicam com o mesmo.Monolítico: Todas as funcionalidades sãoimplementadas e executadas dentro dokernel.

Sistemas Operacionais II - Aula 1 – p. 5

Page 9: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Camadas

Aplicações: É a camada que contém osaplicativos de usuário. A biblioteca C provêuma interface padronizada, permitindo aportabilidade entre sistemas, ou seja,possibilitando que softwares sejamcompilados e executados em diversasplataformas (ex: Linux, FreeBSD, Solaris)sem modificação de código.

Sistemas Operacionais II - Aula 1 – p. 5

Page 10: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Exemplos de S.O.

Sistemas Operacionais bem distintos:MS-DOS - Microsoft Disk Operating

System [3]

Microsoft Windows R©[5]

Linux[6]

Sistemas Operacionais II - Aula 1 – p. 6

Page 11: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

MS-DOS

MS-DOS - Microsoft Disk Operating SystemFunciona no Modo Real da arquitetura x86fornecendo funções para os programadores atravésde um conjunto de interrupções. Acesso a memóriaextendida ou funcionalidades mais avançadasdevem ser implementados através de softwaresespecíficos.

Acesso somente a 1MB de memória (limitaçãoimposta pelo modo Real do x86)Acesso a memória extendida (> 1MB) comsoftwares específicos (ex: HIMEM.SYS).

Sistemas Operacionais II - Aula 1 – p. 7

Page 12: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Ola Mundo no MS-DOS

;

; Ola Mundo para o MS-DOS

;

; Autor: Ren e de Souza Pinto

; Data.: Fev, 2009

;

; Para compilar: nasm hello.asm -f bin -o hello.com

;

[Bits 16]

; Programas .COM comecam em 100h de offset, pois

; 0-100h cont em os par ametros passados por linha

; de comando

ORG 0x100

Sistemas Operacionais II - Aula 1 – p. 8

Page 13: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Ola Mundo no MS-DOS

section .text

; Carrega endereco de offset da string.

; N ao e necess ario carregar o endereco de

; segmento porque quando o arquivo .COM e

; carregado, todos os registradores de segmento

; cont em o mesmo valor

lea ax,[message]

mov dx,ax

Sistemas Operacionais II - Aula 1 – p. 9

Page 14: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Ola Mundo no MS-DOS

; Imprime mensagem

xor ax,ax ; limpa AX

mov ah,0x09 ; 02h - Escreve string na sa ıda padr ao

int 0x21 ; Chama interrupc ao do DOS

; Sai do programa

mov al,0x00 ; C odigo de sa ıda

mov ah,0x4C ; 4Ch - Sair do programa

int 0x21 ; Chama interrupc ao do DOS

section .data

message db ’Ola Mundo!$’

Sistemas Operacionais II - Aula 1 – p. 10

Page 15: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Windows

Microsoft Windows R©

Conjunto de sistemas operacionais da Microsoft

Dominante no mercado de desktops

Existe em várias versões: 3.11, 95, 98, XP, 2000,2003 Server, NT, Vista

Microsoft Windows NT R©

Possui um Kernel híbrido

Sistemas Operacionais II - Aula 1 – p. 11

Page 16: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Linux

LinuxCriado pelo finlandês Linus Torvalds

Licensiado pela GPL v.2 (código-fonte aberto)

Possui milhares de desenvolvedores espalhados aoredor do mundo

Kernel monolítico. Primeira versão foi baseada noMinix, um S.O. Unix Like desenvolvido por AndrewS. Tanenbaum

Sistemas Operacionais II - Aula 1 – p. 12

Page 17: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Ola Mundo no Linux

;

; Ola Mundo para o Linux

;

; Autor: Ren e de Souza Pinto

; Data.: Fev, 2009

;

; Para compilar: nasm hello.asm -f elf

; Para linkar: ld hello.o -o hello

;

[Bits 32]

[global _start]

%define SYS_WRITE 0x04 ; ındice para a syscall sys_write

%define SYS_EXIT 0x01 ; ındice para a syscall sys_exit

%define STDOUT 0x01 ; descritor da sa ıda padr ao

Sistemas Operacionais II - Aula 1 – p. 13

Page 18: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Ola Mundo no Linux

section .text

_start:

; Imprime mensagem

; syscall sys_write arguments

mov edx, msglen

mov ecx, message

mov ebx, STDOUT

; Chama interrupc ao de syscall do Linux

mov eax,SYS_WRITE

int 0x80

Sistemas Operacionais II - Aula 1 – p. 14

Page 19: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Ola Mundo no Linux

; Sai do programa

; Empilha argumentos da syscall sys_exit

mov ebx,0x00 ; C odigo de retorno

push ebx

; Chama interrupc ao de syscall do Linux

mov eax,SYS_EXIT

int 0x80

section .data

message db ’Ola Mundo!’,13,10,0

msglen equ $-message

Sistemas Operacionais II - Aula 1 – p. 15

Page 20: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Ambiente Unix

Nosso estudo será feito no Ambiente Unix(padrão POSIX):

POSIX - Portable Operating SystemInterface (o X é de Unix): PadrãoconsolidadoVários sistemas operacionais sãobaseados ou implementam este padrão:Linux, FreeBSD, OpenSolaris, AIX, HP-UX,IRIX, Minix, QNX

Sistemas Operacionais II - Aula 1 – p. 16

Page 21: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Ambiente Unix

Nosso estudo será feito no Ambiente Unix(padrão POSIX):

Sistemas Operacionais com código-fonteaberto: Permite explorarmos a fundo osconceitos teóricos e analisarmosimplementações reais

Sistemas Operacionais II - Aula 1 – p. 16

Page 22: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Ambiente Unix

Sistemas Operacionais II - Aula 1 – p. 17

Page 23: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Sistemas de Arquivos

Sistema de arquivos: É a maneira com a qualos dados são organizados nos dispositivosde armazenamento (discos, SSD, etc) eabstraídos pelo sistema.

No Unix tudo é um arquivo!

Arquivos e diretórios são organizados emárvore

Sistemas Operacionais II - Aula 1 – p. 18

Page 24: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Sistemas de Arquivos

Fonte: [1]

Sistemas Operacionais II - Aula 1 – p. 19

Page 25: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Sistemas de Arquivos

Ex: Caminho para o arquivo syslog.conf quefica dentro do diretório etc, que por sua vezestá na raiz do sistema:

/etc/syslog.conf

Sistemas Operacionais II - Aula 1 – p. 20

Page 26: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Sistemas de Arquivos

Sistema baseados em i-nodesi-node é o nó de índice que aponta para osblocos no disco que contém os dados doarquivo, ou que contém endereços deblocos de dados do arquivo(endereçamento indireto).

Sistemas Operacionais II - Aula 1 – p. 21

Page 27: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Sistemas de Arquivos

Sistema baseados em i-nodes

Sistemas Operacionais II - Aula 1 – p. 21

Page 28: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Sistemas de Arquivos

Sistema baseados em i-nodesO Kernel possui uma tabela de arquivosabertos e uma tabela de i-nodes(referentes aos arquivos abertos), umarquivo pode ser aberto várias vezes aomesmo tempo, mas apenas 1 i-node iráreferenciá-lo.

Sistemas Operacionais II - Aula 1 – p. 22

Page 29: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Sistemas de Arquivos

Sistema baseados em i-nodes

Sistemas Operacionais II - Aula 1 – p. 22

Page 30: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Sistemas de Arquivos

O S.O. fornece syscalls para manipularmosarquivos, as principais são open, read, write,lseek e close:

int open (const char *pathname, int flags, mode_tmode)

ssize_t read (int fd, void *buf, size_t count)

ssize_t write (int fd, const void *buf, size_t count

off_t lseek (int fd, off_t offset, int whence)

int close (int fd)

Sistemas Operacionais II - Aula 1 – p. 23

Page 31: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

open

int open (const char *pathname, int flags, mode_tmode)Função: Abre o arquivo fornecidoEntrada:

pathname: Caminho do arquivo a ser aberto, ex: /etc/syslog.conf

flags: Especifica como o arquivo será aberto: Somente para leitura(O_RDONLY), escrita (O_WRONLY), ambos(O_RDWR), truncado, etc

mode: Especifica as permissões caso o arquivo seja criado, ex: S_IRWXU,S_IRUSR, S_IWUSR, S_IXUSR

Retorno:int : Índice para o descritor correspondente ao arquivo na tabela dedescritores

Sistemas Operacionais II - Aula 1 – p. 24

Page 32: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

open

Exemplo:

#include <stdio.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

/ * ... * /

int fd;

if((fd = open("/etc/syslog.conf", O_RDONLY)) < 0) {

perror("\nErro ao abrir arquivo!\n");

} else {

printf("\nArquivo aberto, descritor: %d\n", fd);

}

/ * ... * /Sistemas Operacionais II - Aula 1 – p. 25

Page 33: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

open

Note que no exemplo anterior, open foichamada com apenas dois argumentos,apesar de ser declarada com 3 parâmetros.Por que o código funciona?

Sistemas Operacionais II - Aula 1 – p. 26

Page 34: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

open

Note que no exemplo anterior, open foichamada com apenas dois argumentos,apesar de ser declarada com 3 parâmetros.Por que o código funciona?

O terceiro parâmetro (mode) só é utilizadoquando utilizamos O_CREAT em flags, assimserá empilhado lixo de memória comoterceiro argumento, mas não há problemas,uma vez que não será utilizado.

Sistemas Operacionais II - Aula 1 – p. 26

Page 35: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

read

ssize_t read (int fd, void *buf, size_t count)Função: Lê dados do arquivoEntrada:

fd: Descritor do arquivo aberto

buf: Ponteiro para o local em que os dados lidos serão armazenados (enecessário que buf tenha espaço suficiente)

count: Quantidade de bytes a serem lidos

Retorno:int : -1 se houve erro, 0 se o encontrou final do arquivo ou o número de byteslidos

Sistemas Operacionais II - Aula 1 – p. 27

Page 36: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

read

Exemplo:

#include <stdio.h>

#include <unistd.h>

/ * ... * /

ssize_t n;

char buffer[1024];

n = read(fd, buffer, 1024);

if(n < 0) {

perror("\nErro ao ler arquivo!\n");

} else {

printf("\nBytes lidos: %d\n", n);

}

/ * ... * /Sistemas Operacionais II - Aula 1 – p. 28

Page 37: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

write

ssize_t write (int fd, const void *buf, size_t countFunção: Grava dados no arquivoEntrada:

fd: Descritor do arquivo aberto

buf: Ponteiro para o local que contém os dados a serem gravados

count: Quantidade de bytes a serem gravados

Retorno:int : -1 se houve erro, 0 se nada foi gravado ou o número de bytes gravados

Sistemas Operacionais II - Aula 1 – p. 29

Page 38: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

write

Exemplo:

#include <stdio.h>

#include <string.h>

#include <unistd.h>

/ * ... * /

ssize_t n;

char buffer[] = "Ola Mundo!";

n = write(fd, buffer, strlen(buffer));

if(n < 0) {

perror("\nErro ao gravar arquivo!\n");

} else {

printf("\nBytes gravados: %ld\n", n);

}

/ * ... * /Sistemas Operacionais II - Aula 1 – p. 30

Page 39: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

lseek

off_t lseek (int fd, off_t offset, int whence)Função: Seleciona o deslocamento do arquivo abertoEntrada:

fd: Descritor do arquivo aberto

offset: Deslocamento

whence: SEEK_SET desloca a partir do início do arquivo, SEEK_CUR apartir do deslocamento atual e SEEK_END a partir do final do arquivo

Retorno:int : Deslocamento atual ou -1 se houve erro

Sistemas Operacionais II - Aula 1 – p. 31

Page 40: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

lseek

Simplificando, lseek seleciona a posiçãodentro do arquivo, assim podemos utilizar asfunções read e write para lermos eescrevermos em qualquer ponto do arquivo, enão apenas sequencialmente.

Sistemas Operacionais II - Aula 1 – p. 32

Page 41: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

close

int close (int fd)Função: Fechar um arquivo abertoEntrada:

fd: Descritor do arquivo aberto

Retorno:int : -1 se houve erro, 0 se o arquivo foi fechado com sucesso

Sistemas Operacionais II - Aula 1 – p. 33

Page 42: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

close

Exemplo:

#include <unistd.h>

/ * ... * /

/ * Sem segredos * /

close(fd);

/ * ... * /

Sistemas Operacionais II - Aula 1 – p. 34

Page 43: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

close

Tudo que close faz é remover a entradacorrespondente ao arquivo aberto da tabelade arquivos e decrementar a referência doi-node correspondente ao arquivo, se areferência for 0, então a entradacorrespondente na tabela de i-nodes tambémé removida

Sistemas Operacionais II - Aula 1 – p. 35

Page 44: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

errno

Nas syscalls vistas anteriormente, quandoum erro ocorre é retornado o valor -1, etambém é setada a variável global errno como erro correspondente. A lista completa deerros listados por errno pode ser obtida naspáginas de manual do sistema.

Sistemas Operacionais II - Aula 1 – p. 36

Page 45: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

UFA! Chega de teoria, vamospraticar!

Sistemas Operacionais II - Aula 1 – p. 37

Page 46: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Pratica 1

Objetivo:Familiarizar o aluno com o ambiente deprogramação (gcc, make, etc) e com aschamadas de sistema (syscalls) através douso da biblioteca C.

Sistemas Operacionais II - Aula 1 – p. 38

Page 47: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Pratica 1

Objetivo:Familiarizar o aluno com o ambiente deprogramação (gcc, make, etc) e com aschamadas de sistema (syscalls) através douso da biblioteca C.

Faça um programa simples que utilize todasas chamadas vistas na aula de hoje: open,read, write, lseek e close

Sistemas Operacionais II - Aula 1 – p. 38

Page 48: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Bom Trabalho!

Sistemas Operacionais II - Aula 1 – p. 39

Page 49: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Bibliografia

Refer encias[1] Tanenbaum, A. S./ Woodhull A. S.; Sistemas Operacionais: projeto e

implementação

[2] Linux manual pages

[3] Wikipedia, MS-DOS: http://en.wikipedia.org/wiki/MS-DOS

[4] DOS INT 21h - DOS Function Codeshttp://www.ee.iitm.ac.in/~ee01b044/interrupts.html

[5] Wikipedia, Microsoft Windows:http://en.wikipedia.org/wiki/Microsoft_Windows

[6] Wikipedia, Linux: http://en.wikipedia.org/wiki/Linux

Sistemas Operacionais II - Aula 1 – p. 40

Page 50: Sistemas Operacionais II - renesp.com.brrenesp.com.br/files/so/aulas/aula1.pdf · Sistemas Operacionais II - Aula 1 – p. 26. read ssize_t read(int fd, void *buf, size_t count) Função:

Licenca

Este documento é licensiado sob aCreative Commons Atribuição-Uso Não-Comercial 2.5

Brasil License.

Sistemas Operacionais II - Aula 1 – p. 41