Co to jest przełączanie kontekstu w systemie operacyjnym?
W systemie operacyjnym zdarzają się przypadki, kiedy trzeba przywrócić proces, który jest w stanie uruchomienia do innego stanu, takiego jak stan gotowości lub stan oczekiwania/blokady. Jeśli uruchomiony proces chce wykonać jakąś operację wejścia/wyjścia, to należy usunąć proces ze stanu uruchomienia, a następnie umieścić go w kolejce wejścia/wyjścia. Czasami, proces może używać algorytmu szeregowania round-robin, gdzie po każdym ustalonym kwantum czasu, proces musi powrócić do stanu gotowości ze stanu uruchomienia. Tak więc, te przełączenia procesów są wykonywane za pomocą Przełączania kontekstu. W tym blogu dowiemy się o koncepcji przełączania kontekstu w systemie operacyjnym, a także dowiemy się o zaletach i wadach przełączania kontekstu. Więc, zacznijmy.
Co to jest Przełączanie kontekstu?
Przełączanie kontekstu jest procesem, który obejmuje przełączanie procesora z jednego procesu lub zadania do innego. W tym zjawisku, wykonanie procesu, który jest obecny w stanie uruchomienia jest zawieszony przez jądro i inny proces, który jest obecny w stanie gotowości jest wykonywany przez CPU.
Jest to jedna z istotnych cech wielozadaniowego systemu operacyjnego. Procesy są przełączane tak szybko, że daje złudzenie użytkownikowi, że wszystkie procesy są wykonywane w tym samym czasie.
Ale proces przełączania kontekstu obejmował szereg kroków, które muszą być przestrzegane. Nie można bezpośrednio przełączyć procesu ze stanu uruchomienia do stanu gotowości. Musisz zapisać kontekst tego procesu. Jeśli nie zachowasz kontekstu żadnego procesu P, to po pewnym czasie, gdy proces P ponownie pojawi się w procesorze w celu wykonania, wtedy proces ten zacznie wykonywać się od początku. Ale w rzeczywistości powinien on kontynuować od tego punktu, w którym opuścił procesor w poprzednim wykonaniu. Tak więc, kontekst procesu powinien być zapisany przed wprowadzeniem jakiegokolwiek innego procesu w stan uruchomienia.
Kontekst jest zawartością rejestrów procesora i licznika programu w dowolnym punkcie w czasie. Przełączanie kontekstu może nastąpić z następujących powodów:
- Kiedy proces o wysokim priorytecie wchodzi w stan gotowości. W takim przypadku należy przerwać wykonywanie uruchomionego procesu, a proces o wyższym priorytecie powinien otrzymać procesor do wykonania.
- Gdy wystąpi przerwanie, wówczas proces w stanie gotowości powinien zostać zatrzymany, a procesor powinien obsłużyć przerwanie przed wykonaniem czegoś innego.
- Gdy wymagane jest przejście między trybem użytkownika a trybem jądra, należy wykonać przełączanie kontekstu.
Kroki związane z przełączaniem kontekstu
Proces przełączania kontekstu obejmuje szereg kroków. Poniższy diagram przedstawia proces przełączania kontekstu pomiędzy dwoma procesami P1 i P2.
Na powyższym rysunku można zauważyć, że początkowo proces P1 jest w stanie uruchomionym, a proces P2 w stanie gotowości. Teraz, gdy wystąpi jakieś przerwanie, należy przełączyć proces P1 ze stanu uruchomienia do stanu gotowości po zapisaniu kontekstu, a proces P2 ze stanu gotowości do stanu uruchomienia. W tym celu należy wykonać następujące czynności:
- Po pierwsze, kontekst procesu P1 tj. procesu znajdującego się w stanie pracy zostanie zapisany w Process Control Block procesu P1 tj. PCB1.
- Teraz należy przenieść PCB1 do odpowiedniej kolejki tj.
- Z poziomu stanu gotowości należy wybrać nowy proces, który ma zostać wykonany tj. proces P2.
- Teraz należy zaktualizować Blok Sterowania Procesem procesu P2 tj. PCB2 ustawiając stan procesu na running. Jeśli proces P2 był wcześniej wykonywany przez CPU, to można uzyskać pozycję ostatniej wykonanej instrukcji, dzięki czemu można wznowić wykonywanie P2.
- Podobnie, jeśli chcesz ponownie wykonać proces P1, to musisz wykonać te same kroki, jak wymienione powyżej (od kroku 1 do 4).
Aby przełączanie kontekstu miało miejsce, dwa procesy są co najmniej wymagane w ogóle, a w przypadku algorytmu round-robin można wykonać przełączanie kontekstu za pomocą tylko jednego procesu.
Czas związany z przełączaniem kontekstu jednego procesu przez drugi jest nazywany czasem przełączania kontekstu.
Zalety przełączania kontekstu
Przełączanie kontekstu jest używane do osiągnięcia wielozadaniowości, tj. wieloprogramowania z podziałem czasu (dowiedz się więcej o wielozadaniowości stąd). Multitasking daje użytkownikom złudzenie, że więcej niż jeden proces jest wykonywany w tym samym czasie. Ale w rzeczywistości, tylko jedno zadanie jest wykonywane w danym momencie czasu przez procesor. Tutaj przełączanie kontekstu jest tak szybkie, że użytkownik czuje, że CPU wykonuje więcej niż jedno zadanie w tym samym czasie.
Wady przełączania kontekstu
Wadą przełączania kontekstu jest to, że wymaga trochę czasu na przełączanie kontekstu, tj. czas przełączania kontekstu. Czas jest wymagany do zapisania kontekstu jednego procesu, który jest w stanie uruchomienia, a następnie uzyskanie kontekstu innego procesu, który ma się pojawić w stanie uruchomienia. W tym czasie, z punktu widzenia użytkownika, procesor nie wykonuje żadnej użytecznej pracy. Tak więc, przełączanie kontekstu jest czystym narzutem w tym stanie.
To wszystko dla tego bloga. Mam nadzieję, że podobał ci się ten blog.