forked from andreyciupitu/thread-scheduler
-
Notifications
You must be signed in to change notification settings - Fork 0
skyplane23/thread-scheduler
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Tema #4 SO Ciupitu Andrei-Valentin, 332CC ------------------------- Detalii de implementare ----------------------------- Pentru implementarea scheduler-ului am folosit un vector pentru a retine thread-urile pornite, precum si o coada de prioritati pentru a alege urmatorul thread. Coada de prioritati am implementat-o printr-un vector sortat, in care thread-urile sunt retinute in ordinea crescatoare a prioritatilor, astfel incat thread-ul cu cea mai mare prioritate se afla la coada vectorului. Atunci cand un thread este planificat el este scos din coada de prioritati, iar thread-ul care a fost preemptat este readaugat in coada, daca nu s-a blocat sau terminat. Pentru sincronizarea thread-urilor, fiecare thread are asociat un semafor, folosit pentru a semnaliza daca thread-ul poate rula. La apelul so_fork, se aloca o noua structura thread si se porneste un nou thread. Se adauga apoi noul thread in coada de prioritati, si se apeleaza functia de update a scheduler-ului. Thread-ul nou asteapta la semaforul corespunzator permisiunea de a rula, pentru a apela handler-ul. La apelul so_exec se scade tumpul ramas si apoi se apeleaza scheduler-ul. Thread-ul va astepta apoi la semaforul propriu permisiunea de a rula. La so_wait se seteaza statusul thread-ului ca blocat si apoi se apeleaza scheduler-ul si se asteapta la semafor. La so_signal se cauta in vectorul de thread-uri toate thread-urile care asteapta la device-ul dat ca argument. Acestea sunt trecute in starea READY si adaugate in coada. Se apeleaza apoi scheduler-ul si se asteapta la semafor. La apelul so_end se asteapta mai intai ca toate thread-urile sa treaca in starea TERMINATED, si apoi se da join si se elibereaza memoria.
About
A small thread scheduler simulator
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- C 93.4%
- Shell 6.0%
- Makefile 0.6%