• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

tiagolimpo

Correcção de teste

16 mensagens neste tópico

Olá, muito boa noite a todos.

Vou ter uma frequência amanhã e enquanto esta fazer um teste tipo, surgiram-me duvidas em algumas questões.

Como o teste não tem correcção agradecia a alguem quem me podesse ajudar.

1 - Qual a relação entre pipes e forks?

A-Não têm nenhuma relação

B-O pipe é um parâmetro do fork

C-Usualmente após criar o pipe, executa-se um fork

2 - Como é que dois porcessos Linux podem comunicar?

A-Através de variáveis globais

B-Através de pipes (entre outros mecanismos)

C-Através de pipes, mas somente se a flag -g estiver activa

3 - No comando pipe(fd), o que representa 'fd'?

A-Representa o emissor do pipe

B-Conterá os descritores do pipe cria

C-Representa os parâmetros do pipe a criar

4 - Quantos pipes posso criar num porcesso?

A-Tantos quanto a tabela de descritores suportar

B-Dois pipes, um para escrita e outro para leitura

C-Somente um, possibilitaando uma cominicação fiável

5 - Qual a difrença entre os comando dup e dup2?

A-dup é utilizado em windows e dup2 em linux

B-O dup faz somente uma parte do dup2

C-São semelhantes

6 - Qual o indice do array de descritores onde é inserido um determinado processo, se levarmos em conta a existência de diversas prioridades?

A-Na primeira posição disponivel

B-Normalmente o descritor é inserido no indice correspondente à sua prioridade

C-No final do array, de for a optimizar o desempenho

7 - No caso de existir o array 'queue_head lista[NPRI]', que significa lista[2]?

A-Representa a lista de descritores de prioridade 2

B-Representa um array de descritores com 2 posições

C-Representa as 2 primeiras posições do array de descritores

8 -No caso dos porcessos com as seguintes prioridades, qual o fluxo de execução?

Processo - Prioridade (9 máxima prioridade)

10 - 9

11 - 7

12 - 6

13 - 8

A-10->13->11->12

B-12->11->13->10

C-10->11->12->13

9 - No algoritmo básico de scheduling FCFS, qual o obectivo de existir uma estrutura queue_head

A-Esta estrutura é utilizada somente no algoritmo SJF(shortest-job first)

B-Serve para monitorar o desempenho do algoritmo

C-Optimiza a inserção de descritores no finaç da lista

10 -Qual a vantagem principal de se utilizarem várias listas de descritores?

A-Não tem vantagens, normalmente existe uma única lista

B-Aumenta o desempenho da operação de escalonamento

C-Permite poupar memória

Alguém que me possa ajudar?

Muito Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sem certezas.

1: C (o fork não recebe parâmetros, por isso a B não me parece)

2: B

3: B

4: A (tenho quase a certeza que já usei mais de dois, mas podes experimentar fazer um pequeno programa e testar isto)

5: B

Quanto às restantes, umas já vão para além daquilo que aprendi, e outra envolvem coisas que já não me recordo minimamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu a 1) escolhia A. O C só pode ser uma rasteira.

No 4) escolhia A. Pipes, ficheiros, ... o limite é a tabela de descriptores de ficheiros, assumindo que há memória para isso no sistema.

O 5) podes ver no man do unix, há sites que o têm online. Googla por "man dup" e "man dup2".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1 A

2 B

3 B

4 A

5 B ou C

6 ?

7 ?

8 A

9 ?

10 C

A 5 pode ser uma rasteira. O dup() não faz bem exactamente uma parte do que o dup2() faz, pois duplica o file descriptor e devolve um com a posição mais baixa que existe. Com o dup2() podes dizer qual é o file descriptor de destino. Não sei bem o que querem que respondas. :P

Na 9 normalmente dá-se o nome de algoritmo FIFO (First in, First out) em vez de FCFS (First Come, First Served).

As primeiras acho que são assim, agora as últimas não tenho a certeza e parecem-me perguntas um bocado idiotas, pois assumem uma implementação específica de um conceito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu também concordo que há aí algumas perguntas um pouco idiotas. Parece ensino "a la receita".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu a 1) escolhia A. O C só pode ser uma rasteira.

Eu sempre que usei pipes, usei um fork de seguida. Parece-me que a comunicação entre processos é um caso típico de utilização de pipes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu sempre que usei pipes, usei um fork de seguida. Parece-me que a comunicação entre processos é um caso típico de utilização de pipes.

É por isso que eu digo que parece ensino "a la receita". Apesar dessa utilização tipica, pipes e fork não têm nada a ver uma coisa com a outra, e até podemos substituir pipes por qualquer outro mecanismo de IPC.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É por isso que eu digo que parece ensino "a la receita". Apesar dessa utilização tipica, pipes e fork não têm nada a ver uma coisa com a outra, e até podemos substituir pipes por qualquer outro mecanismo de IPC.

Exacto, também considerei dessa maneira.

Mas segundo a lógica do Rui Carlos, também me parece correcta a resposta dele.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Apesar dessa utilização tipica, pipes e fork não têm nada a ver uma coisa com a outra, e até podemos substituir pipes por qualquer outro mecanismo de IPC.

Um permite comunicar entre processos, e o outro permite criar processos. Custa-me um bocado aceitar que um não tenha nada a ver com o outro.

Se concordas que essa é uma utilização típica, então não podemos dizer que "Usualmente após criar o pipe, executa-se um fork"? Isto é mais ou menos o mesmo que dizer que "Tipicamente após criar o pipe, executa-se um fork".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sempre que usei pipes não usei forks, aliás, se pipe é para comunicação entre processos, esses processos não podem já ter sido criados?

Embora possa aceitar que é comum usar os dois juntos, na verdade a única coisa que conheço ser comum entre os dois é o facto de ambos lidarem com processos, um cria-os outro permite a comunicação entre dois processos. Se a resposta correcta for a C, então a pergunta está mal feita, porque objectivamente a resposta deveria ser a A.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se são assim tão comuns, os designers do Unix podiam (deviam?) ter feito uma função pipefork(). Mas não fizeram...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu sempre que usei pipes, usei um fork de seguida. Parece-me que a comunicação entre processos é um caso típico de utilização de pipes.

e threads ?

1-A para mim.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não vejo razão para usar pipes com threads, visto que as threads já partilham grande parte dos dados.

Se são assim tão comuns, os designers do Unix podiam (deviam?) ter feito uma função pipefork(). Mas não fizeram...

Sim, podiam. E um forkexec*, um perrorexit, etc. Se calhar não as fizeram porque se limitaram a implementar o básico.


Como referi, sempre que usei pipes, usei um fork de seguida. É claro que o meu caso não é uma amostra significativa, mas mesmo depois de uma pesquisa no google sobre pipes, em praticamente todos os casos, eram usadas em conjunto com o fork. Assim, continuo a achar que a hipótese C é válida.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o "forkexec" existe, mas com outro nome. É o system().

On-topic: Acho que a mais correcta é a C. Pelo menos a C indica uma relação, pelo que a A se torna "menos correcta".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o "forkexec" existe, mas com outro nome. É o system().

Aproxima-se de um "forkexec", mas o system executa um comando através de uma shell, quando tu através do exec* podes chamar directamente um binário qualquer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora