Autor |
Wiadomość |
maciekd6
stalszy bywalec
Dołączył: 04 Lut 2008
Posty: 84
Przeczytał: 0 tematów
Ostrzeżeń: 1/5
|
|
PROGRAM SYMULACYJNY |
|
WIE KTOS O CO KAMAN Z TYM PROGRAMEM NA PDFie Z OD RYBY JEST NAPISANE ZE MAMY ZROBIC ALGORYTM PREZENTOWANY NA WYKŁADZIE ALE NAJLEPSZE JEST TO NIE MA WYKLADU ?? NO CHYBA ZE KTOS JE MA TO NIECH WRZUCI NA RAPIDA
Post został pochwalony 0 razy
|
|
Nie 10:48, 17 Maj 2009 |
|
|
|
|
Gość
|
|
|
jak nie ma jak jest...już na forum się o tym mówiło, poszukać wystarczy: [link widoczny dla zalogowanych]
ściągnij sobie "Folie z „Systemów operacyjnych“"
|
|
Nie 10:53, 17 Maj 2009 |
|
|
maciekd6
stalszy bywalec
Dołączył: 04 Lut 2008
Posty: 84
Przeczytał: 0 tematów
Ostrzeżeń: 1/5
|
|
|
|
dzieki tylko jakie tam jest haslo ??
Post został pochwalony 0 razy
Ostatnio zmieniony przez maciekd6 dnia Nie 13:59, 17 Maj 2009, w całości zmieniany 1 raz
|
|
Nie 13:58, 17 Maj 2009 |
|
|
Gość
|
|
|
| | On mówił, że zamieści je na swojej stronie
[link widoczny dla zalogowanych]
hasło: systemylato
ale jak do tej poty to na tej stronie nic ciekawego nie ma... |
|
|
Nie 14:32, 17 Maj 2009 |
|
|
Kac11zuS
Wartościowy Pisarz.2.0
Dołączył: 20 Paź 2007
Posty: 354
Przeczytał: 0 tematów
Pomógł: 3 razy Ostrzeżeń: 0/5
|
|
|
|
oddał już ktoś ten program symulacyjny? mógłby się nim pochwalić tutaj ładnie prosimy
Post został pochwalony 0 razy
|
|
Śro 12:42, 27 Maj 2009 |
|
|
nataq
stały bywalec
Dołączył: 01 Wrz 2008
Posty: 68
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Legnica
|
|
|
|
ten program symulacyjny jest na jutro czy mozna go jeszcze za tydzien oddac?
Post został pochwalony 0 razy
|
|
Śro 18:17, 27 Maj 2009 |
|
|
maciekd6
stalszy bywalec
Dołączył: 04 Lut 2008
Posty: 84
Przeczytał: 0 tematów
Ostrzeżeń: 1/5
|
|
|
|
za tydzien mozna ponac
Post został pochwalony 0 razy
|
|
Śro 21:49, 27 Maj 2009 |
|
|
chazzi
stały bywalec
Dołączył: 21 Paź 2008
Posty: 52
Przeczytał: 0 tematów
Pomógł: 1 raz Ostrzeżeń: 0/5
|
|
|
|
Za tydzień ponoć nie ma zajęć...
Post został pochwalony 0 razy
|
|
Śro 22:04, 27 Maj 2009 |
|
|
Gość
|
|
|
Czy ma ktoś program symulacyjny, którym chciałby się podzielić z dziewczynką
z zaćmieniem mózgu*
Jeśli znajdzie się chętny/a będę wdzięczna bo siedzę i siedzę i nic... :/
|
|
Śro 20:35, 03 Cze 2009 |
|
|
Gość
|
|
|
Wersja "HardCore" dla tych co będą potrafili ją wytłumaczyć . Wysoko oceniona : P
[link widoczny dla zalogowanych]
trzeba stworzyć plik : test.txt
o zawartości :
proces1 1
proces2 2
proces3 5
proces4 4
(nazwa procesu , priorytet )
Łatwa metoda odczytu z pliku i zapisu do pliku .
Btw Zmieniajcie:P
Ostatnio zmieniony przez Gość dnia Śro 21:03, 03 Cze 2009, w całości zmieniany 3 razy
|
|
Śro 20:54, 03 Cze 2009 |
|
|
beny
BeNy_BuDoWnIcZy.2.0
Dołączył: 06 Sty 2008
Posty: 551
Przeczytał: 0 tematów
Pomógł: 4 razy Ostrzeżeń: 0/5 Skąd: z Pizdochlewic
|
|
|
|
MichaŁ skopiował kawałek kodu źródłowego windowsa
Post został pochwalony 0 razy
|
|
Śro 20:58, 03 Cze 2009 |
|
|
Gość
|
|
|
OMG... jak na to patrzę, to mi się pogłębia zaćmienie :> Aleś wykminił
Dzięki - będę się przez to przegryzała...
|
|
Śro 21:04, 03 Cze 2009 |
|
|
Gość
|
|
|
wykminka algorytmu, jeśli znasz zasadę działania nie jest trudna
weźmy np. algorytm SJF bez wywłaszczania. Działa on na zasadzie, że z puli dostępnych procesów wybiera i przekazuje do wykonania te z najkrótszym czasem zajętości procesora, czy też jak kto woli - najkrótszym czasem wykonania.
Załóżmy, że mamy 5 procesów (kolejno w linii: nr_procesu, czas_przyjscia, czas_wykonania):
1 15 10
2 10 9
3 20 13
4 5 5
5 7 25
Definiujesz zmienną, która odpowiada za zliczanie wykonanych procesów. W pętli, którą wykonujesz do momentu, aż ten licznik wykonanych procesów będzie o jeden mniejszy od liczby procesów (zakładam, że zmienną inicjalizujemy zerem, chyba że jedynką, to wtedy licznik musi być równy ilości procesów).
Można użyć zegara, albo go zasymulować (ja wolę to pierwsze rozwiązanie ), przyjmijmy, że tu będziemy jedynie symulować zegar, a więc naszą jednostką niech będą sekundy, czyli po każdym pełnym obiegu pętli zwiększasz zmienną odpowiedzialną za sekundy o jeden.
W pętli najpierw sprawdzasz, czy jakiś proces ma czas przyjścia równy z aktualnym czasem, jeśli tak, to zaczynasz wykonanie procesu, zmniejszając czas wykonania o jeden przy każdym pełnym obiegu (czyli o sekundę), po wykonaniu procesu sprawdzasz, czy jakiś proces ma czas przyjścia mniejszy, lub równy aktualnemu (może być mniejszy, bo proces mógł przyjść w momencie wykonywania innego, a więc musiał czekać), jeżeli jest tylko jeden taki, to go wykonujesz, jeżeli więcej, to możesz sobie np. stworzyć tymczasową tablicę i do niej wpisywać te procesy, później z niej wybierasz ten z najkrótszym czasem wykonania i on będzie teraz bieżącym procesem.
Zakończenie algorytmu możesz też zakończyć sprawdzając, czy wszystkie procesy mają czas_wykonanie równy 0.
Powtarzasz to, aż nie zostaną wykonane wszystkie procesy. Najlepiej jest użyć do tego pętli do-while, albo while, jeśli porównujesz czas_wykonania do zera. A w niej do przechodzenia po tablicy i wyszukiwania procesów najlepiej jest użyć pętli for.
Trzeba też zrobić odpowiednie statystyki, a więc trzeba by było zrobić tablicę pomocniczą, do której skopiuje się wszystkie parametry procesów, bo one są zmieniane (np. czasy wykonania zmniejszane).
Następnie zgodnie z kolejnością wykonywania procesów, którą też musisz gdzieś zapisać, tworzysz statystyki, np. czas oczekiwania procesu na wykonanie (od czasu rozpoczęcia wykonywania odejmujesz czas przyjścia procesu), czy też średni czas oczekiwania.
Jak znajdę trochę czasu, to napisze jakiś kodzik mały, ale dzisiaj to na pewno nie
Dałby Ci nawet moje kody, ale one są wplecione w wizualizację, co pogłębia ich skomplikowanie no chyba że masz czas się przegryzać przez moje kody ;] aczkolwiek musiałabyś napisać coś własnego, a nie "kopiuj-wklej"
Już widziałem w takich projektach jakieś zawiłe kody, implementację wielu klas, typu Process, Scheduler, Burn itepe, ale po co sobie życie komplikować, skoro można to samo zawrzeć zamiast w, załóżmy 100 linijkach, to w 20-30? A wynik będzie taki sam...Natomiast sam algorytm prostszy do odczytania i zrozumienia.
Ostatnio zmieniony przez Gość dnia Śro 21:23, 03 Cze 2009, w całości zmieniany 3 razy
|
|
Śro 21:09, 03 Cze 2009 |
|
|
Gość
|
|
|
mały schemat jak to w drugim można zrobić :
1.Wczytujemy dane z pliku
2.Nadajemy im priorytet według czasu np tablica_procesow[7].priorytet = 1000 - czas;
3.sortujemy według priorytetu ( od największego do najmniejszego ) .
4.wczytujemy wszystkie procesy po kolei do jakiejś pętli która wykonuje tyle razy ile priorytet ma czasu .
5.w tej pętli robimy postarzanie , czyli jeśli jakiś proces czeka w kolejce dłużej niż określona jednostka czasu to zwiększamy mu priorytet . Dodatkowo w pętli robimy statystyki czyli np dopisujemy do jakiejs zmiennej łączny czas oczekiwania procesow np double lacznyczas=lacznyczas+proceswlasniewczytany.Oczywiscie w petli zwiekszamy ilosc czasu jaki procesy oczekuje na wykonanie ( u mnie zmienna oczekiwanie ) .
u mnie to wygląda tak :
if(itr->oczekiwanie>5)
itr->priorytet+=1;
6. po zwiekszeniu priorytetu znowu musimy posortowac
7. w pętli tez mozna zrobic dodawanie nowych procesow ( nie wiem czy wymagane w drugim ).
8. zapisujemy dane statystyczne do pliku .
moj priorytet mial takie pola :
string nazwa ;
int czas ;
int oczekiwanie ;
int priorytet ;
Może komuś coś ułatwi .
sorx ry5i3kszczur nie widzialem ze napisales przed mna .
Ostatnio zmieniony przez Gość dnia Śro 21:34, 03 Cze 2009, w całości zmieniany 5 razy
|
|
Śro 21:22, 03 Cze 2009 |
|
|
Gość
|
|
|
spoko ;] i tak zrobiłeś rozkminkę innego algorytmu ;] ja mam SJF, Ty masz priorytetowy ;] tak więc podwójna korzyść.
|
|
Śro 21:24, 03 Cze 2009 |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
|
|