Electrotécnica
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
CBOX-Shout
junho 2024
SegTerQuaQuiSexSábDom
     12
3456789
10111213141516
17181920212223
24252627282930

Calendário Calendário

Procurar
 
 

Resultados por:
 


Rechercher Pesquisa avançada

Quem está conectado?
11 usuários online :: 0 registrados, 0 invisíveis e 11 visitantes

Nenhum

O recorde de usuários online foi de 34 em Dom Ago 13, 2023 1:30 pm
Estatísticas
Temos 318 usuários registrados
O último membro registrado é Buggsoulmitor

Os nossos membros postaram um total de 1475 mensagens em 209 assuntos

Trabalhos de Sistemas Operativos

5 participantes

Ir para baixo

Trabalhos de Sistemas Operativos Empty Trabalhos de Sistemas Operativos

Mensagem  ATGomes Sáb Fev 25, 2012 3:36 pm

Boas se alguém tivesse os exercícios de sistemas de operativos podia partilhar aqui com o pessoal Wink
ATGomes
ATGomes
Fundador
Fundador

Mensagens : 460
Data de inscrição : 28/09/2011
Idade : 33
Localização : Zona Centro

http://electroforuns.vacau.com

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  JMary Sáb Fev 25, 2012 5:46 pm

Só amanhã devo pegar nisso, hoje é dia de grande jogo! Very Happy
JMary
JMary
Moderador
Moderador

Mensagens : 88
Data de inscrição : 28/09/2011
Idade : 39
Localização : Coimbra e Arredores

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  ATGomes Dom Fev 26, 2012 12:16 pm

Ok então se puderes depois dá aqui uma ajuda, é que tu dominas isto Wink

Eu fiz o exercício 1 da folha 2. Adicionei só mais uma coisita para ver os PID's dos processos para saber quem estava a executar o quê. O resultado obtido realmente não foi o esperado, mas porquê? Razz Se fosse só para escrever uma vez aquilo funcionava mas com o ciclo 'for' aquilo salta de processo para processo antes de escrever as 100 vezes.

exe1.c
Código:
#include <stdio.h>
#include <unistd.h>

int main(void) {

   int i,j;

   printf("Hello World\n");
   int pid = fork();
   if(pid > 0){//executado pelo processo pai - fork retorna um nmr > 0 para o pai (PID do proce. filho)
      for(i=0;i<100;i++){      
         printf("Eu sou o pai PID = %u , PPID = %u \n", getpid(), getppid());
      }
   }
   else if(pid == 0){//executado pelo processo filho - fork retorna 0 para o filho
      for(j=0;j<100;j++){
         printf("Eu sou o filho PID = %u , PPID = %u \n", getpid(), getppid());
      }
   }
   else printf("Criacao do processo filho falhou..."); //se fork retornou -1 falhou na criacao do proce. filho

   return 0;
}   
ATGomes
ATGomes
Fundador
Fundador

Mensagens : 460
Data de inscrição : 28/09/2011
Idade : 33
Localização : Zona Centro

http://electroforuns.vacau.com

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  ATGomes Dom Fev 26, 2012 12:51 pm

Agora experimentei fazer a mesma coisa mas usando o execl(). Assim já funciona, mas a questão é mesmo porque é que sem o execl() não funciona Razz

Spoiler:
ATGomes
ATGomes
Fundador
Fundador

Mensagens : 460
Data de inscrição : 28/09/2011
Idade : 33
Localização : Zona Centro

http://electroforuns.vacau.com

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  JMary Dom Fev 26, 2012 1:55 pm

Mas na próxima semana é já a folha 2? Nem a folha 1 acabámos!
JMary
JMary
Moderador
Moderador

Mensagens : 88
Data de inscrição : 28/09/2011
Idade : 39
Localização : Coimbra e Arredores

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  ATGomes Dom Fev 26, 2012 2:26 pm

JMary escreveu:Mas na próxima semana é já a folha 2? Nem a folha 1 acabámos!

Não faço ideia, mas temos 7 folhas e as aulas estão contadas Razz por isso o prof não deve perder muito tempo com cada folha
ATGomes
ATGomes
Fundador
Fundador

Mensagens : 460
Data de inscrição : 28/09/2011
Idade : 33
Localização : Zona Centro

http://electroforuns.vacau.com

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  ATGomes Seg Mar 26, 2012 8:31 am

Exercícios folha 3 parte 2 (sinais):

->Exercício 1
->Exercício 2
ATGomes
ATGomes
Fundador
Fundador

Mensagens : 460
Data de inscrição : 28/09/2011
Idade : 33
Localização : Zona Centro

http://electroforuns.vacau.com

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  videira Sáb Abr 21, 2012 2:40 pm

Boas..
Estou com uma duvida no 1º exercio de SO do trabalho prático 1.
Depois de ter falado com o prof. ele disse que deviamos usar mais um sinal para o pai saber se um filho foi criado. Tive a ver a lista dos sinais disponiveis, e tentei usar o SIGCHLD, mas mesmo assim ainda não está a funcionar bem..

Mais alguem usou este sinal, e consegui fazer o que o prof pede? Agradecia uma ajuda.

Saudações Academicas.
videira
videira
Nível 2
Nível 2

Mensagens : 6
Data de inscrição : 21/04/2012

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  electr0 Sáb Abr 21, 2012 5:12 pm

O que eu usei para o pai saber que tem um filho foi algo muito simples. O programa inicia com a flag "int existe_filho=0", quando um filho é criado o filho manda um sinal ao pai (através do kill), não é muito importante qual o sinal que se envia, eu por exemplo usei o SIGUSR1, o mais importante é definir o procedimento a executar em resposta a esse sinal. Nesse procedimento basta tão simplesmente fazer "existe_filho=1;", quando um filho terminar o processo deverá ser idêntico, usando outro sinal e outro procedimento para fazer "existe_filho=0". E pronto assim sempre que o processo pai precisar de saber se tem um filho ou não basta verificar o valor de "existe_filho".

