Você está na página 1de 17

Teste 2021

Indique qual das seguintes afirmações resume melhor o significado de flexibilidade, tal como é aplicado no âmbito da
conceção de SO
• Flexibilidade refere-se à capacidade do SO (Software) executar diferentes arquiteturas de processadores.
• Flexibilidade refere-se à capacidade de uma mesma aplicação, como por exemplo um interpretador de
comandos, poder executar em SO diferentes.
• Flexibilidade refere-se à capacidade de diferentes programadores poderem acionar, em segurança, novas
funções ao SO
• Flexibilidade refere-se à capacidade do SO (software) de evoluir, ou seja, à capacidade de se alterar ou
adicionar novas funções, sem ser necessário modificar o sistema existente.

Selecione a opção que completa e torna verdadeira a frase seguinte: “Os sistemas monoprogramados eram muito
pouco eficientes porque…”
• Os dados a ler pelos programas só podiam ser carregados a partir da consola durante a execução do programa.
• Os recursos físicos, como por exemplo o processado, eram usados por um só programa em execução de cada
vez
• Usavam algoritmos de escalonamento muito complexos
• Não integravam componentes de sistemas de ficheiros e, deste modo, não tinha acesso a memoria virtual.

Selecione a opção que completa e torna verdadeira a frase seguinte: 'No contexto da execução de processos, um
processo está bloqueado quando, por exemplo..."
• Está à espera que o escalonador de processos lhe atribua CPU.
• Está à espera que um processo filho termine.
• Foi interrompido pela Unidade de Gestão de Memória (MMU) e esta à espera que a interrupção termine
• Foi desafetado por outro processo porque terminou a sua fatia de tempo.

Selecione a opção que completa e torna verdadeira a frase seguinte: 'uma das ideias chave da me memoria virtual é…”
• Assumo que os programas são, normalmente. mal estruturados, sendo que apresentam uma á má qualidade
de referência.
• Assumir que os programas não necessitam, normalmente, de todo o espaço de endereçamento gerado pelo
compilador/programador.
• Assumir que o custo de transferir programas entre memória secundaria e memória RAM é baixo.
• Assumir que a memória virtual é um meio físico de armazenamento de baixo custo.

Considere o endereço logico formado pelo segmento 2 e deslocamento 2334. Sabendo que a tabela de segmentos do
processo é composta pelas seguintes associações entre segmentos lógicos e físicos ([segmento lógico, base segmento
físico, tamanho máximo]) :[0, 40000, MAX0], [1, 75000,MAX1][2, 20000, MAX2]: o endereço real correspondente ao
endereço lógico será?
• 22334
• 42334
• 77334
• Nenhuma das anteriores

Qual das seguintes afirmações deveria ser removida por ser incorreta na caraterização do mecanismo de
tradução/recolocação de endereços em sistemas paginados?
• Os endereços lidos pela CPUI (endereços lógicos/virtuais) representam um número de páginas (dependente
do tamanho das páginas lógicas e físicas) e um deslocamento dentro dessa página.
• O número de uma página lógica é usado como argumento de uma função que traduz o número dessa página
lógica no número da página física onde foi carregada a página em memória.
• O espaço de endereçamento de um programa é um espaço bidimensional.
• A função de tradução de endereços é normalmente uma tabela de páginas que associa páginas lógicas/virtuais
a páginas físicas.
Qual das seguintes afirmações deveria ser removida por ser incorreta na descrição de técnica Swapping?
• O custo da técnica de Swapping é 2R, sendo que R corresponde ao número de writes/reads para copiar um
processo de/para memória secundária.
• Swapping é uma técnica usada para libertar espaço em memória central e preenche-lo com outro processo
anteriormente guardado em disco.
• A técnica Swapping é adequada a situações em que o tamanho de um programa é maior que a capacidade
(total ou disponível) de memoria RAM.
• A técnica Swapping adequa-se a sistemas de partilha de tempo (time sharing).

Qual das seguintes afirmações deveria ser removida por ser incorreta na caracterização de um escalonamento de
processos sem desafetação forçada (nonpreemptive scheduling):
• O escalonamento sem desafetação forçada é uma forma de garantir a exclusão mútua no acesso a recursos
partilhados.
• O escalonamento sem desafetação forçada não requer hardware especial, como por exemplo um mecanismo
de interrupção de processos.
• No escalonamento sem desafetação forçada, não existe a transição do estado “em execução” para o estado
“pronto a executar”.
• Em comparação com o escalonamento com desafetação forçada (preemtive sheduling), é menos adequado a
sistemas de partilha de tempo (time sharing).

O mecanismo de semáforos binários, devidamente utilizado no contexto de sincronização de threads, garante que:
• Apenas as threads a executar em modo supervisor estão autorizadas a executar a secção de código protegida
pelo semáforo.
• A seção de código protegida pelo semáforo é executada pelas threads em exclusão mútua.
• A secção de código protegida pelo semáforo é executada pelas threads em exclusão mútua, apenas se o
sistema for formado por duas threads no máximo.
• Uma thread executa a secção critica protegida pelo semáforo apenas se uma dada condição se verificar.

No contexto da programação concorrente, uma secção critica é:


• Um conjunto de instruções, as quais só podem ser executadas por diferentes processos/threads em exclusão
mútua.
• Um conjunto de instruções com acesso exclusivo de leitura
• Um conjunto de instruções partilhadas por diferentes processos threads.
• Um conjunto de instruções partilhadas em exclusão mútua por diferentes processos threads.

Qual das seguintes afirmações deveria ser removida por ser incorreta na caracterização de um sistema SO baseado
num kernel monolítico:
• Um SO baseado num kernel monolítico oferece um bom desempenho do sistema de computação.
• Um SO baseado num kernel monolítico promove um maior desperdício de memoria RAM porque necessita de
manter toda a funcionalidade em memória
• Um SO baseado num kernel monolítico apresentada baixa flexibilidade
• Nenhuma das opções apresentadas.

Tendo o diagrama de estados de um processo/thread com referência o escalonador de processos é responsável pela(s)
transição(ões):
• Do estado de “execução” para o estado de “pronto” e do estado de “pronto” para o estado de “execução”.
• Do estado de “execução” para o estado de “bloqueado”.
• Do estado de “bloqueado” para o estado de “pronto”.
• Do estado de “bloqueado” para o estado de “execução”.

Qual das seguintes afirmações deveria ser removida por ser incorreta na caracterização do método de atribuição de
blocos baseado em inodes:
• Um inode é uma tabela que contém os endereços dos blocos físicos atribuídos a um ficheiro.
• Um inode de um ficheiro é carregado para memória RAM sempre que o ficheiro é aberto
• O método de atribuição de blocos a ficheiros baseado em inodes sofre de problemas de fragmentação externa.
• Em comparação com a FAT, os inodes ocupam mais espaço em disco.
Qual das seguintes afirmações deveria ser removida por ser incorreta na descrição da função do componente de gestão
de ficheiros de um SO?
• Criar uma imagem lógica dos dispositivos de armazenamento de memória secundária baseada no conceito de
ficheiro e diretoria.
• Fazer a gestão de blocos de informação dos dispositivos de armazenamento de memoria secundária, como por
exemplo o disco
• Implementar um conjunto de chamadas ao sistema para acesso a ficheiros e diretorias
• Garantir a recuperação dos dados do utilizador em situações de terminação abrupta do sistema de
computação.

Questões de desenvolvimento:

Explique em que medida o mecanismo de chamadas ao sistema contribui para o funcionamento correto de um sistema
de computação.
No processo de desenvolvimento de um web browser, é necessário considerar o suporte a várias atividades
cooperantes e concorrente, e por isso considerar a utilização de múltiplos processos ou threads. Indique, justificando,
qual seria a solução mais adequada para este caso particular.
Explique em que circunstancias o aumento do grau de multiprogramação poderá baixar a utilização do CPU em
sistemas de memoria virtual e como é que esta situação pode ser evitada.
Explique por que motivo(s) uma falha de energia elétrica, ou qualquer terminação abrupta de um sistema de
computação pode levar à corrupção de um sistema de ficheiros.
Indique qual das seguintes afirmações resume melhor o significado de flexibilidade, tal como é aplicado no âmbito
da conceção de SO
• Flexibilidade refere-se à capacidade do SO (Software) executar diferentes arquiteturas de processadores.
• Flexibilidade refere-se à capacidade de uma mesma aplicação, como por exemplo um interpretador de
comandos, poder executar em SO diferentes.
• Flexibilidade refere-se à capacidade de diferentes programadores poderem acionar, em segurança, novas
funções ao SO
• Flexibilidade refere-se à capacidade do SO (software) de evoluir, ou seja, à capacidade de se alterar ou
adicionar novas funções, sem ser necessário modificar o sistema existente.
Explicação: A flexibilidade em um SO está mais relacionada à sua capacidade de evoluir e adaptar-se a novas
exigências e tecnologias, permitindo alterações e adições sem a necessidade de grandes reformulações.

Selecione a opção que completa e torna verdadeira a frase seguinte: “Os sistemas monoprogramados eram muito
pouco eficientes porque…”
• Os dados a ler pelos programas só podiam ser carregados a partir da consola durante a execução do
programa.
• Os recursos físicos, como por exemplo o processado, eram usados por um só programa em execução de
cada vez
• Usavam algoritmos de escalonamento muito complexos
• Não integravam componentes de sistemas de ficheiros e, deste modo, não tinha acesso a memoria virtual.

Explicação: Sistemas monoprogramados não aproveitam eficientemente os recursos do computador, já que


somente um programa pode executar de cada vez, deixando outros recursos ociosos.

Selecione a opção que completa e torna verdadeira a frase seguinte: 'No contexto da execução de processos, um
processo está bloqueado quando, por exemplo..."
• Está à espera que o escalonador de processos lhe atribua CPU.
• Está à espera que um processo filho termine.
• Foi interrompido pela Unidade de Gestão de Memória (MMU) e esta à espera que a interrupção termine
• Foi desafetado por outro processo porque terminou a sua fatia de tempo.
Explicação: Um processo é considerado bloqueado quando está esperando por algum evento externo, como uma
entrada de IO, e não pode progredir até que esse evento ocorra.

Selecione a opção que completa e torna verdadeira a frase seguinte: 'uma das ideias chave da me memoria virtual
é…”
• Assumo que os programas são, normalmente. mal estruturados, sendo que apresentam uma á má qualidade
de referência.
• Assumir que os programas não necessitam, normalmente, de todo o espaço de endereçamento gerado pelo
compilador/programador.
• Assumir que o custo de transferir programas entre memória secundaria e memória RAM é baixo.
• Assumir que a memória virtual é um meio físico de armazenamento de baixo custo.
Explicação: A memória virtual permite que programas maiores que a memória física sejam executados, utilizando a
ideia de que programas geralmente não precisam de todo o espaço de endereçamento ao mesmo tempo.

Considere o endereço logico formado pelo segmento 2 e deslocamento 2334. Sabendo que a tabela de segmentos
do processo é composta pelas seguintes associações entre segmentos lógicos e físicos ([segmento lógico, base
segmento físico, tamanho máximo]) :[0, 40000, MAX0], [1, 75000,MAX1][2, 20000, MAX2]: o endereço real
correspondente ao endereço lógico será?
• 22334
• 42334
• 77334
• Nenhuma das anteriores
Explicação: O endereço real é calculado adicionando o deslocamento ao endereço base do segmento físico. Assim,
para o segmento 2 com base 20000 e deslocamento 2334, o endereço real é 20000 + 2334 = 22334.
Qual das seguintes afirmações deveria ser removida por ser incorreta na caraterização do mecanismo de
tradução/recolocação de endereços em sistemas paginados?
• Os endereços lidos pela CPUI (endereços lógicos/virtuais) representam um número de páginas (dependente
do tamanho das páginas lógicas e físicas) e um deslocamento dentro dessa página.
• O número de uma página lógica é usado como argumento de uma função que traduz o número dessa página
lógica no número da página física onde foi carregada a página em memória.
• O espaço de endereçamento de um programa é um espaço bidimensional.
• A função de tradução de endereços é normalmente uma tabela de páginas que associa páginas
lógicas/virtuais a páginas físicas.
Explicação: Esta afirmação não é correta no contexto da tradução de endereços, que é um processo de mapeamento
de endereços lógicos/virtuais para físicos.

