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