Najpierw najkrótsza praca (SJF): przykład z wywłaszczeniem, bez wywłaszczenia

⚡ Inteligentne podsumowanie

Shortest Job First (SJF) to algorytm planowania zadań procesora, który wybiera do uruchomienia proces o najkrótszym czasie wykonania. Może on działać z wywłaszczeniem lub bez, co znacznie skraca średni czas oczekiwania procesów.

  • ⏱️. Definicja: Do następnego wykonania wybierany jest proces z najkrótszym czasem trwania impulsu.
  • 🔀 Dwa typy: SJF może być niepreemptywny lub preemptywny (najpierw najkrótszy pozostały czas).
  • 📉 Kluczowa korzyść: Zapewnia najniższy średni czas oczekiwania dla danego zestawu procesów.
  • 🏭 Najlepsze wykorzystanie: Idealne rozwiązanie dla systemów wsadowych, w których czas wykonywania zadań jest znany z góry.
  • Główne ograniczenie: Czas wybuchu musi być znany wcześniej, a jego przewidzenie jest trudne.
  • ⚠️ Ryzyko: Długie procesy mogą zostać przerwane, jeśli ciągle będą napływać krótkie zadania.

Harmonogramowanie „najpierw najkrótsza praca” (SJF)

Jaki jest najkrótszy harmonogram pierwszej pracy?

Najkrótsza pierwsza praca (SJF) to algorytm, w którym do kolejnego wykonania wybierany jest proces o najkrótszym czasie wykonania. Ta metoda planowania może być z wywłaszczaniem lub bez wywłaszczania. Znacząco skraca średni czas oczekiwania na wykonanie innych procesów. Pełna forma SJF to Najkrótsza praca.

Zasadniczo istnieją dwa typy metod SJF:

  • Niewywłaszczający SJF
  • Uprzedzający SJF

Charakterystyka harmonogramowania SJF

  • Jest powiązany z każdym zadaniem jako jednostka czasu do wykonania.
  • Ta metoda algorytmiczna jest przydatna w przypadku przetwarzania wsadowego, gdzie oczekiwanie na zakończenie zadań nie jest krytyczne.
  • Może poprawić wydajność procesu poprzez zapewnienie, że najpierw wykonywane są krótsze zadania, co może skrócić czas realizacji.
  • Poprawia wydajność pracy, oferując krótsze zadania, które należy wykonać w pierwszej kolejności i których czas realizacji jest zazwyczaj krótszy.

Niewywłaszczający SJF

W przypadku harmonogramowania niewywłaszczającego, gdy cykl procesora zostanie przydzielony procesowi, proces ten zatrzymuje go, aż osiągnie stan oczekiwania lub zostanie zakończony.

Rozważmy następujące pięć procesów, z których każdy ma swój własny, unikalny czas wybuchu i czas przybycia.

Kolejka procesów Czas wybuchu Czas przybycia
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Krok 0) W czasie = 0, P4 przybywa i rozpoczyna wykonywanie.

Niewywłaszczający SJF

Krok 1) W czasie = 1, nadchodzi proces P3. Jednak proces P4 nadal potrzebuje 2 jednostek wykonawczych do ukończenia. Będzie kontynuował wykonywanie.

Niewywłaszczający SJF

Krok 2) W chwili = 2 przybywa proces P1 i zostaje dodany do kolejki oczekujących. P4 będzie kontynuować wykonywanie.

Niewywłaszczający SJF

Krok 3) W chwili = 3 proces P4 zakończy swoje wykonywanie. Porównuje się czas rozerwania P3 i P1. Proces P1 jest wykonywany, ponieważ jego czas impulsu jest krótszy w porównaniu do P3.

Niewywłaszczający SJF

Krok 4) W chwili = 4 przybywa proces P5 i zostaje dodany do kolejki oczekujących. P1 będzie kontynuować wykonywanie.

Niewywłaszczający SJF

Krok 5) W chwili = 5 przybywa proces P2 i zostaje dodany do kolejki oczekujących. P1 będzie kontynuować wykonywanie.

Niewywłaszczający SJF

Krok 6) W chwili = 9 proces P1 zakończy swoje wykonywanie. Porównuje się czas rozerwania P3, P5 i P2. Proces P2 jest wykonywany, ponieważ jego czas impulsu jest najkrótszy.

