E timpul sa arati ce poti!

Planificator de procese

Sa se realizeze un simulator grafic a activitatii planificatorului de procese din cadrul unui sistem de operare.
Simulatorul va putea fi configurat, avand ca date de intrare: numarul P de procesoare/nuclee a sistemului de calcul considerat, numarul N de procese ce trebuie executate in sistem, iar pentru fiecare proces se va da o lista de timpi, ce reprezinta in ordine:
- momentul de lansare in executie a procesului respectiv;
- durata primei secvente de instructiuni CPU ce trebuie executate de acel proces;
- durata primei operatii I/O efectuate de acel proces;
- durata celei de-a doua secvente de instructiuni CPU, durata celei de-a doua operatii I/O, … s.a.m.d.;
- durata ultimei secvente de instructiuni CPU.
Datele de intrare se vor citi la inceputul executiei (de la tastatura, sau importate dintr-un fisier de date) sau, la alegerea utilizatorului,
vor fi produse in mod aleator.

Se vor implementa urmatoarele strategii de planificare: FCFS, SJF nepreemptiv, SJF preemptiv, cu prioritati statice, cu prioritati dinamice, round-robin si round-robin combinat cu prioritati. Tipul de strategie aplicat la fiecare simulare va fi configurabil, de asemenea, ca parametru de intrare.

Procesul planificator va gestiona cozile de planificare si va decide alocarea procesorului/procesoarelor; in cazul cand numarul de procesoare/nuclee este P>1, se va folosi fie varianta cu o singura coada de planificare pentru toate procesoarele, fie varianta cu cate o coada pentru fiecare procesor (se vor implementa ambele variante, iar la fiecare simulare se va alege una din variante specificata printr-un parametru de intrare). Un alt proces separat (timer-ul) va fi responsabil cu generarea timpului.

Aplicatia de simulare ce se doreste a fi realizata va trebui sa ilustreze grafic (printr-o interfata grafica realizata cu orice tehnologie doriti, dar care sa poata fi rulata sub Linux) urmatoarele:
- scurgerea timpului (procesul timer); vor fi prevazute controale de tipul increase/decrease pentru configurarea vitezei de scurgere a timpului
si de asemenea controale de tipul pause/resume;
- fiecare procesor/nucleu, cu ID-ul procesului ce ruleaza pe el;
- coada/cozile de planificare, cu ID-urile proceselor aflate ordonat in ele, si deciziile de selectie luate de planificator (procesul planificator);
- coada waiting, cu ID-urile proceselor ce efectueaza operatii I/O in acel moment.

Intr-o fereastra adiacenta, ca alternativa de vizualizare, se vor reprezenta cele N procese a caror executie este simulata, cu ID-ul fiecaruia
si starile curente la fiecare moment de timp ale fiecarui proces: starea “inainte de lansare in executie”, starea running (cand ruleaza pe un

procesor/nucleu), starea ready (cand se afla intr-o coada de planificare), starea waiting (cand efectueaza o operatie I/O), si starea “executia s-a terminat”.

Observatie: vom simplifica simularea fata de cazul real, considerand doar gestionarea accesului la procesor, ignorand administrarea perifericelor de intrare/iesire, i.e. se va presupune ca fiecare proces capata acces la un periferic chiar in momentul cand il cere, si ca il foloseste exact atat timp cat are nevoie (duratele de folosire a perifericelor fiind cele specificate mai sus ca parametri de intrare pentru fiecare proces).

Cerinta suplimentara: acceptul autorilor solutiei propuse la acest proiect de a putea fi folosita in scop didactic (si eventual imbunatatita ulterior).

Echipa: 3 studenti.

Bonus: punctaj maxim la componenta de testare practica din cadrul notei la disciplina “Sisteme de Operare”.

Proiect propus de: domnul profesor lector, doctor, Cristian Traian Vidrascu.

No comments yet. Be the first.

Leave a reply