Skip to content


Biegnące bez tchu procesory

Axquan popełnił wpis w którym spekuluje nt. działania procesorów, programów i systemów. Wnioski tyleż logiczne, co błędne… Spróbuję to naprostować.

Wszystkie nowoczesne procesory (z rodziny tych synchronicznych) posiadaja instrukcję HALT, która zatrzymuje działanie procesora.
Procesor po prostu przestaje przetwarzać instrukcje. Tak. Zatrzymuje się. Ni mniej, ni więcej.

Tę instrukcję wstawia się zwykle w idle-loop systemu operacyjnego, co powoduje, że gdy komputer nie ma co robić, to zatrzymuje się, nie wykonuje rozkazów (nawet NOOP) i nie zużywa prądu.

Zaraz, zaraz? To w takim razie jak w ogóle działa?

Otóż kiedy systemy komputerowe przeszły z przedwarzania wsadowego i jednoprogramowego, do przetwarzania wieloprogramowego, zmienił się również paradygmat. System nie jest już napędzany kodem/zegarem, a jest napędzany zdarzeniami. Zdarzeniami dziejącymi się na urządzeniach peryferyjnych i zgłaszanych przez nie za pomocą przerwań. Przerwania przerywają działanie aktualnego programu procesora i przenoszą sterowanie do podprogramu obsługi przerwania. Przerywają one również stan zatrzymania HALT i zmuszają procesor do obsługi zdarzenia.

A więc procesor, który siedzi sobie grzecznie, nic nie robi i czeka aż się coś wydarzy, to dziś zupełnie normalna i typowa rzecz.

Dla uzupełnienia obrazu dodam, że jednym z ważniejszych urządzeń peryferyjnych jest wbudowany w komputer, programowalny zegar z „budzikiem”, który zgłasza przerwania co określony, ustalony czas. Procedura obsługi tego przerwania odpowiada za wszystkie procesy dziejące się „same” pod maską systemu operacyjnego.

Przełączenie w mózgu paradygmatu zasuwającej bez wytchnienia Maszyny Turinga, na ogromną i bardzo skomplikowaną Maszynę Stanu, to pierwszy krok do zrozumienia działania dzisiejszych komputerów i ich systemów operacyjnych. Zdobywające popularność języki programowania funkcyjnego, czy procesory asynchroniczne, są po prostu logiczną konsekwencją.

Wspomniany przez Axquana X-Serwer również jest taką maszyną stanu, napędzaną zdarzeniami GUI. Ruchy myszki, naciśnięcia klawiszy, wiadomości od aplikacji, od systemu operacyjnego itd. Maszyna stanu pracująca na drugiej maszynie stanu i napędzana zdarzeniami przychodzącymi z niższego poziomu.


Posted in HowTo.


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

You must be logged in to post a comment.