Qual das seguintes afirmações deveria ser removida por ser incorreta na descrição de técnica Swapping?
• O custo da técnica de Swapping é 2R, sendo que R corresponde ao número de writes/reads para copiar um
processo de/para memória secundária.
• Swapping é uma técnica usada para libertar espaço em memória central e preenche-lo com outro processo
anteriormente guardado em disco.
• A técnica Swapping é adequada a situações em que o tamanho de um programa é maior que a capacidade
(total ou disponível) de memoria RAM.
• A técnica Swapping adequa-se a sistemas de partilha de tempo (time sharing).
Explicação: Esta afirmação é imprecisa, pois o custo do swapping envolve vários fatores e não é simplesmente
determinado por esta fórmula.

Qual das seguintes afirmações deveria ser removida por ser incorreta na caracterização de um escalonamento de
processos sem desafetação forçada (nonpreemptive scheduling):
• O escalonamento sem desafetação forçada é uma forma de garantir a exclusão mútua no acesso a recursos
partilhados.
• O escalonamento sem desafetação forçada não requer hardware especial, como por exemplo um
mecanismo de interrupção de processos.
• No escalonamento sem desafetação forçada, não existe a transição do estado “em execução” para o estado
“pronto a executar”.
• Em comparação com o escalonamento com desafetação forçada (preemtive sheduling), é menos adequado
a sistemas de partilha de tempo (time sharing).
Explicação: A exclusão mútua refere-se a garantir que apenas um processo por vez acesse um recurso
compartilhado, o que não está diretamente relacionado com o escalonamento sem desafetação forçada.

O mecanismo de semáforos binários, devidamente utilizado no contexto de sincronização de threads, garante que:
• Apenas as threads a executar em modo supervisor estão autorizadas a executar a secção de código protegida
pelo semáforo.
• A seção de código protegida pelo semáforo é executada pelas threads em exclusão mútua.
• A secção de código protegida pelo semáforo é executada pelas threads em exclusão mútua, apenas se o
sistema for formado por duas threads no máximo.
• Uma thread executa a secção critica protegida pelo semáforo apenas se uma dada condição se verificar.
Explicação: Semáforos binários garantem que apenas uma thread por vez execute a seção crítica, garantindo
exclusão mútua.
No contexto da programação concorrente, uma secção critica é:
• Um conjunto de instruções, as quais só podem ser executadas por diferentes processos/threads em exclusão
mútua.
• Um conjunto de instruções com acesso exclusivo de leitura
• Um conjunto de instruções partilhadas por diferentes processos threads.
• Um conjunto de instruções partilhadas em exclusão mútua por diferentes processos threads.
Explicação: Uma seção crítica é um segmento de código que não pode ser executado por mais de um processo ou
thread ao mesmo tempo para evitar condições de corrida.

Qual das seguintes afirmações deveria ser removida por ser incorreta na caracterização de um sistema SO baseado
num kernel monolítico:
• Um SO baseado num kernel monolítico oferece um bom desempenho do sistema de computação.
• Um SO baseado num kernel monolítico promove um maior desperdício de memoria RAM porque necessita
de manter toda a funcionalidade em memória
• Um SO baseado num kernel monolítico apresentada baixa flexibilidade
• Nenhuma das opções apresentadas.
Explicação: Todas as afirmações listadas são características ou consequências potenciais de um SO com kernel
monolítico.

Tendo o diagrama de estados de um processo/thread com referência o escalonador de processos é responsável


pela(s) transição(ões):
• Do estado de “execução” para o estado de “pronto” e do estado de “pronto” para o estado de “execução”.
• Do estado de “execução” para o estado de “bloqueado”.
• Do estado de “bloqueado” para o estado de “pronto”.
• Do estado de “bloqueado” para o estado de “execução”.
Explicação: O escalonador de processos é responsável por gerenciar a transição dos processos entre os estados de
execução e pronto.

Qual das seguintes afirmações deveria ser removida por ser incorreta na caracterização do método de atribuição de
blocos baseado em inodes:
• Um inode é uma tabela que contém os endereços dos blocos físicos atribuídos a um ficheiro.
• Um inode de um ficheiro é carregado para memória RAM sempre que o ficheiro é aberto
• O método de atribuição de blocos a ficheiros baseado em inodes sofre de problemas de fragmentação
externa.
• Em comparação com a FAT, os inodes ocupam mais espaço em disco.
Explicação: A comparação do espaço ocupado por inodes e FAT depende de vários fatores e não é uma característica
intrínseca dos inodes.

Qual das seguintes afirmações deveria ser removida por ser incorreta na descrição da função do componente de
gestão de ficheiros de um SO?
• Criar uma imagem lógica dos dispositivos de armazenamento de memória secundária baseada no conceito
de ficheiro e diretoria.
• Fazer a gestão de blocos de informação dos dispositivos de armazenamento de memoria secundária, como
por exemplo o disco
• Implementar um conjunto de chamadas ao sistema para acesso a ficheiros e diretorias
• Garantir a recuperação dos dados do utilizador em situações de terminação abrupta do sistema de
computação.
Explicação: Embora a gestão de ficheiros seja responsável pela organização e acesso aos ficheiros, não é tipicamente
responsável pela recuperação de dados após falhas do sistema.
Explique em que medida o mecanismo de chamadas ao sistema contribui para o funcionamento correto de um
sistema de computação.
Função: As chamadas ao sistema (system calls) são a interface primária entre um programa em execução (no espaço
de usuário) e o sistema operacional (no espaço de kernel). Elas permitem que programas requisitem serviços do
kernel, como operações de I/O, criação e gerenciamento de processos, e acesso a recursos do sistema.
Contribuição: As chamadas ao sistema são fundamentais para a segurança e estabilidade do sistema de
computação. Elas garantem que os programas de usuário não acessem diretamente recursos críticos do hardware,
mantendo a integridade do sistema. Além disso, permitem a abstração de hardware, oferecendo uma interface
consistente para o software, independentemente das especificações de hardware subjacentes.

No processo de desenvolvimento de um web browser, é necessário considerar o suporte a várias atividades


cooperantes e concorrente, e por isso considerar a utilização de múltiplos processos ou threads. Indique,
justificando, qual seria a solução mais adequada para este caso particular.
Escolha Ideal: Threads seriam a solução mais adequada para o desenvolvimento de um web browser.
Justificativa: Web browsers modernos precisam lidar com múltiplas atividades simultâneas, como renderização de
páginas, execução de JavaScript, carregamento de recursos, etc. O uso de threads permite paralelismo dentro do
mesmo espaço de endereçamento, facilitando o compartilhamento de recursos e a comunicação entre diferentes
tarefas. Threads são mais leves em termos de recursos do que processos e têm menor overhead de criação e
gerenciamento.

Explique em que circunstancias o aumento do grau de multiprogramação poderá baixar a utilização do CPU em
sistemas de memoria virtual e como é que esta situação pode ser evitada.
Circunstâncias de Baixa Utilização de CPU: A utilização do CPU pode diminuir com o aumento do grau de
multiprogramação em sistemas de memória virtual devido ao fenômeno conhecido como thrashing. Thrashing
ocorre quando a memória está sobrecarregada com muitos programas, levando a um aumento excessivo de trocas
(swapping) de páginas entre a memória e o disco. Isso resulta em alta atividade de I/O e pouco trabalho efetivo do
CPU.
Prevenção: Para evitar o thrashing, sistemas operacionais implementam algoritmos de gerenciamento de memória
mais eficientes, como a alocação baseada em demanda e algoritmos de substituição de páginas inteligentes.
Também pode-se utilizar monitoramento para ajustar o grau de multiprogramação, evitando a sobrecarga da
memória.

Explique por que motivo(s) uma falha de energia elétrica, ou qualquer terminação abrupta de um sistema de
computação pode levar à corrupção de um sistema de ficheiros.
Causas de Corrupção: Uma falha de energia ou terminação abrupta de um sistema de computação pode causar
corrupção do sistema de ficheiros devido a:
• Interrupções de Operações de Escrita: Operações de escrita no sistema de ficheiros podem ser
interrompidas inesperadamente, deixando os dados em um estado inconsistente.
• Cache de Escrita: Muitos sistemas utilizam cache para aumentar a performance de escrita. Uma falha de
energia pode resultar na perda de dados que ainda não foram escritos no armazenamento permanente.
• Estrutura de Ficheiros Danificada: Metadados e estruturas de controle do sistema de ficheiros (como
tabelas de alocação de arquivos e diretórios) podem ser corrompidos se uma falha ocorrer durante sua
atualização, levando a inconsistências e perda de dados.
Mitigação: Para minimizar esses riscos, sistemas operacionais e sistemas de ficheiros implementam medidas como
journalling, que mantém um registro de transações não concluídas, permitindo a recuperação após uma
reinicialização.
Revisões 2023-2024
Explique brevemente o significado de cada um dos seguintes conceitos:
• Interpretador de comandos (shell)
• Chamada ao Sistema
• Trusted software
• Thread
• Pseudoparalelismo

Explique brevemente o significado de cada um dos seguintes conceitos, no contexto dos sistemas operativos:
• EscalonamentoPreemptive(Desafectação forçada)
• Secção critica
• Fragmentação externa
• Endereço lógico/virtual de memória
• FAT
• I-node

Considere o diagrama de estados de processos representado na figura. Descreva as circunstâncias em que ocorrem cada uma das
transições (Pronto – Execução – Bloqueado).
• 1 de pronto para execução:
• 2 de execução para pronto:
• 3 de execução para bloqueado
• 4 de bloqueado para pronto

1. Descreva sucintamente as principais funções de um Sistema Operativo.


2. Descreva e explique as vantagens e requisitos da multiprogramação.
3. O CPU pode executar em modo supervisor ou modo utilizador. Dê exemplos de operações que necessitam de ser executadas
em modo supervisor. Justifique.
4. O kernel do sistema operativo Linux é considerado “monolítico”. Explique porquê, que vantagens e inconvenientes é que esse
modelo tem e que formas há em Linux de evitar algumas das suas limitações.
5. Num sistema operativo moderno é indispensável que um processo normal não possa controlar de forma arbitrária o hardware,
embora tenha que interagir indiretamente com ele. Como é que este requisito é assegurado?
6. Explique brevemente as funcionalidades básicas da componente de gestão de processos de um sistema operativo e justifique
porque é que a integração desta componente no sistema operativo facilita a utilização do sistema de computação.
7. No processo de desenvolvimento de um Editor de Texto, é necessário considerar o suporte a várias atividades cooperantes e
concorrentes, e por isso considerar a utilização de múltiplos processos ou threads. Indique, justificando, qual seria a solução
mais adequada para este caso particular.
8. O comando time du /lib/modules/2.6.23.1-21.fc7/kernel executa o comando du com os respectivos argumentos e retorna o
seguinte resultado:
• real 0m0.091s (tempo total de execução)
• user 0m0.003s (tempo de execução em modo utilizador)
• sys 0m0.035s (tempo de execução em modo supervisor)
a) Explique brevemente o significado de tempo de execução em modo utilizador e tempo de execução em modo supervisor.
b) Explique porque é que a soma de user e sys é menor que real.
9. Utilizando sempre o mesmo sistema, uma máquina com S.O. multi-utilizador do tipo Linux, efectuaram-se diversas medições
do tempo de execução de um programa não interactivo (após a sua invocação executa até ao fim sem necessidade de input
do utilizador). Os resultados mostraram que execuções sucessivas do mesmo programa no mesmo sistema não tinham sempre
a mesma duração, havendo sempre algumas variações originadas por factores diversos no seu contexto de execução.
Justifique.
10. Explique por que motivo(s) uma falha de energia eléctrica pode levar à corrupção de um sistema de ficheiros
11. Indique e justifique uma vantagem da técnica de gestão de ficheiros baseada em inodes em relação à técnica de gestão de
ficheiros baseada numa FAT (File Allocation Table).
12. Hoje em dia é habitual encontrar em execução num computador várias cópias do mesmo programa: por exemplo, vários
terminais, cada um a executar uma shell, browsers, editores de texto, servidores web, etc. Acha que a situação descrita acima
seria viável em sistemas de memória real? Porquê? Que problemas poderiam surgir e que mecanismos de gestão de memória
conhece para diminuir esses problemas?
13. Explique em que circunstâncias a multi-programação poderá baixar a utilização do CPU em sistemas de memória virtual
(situação de Thrashing)
Qual das seguintes funções não corresponde a uma função do sistema operativo?
• Gestão de processos
• Gestão de bases de dados
• Gestão de memória
• Gestão de ficheiros

O CPU pode executar em modo supervisor ou modo utilizador. Qual das seguintes acções necessita de ser executada em modo
supervisor?
• Alterar uma entrada de um inode
• Adicionar o valor de duas variáveis inteiras do segmento de dados de um processo do utilizador
• Percorrer uma lista ligada do segmento de dados de um processo do utilizador
• Escrever o resultado de uma operação no espaço de endereçamento de um processo (contexto do utilizador)

No contexto da concepção de arquitecturas de software para sistemas operativos, indique qual (ou quais) destas afirmações são
verdadeiras:
• Numa arquitetura baseada num kernel modular, existem interfaces explícitas, e bem definidas, entre os diferentes
módulos do kernel
• Numa arquitetura baseada num kernel monolítico, os diferentes componentes são fáceis de compreender, manter e
alterar
• As arquiteturas baseadas num kernel monolítico apresentam mais funcionalidades que os sistemas operativos baseados
noutras arquitecturas
• Um sistema operativo baseado numa arquitectura monolítica, em comparação com um sistema operativo baseado numa
arquitectura modular, oferece um melhor desempenho do sistema de computação
• Um sistema operativo baseado numa arquitectura modular, em comparação com um sistema operativo baseado numa
arquitectura monolítica, apresenta um menor desperdício de memória principal porque todo o código e estruturas de
dados são agrupados num único módulo
• Um sistema operativo baseado numa arquitectura modular, em comparação com um sistema operativo baseado numa
arquitectura monolítica, apresenta um menor desperdício de memória principal porque apenas requer o carregamento
de alguns módulos para memória quando as funcionalidades correspondentes são necessárias
• Um sistema operativo baseado numa arquitectura modular, em comparação com um sistema operativo baseado numa
arquitectura monolítica, é mais robusto no contexto de ocorrência de erros

A diferença entre um processo e um programa é:


• Um processo pode ter várias threads enquanto que um programa tem apenas uma thread
• Um processo pode ter várias threads enquanto que um programa pode ter vários processos e não tem threads
• Um processo é um conjunto de instruções (e respectivos dados) em execução enquanto que um programa é apenas um
conjunto passivo de instruções e dados guardados no disco
• Um processo é um programa na memória principal enquanto que um programa é um processo temporariamente no disco,
suspenso, à espera de tempo de execução

Indique qual das seguintes afirmações não corresponde a uma vantagem da utilização de múltiplas threads no desenvolvimento
de aplicações:
• Os programas interactivos podem ser mais solícitos a responder aos pedidos dos utilizadores
• Permite uma melhor utilização das arquitecturas multi-processador
• Em comparação com a utilização de múltiplos processos, facilita a partilha de recursos como por exemplo memória
• Melhora sempre o desempenho de uma aplicação

A diferença entre um processo e uma thread é:


• Um processo dificilmente pode estar sincronizado com outro processo, enquanto que as threads são automaticamente
sincronizadas entre si pelo sistema operativo.
• Um processo tem o seu próprio espaço de memória e recursos reservados enquanto que as threads pertencentes a um
processo podem partilhar o espaço de endereçamento e recursos do processo
• Um processo está sujeito a um algoritmo de escalonamento, enquanto que as threads pertencentes a um processo
competem entre si pelo processador, sem estarem sob qualquer política de escalonamento
• Um processo pode dar origem a novos processos, enquanto que as threads pertencentes a um processo estão impedidas
de originar novas threads
Indique qual dos seguintes algoritmos de escalonamento se adequa melhor a sistemas de partilha de tempo (timesharing):
• Algoritmo de escalonamento sem desafetação forçada (nonpreemptive scheduling)
• First come first served
• Shortest Job first (versão sem desafetação forçada)
• Round-robin

Qual das seguintes funções não corresponde a uma função da componente de gestão de ficheiros?
• Criar uma imagem lógica dos dispositivos de armazenamento de memória secundária baseada em ficheiros e
• directorias
• Implementar o conjunto de chamadas ao sistema para acesso a ficheiros e directorias
• Fazer a gestão dos blocos de informação dos dispositivos de armazenamento de memória secundária, como por
• exemplo o disco
• Comunicar com os dispositivos físicos de armazenamento de memória secundária

Indique qual das seguintes técnicas pode ser utilizada para lidar com situações em que o tamanho de um programa é
maior do que a capacidade (total ou disponível) da memória principal:
• Swapping
• Paginação
• Segmentação
• Memória virtual (demand paging)

A diferença entre os mecanismos de swapping e memória virtual é:


• O swapping não precisa de memória secundária, enquanto que a memória virtual só é possível com recurso à
• memória secundária.
• O swapping implica a transferência de todo um processo entre a memória secundária e a memória principal,
• enquanto que a memória virtual implica a transferência de apenas partes (ou páginas) de um processo.
• O swapping necessita de uma tabela de paginação, enquanto que a memória virtual só pode ser gerida por uma
• tabela de segmentação.
• O swapping é mais eficiente no uso da memória secundária do que a memória virtual

No contexto da arquitectura do sistema operativo Linux, indique qual (ou quais) destas afirmações são verdadeiras:
• Os módulos Linux podem ser instalados quando o kernel inicia - static loading, ou quando o kernel está em execução -
dynamic loading
• Os módulos são usados pelo kernel do Linux para expansão e flexibilidade de funcionamento
• Os módulos que contém as funcionalidades associadas aos dispositivos USB não são disponibilizados como módulos,
fazendo parte do kernel monolítico inicial
• As funcionalidades necessárias para o arranque do sistema operativo Linux devem ser instaladas como módulos
• As funcionalidades necessárias para o arranque do sistema operativo Linux, e deste módulo incluídas no kernel monolítico
inicial, incluem o sistema de ficheiros Ext3/Ext4
Revisões 2023-2024

Explique brevemente o significado de cada um dos seguintes conceitos:


Interpretador de Comandos (Shell): É uma interface de usuário para acessar os serviços de um sistema operacional.
Em geral, o shell oferece uma linha de comando, onde o usuário digita comandos que são executados pelo sistema
operacional.
Chamada ao Sistema: São as interfaces programáticas através das quais um programa em espaço de usuário solicita
um serviço do kernel do sistema operacional, como operações de arquivos, criação de processos, comunicação entre
processos, etc.
Trusted Software: Refere-se a software considerado seguro e confiável, geralmente com privilégios especiais, que
são assumidos como corretos e seguros pelo sistema operacional e pelos usuários. Eles são críticos para a segurança
e integridade do sistema.
Thread: Uma thread é uma sequência de execução mais leve dentro de um processo. Threads dentro do mesmo
processo compartilham o mesmo espaço de endereçamento, mas têm seu próprio contador de programa, registro
e pilha de execução.
Pseudoparalelismo: Refere-se à aparência de simultaneidade na execução de múltiplas tarefas ou processos em um
único processador. O processador alterna rapidamente entre as tarefas, dando a impressão de que estão sendo
executadas ao mesmo tempo, mas na realidade, elas estão sendo intercaladas.

Explique brevemente o significado de cada um dos seguintes conceitos, no contexto dos sistemas operativos:
Escalonamento Preemptivo (Desafetação Forçada): É uma técnica de escalonamento de processos onde o sistema
operacional pode interromper a execução de um processo e substituí-lo por outro, geralmente para garantir o
compartilhamento eficiente do processador entre múltiplos processos.
Secção Crítica: Uma seção de código em um processo que acessa recursos compartilhados (como dados ou
dispositivos) e que não deve ser executada simultaneamente por mais de um processo ou thread para evitar
inconsistências ou corrupção de dados.
Fragmentação Externa: Ocorre em sistemas de gerenciamento de memória, quando há espaço livre suficiente no
total para satisfazer uma solicitação de memória, mas esse espaço não está contíguo, impedindo assim a alocação
devido à fragmentação.
Endereço Lógico/Virtual de Memória: É um endereço usado por um programa para acessar a memória, que é então
convertido pelo sistema operacional em um endereço físico real na memória do computador.
FAT (File Allocation Table): É um sistema de arquivos que utiliza uma tabela para rastrear a localização de arquivos
no disco. A FAT mapeia e gerencia o espaço no dispositivo de armazenamento.
I-node: Em sistemas de arquivos baseados em UNIX, um i-node é uma estrutura de dados que armazena informações
sobre um arquivo, como metadados, permissões, e a localização dos dados do arquivo no armazenamento.

Considere o diagrama de estados de processos representado na figura. Descreva as circunstâncias em que ocorrem
cada uma das transições (Pronto – Execução – Bloqueado).
De Pronto para Execução: Ocorre quando o escalonador seleciona um processo que está em estado de pronto (ou
seja, pronto para executar) e o aloca no processador para execução.
De Execução para Pronto: Acontece quando o processo em execução é interrompido pelo escalonador para dar
lugar a outro processo, tipicamente em um escalonamento preemptivo, ou quando o processo atual
voluntariamente cede o processador.
De Execução para Bloqueado: Um processo em execução pode entrar em estado bloqueado se estiver aguardando
por um evento externo (como I/O) ou um recurso que não está imediatamente disponível.
De Bloqueado para Pronto: Esta transição ocorre quando o evento ou recurso que o processo estava aguardando
fica disponível, permitindo que o processo seja novamente considerado para execução pelo escalonador.
Descreva sucintamente as principais funções de um Sistema Operativo.
Principais Funções de um Sistema Operativo (SO):
• Gerenciamento de Processos: Coordena os processos em execução, incluindo seu escalonamento e
execução.
• Gerenciamento de Memória: Aloca e gerencia a memória para processos e para o próprio SO.
• Gerenciamento de Dispositivos: Controla e faz a interface com dispositivos de hardware como discos
rígidos, impressoras, etc.
• Sistema de Arquivos: Gerencia o armazenamento e a recuperação de dados.
• Interface de Usuário: Fornece uma maneira para os usuários interagirem com o sistema, seja através de
uma interface gráfica (GUI) ou de linha de comando (CLI).
• Segurança e Acesso: Controla o acesso aos recursos do sistema para proteger contra usos indevidos.

Descreva e explique as vantagens e requisitos da multiprogramação.


Vantagens:
• Melhor Utilização do CPU: Garante que o CPU esteja sempre ocupado, aumentando a eficiência.
• Redução do Tempo de Resposta: Permite a execução simultânea de múltiplos programas, reduzindo o
tempo de espera para os usuários.
Requisitos:
• Gerenciamento de Memória Eficiente: Para alocar e isolar a memória entre os programas.
• Escalonamento de Processos: Para gerenciar a execução de múltiplos processos de forma justa e eficiente.

O CPU pode executar em modo supervisor ou modo utilizador. Dê exemplos de operações que necessitam de ser executadas
em modo supervisor. Justifique.
Operações no Modo Supervisor:
• Gerenciamento de Memória: Como a alocação de espaço de memória para os processos.
• Controle de Dispositivos: Operações de I/O com dispositivos de hardware.
• Criação e Gerenciamento de Processos: Criação, finalização e sincronização de processos.
Justificativa: Essas operações requerem um nível de controle e segurança que apenas o kernel do SO pode fornecer,
para evitar a manipulação indevida do hardware ou recursos do sistema por programas de usuário

O kernel do sistema operativo Linux é considerado “monolítico”. Explique porquê, que vantagens e inconvenientes é que esse
modelo tem e que formas há em Linux de evitar algumas das suas limitações.
Kernel Monolítico do Linux:
• Características: Um kernel monolítico, como o do Linux, inclui todos os serviços essenciais do SO em um
único grande bloco de software executando em espaço de kernel.
• Vantagens: Alta performance e eficiência, pois todas as funções do kernel estão intimamente integradas.
• Inconvenientes: Menor flexibilidade e maior dificuldade na manutenção e atualização. Falhas no kernel
podem comprometer todo o sistema.
• Mitigação das Limitações: Linux usa módulos carregáveis, permitindo que funcionalidades sejam
adicionadas ou removidas do kernel em tempo de execução, o que aumenta a flexibilidade sem
comprometer a eficiência.

Num sistema operativo moderno é indispensável que um processo normal não possa controlar de forma arbitrária
o hardware, embora tenha que interagir indiretamente com ele. Como é que este requisito é assegurado?
Controle de Acesso ao Hardware em SO Modernos:
• Mecanismo: Os SO modernos isolam o hardware do acesso direto dos processos de usuário. As interações
com o hardware são feitas através de chamadas ao sistema, que são controladas e gerenciadas pelo SO.
• Justificativa: Isso garante segurança e estabilidade, prevenindo que programas maliciosos ou mal projetados
causem danos ou instabilidade ao sistema.
Explique brevemente as funcionalidades básicas da componente de gestão de processos de um sistema operativo e
justifique porque é que a integração desta componente no sistema operativo facilita a utilização do sistema de
computação.
Gestão de Processos no SO:
• Funcionalidades:
• Escalonamento: Decidir qual processo deve ser executado em que momento.
• Criação e Finalização de Processos: Gerenciar o ciclo de vida dos processos.
• Sincronização e Comunicação entre Processos: Coordenar a execução de processos que dependem
uns dos outros.
Justificativa da Integração: Facilita a eficiência e a estabilidade do sistema, gerenciando os recursos de forma que
múltiplos processos possam executar simultaneamente sem interferir negativamente uns nos outros.

