Grupo I [6 v] Considere o processo com a seguinte tabela de páginas: Página Presente Protecção Base 0 0 RW RW R R RW -

Documentos relacionados
LEIC/LERC 2008/09. Segundo Teste de Sistemas Operativos. Grupo I [3 valores]

LEIC/LERC 2008/09. Primeiro Exame de Sistemas Operativos. 20 de Janeiro de Duração: 2h30m. Grupo I [3 valores]

Comunicação entre Processos

LEIC/LERC 2011/12-1º Exame de Sistemas Operativos 16/Janeiro/2012

MC823 Atividade 1: Cliente/Servidor TCP Iterativo. 3 Modificando o servidor para retornar data e hora

Sistemas de Operação (2018/2019) Ficha 6

LEIC/LERC 2012/13 2º Teste de Sistemas Operativos 15/Janeiro/2013

Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes

TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão

Leandro Soares de Sousa (DSc.) Página: Aula 05 - desenvolvimento com sockets

LEIC/LERC 2009/10 Repescagem do 2º Teste de Sistemas Operativos

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios Parte 2

Teste de Sistemas de Operação 15 de Abril de 2010

LEIC/LERC 2008/09. 2º Exame de Sistemas Operativos

Comunicação entre Processos por Troca de Mensagens. Prof. Celso maciel da Costa

Sistemas de Operação (2018/2019) Ficha 4

SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios

Grupo I [5 Val] Suponha que, ao correr comando ls l whoami, se obtinha o seguinte output: -rwxr-xr-x 1 root root Sep whoami

Leandro Soares de Sousa (DSc.) Página: Parte III

Memória partilhada em Unix SysV

Teste de Sistemas de Operação 30 de Maio de 2009

Programação de Sistemas

6. Comunicação entre processos - Pipes

I/O de baixo-nível em ficheiros

Comunicação entre pai e filho

Básico: estrutura de programa, sintaxe Interface com linha de comando

Sistemas de Operação (2018/2019) Teste de Auto-Avaliação Prática

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000

LEIC/LERC 2008/09. Repescagem do Primeiro Teste de Sistemas Operativos

LEIC/LERC 2009/10 1º Exame de Sistemas Operativos

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Introdução à Programação com Sockets. Fernando Jorge Silveira Filho Daniel Sadoc Menasché


SSC0640 Sistemas Operacionais I

Inter-process Communication (IPC)

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

Memoria. UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

LEIC/LERC 2009/10 2º Exame de Sistemas Operativos

Criação de Processos Fork( ) Exec( )

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Comunicação entre Processos

Grupo I [7 Val] 1. Considere os seguintes 3 algoritmos de escalonamento num sistema operativo de tempo virtual:

LEIC/LERC 2010/11 1º Teste de Sistemas Operativos

Comunicação entre Processos. 1. Pipes 2. Fifos 3. Sockets

sockets interprocess communication Taisy Weber

Programação de Sistemas. Tubos

Redes de Computadores

MIEIC SISTEMAS OPERATIVOS 2009/2010 1S FEUP

API de Sockets. Modelo Cliente/Servidor (2/2) Modelo Cliente/Servidor (1/2) José Pedro Oliveira Sistemas Operativos I

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27

Cliente TCP. Programação sockets. Agenda. Cliente TCP. Chamadas sockets para TCP. Chamada socket() Chamada socket()

Processos Volnys B. Bernal Versão de 20/03/2015. Agenda. Processos. Programa x Processo. Programa x Processo. Programa.

Grupo I [4v] executaprograma();

Redes de Computadores I

IPC Interprocess communication

Leitura de Arquivos. Prof. Fabrício Olivetti de França

Programação com Sockets. Redes de Computadores I 2007/2008

ORGANIZAÇÃO DE COMPUTADORES

Servidor TCP Volnys Borges Bernal Depto de Engenharia de Sistemas Eletrônicos Escola Politécnica da USP

Programação de Sistemas

MÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS

LEIC/LERC 2010/11 2º Exame de Sistemas Operativos

Inter-process Communication (IPC)

Cliente/Servidor. Programação com Sockets. Graça Bressan. Graça Bressan/LARC

Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados

Aula de Socket. Rafael De Tommaso do Valle

Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação

Problemas relacionados a exclusão mútua

Por Fernando Koyanagi

Programação Orientada a Objetos para Redes de Computadores

Programação Orientada a Objetos para Redes de Computadores. Modelo Cliente-Servidor. Comunicação entre Processos. O que é um Socket?

