Spróbuj przetrwać jako harmonogram zadań
Jesteśmy przyzwyczajeni do przeklinania systemu operacyjnego, gdy interfejs się zawiesza lub aplikacja milczy z komunikatem "Brak odpowiedzi". Wydaje się, że rozdzielanie czasu procesora i pamięci między tuzin programów to trywialne zadanie. Ale co, jeśli to ty siedzisz przy menedżerze zadań?
Projekt You’re the OS! autorstwa developera Pier-Luca Braulta zamienia podstawowe koncepcje informatyczne w hardcore’ową grę arcade. Tutaj dosłownie stajesz się jądrem systemu. Twoim celem jest ręczne alokowanie pamięci, przełączanie kontekstów procesów i obsługa przerwań I/O. Kilka sekund spóźnienia — i zdenerwowany użytkownik wciśnie przycisk Reset.
Jak działa rozgrywka
Kolejki systemowe nieprzerwanie kręcą się na ekranie. Każdy proces potrzebuje czasu procesora, bloku w RAM lub odpowiedzi z dysku.
Musisz śledzić jednocześnie kilka parametrów:
- Obciążenie kolejek wątków gotowych do uruchomienia.
- Alokacja i zwalnianie stron pamięci RAM.
- Żądania I/O blokujące wykonanie programu.
- Miernik cierpliwości użytkownika, który opróżnia się z każdym cyklem bezczynności.
Jeśli zostawisz zadanie w trybie oczekiwania zbyt długo, proces zaczyna się "gotować". Gdy tylko cierpliwość użytkownika się wyczerpie, gra kończy się awaryjnym restartem.
Dlaczego programista powinien grać w system operacyjny
Poza czystą ekscytacją z gry, projekt daje praktyczne zrozumienie rzeczy, które zwykle traktujemy jako abstrakcje w podręcznikach Tanenbauma.
1. Praktyczne zrozumienie planowania
W czasie rzeczywistym odczuwasz, dlaczego algorytmy takie jak Round Robin czy Fair Share są zaprojektowane tak, a nie inaczej. Spróbuj ręcznie uniknąć sytuacji zagłodzenia, gdy ciężki wątek w tle całkowicie zapycha pipeline, podczas gdy małe interaktywne kliknięcia użytkownika wiszą bez odpowiedzi.
2. Piaskownica dla niestandardowych scenariuszy
Repozytorium zawiera tryb piaskownicy. Możesz opisać własny profil obciążenia w Pythonie: ustawić intensywność generowania zadań, wymagane ilości pamięci i typy operacji I/O. To zamienia grę w narzędzie do testowania obciążeniowego.
3. API do automatyzacji i pisania botów
Najciekawsza część wersji desktopowej to możliwość kontrolowania systemu nie rękami, lecz kodem. Repozytorium zawiera moduł 2, przez który możesz podłączyć własny skrypt harmonogramu.
Pisziesz algorytm alokacji zasobów w Pythonie, uruchamiasz symulację i sprawdzasz, ile cykli Twój własny harmonogram wytrzyma w starciu z generatorem zdarzeń gry.
Uruchomienie i szczegóły techniczne
Projekt jest napisany w Pythonie z użyciem biblioteki Pygame, a wersja webowa jest kompilowana do WebAssembly. Możesz grać bezpośrednio w przeglądarce na GitHub Pages lub itch.io.
Jeśli chcesz pisać boty przez API automatyzacji, musisz uruchomić projekt lokalnie.
W repozytorium podano ścisłe wymagania dotyczące wersji: autor używa Pythona 3.14 i menedżera pakietów 3. Do izolacji najlepiej od razu użyć 4:
0Aby zbudować niestandardową konfigurację piaskownicy, wystarczy utworzyć plik w katalogu 5 i uruchomić polecenie:
1Czy warto poświęcić czas
Jeśli uczysz podstaw systemów operacyjnych, szukasz sposobu na ćwiczenie mózgu w weekendy lub chcesz napisać własnego bota-harmonogram w Pythonie, projekt zdecydowanie jest wart uruchomienia na pół godziny. Szybko谦 cię i jasno wyjaśnia, dlaczego tworzenie niezawodnych menedżerów zadań kiedyś zajmowało inżynierom dekady.
Powiązane projekty