Giter Site home page Giter Site logo

cthread's People

Contributors

arturwaquil avatar glmiotto avatar hcpacheco avatar

Watchers

 avatar  avatar  avatar

Forkers

glmiotto

cthread's Issues

BUGS do novo exemplo.c (branch cjoin)

_RESULTADOS NO TERMINAL COM COMENTARIOS MEUS ASSIM

Inicializou semaforo binario sucesso

Eu sou a main ap�s a cria��o de ID1 e ID2, ocupando o recurso binario
+MAIN ocupou o semaforo binario
+MAIN Contagem semaforo: 0
+MAIN vai fazer CYIELD

Empty queue: nothing to pop (problema: isso n parece certo, devia ter duas threads id1 e id2 na fila nesse momento pra escalonar)

+MAIN Codigo retornado do csignal: -1. (problema: o csignal devia retornar 0 quando sucesso, e na linha abaixo a contagem do semaforo ta condizente com ter dado certo, pois voltou de zero para 1. Entao ta falhando só o retorno da csignal?? Investigar)

+MAIN Count semaforo atual: 1

-FUNC0 Eu sou a thread ID0 imprimindo 10
-FUNC0: vai tentar semaforo binario com atual count: 1
-FUNC0 entrou no semaforo! atual count: 0
-FUNC0 fazendo coisas de secao critica

Printing queue...
Item 1 : prio 0, TID 2, state 0, dormant -1
Item 2 : prio 80131269, TID 0, state 0, dormant -1
PRINT QUEUE: Reached endqueue.

-FUNC0 vai fazer um yield agora
(acho que essa parte do FUNC0 deu certo. a func0 é a primeira escalonada depois de main, count correto etc.)

(escalonamento para func1: correto, tid 2 com prioridade 0 )
--FUNC1 Eu sou a thread ID1 imprimindo 10

Printing queue...
Item 1 : prio 4065979, TID 1, state 0, dormant -1 (ok, func0 vem antes da main pq demorou menos)
Item 2 : prio 80131269, TID 0, state 0, dormant -1
PRINT QUEUE: Reached endqueue.

--FUNC1 tentando semaforo count = 0 (bloqueio correto porque func0 está com o semaforo)

-FUNC0: primeira instrucao após o cyield. ainda no semaforo, count: -1

Printing queue...
Item 1 : prio 80131269, TID 0, state 0, dormant -1 (correto, FUNC1 está bloqueada)
PRINT QUEUE: Reached endqueue.

-FUNC0 hora de liberar o semaforo...
Printing queue...
Item 1 : prio 4688695, TID 2, state 0, dormant -1 (ok, ao liberar semaforo, acordou a FUNC1)
Item 2 : prio 80131269, TID 0, state 0, dormant -1
PRINT QUEUE: Reached endqueue.

-FUNC0 fim.

(escalonou pra func1 de novo. oK)
--FUNC1 Eu sou a thread ID1 imprimindo 10 (PROBLEMA ENORME: Pq a FUNC1 tá recomeçando do inicio??? ela devia estar retomando na hora de entrar no semáforo na primeira vez! Isso parece um problema na hora de salvar o contexto da func ao transitar de exec para blocked - ou seja quando foi chamado o bloqueio para entrar na fila do semáforo - ou entao ao acordar de novo de blocked para apto e depois apto para exec. idk)

--FUNC1 tentando semaforo count = 0
(PROBLEMA: pq a FUNC1 nao entrou no semáforo agora? o count devia ser 1. bug no csignal chamado pela FUNC0? mas quando a main chamou o count subiu normal)
+MAIN retornou esse valor do cyield dela: -1217191948 (PROBLEMA DEVIA SER ZERO )

Empty queue: nothing to pop (acho que ok)

Did not select next thread ready->exec

Eu sou a main voltando para terminar o programa

(PROBLEMA? eu botei um cjoin depois dessa linha para ver se finalmente deixavam a FUNC1 rodar... o cjoin não esperou pela FUNC1, talvez pq deu interlock pq a FUNC1 tá bloqueada esperando um semáforo que está desocupado, e a Main iria se bloquear esperando FUNC1.. se resolver a questao anterior acho que isso progride)

aluno@alunovm-sisop:~/sisop-tp1$

PROVÁVEL BUG SOCORRO: teste_vetor talvez inconsistente

Analisando o teste_vetor, estranhei uma coisa:
Sao criadas 10 threads de A a J.
Depois, MAIN chama join(A).
Nesse momento MAIN devia ser imediatamente bloqueada, e escalonar A.
A atribui 20 vezes, yield escalonaria B e assim por diante (tem melhor prioridade) enquanto main fica dormindo.
Depois que J termina, O ESCALONADOR TEM DUAS OPÇÕES: dar cpu para A ou para MAIN
Porém main provavelmente demora mais por causa dos ccreates! então deve voltar para mais 20 atribuições de A no vetor!! e depois B, C,... até concluir os 250 indices do vetor. Isso parece consistente com a descrição do algoritmo mas isso eh subjetivo.

Well, nosso código não faz isso, depois das threads de prioridade 0 (até J) ele volta para H depois G depois F, direção inversa do alfabeto e pulando letra i. Parece ser algum problema no calculo da prioridade ou na FCFS mas tem que averiguar

Nosso código:

aluno@alunovm-sisop:~/sisop-tp1$ ./exemplos/teste_vetor
inicializando cthread...
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cyield: 0 e 0
Retorno cjoin: 0 e 0

AAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJ
HHHHHHHHHHHHHHHHHHHH
GGGGGGGGGGGGGGGGGGGG
FFFFFFFFFF
Concluido vetor de letras...

Código do Lucas (tentem rodar ele, descobrir algo de diferente)

aluno@alunovm-sisop:~/cthread-master/exemplos$ ./teste_vetor
Error: can not wait for thread that has finished or does not exists
Error: can not wait for thread that has finished or does not exists
Error: can not wait for thread that has finished or does not exists
Error: can not wait for thread that has finished or does not exists
Error: can not wait for thread that has finished or does not exists
Error: can not wait for thread that has finished or does not exists
Error: can not wait for thread that has finished or does not exists
Error: can not wait for thread that has finished or does not exists
Error: can not wait for thread that has finished or does not exists

AAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBB
CCCCCCCCCC
Concluido vetor de letras...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.