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
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
Um processo vai então criar uma zona de memória que outros processos podem alocar a si mesmo e aceder (problema
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
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
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
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
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
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
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
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
Signup and view all the answers
O que acontece quando invocamos ______()
O que acontece quando invocamos ______()
Signup and view all the answers
O comando ____________ permite
O comando ____________ permite
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 ____________
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 ____________
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 ____________
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 ____________
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)
Shmdt() liberta o mapeamento feito no espaço de endereçamento ______ addr é o endereço do segmento a libertar (para onde foi inicialmente mapeado)
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)
Shmdt() liberta o mapeamento feito no espaço de endereçamento ____________ addr é o endereço do segmento a libertar (para onde foi inicialmente mapeado)
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 ____________
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 ____________
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)
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)
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 ____________
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 ____________
Signup and view all the answers
O que significa a sigla IPC_RMID usada na função shmctl()?
O que significa a sigla IPC_RMID usada na função shmctl()?
Signup and view all the answers
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?
Signup and view all the answers
O que representa o parâmetro 'flags' na função shmget()?
O que representa o parâmetro 'flags' na função shmget()?
Signup and view all the answers
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?
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?
O que acontece se a função shmctl() não for explicitamente invocada com IPC_RMID por um dos processos?
Signup and view all the answers
Qual é a importância do parâmetro 'key' na função shmget()?
Qual é a importância do parâmetro 'key' na função shmget()?
Signup and view all the answers
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?
Signup and view all the answers
O que acontece quando invocamos a função fork()?
O que acontece quando invocamos a função fork()?
Signup and view all the answers
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?
Signup and view all the answers
O que representa o comando shmdt() em relação à memória partilhada?
O que representa o comando shmdt() em relação à memória partilhada?
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?
O que são os tipos de semáforos utilizados para sincronização entre processos na memória partilhada?
Signup and view all the answers
Qual é a finalidade do comando shmctl em relação à memória partilhada?
Qual é a finalidade do comando shmctl em relação à memória partilhada?
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?
O que indicam as flags IPC_CREAT e IPC_EXCL na função shmget() em relação à memória partilhada?
Signup and view all the answers