No processo de desenvolvimento de um Editor de Texto, é necessário considerar o suporte a várias atividades


cooperantes e concorrentes, e por isso considerar a utilização de múltiplos processos ou threads. Indique,
justificando, qual seria a solução mais adequada para este caso particular.
Desenvolvimento de um Editor de Texto - Processos ou Threads:
• Escolha Ideal: Threads seriam mais adequados.
• Justificativa: Um editor de texto pode necessitar de múltiplas atividades simultâneas, como processamento
de texto, verificação ortográfica, e atualizações de interface. Threads dentro do mesmo processo podem
compartilhar memória e recursos eficientemente, facilitando essas atividades cooperativas.

O comando time du /lib/modules/2.6.23.1-21.fc7/kernel executa o comando du com os respectivos argumentos e


retorna o seguinte resultado:
• real 0m0.091s (tempo total de execução)
• user 0m0.003s (tempo de execução em modo utilizador)
• sys 0m0.035s (tempo de execução em modo supervisor)
Explique brevemente o significado de tempo de execução em modo utilizador e tempo de execução em modo
supervisor.
Explicação do Comando time:
• Tempo em Modo Utilizador: O tempo que o CPU passou executando o código do programa no espaço do
usuário.
• Tempo em Modo Supervisor: O tempo gasto pelo CPU executando código no espaço do kernel,
normalmente para operações de I/O ou outras chamadas ao sistema.
Explique porque é que a soma de user e sys é menor que real.
• Diferença entre 'user' + 'sys' e 'real': O tempo 'real' inclui não apenas o tempo de CPU, mas também o tempo
gasto esperando por I/O ou outros recursos. Isso explica por que a soma de 'user' e 'sys' é menor que 'real'.

Utilizando sempre o mesmo sistema, uma máquina com S.O. multi-utilizador do tipo Linux, efectuaram-se diversas
medições do tempo de execução de um programa não interactivo (após a sua invocação executa até ao fim sem
necessidade de input do utilizador). Os resultados mostraram que execuções sucessivas do mesmo programa no
mesmo sistema não tinham sempre a mesma duração, havendo sempre algumas variações originadas por factores
diversos no seu contexto de execução. Justifique.
Variações no Tempo de Execução de um Programa:
• Justificativa: As variações podem ser causadas por diversos fatores, como carga do sistema, operações de
I/O, escalonamento de processos e atividades de outros usuários. Em um sistema multiusuário e multitarefa,
o ambiente de execução de um programa pode variar significativamente a cada execução.

Explique por que motivo(s) uma falha de energia eléctrica pode levar à corrupção de um sistema de ficheiros
Falha de Energia e Corrupção de Sistema de Ficheiros:
• Motivo(s): Uma falha de energia pode interromper operações de escrita em andamento, deixando o sistema
de arquivos em um estado inconsistente ou incompleto. Isso pode resultar em perda de dados ou corrupção
de metadados, afetando a integridade do sistema de arquivos.
Indique e justifique uma vantagem da técnica de gestão de ficheiros baseada em inodes em relação à técnica de
gestão de ficheiros baseada numa FAT (File Allocation Table).
Vantagem dos Inodes sobre FAT:
• Vantagem: Os inodes fornecem um controle mais direto e flexível sobre os atributos e metadados dos
arquivos, como permissões, timestamps, e links. Isso permite um gerenciamento de arquivos mais eficiente
e robusto em comparação com a FAT, que é mais limitada em termos de funcionalidades e eficiência na
gestão de metadados.

Hoje em dia é habitual encontrar em execução num computador várias cópias do mesmo programa: por exemplo,
vários terminais, cada um a executar uma shell, browsers, editores de texto, servidores web, etc. Acha que a situação
descrita acima seria viável em sistemas de memória real? Porquê? Que problemas poderiam surgir e que
mecanismos de gestão de memória conhece para diminuir esses problemas?
Execução de Múltiplas Cópias do Mesmo Programa em Sistemas de Memória Real:
• Viabilidade: Seria menos viável em sistemas de memória real devido à limitação de espaço de memória e
ao risco de conflitos de recursos.
• Problemas Potenciais: Pode levar à escassez de memória e conflitos de acesso a recursos compartilhados.
• Mecanismos de Gestão de Memória: Técnicas como memória virtual, paginação e segmentação ajudam a
gerenciar esses problemas ao permitir a execução eficiente de múltiplas instâncias de um programa.

Explique em que circunstâncias a multi-programação poderá baixar a utilização do CPU em sistemas de memória
virtual (situação de Thrashing)
Multi-Programação e Baixa Utilização de CPU em Memória Virtual (Thrashing):
• Circunstâncias: A multi-programação pode levar a uma baixa utilização do CPU em ambientes de memória
virtual quando há excesso de programas ativos, causando thrashing. Thrashing acontece quando o sistema
passa mais tempo trocando páginas entre a memória e o disco do que executando programas.
• Prevenção: Pode ser evitada com algoritmos de gerenciamento de memória mais eficientes e
monitoramento para ajustar a carga de trabalho do sistema.
Qual das seguintes funções não corresponde a uma função do sistema operativo?
• Gestão de processos
• Gestão de bases de dados
• Gestão de memória
• Gestão de ficheiros
A gestão de bases de dados é tipicamente realizada por sistemas de gestão de bases de dados (DBMS) e não é uma
função intrínseca dos sistemas operativos.

O CPU pode executar em modo supervisor ou modo utilizador. Qual das seguintes acções necessita de ser executada
em modo supervisor?
• Alterar uma entrada de um inode
• Adicionar o valor de duas variáveis inteiras do segmento de dados de um processo do utilizador
• Percorrer uma lista ligada do segmento de dados de um processo do utilizador
• Escrever o resultado de uma operação no espaço de endereçamento de um processo (contexto do utilizador)
A alteração de inodes, que são estruturas de dados fundamentais para o sistema de ficheiros, requer privilégios de
nível de sistema operativo e, portanto, deve ser feita em modo supervisor.

No contexto da concepção de arquitecturas de software para sistemas operativos, indique qual (ou quais) destas
afirmações são verdadeiras:
• Numa arquitetura baseada num kernel modular, existem interfaces explícitas, e bem definidas, entre os
diferentes módulos do kernel
• Numa arquitetura baseada num kernel monolítico, os diferentes componentes são fáceis de compreender,
manter e alterar
• As arquiteturas baseadas num kernel monolítico apresentam mais funcionalidades que os sistemas
operativos baseados noutras arquitecturas
• Um sistema operativo baseado numa arquitectura monolítica, em comparação com um sistema operativo
baseado numa arquitectura modular, oferece um melhor desempenho do sistema de computação
• Um sistema operativo baseado numa arquitectura modular, em comparação com um sistema operativo
baseado numa arquitectura monolítica, apresenta um menor desperdício de memória principal porque todo
o código e estruturas de dados são agrupados num único módulo
• Um sistema operativo baseado numa arquitectura modular, em comparação com um sistema operativo
baseado numa arquitectura monolítica, apresenta um menor desperdício de memória principal porque
apenas requer o carregamento de alguns módulos para memória quando as funcionalidades
correspondentes são necessárias
• Um sistema operativo baseado numa arquitectura modular, em comparação com um sistema operativo
baseado numa arquitectura monolítica, é mais robusto no contexto de ocorrência de erros

A diferença entre um processo e um programa é:


• Um processo pode ter várias threads enquanto que um programa tem apenas uma thread
• Um processo pode ter várias threads enquanto que um programa pode ter vários processos e não tem
threads
• Um processo é um conjunto de instruções (e respectivos dados) em execução enquanto que um programa
é apenas um conjunto passivo de instruções e dados guardados no disco
• Um processo é um programa na memória principal enquanto que um programa é um processo
temporariamente no disco, suspenso, à espera de tempo de execução
Um processo é uma instância em execução de um programa, incluindo seu código e seu estado atual.
Indique qual das seguintes afirmações não corresponde a uma vantagem da utilização de múltiplas threads no
desenvolvimento de aplicações:
• Os programas interactivos podem ser mais solícitos a responder aos pedidos dos utilizadores
• Permite uma melhor utilização das arquitecturas multi-processador
• Em comparação com a utilização de múltiplos processos, facilita a partilha de recursos como por exemplo
memória
• Melhora sempre o desempenho de uma aplicação
O uso de múltiplas threads pode melhorar o desempenho, mas isso não é garantido em todos os casos. Depende da
natureza da aplicação e de como as threads são gerenciadas.

A diferença entre um processo e uma thread é:


• Um processo dificilmente pode estar sincronizado com outro processo, enquanto que as threads são
automaticamente sincronizadas entre si pelo sistema operativo.
• Um processo tem o seu próprio espaço de memória e recursos reservados enquanto que as threads
pertencentes a um processo podem partilhar o espaço de endereçamento e recursos do processo
• Um processo está sujeito a um algoritmo de escalonamento, enquanto que as threads pertencentes a um
processo competem entre si pelo processador, sem estarem sob qualquer política de escalonamento
• Um processo pode dar origem a novos processos, enquanto que as threads pertencentes a um processo
estão impedidas de originar novas threads
As threads de um mesmo processo compartilham memória e recursos, mas cada processo tem seu próprio espaço
de endereçamento isolado.

Indique qual dos seguintes algoritmos de escalonamento se adequa melhor a sistemas de partilha de tempo
(timesharing):
• Algoritmo de escalonamento sem desafetação forçada (nonpreemptive scheduling)
• First come first served
• Shortest Job first (versão sem desafetação forçada)
• Round-robin
O escalonamento Round-robin é frequentemente usado em sistemas de partilha de tempo por sua justiça e
capacidade de garantir que todos os processos recebam um tempo de CPU equitativo.

Qual das seguintes funções não corresponde a uma função da componente de gestão de ficheiros?
• Criar uma imagem lógica dos dispositivos de armazenamento de memória secundária baseada em ficheiros
e diretorias
• Implementar o conjunto de chamadas ao sistema para acesso a ficheiros e diretorias
• Fazer a gestão dos blocos de informação dos dispositivos de armazenamento de memória secundária, como
por exemplo o disco
• Comunicar com os dispositivos físicos de armazenamento de memória secundária
Esta é uma função do subsistema de E/S do sistema operativo, não diretamente da gestão de ficheiros.

Indique qual das seguintes técnicas pode ser utilizada para lidar com situações em que o tamanho de um programa
é
maior do que a capacidade (total ou disponível) da memória principal:
• Swapping
• Paginação
• Segmentação
• Memória virtual (demand paging)
A memória virtual permite que programas maiores do que a memória física disponível sejam executados ao carregar
apenas as partes necessárias do programa na memória principal.
A diferença entre os mecanismos de swapping e memória virtual é:
• O swapping não precisa de memória secundária, enquanto que a memória virtual só é possível com recurso
à memória secundária.
• O swapping implica a transferência de todo um processo entre a memória secundária e a memória principal,
• enquanto que a memória virtual implica a transferência de apenas partes (ou páginas) de um processo.
• O swapping necessita de uma tabela de paginação, enquanto que a memória virtual só pode ser gerida por
uma tabela de segmentação.
• O swapping é mais eficiente no uso da memória secundária do que a memória virtual
O swapping move processos inteiros para fora e para dentro da memória, enquanto a memória virtual lida com
partes menores de um processo.

No contexto da arquitectura do sistema operativo Linux, indique qual (ou quais) destas afirmações são verdadeiras:
• Os módulos Linux podem ser instalados quando o kernel inicia - static loading, ou quando o kernel está em
execução - dynamic loading
• Os módulos são usados pelo kernel do Linux para expansão e flexibilidade de funcionamento
• Os módulos que contém as funcionalidades associadas aos dispositivos USB não são disponibilizados como
módulos, fazendo parte do kernel monolítico inicial
• As funcionalidades necessárias para o arranque do sistema operativo Linux devem ser instaladas como
módulos
• As funcionalidades necessárias para o arranque do sistema operativo Linux, e deste módulo incluídas no
kernel monolítico inicial, incluem o sistema de ficheiros Ext3/Ext4
O Linux permite a carga dinâmica e estática de módulos, que oferecem flexibilidade e expansão de funcionalidades
sem necessidade de reiniciar o sistema.

Você também pode gostar