IdyllaOS. Prosty, alternatywny system operacyjny. www.idyllaos.org. Autor: Grzegorz Gliński. Kontakt: milyges@gmail.com



Podobne dokumenty
Warstwy systemu Windows 2000

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Prezentacja systemu RTLinux

Jądro systemu operacyjnego

System plików Linuxa. Tomasz Borzyszkowski

WYKŁAD 3 Jądro systemu i procesy. Marcin Tomana Wyższa Szkoła Informatyki i Zarządzania

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

Komputery przemysłowe i systemy wbudowane

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Sprawozdanie z zadania 2. Artur Angiel, śr. 12:15

DOS COMMAND.COM. Rys. 2. Główne moduły programowe systemu operacyjnego DOS. Interpreter poleceń. Rys. 3. Warstwowa struktura systemu DOS

System komputerowy. System komputerowy

Pracownia Technik Obliczeniowych

Tworzenie sterowników dla FreeBSD. Michał Hajduk

Wprowadzenie do systemów operacyjnych

Kernel Kompilacja jądra

Konfiguracja i kompilacja jądra Linux. Based on Free Electrons

Acronis Universal Restore

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Instalacja Linuksa i podstawowa konfiguracja. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Działanie systemu operacyjnego

Systemy operacyjne II

Wykład 3: Implementacja programów wbudowanych

Programowanie niskopoziomowe

1. Etapy rozwoju systemów komputerowych

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Działanie systemu operacyjnego

Instalacja Systemu Linux na maszynie writualnej

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

Sieciowe Systemy Operacyjne

Q E M U.

Graficzny terminal sieciowy ABA-X3. część pierwsza: Opis startu systemu i jego konfiguracji

Działanie systemu operacyjnego

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

Działanie systemu operacyjnego

Wprowadzenie do systemu Minix

Python wstęp. Michał Bereta

1.1 Definicja procesu

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

PAMIĘĆ OPERACYJNA...107

Struktury systemów operacyjnych

Programowanie w asemblerze Linkowanie

Linux Elementy instalacji. 1 Podział dysku na partycje. 2 Konfiguracja sprzętu (automatycznie) 3 Założenie użytkowników

GRUB (GRand Unified Bootloader) - jest bootloaderem instalowanym standardowo w Ubuntu, potrafiącym obsłużyć kilka systemów jednocześnie (Multiboot).

Paweł Skrobanek. C-3, pok

Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1)

Systemy operacyjne. Paweł Pełczyński

Typy plików. Oznaczenie f -

UNIX SYSTEM PLIKÓW. UNIX System plików

Mechanizmy pracy równoległej. Jarosław Kuchta

System operacyjny MACH

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

SYSTEMY WEJŚCIA-WYJŚCIA

"Klasyczna" struktura systemu operacyjnego:

Kurs Zaawansowany S7. Spis treści. Dzień 1

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Spis treści. Rozdział 3. Podstawowe operacje na plikach...49 System plików Konsola Zapisanie rezultatu do pliku... 50

Rejestr HKEY_LOCAL_MACHINE

SPIS TREŚCI: KARTY GRAFICZNE... 15

Gdy dystrybucja Linuksa staje się niepotrzebna

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Spis treści. Wstęp... 10

System operacyjny Amoeba

Niektóre katalogi są standardowymi katalogami zarezerwowanymi do użytku przez system. Znaczenie wybranych katalogów systemowych jest następujące:

Administracja systemem Linux p. 1

Linux Kernel. Wprowadzenie

4. Procesy pojęcia podstawowe

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2009/2010

4. Procesy pojęcia podstawowe

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Podstawowe zagadnienia

Opis efektów kształcenia dla modułu zajęć

System operacyjny. System operacyjny to program kontrolujący pracę komputera

Bezpieczeństwo systemów informatycznych

Administracja serwerami

Systemy operacyjne oparte na mikrojądrze na przykładzie Minix3. Maciej Łaszcz, Wojciech Łowiec, Patryk Spanily 2 XII 2008

