Skip to content

Implemented a user-space thread scheduler with Round Robin and prioritization, simulating preemptive process scheduling in a uniprocessor system.

Notifications You must be signed in to change notification settings

Theoioan12/Thread-Scheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Buliga Theodor Ioan 323 CA

Tema 2 - Planificator de threaduri

Descriere:

Tema implementeaza un planificator de threaduri. Acesta simuleaza un scheduler pe procese preemptiv, intr-un sistem uniprocesor, care utilizeaza algoritmul de planificare Round-Robin.

Structura de thread prezinta toate campurile de care e nevoie, iar cele de tip intreg au fost alese de tip short pentru ca nu s-a lucrat cu numere suficient de mari.

Pentru structura de scheduler am mers tot pe ideea de short pentru tipurile intregi de date, iar pentru coada am ales un simplu array de threaduri fiindca mi s-a parut mai usor de lucrat. In loc de mutex, am ales sa folosesc semaforul.

Functiile "error_checking" si "compare_function" ar fi trebuit sa ma ajute sa gestionez erorile intr-un mod mai lizibil, insa nu am reusit sa ma folosesc eficient de ele, dar le-am pastrat pentru eventuale actualizari asupra codului.

O functie care consider ca necesita explicatii suplimentare este cea de adaugare a unui thread, "a_thread". In cazul in care coada de prioritate nu este plina, se insereaza threadul pe pozitia corespunzatoare in functie de campul in care se regaseste prioritatea.

Pentru cearea unui thread, am realizat o functie ajutatoare, unde aloc memoria, initializez campurile, semaforul si apoi creez threadul propriu-zis.

Functia "up_scheduler" actualizeaza schedulerul in functie de starile threadurilor si prioritatea acestora. Tot aici e implementat si algoritmul Round Robin. Functia va fi folosita mai departa in "s_routine".

Comentarii asupra temei:

Cred ca puteam realiza o tema mai buna, cel putin la nivel de modularizare si gestionare a memoriei si vitezei de executie, as fi vrut sa reusesc si sa impart in mai multe fisiere codul, dar a fost o perioada incarcata, cu mai multe deadline-uri in acelasi timp. Per total, sunt multe lucruri de imbunatatit, dar am inteles mult mai bine cum ar functiona un planificator de threaduri si ma simt mult mai stapan la nivel de programare in C. Ma simt, de asemenea, mult mai pregatit pentru examen si ma bucur ca am reusit sa aplic niste concepte destul de dificile.

Bibliografie: https://ocw.cs.pub.ro/courses/so/teme/tema-4 https://ocw.cs.pub.ro/courses/so/cursuri/curs-04 https://ocw.cs.pub.ro/courses/so/cursuri/curs-08 https://ocw.cs.pub.ro/courses/so/cursuri/curs-09 https://ocw.cs.pub.ro/courses/so/laboratoare/laborator-08 https://ocw.cs.pub.ro/courses/so/laboratoare/laborator-09

About

Implemented a user-space thread scheduler with Round Robin and prioritization, simulating preemptive process scheduling in a uniprocessor system.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published