Outline. 33. Manipulação de arquivos DIM

ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO INTRODUÇÃO Estrutura de Seleção. Prof. Luiz Fernando Laguardia Campos FMS

Ponteiros e Tabelas. K&R: Capítulo 5

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

Processos. (c) 2005 Volnys B. Bernal Versão de 15/3/2006. Agenda. Processos. Introdução aos Processos. Introdução aos Processos

Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP)

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

Sumário. Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux

Um Tutorial sobre Sockets Parte I

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Trabalho 02: Cliente e Servidor em C

Soquetes TCP. Jean Ribeiro Damasceno. Escola de Engenharia Universidade Federal Fluminense (UFF) Rua Passo da Pátria, 156 Niterói RJ Brasil

Arquitectura de Computadores

ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO Algoritmos Conceitos Iniciais. Prof. Luiz Fernando Laguardia Campos FMS

Fundamentos de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Arquitectura de Computadores

Memória compartilhada

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

Comunicação entre Processos

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Transcrição:

Número: Nome: LEIC/LETI 2014/15-2º Teste de Sistemas Operativos 9/Janeiro/2015 Identifique todas as folhas. Responda no enunciado no espaço fornecido. Justifique todas as respostas. Duração: 1h30m Grupo I [6 v] Considere um sistema de memória virtual paginada com 24 bits de endereçamento, em que cada página tem o tamanho de 4Kbytes (2^12 bytes). Considere que só possui 8Kbytes de RAM e que a TLB possui 1 única entrada (os dígitos de proteção são R para leitura, W para escrita e X para execução). Considere o processo com a seguinte tabela de páginas: Página Presente Protecção Base 0 0 RW -- 1 0 RW -- 2 0 R -- 3 0 R -- 4 0 RW - 1. [1.0 v] Qual o papel da TLB no processo de tradução de endereços.

Página 2 de 10 2. [3.0 v] Considere que o processo não possui páginas virtuais em memória, pode usar qualquer uma das tramas físicas (i.e. páginas físicas) e que a TLB está vazia. Considere que o processo realiza acessos à memória conforme discriminado, exatamente por esta ordem. Complete a seguinte tabela, considerando uma política de substituição FIFO. Note que os endereços virtuais assim como os físicos estão indicados em hexadecimal. Tipo de acesso Endereço virtual Leitura 000002 Page Fault Leitura 0041FC Escrita 000FEE Leitura 001123 Escrita 000FFF Leitura 004FFF Leitura 002354 Leitura 002043 Escrita 003FFA Excepção TBL hit? Carregou a página? Endereço físico TLB após o acesso Não Sim 0x000002 0 0 3. [2.0 v] Indique uma razão para a maioria dos sistemas usar aproximações de Least Recently Used ( LRU) em vez de usarem exatamente LRU como políticas de substituição de páginas.

Número: Página 3 de 10 Considere o seguinte programa servidor. Grupo II [7 v] /*------------------------------------------------------------------------------ Programa servidor.c (gera binario "servidor") +------------------------------------------------------------------------------*/ #include <stdio.h> #include <sys/time.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #define SOCK_PATH "echo_socket" #define SZ_STR 100 int main(void) { int s, s2, t; struct sockaddr_un local, remote; char str[sz_str]; char byteread; int accepted = 0; fd_set readfds; int maxfd; if ((s = socket(af_unix, SOCK_STREAM, 0)) == -1) { perror("socket"); local.sun_family = AF_UNIX; strcpy(local.sun_path, SOCK_PATH); unlink(local.sun_path); if (bind(s, (struct sockaddr *)&local, sizeof(struct sockaddr_un)) == -1) { perror("bind"); if (listen(s, 1) == -1) { perror("listen"); for(;;) { FD_ZERO (&readfds); if (accepted) { FD_SET(0, &readfds); FD_SET(s2, &readfds); maxfd = s2; else { FD_SET(0, &readfds); FD_SET(s, &readfds); maxfd = s; select(maxfd+1, &readfds, NULL, NULL, NULL); if (FD_ISSET(0, &readfds)){ read (0, &byteread, 1); if (byteread=='a') printf ("STDIN\n"); if (!accepted && FD_ISSET(s, &readfds)) { t = sizeof(remote); if ((s2 = accept(s, (struct sockaddr *)&remote, &t)) == - 1) { perror("accept"); printf ("Connected to client\n"); accepted = 1; if (accepted && FD_ISSET(s2, &readfds)) { read (s2, &byteread, 1); if (byteread=='a') printf ("SOCKET\n"); 1. [0.5 v] Diga, justificando, que tipo de socket é criado. 3