Systemy operacyjne III

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Wstęp do Informatyki. Klasyfikacja oprogramowania

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

MSConfig, System ConfigurationUtility

Zakład Systemów Rozproszonych

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Linux cz.2: terminal, użytkownicy, grupy

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Java jako język programowania

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

1) Czym jest architektura systemu Windows 7 i jak się ją tworzy? 2) Jakie są poszczególne etapy uruchomienia systemu Windows 7?

Zarządzanie partycjami i dyskami w środowisku Windows.

Systemy operacyjne III

2.2 Opis części programowej

Budowa systemów komputerowych

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Architektura systemów informatycznych WPROWADZENIE DO SYSTEMU LINUX

Transkrypt:

IdyllaOS www.idyllaos.org Prosty, alternatywny system operacyjny Autor: Grzegorz Gliński Kontakt: milyges@gmail.com

Co to jest IdyllaOS? IdyllaOS jest to mały, prosty, uniksopodobny, wielozadaniowy oraz wielouzytkownikowy system operacyjny pisany w językach C oraz Assembler. Sercem systemu jest jądro monolityczne z dołączanymi dynamicznie modułami. Aktualnie system znajduje się w początkowym stadium rozwoju. Aby system mógł stać się używalny wymagane jest zaimplementowanie wielu funkcji oraz poprawienie błędów. Aktualna wersja systemu to 0.1-alpha.

Dlaczego powstał IdyllaOS? Główny cel: edukacja, czyli jak to działa Udowodnienie że napisanie OS-a nie musi być trudne Chęć stworzenia czegoś bardziej rozbudowanego niż edytor tekstu Chwała, sława i władza nad światem ;)

Cechy systemu: Bootloader: Dowolny zgodny ze standardem multiboot (np. GRUB) Kernel: Jądro monolityczne z obsługą dynamicznie dołączanych modułów Funkcje systemowe: w większości zgodne ze standardem POSIX Bilioteka standardowa: port bilioteki newlib Aplikacje: pliki wykonywalne w formacie ELF, planowana możliwość dołączania bibliotek dynamicznych.

Jądro systemowe Jądro wielozadaniowe, wieloużytkownikowe Obsługa pamięci wirtualnej Przełączanie zadań przez użycie stosów Jądro jest wywłaszczalne Moduły w formacie plików ELF-Reloc Obsługa urządzeń znakowych i blokowych System plików oparty o architekurę i-węzłów Wbudowany monitor trybu v86

Jądro systemowe: Architektura HAL (kod zależny od architektury sprzętowej) Memory manager Process manager VFS Załadowane moduły

Jądro systemowe: HAL Odpowiada za komunikację z podstawowymi urządzeniami jak procesor czy pamięć Zawiera fragmenty kodu specyficzne dla danej architektury (np. włączenie stronnicowania, obsługa przerwań, etc.) Kod inicjalizacji pisany w assemblerze Duża część kodu wywoływana tylko podczas inicjalizacji jądra

Jądro systemowe: Manager pamięci Operuje na abstrakcyjnych strukturach jak przestrzeń adresowa czy region pamięci Zleca operacje niskopoziomowe modułowi HAL (jak np. zamapowanie pamięci, stworzenie przestrzeni adresowej) Umożliwia łatwą edycję przestrzeni adresowej dowolnego procesu W planach: umożliwienie tzw. swapa czyli trzymania części nieużywanych danych na dysku.

Jądro systemowe: Process manager Możliwość tworzenia zarówno procesów jądra jak i użytkownika Kolejkowanie zadań: round-robin z możliwością ustawienia priorytetu zadania Obsługa stanów zadań Synchronizacja procesów (semafory, blokady typu rw oraz spinlocki) Obsługa sygnałów

