Podcast
Questions and Answers
O que acontece quando invocamos fork()
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
É 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 ______
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
A ______ Partilhada consiste em atribuir o mesmo espaço físico ao espaço virtual de diferentes processos
Um processo vai então criar uma zona de memória que outros processos podem alocar a si mesmo e aceder (problema
Um processo vai então criar uma zona de memória que outros processos podem alocar a si mesmo e aceder (problema
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
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
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
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
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
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
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
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
O que acontece quando invocamos ______()
O que acontece quando invocamos ______()
O comando ____________ permite
O comando ____________ permite
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 ____________
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 ____________
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 ____________
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 ____________
Shmdt() liberta o mapeamento feito no espaço de endereçamento ______ addr é o endereço do segmento a libertar (para onde foi inicialmente mapeado)
Shmdt() liberta o mapeamento feito no espaço de endereçamento ______ addr é o endereço do segmento a libertar (para onde foi inicialmente mapeado)
Shmdt() liberta o mapeamento feito no espaço de endereçamento ____________ addr é o endereço do segmento a libertar (para onde foi inicialmente mapeado)
Shmdt() liberta o mapeamento feito no espaço de endereçamento ____________ addr é o endereço do segmento a libertar (para onde foi inicialmente mapeado)
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 ____________
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 ____________
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)
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)
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 ____________
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 ____________
O que significa a sigla IPC_RMID usada na função shmctl()?
O que significa a sigla IPC_RMID usada na função shmctl()?
Qual é a finalidade da função shmat() em relação à memória partilhada?
Qual é a finalidade da função shmat() em relação à memória partilhada?
O que representa o parâmetro 'flags' na função shmget()?
O que representa o parâmetro 'flags' na função shmget()?
Qual é o propósito da função shmdt() em relação à memória partilhada?
Qual é o propósito da função shmdt() em relação à memória partilhada?
O que acontece se a função shmctl() não for explicitamente invocada com IPC_RMID por um dos processos?
O que acontece se a função shmctl() não for explicitamente invocada com IPC_RMID por um dos processos?
Qual é a importância do parâmetro 'key' na função shmget()?
Qual é a importância do parâmetro 'key' na função shmget()?
Qual é a função do comando shmat() em relação à memória partilhada?
Qual é a função do comando shmat() em relação à memória partilhada?
O que acontece quando invocamos a função fork()?
O que acontece quando invocamos a função fork()?
Qual é a função da função shmget() em relação à memória partilhada?
Qual é a função da função shmget() em relação à memória partilhada?
O que representa o comando shmdt() em relação à memória partilhada?
O que representa o comando shmdt() em relação à memória partilhada?
O que são os tipos de semáforos utilizados para sincronização entre processos na memória partilhada?
O que são os tipos de semáforos utilizados para sincronização entre processos na memória partilhada?
Qual é a finalidade do comando shmctl em relação à memória partilhada?
Qual é a finalidade do comando shmctl em relação à memória partilhada?
O que indicam as flags IPC_CREAT e IPC_EXCL na função shmget() em relação à memória partilhada?
O que indicam as flags IPC_CREAT e IPC_EXCL na função shmget() em relação à memória partilhada?
Flashcards are hidden until you start studying