Niewywłaszczający SJF

Krok 7) W chwili = 10 P2 jest wykonywany, a P3 i P5 znajdują się w kolejce oczekujących.

Niewywłaszczający SJF

Krok 8) W chwili = 11 proces P2 zakończy swoje wykonywanie. Porównuje się czas rozerwania P3 i P5. Proces P5 jest wykonywany, ponieważ jego czas impulsu jest krótszy.

Niewywłaszczający SJF

Krok 9) W chwili = 15 proces P5 zakończy swoje wykonywanie.

Niewywłaszczający SJF

Krok 10) W chwili = 23 proces P3 zakończy swoje wykonywanie.

Niewywłaszczający SJF

Krok 11) Obliczmy średni czas oczekiwania dla powyższego przykładu.

Wait time
P4 = 0 - 0 = 0
P1 = 3 - 2 = 1
P2 = 9 - 5 = 4
P5 = 11 - 4 = 7
P3 = 15 - 1 = 14
Average Waiting Time = (0 + 1 + 4 + 7 + 14)/5 = 26/5 = 5.2

Uprzedzający SJF

W przypadku planowania SJF z wywłaszczaniem (Preemptive SJF Scheduling) zadania są umieszczane w kolejce zadań gotowych w miarę ich pojawiania się. Proces z najkrótszym czasem buforowania rozpoczyna wykonywanie. Jeśli pojawi się proces z jeszcze krótszym czasem buforowania, bieżący proces jest usuwany lub wywłaszczany z wykonywania, a krótszemu zadaniu przydzielany jest cykl procesora.

Rozważmy następujące pięć procesów:

Kolejka procesów Czas wybuchu Czas przybycia
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Krok 0) W czasie = 0, P4 przybywa i rozpoczyna wykonywanie.

Kolejka procesów Czas wybuchu Czas przybycia
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Uprzedzający SJF

Krok 1) W czasie = 1, nadchodzi proces P3. Jednak proces P4 ma krótszy czas trwania. Będzie on kontynuował wykonywanie.

Uprzedzający SJF

Krok 2) W chwili = 2 przybywa proces P1 z czasem serii = 6. Czas serii jest dłuższy niż P4. Dlatego P4 będzie kontynuować wykonywanie.

Uprzedzający SJF

Krok 3) W chwili = 3 proces P4 zakończy swoje wykonywanie. Porównuje się czas rozerwania P3 i P1. Proces P1 jest wykonywany, ponieważ jego czas impulsu jest krótszy.

Uprzedzający SJF

Krok 4) W chwili = 4 nadejdzie proces P5. Porównuje się czas rozerwania P3, P5 i P1. Proces P5 jest wykonywany, ponieważ jego czas impulsu jest najkrótszy. Proces P1 zostaje wywłaszczony.

Kolejka procesów Czas wybuchu Czas przybycia
P1 Pozostało 5 z 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Uprzedzający SJF

Krok 5) W czasie = 5 pojawi się proces P2. Porównywany jest czas trwania serii P1, P2, P3 i P5. Proces P2 zostaje wykonany, ponieważ jego czas trwania serii jest najkrótszy. Proces P5 zostaje wywłaszczony.

Kolejka procesów Czas wybuchu Czas przybycia
P1 Pozostało 5 z 6 2
P2 2 5
P3 8 1
P4 3 0
P5 Pozostało 3 z 4 4

Uprzedzający SJF

Krok 6) W czasie = 6 wykonywany jest P2.

Uprzedzający SJF

Krok 7) W chwili = 7 proces P2 kończy wykonywanie. Porównuje się czas trwania serii procesów P1, P3 i P5. Proces P5 zostaje wykonany, ponieważ jego czas trwania serii jest krótszy.

Kolejka procesów Czas wybuchu Czas przybycia
P1 Pozostało 5 z 6 2
P2 2 5
P3 8 1
P4 3 0
P5 Pozostało 3 z 4 4

Uprzedzający SJF

Krok 8) W czasie = 10 proces P5 zakończy wykonywanie. Porównuje się czas trwania serii P1 i P3. Proces P1 zostaje wykonany, ponieważ jego czas trwania serii jest krótszy.