Jądro systemowe: VFS Architektura VFS oparta o interfejs i-węzłów Wsparcie dla wielu systemów plików Obsługa uniksowych praw dostępu Obsługa urządzeń blokowych i znakowych Obsługa dowiązań symbolicznych Obsługa cache i-węzłów dla danego punktu montowania Planowany cache dla bloków danych na poziomie sektorów dla urządzeń blokowych

Jądro systemowe: Moduły Moduły w formacie relokowalnym ELF Ładowane bezpośrednio do przestrzeni jądra Moduły mogą importować i wywoływać niektóre funkcje jądra Sterowniki wszystkich do wszystkich urządzeń, systemów plików, etc. jako moduły, brak sterowników w jądrze Moduły pisane przeważnie w C

Struktura katalogów / Główny katalog /boot Bootloader, kernel, initrd /system Aplikacje, pliki konfiguracyjne, etc. /dev Pliki urządzeń /users Katalogi domowe użytkowników

Katalog /system bin pliki wykonywalne etc pliki konfiguracyjne include pliki nagłówkowe lib pliki bibliotek share dane dzielone aplikacji tmp dane tymczasowe

Biblioteki Na chwilę obecną aplikacje linkowane statycznie z bibliotekami W planach: biblioteki dołączane dynamicznie w formacie ELF Implementacja biblioteki standardowej: newlib Wsparcie dla bibliotek takich jak: ncurses, zlib, libpng i inne

Aplikacje Aplikacje w formacie ELF Każda aplikacja uruchamiana we własnej przestrzeni adresowej Synchronizacja aplikacji: spinlock'i, semafory, blokady typu czytelnicy-pisarze Komunikacja międzyprocesowa: sygnały, w planach pamięć dzielona oraz wiadomości Przeniesione popularne aplikacje z systemów UNIX: bash, less, nasm, binutils, nano i inne

Proces bootowania systemu Bootloader ładuje do pamięci kernela (pod adres liniowy 0x00100000) Bootloader ładuje obraz initrd (initial ram-disk) Rozpoczyna się wykonywanie kernela (procedura _start w pliku x86-loader/start.s) Następuje inicjalizacja stronnicowania i zamapodanie kernela pod adres 0xC0000000 Dalej następuje inicjalizacja przerwań i innych modułów zarządzających sprzętem i pamięcią (jak np. DMA)

Proces bootowania systemu cd. Dalej kontrola przekazywana jest procedurze kinit (plik kernel/init.c) Zainicjowane zostają pozostałe moduły kernela (jak np. manager procesów czy VFS) Kernel ładuje do pamięci program /bin/init z initrd Tworzony jest proces dla programu init, jest on dodawany do listy uruchomionych aplikacji. Kernel przełącza się w tzw. IDLE

Proces bootowania systemu cd. Program init na początku parsuje parametry jądra, ładuje niezbędne moduły a następnie montuje główny system plików jako /root Następnie następuje wywołanie funkcji chroot() która ustawia jako katalog / dla inita katalog /root Następnie montowany jest system plików devfs Dalej ładowane są pozostałe moduły jądra, montowane pozostałe systemy plików Na końcu uruchamiany jest program getty.

Pliki konfiguracyjne Pliki konfiguracyjne w /system/etc (odpowiednik /etc z systemu uniksowego) Pliki konfiguracyjne są to zwykłe pliki tekstowe Specyfikacja plików nie jest jeszcze gotowa, najważniejszy jest na razie rozwój jądra Formaty kilku plików (np. passwd) zapożyczone z systemu UNIX

Praca w systemie Po zalogowaniu do systemu

Praca w systemie cd. Polecenia systemowe, przeglądanie systemu plików

Praca w systemie cd. Edycja tekstu edytorem nano

Praca w systemie cd. Przeglądanie pliku kernela narzędziem objdump (pakiet GNU binutils)

Plany na przyszłość Poprawa wszelkich zauważonych błędów Optymalizacja całości kodu Implementacja nowych funkcji jądra Implementacja nowych sterowników i aplikacji Obsługa sieci Graficzny interfejs użytkownika W odległej przyszłosci wydanie wersji 0.1