UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS CURSO DE ENGENHARIA ELECTROTÉCNICA 2º Semestre 2005/2006 Programação de Sistemas 13/7/2006 Seja objectivo, utilizando respostas curtas e directas, e justifique todas as respostas. 1. Qual a principal razão para que um SO suporte multiprogramação? A multiprogramação permite aumentar a utilização do processador através da colocação em execução de um processo que esteja pronto a executar sempre que o processo activo (em execução) bloqueia. 2. Identifique três situações em que ocorra uma transição do modo de execução utilizador para o modo de execução supervisor. 1. Sempre que um dispositivo de E/S gera uma interrupção. 2. Sempre que um processo executa uma chamada ao sistema que é, em geral, implementada com recurso a uma interrupção gerada por software (trap). 3. Quando um processo realiza uma operação que causa uma excepção hardware, tal como uma divisão por zero, um acesso ilegal à memória ou a execução de um código de instrução inválido. 3. Explique qual a diferença entre uma instrução privilegiada e uma instrução não privilegiada. Uma instrução não privilegiada é uma instrução, tal como uma adição ou a leitura de um valor da memória, que não requer privilégios especiais para poder ser executada, ou seja, pode ser executada em qualquer dos dois modos de execução (utilizador ou supervisor). A execução indevida deste tipo de instruções apenas acarreta efeitos adversos para o processo que a executa. Uma instrução privilegiada é uma instrução, tal como uma instrução de E/S ou de manipulação da protecção da memória associada a um processo, que apenas pode ser invocada a partir do modo de execução privilegiado (modo supervisor).page: 1 Caso este tipo de instrução seja invocado a partir de um processo a executar em modo utilizador, o processador emite automaticamente uma excepção, já que a execução indevida deste tipo de instruções poderia acarretar efeitos adversos para o próprio sistema. 4. Diga em que consiste uma chamada ao sistema. Justifique a sua resposta dando um exemplo. As chamadas ao sistema fornecem a interface entre os processos e o sistema operativo. O sistema operativo realiza operações privilegiadas em nome dos processos. Um exemplo da utilização de chamadas ao sistema ocorre quando um processo necessita de ler ou escrever um ficheiro. Apenas o SO possui o privilégio necessário para executar algumas das instruções que são 1/2
necessárias para aceder ao dispositivo em que o ficheiro reside, pelo que o processo tem de recorrer aos serviços do SO para realizar a operação desejada. 5. Diga em que consiste uma espera activa. Em que circunstâncias pode esta ser desejável e indesejável? Espera activa significa que um processo mantém a posse do CPU (isto é, continua a executar), enquanto espera que a terminação de uma qualquer operação de E/S (em vez de abandonar o processador permitindo que outro processo execute). Esta situação é, em geral, indesejável, já que o processador poderia de outro modo realizar algum trabalho útil (executando outro processo). Este comportamento pode ser, nalguns casos, desejável se soubermos que o acontecimento de que o processo está à espera vai demorar muito pouco tempo. Em particular se esse tempo for inferior ou da mesma ordem de grandeza daquele que será necessário para comutar a execução para outro processo. 6. Diga qual a diferença entre um semáforo binário e um semáforo com contagem. Dê um exemplo em que um semáforo com contagem possa ser útil. Um semáforo binário possui uma ou nenhuma autorização de passagem, isto é, está bloqueado ou desbloqueado. Um semáforo com contagem permite controlar o acesso (disponível ou não disponível) a um conjunto de recursos idênticos, pode em particular contar o número de recursos disponíveis. Os semáforos com contagem são úteis, por exemplo, para manter informação sobre o número de slots disponíveis num buffer de dimensão finita. Um processo que necessite de inserir um novo elemento no buffer, pode fazer wait() neste semáforo e ficar bloqueado até que um slot do buffer esteja livre. O semáforo deve ser iniciado com o número de recursos inicialmente disponíveis. Neste caso o número de slots inicialmente existentes no buffer. 7. Uma técnica comum para a implementação de exclusão mútua numa máquina monoprocessador consiste em inibir as interrupções dentro de uma secção crítica e voltar a permiti-las depois de sair. Explique porque é que esta estratégia funciona. Numa máquina uni-processador, um SO pode ser executado simultaneamente por diferentes processos. Se quando um processo está a executar no SO (depois de executar uma chamada ao sistema) é recebida uma interrupção, os gestores da interrupção (funções do SO!) podem chamar funções que acedem e modificam estruturas de dados globais as SO. Se o processo interrompido estava a modificar algumas destas estruturas de dados, pode ser criado um sério problema de concorrência (mais do que um processo a aceder a dados partilhados!!!). Uma solução típica para esta situação é simplesmente eliminar a sua causa, isto é, inibir a ocorrência de interrupções. Escusado será dizer que tal terá de ser feito durante a execução da totalidade de todas as chamadas ao sistema, o que é uma forma bastante rudimentar de resolver este problema. Para além disso este método não funciona num sistema multi-processador, já que outro processador pode estar a executar instruções que manipulam as mesmas estruturas de dados partilhadas. 2/2
8. Defina localidade espacial e localidade temporal. Localidade espacial significa que o acesso a determinados dados torna o acesso a dados próximos desses muito provável num futuro próximo. Localidade temporal significa que o acesso a determinados dados torna o acesso aos mesmos dados muito provável num futuro próximo. 9. Cinco processos A, B, C, D e E possuem os seguintes tempos de chegada, execução, e prioridades. Um valor mais pequeno significa maior prioridade. Processo Tempo de Chegada Tempo de Execução Prioridade A 0 75 3 B 10 40 1 C 10 25 3 D 80 20 4 E 85 45 2 Preencha a seguinte tabela para os processos acima descritos. Justifique as suas respostas com diagramas de Gant. Política de Scheduling Tempo de Espera Tempo Médio A B C D E de Espera Shortest-Job First (Não-Preemptivo) 0 130 65 20 75 290/5=58 Prioridades (Não-Preemptivo) 0 65 150 105 30 350/5=70 Round-Robin (quantum=15) 145 90 50 45 60 390/5=78 Shortest-Job First (Não-Preemptivo) A C D B E 0 75 100 140 160 205 Prioridades (Não-Preemptivo) A B E C D 0 75 115 160 185 205 RoundRobin (Quantum=15) A B C A B C D E A B D E A E A 0 15 30 45 60 75 85 100 115 130 140 145 160 175 190 205 10. Diga qual a sequência de páginas colocadas em memória e qual o número de faltas de página, admitindo a seguinte sequência de referências e uma memória física com 4 páginas, por cada um dos algoritmos seguintes. 10.1. FIFO 10.2. LRU 10.3. Óptimo FIFO 1 1 1 1 1 5 5 5 5 5 1 1 1 2 2 2 2 2 7 7 7 7 7 7 8 3 3 3 3 3 2 2 2 2 2 2 4 4 4 4 4 3 3 3 3 3 F F F F F F F F F F 10 faltas de página 3/2
LRU 1 1 1 1 1 5 5 5 5 5 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 7 7 7 7 7 7 7 4 4 4 4 4 3 3 3 3 8 F F F F F F F F F 9 faltas de página ÓPTIMO 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 4 4 5 7 7 7 7 7 7 8 F F F F F F F 7 faltas de página 11. Considere um sistema com memória virtual paginada. 11.1. Apresente 3 argumentos a favor da utilização de páginas de grande dimensão e 3 argumentos a favor da utilização de páginas de pequena dimensão. 11.2. Descreva em que circunstâncias ocorre uma falta de página (page fault) e qual a sequência de passos que são desencadeados na sua sequência. Grandes Pequenas Reduz o número de processos que podem ter páginas em RAM, ou seja, o nível de multiprogramação possível. Mais demorada a cópia de informação de e para a zona de paginação no disco. Maior probabilidade de fragmentação interna, já que, em média, a última página de cada processo tende a desperdiçar mais espaço. Maior quantidade de informação em cada página deverá conduzir a menos faltas de página. Permite que mais processo tenham páginas em RAM, o que premite melhor intercalar a utilização do CPU e a realização de E/S por parte dos processos (aumentar o nível de programação) Menos demorada a cópia de informação de e para a zona de paginação no disco. Diminui a probabilidad3e de fragmentação interna. Devido à pequena dimensão das páginas é possível que a taxa de faltas de página aumente. 4/5
12. Um disco possui 300 cilindros numerados de 0 a 299. A cabeça está no cilindro 200 e vai em direcção ao cilindro 199. A fila de pedidos é, por ordem, 12, 36, 28, 124, 56, 18, 178, 236. Diga por que ordem serão visitados os cilindros de acordo com os seguintes algoritmos: 12.1. C-SCAN 12.2. LOOK C_SCAN: 4, 0, 299, 236, 178, 124, 56, 36, 28, 18, 12 LOOK: 4, 12, 18, 28, 36, 56, 124, 178, 236 13. Assuma que possui um disco no seu portátil com as seguintes características: Capacidade: 60 GB Taxa de transferencia Máxima: 48.25 MB/s Taxa de Transferencia Sustentada: 34.5 MB/s Tempo Médio de Posicionamento (Seek Time): 12 ms Velocidade de rotação: 7200 RPM Número de Bytes por Sector: 512 13.1. Quanto tempo demorará a leitura de um ficheiro de 200 MB guardado em sectores do disco contíguos (i.e. pode utilizar a Taxa de Transferência Sustentada)? Seek inicial + latência média + tempo de transferência = 12ms + 5.6ms + 200MB/34.5MB/s = 5.815 s ~ 5.8 sec. 13.2. Quanto tempo demorará a ler o ficheiro se este estiver armazenado em sectores do disco aleatórios (os blocos estão espalhados aleatoriamente pelo disco)? Seek inicial + latência média + tempo para ler 1 bloco = 12ms + 5,6ms + 512B/48,25MB/s = 12ms + 5,6ms + 10,6 us = 17.6 ms Total de blocos = 200MB/512B = 2 200 1024 = 409600 Blocks Tempo Total = 409600 x 17.6106 ms = 7213 s = 120,2 min ~ 2 horas 14. A alocação contígua de ficheiros conduz à fragmentação do disco. Esta fragmentação é interna ou externa? Ambos! Os ficheiros são sempre armazenados em unidades de bloco de disco, o que significa que o último bloco do ficheiro pode apenas estar parcialmente usado (fragmentação interna). Para além disso, a alocação contígua resulta também em fragmentação externa devido ao facto de poderem existir muitos blocos não reservados entre ficheiros que não podem ser aproveitados por um ficheiro cujo tamanho seja superior ao de cada fragmento, mas menos que o espaço total livre. 15. Considerando a utilização do protocolo TCP/IP, qual a informação mínima que um processo cliente precisa para estabelecer uma ligação a um processo servidor? Um endereço IP, que identifica a máquina de destino, e o número de um porto que identifica o processo servidor de destino nessa máquina. 5/5