Uprzedzający SJF

Krok 9) W chwili = 15 proces P1 kończy wykonywanie. Pozostał tylko proces P3. Rozpocznie on wykonywanie.

Uprzedzający SJF

Krok 10) W chwili = 23 P3 kończy swoje wykonywanie.

Uprzedzający SJF

Krok 11) Obliczmy średni czas oczekiwania dla powyższego przykładu.

Wait time
P4 = 0 - 0 = 0
P1 = (3 - 2) + 6 = 7
P2 = 5 - 5 = 0
P5 = 4 - 4 + 2 = 2
P3 = 15 - 1 = 14
Average Waiting Time = (0 + 7 + 0 + 2 + 14)/5 = 23/5 = 4.6

Zalety SJF

Oto korzyści/zalety stosowania metody SJF:

  • SJF jest często używany do planowania długoterminowego.
  • Skraca średni czas oczekiwania w porównaniu z algorytmem FIFO (pierwsze weszło, pierwsze wyszło).
  • Metoda SJF pozwala uzyskać najniższy średni czas oczekiwania dla określonego zestawu procesów.
  • Jest to odpowiednie w przypadku zadań uruchamianych wsadowo, gdzie czas wykonania jest znany z góry.
  • W przypadku wsadowego systemu planowania długoterminowego szacunkowy czas serii można uzyskać z opisu zadania.
  • W przypadku planowania krótkoterminowego musimy przewidzieć wartość następnego czasu impulsu.
  • Jest to prawdopodobnie optymalne rozwiązanie biorąc pod uwagę średni czas realizacji.

Wady/minusy SJF

Oto kilka wad/przeciwwskazań algorytmu SJF:

  • Czas realizacji zadania musi być znany wcześniej, ale jest trudny do przewidzenia.
  • Jest często używany w systemie wsadowym do planowania długoterminowego.
  • SJF nie może być wdrożony dla Planowanie procesora na krótką metę. Dzieje się tak dlatego, że nie ma konkretnej metody przewidywania długości nadchodzącego impulsu procesora.
  • Algorytm ten może powodować bardzo długie czasy realizacji lub głód.
  • Wymaga wiedzy o tym, jak długo będzie trwał proces lub zadanie.
  • Prowadzi to do głodu, który nie skraca średniego czasu realizacji.
  • Trudno jest określić długość nadchodzącego żądania procesora.
  • Należy rejestrować upływający czas, co wiąże się z większym obciążeniem procesora.

FAQ

SRTF (Shortest Remaining Time First) to po prostu wyprzedzająca wersja SJF. W SJF, działające zadanie kończy się przed wyborem następnego. W SRTF, nowo przybyłe zadanie z krótszym pozostałym czasem może wyprzedzić działający proces.

SJF zawsze faworyzuje najkrótsze zadanie. Jeśli krótkie procesy będą się pojawiać regularnie, długi proces może nigdy nie uzyskać dostępu do procesora i czekać w nieskończoność. To jest głodzenie. Aby temu zapobiec, stosuje się starzenie, które stopniowo zwiększa priorytet oczekującego zadania.

Tak. SJF jest optymalna i można ją udowodnić, ponieważ zapewnia minimalny możliwy średni czas oczekiwania dla danego zestawu procesów. Jest to jednak prawdą tylko wtedy, gdy czasy burstów są znane z góry, co w praktyce rzadko jest możliwe.

Sztuczna inteligencja i uczenie maszynowe mogą analizować historię procesu, funkcje kodu i poprzednie przebiegi, aby oszacować czas obciążenia procesora. Lepsze prognozy zwiększają dokładność SJF, skracając czas oczekiwania w porównaniu z tradycyjnymi estymatorami opartymi na uśrednianiu wykładniczym.

Potencjalnie. SJF ma problemy z krótkoterminowym harmonogramowaniem, ponieważ czasy burstów są nieznane. Sztuczna inteligencja, która przewiduje bursty w czasie rzeczywistym, mogłaby uczynić SJF użytecznym, ale narzut związany z prognozowaniem i błędy muszą pozostać wystarczająco niskie, aby decyzja o harmonogramowaniu była opłacalna.

Podsumuj ten post następująco: