Memória Partilhada em Sistemas Operativos
31 Questions
1 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

O que acontece quando invocamos fork()

permite criar novos processos filhos filho recebe no seu espaço de memória uma cópia do espaço de memória do pai (espaços independentes: uma alteração no filho não se reflete no pai e vice-versa)

É possível criar uma zona de memória partilhada entre processos Shared Memory

Cada processo tem um espaço de memória

Cada processo tem um espaço de ______

memória

A ______ Partilhada consiste em atribuir o mesmo espaço físico ao espaço virtual de diferentes processos

<p>Memória</p> Signup and view all the answers

Um processo vai então criar uma zona de memória que outros processos podem alocar a si mesmo e aceder (problema

<p>Memória</p> Signup and view all the answers

Sistemas Operativos Memória ______ 1 1 Enquadramento Até agora trabalhamos com sincronização de rotinas entre tarefas de um mesmo processo Onde existe algum espaço de memória partilhado Será que podemos sincronizar rotinas entre processos da mesma forma. Os processos partilham espaços de memória

<p>Partilhada</p> Signup and view all the answers

Para sincronizar rotinas vimos 2 tipos de semáforos: unnamed (entre tarefas* – ou entre processos se for usada ______ partilhada*) named (entre processos, onde cada processo se pode associar ao semáforo através do nome) P1 P2 P4 P3 Pn

<p>memória</p> Signup and view all the answers

Onde existe algum espaço de ______ partilhado Será que podemos sincronizar rotinas entre processos da mesma forma. Os processos partilham espaços de memória

<p>memória</p> Signup and view all the answers

Até agora trabalhamos com sincronização de rotinas entre tarefas de um mesmo processo Onde existe algum espaço de ______ partilhado Será que podemos sincronizar rotinas entre processos da mesma forma. Os processos partilham espaços de memória

<p>memória</p> Signup and view all the answers

O que acontece quando invocamos ______()

<p>fork()</p> Signup and view all the answers

O comando ____________ permite

<p>ipcs</p> Signup and view all the answers

Shmat() mapeia o segmento de memória partilhada para espaço de endereçamento do processo. Retorna o endereço onde foi mapeado shmid representa o id (int) do segmento (obtido com shmget()) addr é o endereço de memória pretendido (NULL para que seja o sistema a escolher) flags permite especificar opções de mapeamento. Tipicamente = 0. SHM_RDONLY indica que o segmento é apenas de ____________

<p>leitura</p> Signup and view all the answers

Memória Partilhada int shmget(key_t key, int size, int flags) shmget()obtém o id do segmento da Mem. Part. (ou cria um segmento) key é a chave que permite identificar o segmento pretendido. Pode ser usado IPC_PRIVATE (cria um novo id) ou ftok() para gerar um. Outros processos podem aceder ao mesmo segmento se indicarem a mesma chave size é o tamanho do segmento em bytes arredondado para um múltiplo do tamanho das páginas do sistema (getpagesize() – normalmente 4KB) flags IPC_CREAT indica que um novo segmento deve ser criado (caso não exista); IPC_EXCL indica que o segmento deve ser exclusivo (falha caso contrário); S_IRUSR, S_IWUSR, S_IROTH e S_IWOTH indicam permissões de ____________ e ____________

<p>leitura</p> Signup and view all the answers

Shmdt() liberta o mapeamento feito no espaço de endereçamento ______ addr é o endereço do segmento a libertar (para onde foi inicialmente mapeado)

<p>local</p> Signup and view all the answers

Shmdt() liberta o mapeamento feito no espaço de endereçamento ____________ addr é o endereço do segmento a libertar (para onde foi inicialmente mapeado)

<p>local</p> Signup and view all the answers

Obtém o id do segmento (ou cria) Attatch (shmat): cada processo deve mapear o segmento para a sua própria memória, para o poder utilizar Detatch (shmdt): após utilização, cada processo liberta mapeamento Control Remove (shmctl IPC_RMID): por último, um dos processos remove o segmento NOTA: Se no final não se REMOVER, ficam no sistema após os processos terminarem… 8 8 Instruções Memória Partilhada int shmget(key_t key, int size, int flags) shmget()obtém o id do segmento da Mem. Part. (ou cria um segmento) key é a chave que permite identificar o segmento pretendido. Pode ser usado IPC_PRIVATE (cria um novo id) ou ftok() para gerar um. Outros processos podem aceder ao mesmo segmento se indicarem a mesma chave size é o tamanho do segmento em bytes arredondado para um múltiplo do tamanho das páginas do sistema (getpagesize() – normalmente 4KB) flags IPC_CREAT indica que um novo segmento deve ser criado (caso não exista); IPC_EXCL indica que o segmento deve ser exclusivo (falha caso contrário); S_IRUSR, S_IWUSR, S_IROTH e S_IWOTH indicam permissões de ____________ e ____________

<p>escrita</p> Signup and view all the answers

Disponibiliza várias operações de controlo na Mem. Part. shmid representa o id (int) do segmento (obtido com shmget()) cmd é o comando (tipicamente IPC_RMID, para remover) buf usado com alguns comandos (tipicamente NULL)

<p>shmctl()</p> Signup and view all the answers

Obtém o id do segmento da Mem. Part. (ou cria um segmento) key é a chave que permite identificar o segmento pretendido. Pode ser usado IPC_PRIVATE (cria um novo id) ou ftok() para gerar um. Outros processos podem aceder ao mesmo segmento se indicarem a mesma chave size é o tamanho do segmento em bytes arredondado para um múltiplo do tamanho das páginas do sistema (getpagesize() – normalmente 4KB) flags IPC_CREAT indica que um novo segmento deve ser criado (caso não exista); IPC_EXCL indica que o segmento deve ser exclusivo (falha caso contrário); S_IRUSR, S_IWUSR, S_IROTH e S_IWOTH indicam permissões de leitura e ____________

<p>escrita</p> Signup and view all the answers

O que significa a sigla IPC_RMID usada na função shmctl()?

<p>Remover o segmento de memória partilhada</p> Signup and view all the answers

Qual é a finalidade da função shmat() em relação à memória partilhada?

<p>Mapear o segmento de memória partilhada para o espaço de endereçamento do processo</p> Signup and view all the answers

O que representa o parâmetro 'flags' na função shmget()?

<p>Permissões de leitura e escrita</p> Signup and view all the answers

Qual é o propósito da função shmdt() em relação à memória partilhada?

<p>Libertar o mapeamento feito no espaço de endereçamento local</p> Signup and view all the answers

O que acontece se a função shmctl() não for explicitamente invocada com IPC_RMID por um dos processos?

<p>O segmento de memória partilhada permanece no sistema após os processos terminarem</p> Signup and view all the answers

Qual é a importância do parâmetro 'key' na função shmget()?

<p>Permite identificar o segmento de memória partilhada pretendido</p> Signup and view all the answers

Qual é a função do comando shmat() em relação à memória partilhada?

<p>Mapear o segmento de memória partilhada para o espaço de endereçamento do processo.</p> Signup and view all the answers

O que acontece quando invocamos a função fork()?

<p>O filho recebe no seu espaço de memória uma cópia do espaço de memória do pai.</p> Signup and view all the answers

Qual é a função da função shmget() em relação à memória partilhada?

<p>Obter o id do segmento da memória partilhada ou criar um novo segmento.</p> Signup and view all the answers

O que representa o comando shmdt() em relação à memória partilhada?

<p>Liberta o mapeamento feito no espaço de endereçamento.</p> Signup and view all the answers

O que são os tipos de semáforos utilizados para sincronização entre processos na memória partilhada?

<p>Unnamed e named</p> Signup and view all the answers

Qual é a finalidade do comando shmctl em relação à memória partilhada?

<p>Controlar operações na memória partilhada, como remover um segmento.</p> Signup and view all the answers

O que indicam as flags IPC_CREAT e IPC_EXCL na função shmget() em relação à memória partilhada?

<p>Indicam que um novo segmento deve ser criado (caso não exista) e que o segmento deve ser exclusivo (falha caso contrário), respetivamente.</p> Signup and view all the answers

More Like This

Process Synchronization Quiz
9 questions
Sistema Operacional: Memória Compartilhada
18 questions
Computer System Operation
6 questions

Computer System Operation

EasygoingPointillism avatar
EasygoingPointillism
Shared Memory Systems Quiz
5 questions

Shared Memory Systems Quiz

VirtuousPyrope1846 avatar
VirtuousPyrope1846
Use Quizgecko on...
Browser
Browser