Prova AB2 - Introdução a Computação (2014)(2015)(2017)
1- No contexto da compilação de programas, explique qual é a função das análises (léxica, sintática e semântica).
=> Léxica: é o processo de analisar a entrada de linha de caracteres e produzir símbolos léxicos, verificando se são pertencentes ao alfabeto da linguagem .
=> Sintática: Verifica se uma sequência dos símbolos formam um programa válido obedecendo a gramática da linguagem.
=>Semântica: Verifica se há sentido nas instruções a serem realizadas
2- Quais são as principais funções de um Sistema Operacional?
Gerenciamento de recursos como o processador,memória,dispositivos,arquivos e a gerência de proteção ao sistema, além de criar abstrações.
3- Cite dois exemplos de Sistemas Operacionais de tipos diferentes (finalidades diferentes) e indique o que caracteriza esses Sistemas Operacionais nos seus respectivos contextos.
Windows - S.O utilizado geralmente em desktop foi projetado para atividades corriqueiras, tendo como principal característica a sua interface gráfica e o suporte a interatividade e operação em rede.
Linux - Permite uma gestão eficiente de grandes recursos.
4- Indique se a afirmação abaixo é verdadeira ou falsa e justifique sua resposta.
É possível executar vários programas em um computador simultaneamente mesmo com um número de processadores menor do que o número de programas a serem executados.
Sim, devido a técnica de pipeline que permite quebrar as tarefas e as processar simultaneamente.
5- O escalonador de tarefas do sistema operacional implementa a política de escalonamento de tarefas.
Esboce um gráfico com os comportamentos do Escalonamento de Tarefas First-Come-First-Served (FCFS) indicando qual tarefa usou o processador em um intervalo de tempo. Suponha que o quantum (q) é de 2 segundos.
Baseie-se na tabela para saber quando as tarefas ingressaram no sistema assim como a duração de cada uma. Suponha que o sistema possui apenas um processador.
Marque com um "X" o ingresso de cada tarefa nas suas respectivas linhas e preencha os retângulos para indicar que uma tarefa usou o processador naquele instante.
Tempo de ingresso no sistema (seg.)
Veja a seguir, um exemplo de como o gráfico deve ser esboçado.
6- A execução desse código, escrito em Julia, retorna False impresso na tela. Explique por quê.
7-Explique quais as diferenças entre um sistema operacional multitarefa e um sistema operacional de tempo compartilhado (time-sharing).
8-No contexto da compilação de programas, explique o que são a Análise Léxica e a Análise Sintática. Exemplifique suas explicações baseando-se na figura a seguir.
9-Para os itens "a" e "b" indique se você optaria por uma linguagem de programação de alto nível ou de baixo nível. Justifique suas respostas.
a) Se você fosse desenvolver um programa cuja finalidade é calcular a trajetória de um cometa.
b) Se você fosse desenvolver um Sistema Operacional.
10-Cite um exemplo de abstração que o Sistema Operacional disponibiliza e explique como o Sistema Operacional consegue facilitar a utilização do hardware através dessa abstração.
11-A figura abaixo ilustra uma ULA. É possível construir uma ULA que opere na base decimal? Justifique sua resposta.
12-Se um computador realiza operações binárias, como é possível utilizarmos a base decimal durante a programação? Justifique sua resposta.
13-Baseie-se na figura abaixo e explique com o Sistema Operacional trata as interrupções.
1. O processador está executando um programa qualquer (em outras palavras, um fluxo de execução); 2. Um pacote vindo da rede é recebido pela placa Ethernet;
4. O processamento é desviado do programa em execução para a rotina de tratamento da interrupção; 5. A rotina de tratamento é executada para receber as informações da placa de rede (via barramentos de dados e de endereços) e atualizar as estruturas de dados do sistema operacional;
6. A rotina de tratamento da interrupção é finalizada e o processador retorna à execução do programa que havia sido interrompido.
14-Explique como o compilador gera o arquivo (código) binário a partir de um programa (código fonte).
Ele traduz o código fonte para instruções de baixo nível, cria o link com as bibliotecas que vc tá usando e a partir daí traduz o conjunto pra binário. Um binário compilado pra determinada arquitetura só funciona pra ela.