Este problema 1 é um problema simples se for feito com flags, é que depois meia dúzia de if's resolvem tudo Razz
avatar
electr0
Nível 3
Nível 3

Mensagens : 16
Data de inscrição : 14/12/2011

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  videira Dom Abr 22, 2012 6:18 pm

Epa era mesmo isso que me faltava.. já consegui fazer! Com as flags, ficou simples.
Muito obrigado.

Saudações Academicas. Very Happy
videira
videira
Nível 2
Nível 2

Mensagens : 6
Data de inscrição : 21/04/2012

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  JMary Dom Abr 22, 2012 6:18 pm

Enviei agora mail ao prof, ele respondeu que o relatório deve ter uma descrição do trabalho, descrição dos exercícios e do seu funcionamento.

Vai ser um trabalhão fazer isso Neutral
JMary
JMary
Moderador
Moderador

Mensagens : 88
Data de inscrição : 28/09/2011
Idade : 39
Localização : Coimbra e Arredores

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty SO

Mensagem  Luís Raposo Dom Abr 22, 2012 11:01 pm

JMary escreveu:Enviei agora mail ao prof, ele respondeu que o relatório deve ter uma descrição do trabalho, descrição dos exercícios e do seu funcionamento.

Vai ser um trabalhão fazer isso Neutral

O que é que o prof. quer dizer com "descrição do trabalho"??
Luís Raposo
Luís Raposo
Nível 3
Nível 3

Mensagens : 16
Data de inscrição : 05/01/2012
Localização : Coimbra

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  videira Dom Jun 03, 2012 8:34 am

Boas, para o 1º trabalho consegui uma grande ajuda aqui..
Agora estou aqui com uma questão na pergunta 3 do trabalho 2! como fizeram para quando o programa recebe um ctrl-c ? Quando o programa recebe o ctrl-c, estava a usar o pthread_kill que enviava o SIGUSR1 para todas as threads para mudar uma flag, para usar essa flag depois de comerem mais uma vez terminarem.. mas não esta a funcionar..

alguém de outra forma diferente?
videira
videira
Nível 2
Nível 2

Mensagens : 6
Data de inscrição : 21/04/2012

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  videira Dom Jun 03, 2012 8:35 am

Boas, para o 1º trabalho consegui uma grande ajuda aqui..
Agora estou aqui com uma questão na pergunta 3 do trabalho 2! como fizeram para quando o programa recebe um ctrl-c ? Quando o programa recebe o ctrl-c, estava a usar o pthread_kill que enviava o SIGUSR1 para todas as threads para mudar uma flag, para usar essa flag depois de comerem mais uma vez terminarem.. mas não esta a funcionar..

alguém de outra forma diferente?
videira
videira
Nível 2
Nível 2

Mensagens : 6
Data de inscrição : 21/04/2012

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  ATGomes Dom Jun 03, 2012 6:57 pm

videira escreveu:Boas, para o 1º trabalho consegui uma grande ajuda aqui..
Agora estou aqui com uma questão na pergunta 3 do trabalho 2! como fizeram para quando o programa recebe um ctrl-c ? Quando o programa recebe o ctrl-c, estava a usar o pthread_kill que enviava o SIGUSR1 para todas as threads para mudar uma flag, para usar essa flag depois de comerem mais uma vez terminarem.. mas não esta a funcionar..

alguém de outra forma diferente?

Eu usei uma variável global que é posta a 1 quando recebe o sinal. Em determinada parte do código o thread vai avaliar o valor dessa variável e se verificar que é 1 vai terminar (se já tiver acabado de comer). A maneira como termino é usando pthread_exit() pois foi a maneira que vi de retornar um valor (o nº de vezes que comeu) ao thread principal. Funciona bem assim Wink
ATGomes
ATGomes
Fundador
Fundador

Mensagens : 460
Data de inscrição : 28/09/2011
Idade : 33
Localização : Zona Centro

http://electroforuns.vacau.com

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  videira Dom Jun 03, 2012 9:19 pm

pois, já tinha tentado fazer assim.. mas o meu problema é que quando a thread que está a executar recebe o sinal, só ela é que vai saber que a variável global mudou, as outras threads não a modificam logo só ela é que vai terminar..
Depois também usei o pthread_exit para devolver o valor do numero de vezes que comeram e o join para buscar.

Vou queimar mais um bocado a cabeça a tentar..
obrigado Wink
videira
videira
Nível 2
Nível 2

Mensagens : 6
Data de inscrição : 21/04/2012

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  ATGomes Ter Jun 05, 2012 1:32 pm

videira escreveu:pois, já tinha tentado fazer assim.. mas o meu problema é que quando a thread que está a executar recebe o sinal, só ela é que vai saber que a variável global mudou, as outras threads não a modificam logo só ela é que vai terminar..
Depois também usei o pthread_exit para devolver o valor do numero de vezes que comeram e o join para buscar.

Vou queimar mais um bocado a cabeça a tentar..
obrigado Wink

Como é uma variável global todas as threads vão saber quando esta for alterada se tiverem uma parte do código que verifique a mesma.
ATGomes
ATGomes
Fundador
Fundador

Mensagens : 460
Data de inscrição : 28/09/2011
Idade : 33
Localização : Zona Centro

http://electroforuns.vacau.com

Ir para o topo Ir para baixo

Trabalhos de Sistemas Operativos Empty Re: Trabalhos de Sistemas Operativos

Mensagem  Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos