Memória Partilhada em Sistemas Operativos

AffluentBernoulli avatar
AffluentBernoulli
·
·
Download

Start Quiz

Study Flashcards

31 Questions

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

Memória

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

Memória

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

Partilhada

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

memória

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

memória

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

memória

O que acontece quando invocamos ______()

fork()

O comando ____________ permite

ipcs

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 ____________

leitura

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 ____________

leitura

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

local

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

local

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 ____________

escrita

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)

shmctl()

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 ____________

escrita

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

Remover o segmento de memória partilhada

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

Mapear o segmento de memória partilhada para o espaço de endereçamento do processo

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

Permissões de leitura e escrita

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

Libertar o mapeamento feito no espaço de endereçamento local

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

O segmento de memória partilhada permanece no sistema após os processos terminarem

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

Permite identificar o segmento de memória partilhada pretendido

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

Mapear o segmento de memória partilhada para o espaço de endereçamento do processo.

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

O filho recebe no seu espaço de memória uma cópia do espaço de memória do pai.

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

Obter o id do segmento da memória partilhada ou criar um novo segmento.

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

Liberta o mapeamento feito no espaço de endereçamento.

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

Unnamed e named

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

Controlar operações na memória partilhada, como remover um segmento.

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

Indicam que um novo segmento deve ser criado (caso não exista) e que o segmento deve ser exclusivo (falha caso contrário), respetivamente.

Este quiz aborda a memória partilhada em sistemas operativos, incluindo a sincronização de rotinas entre processos, o uso de espaços de memória partilhados e os efeitos da invocação da função fork().

Make Your Own Quizzes and Flashcards

Convert your notes into interactive study material.

Get started for free

More Quizzes Like This

Use Quizgecko on...
Browser
Browser