Página 4 de 10 2. [0.5 v] Para que serve a chamada bind? Justifique a sua resposta tendo em conta o sistema de ficheiros. 3. [1.0 v] Explique a diferença de funcionamento quando a flag accepted está a true e quando a flag accepted está a false. 4. [1.0 v] Considere que lança o servidor e depois escreve a seguinte string no terminal onde lançou o servidor: banana<ret> Diga qual o output do programa servidor.

Número: Página 5 de 10 Considere o seguinte programa cliente. /*------------------------------------------------------------------------------ Programa cliente.c (gera binario "cliente") +------------------------------------------------------------------------------*/ #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <stdio.h> #define SOCK_PATH "echo_socket" #define SZ_BUFF 100 main(int argc, char **argv) { int sock; struct sockaddr_un server; char c; server.sun_family = AF_UNIX; strcpy(server.sun_path, SOCK_PATH); if (connect(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) { close(sock); perror("connecting stream socket"); while ((c = getc(stdin))!=eof) { write (sock, &c, 1); sock = socket(af_unix, SOCK_STREAM, 0); if (sock < 0) { perror("opening stream socket"); 5. [1.0 v] Para que serve a chamada connect? 5

Página 6 de 10 6. [1.0 v] Considere que lança o servidor num terminal. Considere que, noutro terminal, lança o programa cliente acima (já com o servidor em execução) e depois escreve a seguinte string no terminal onde lançou o cliente: laranja<ret> Diga qual o output do programa servidor. Considere o seguinte programa pai : /*------------------------------------------------------------------------------ Programa pai.c (gera binario "pai") +------------------------------------------------------------------------------*/ #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <time.h> #include <string.h> int main (int argc, char** argv) { int fd[2]; int pid; char c; if (pid == 0) { if (execl ("./servidor", "servidor", NULL) == -1) { perror("servidor"); exit(exit_failure); else if (pid!= -1){ if (pipe(fd) == -1) { perror("pipe"); exit(exit_failure); pid = fork (); while ((c = getc(stdin))!=eof) { write (1, &c, 1);

Número: Página 7 de 10 7. [2.0 v] Acrescente o código necessário no programa acima, de forma a que o input do processo pai seja processado pelo processo servidor. Grupo III [7 v] Considere o sistema de ficheiros do Unix e o conteúdo da seguinte diretoria, de nome /users/so/: Cada entrada na diretoria tem, neste exemplo, exatamente 12 bytes Inode Tamanho Tamanho Tipo Nome Entrada Nome Deslocamento (4 bytes) (2 bytes) (1 byte) (1 byte) (4 bytes) 0 10111 12 1 2.\0\0\0 12 10112 12 2 2..\0\0\0 24 10113 16 8 1 abcd.txt 1. [1.0 v] Altere o conteúdo da directoria para reflectir o resultado de executar o seguinte comando para criar um hard link : link /users/so/abcd.txt /users/so/xxx 7

Página 8 de 10 Considere o seguinte estado das tabelas que suportam o acesso aos ficheiros (considere que cada bloco tem 4K de tamanho) num sistema UNIX. 2. [2.0 v] Altere diretamente o esquema acima para representar o estado das mesmas tabelas após o processo P2 fazer fork, criando desta forma um processo P3 (filho de P2).

Número: Página 9 de 10 Considere de novo o seguinte estado das tabelas que suportam o acesso aos ficheiros: 3. [2.0 v] Altere diretamente o esquema acima para representar o estado das mesmas tabelas após o processo P1 fazer a chamada sistema open ( /users/so/abcd.txt, O_RDONLY) 9

Página 10 de 10 4. [0.5 v] Considere que após o open acima, o processo P1 executa o seguinte código: nbytes = read(4, buf, 1); será necessário trazer algum bloco para memória? Em caso afirmativo, diga qual. Justifique. 5. [0.5 v] Considere que após a chama read acima, o processo P1 executa o seguinte código: offset lseek(4, 5000, SEEK_SET); nbytes = read(4, buf, 1); Será necessário trazer algum bloco para memória? Em caso afirmativo, diga qual. Justifique. 6. [1.0 v] Num sistema de ficheiros Unix, indique para que serve o superbloco: