3.1 Budowa jądra Linux'a Poniższy rysunek przedstawia blokow ą budow ę jądra Linux'a. The System Call Interface



Podobne dokumenty
K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko

Kernel Kompilacja jądra

Linux Kernel III. Character devices

Warstwy systemu Windows 2000

Poziomy wymagań Konieczny K Podstawowy- P Rozszerzający- R Dopełniający- D Uczeń: z zakresu systemów

Q E M U.

BF20 JTAG dla ARM ów z interfejsem USB Instrukcja obsługi

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Struktury systemów operacyjnych

Linux Kernel. Wprowadzenie

linkprog programator USB

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

System komputerowy. System komputerowy

Działanie systemu operacyjnego

System plików Linuksa

Działanie systemu operacyjnego

Tworzenie połączenia szerokopasmowego /PPPoE/ dla sieci SOLARNET w systemie Linux

inode instalacja sterowników USB dla adaptera BT 4.0

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

Działanie systemu operacyjnego

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie

Konfiguracja trybu pracy Real COM dla serwerów NPort:

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Komputery przemysłowe i systemy wbudowane

Typy plików. Oznaczenie f -

Działanie systemu operacyjnego

Instrukcja obsługi programu CMS Dla rejestratorów HANBANG

Jądro systemu operacyjnego

Programator procesorów rodziny AVR AVR-T910

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

PRZETWORNIK USB - RS232

PRZETWORNIK USB - RS232

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

Systemy operacyjne II

SINAMICS G120C STARTER. Tworzenie nowego projektu w trybie offline.

SINAMICS G120C STARTER. Tworzenie nowego projektu w trybie online.

Technologia informacyjna. Urządzenia techniki komputerowej

Charakterystyka systemów plików

Linux Kernel II. Hello kernel - jak napisać pierwszy moduł

Przejściówka, adapter Digitus USB 2.0, wtyk USB A <=> SATA/IDE, 0,53 m

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp

PLAN KONSPEKT. do przeprowadzenia zajęć z przedmiotu. Konfigurowanie systemu Linux do pracy w sieci IP

Informator techniczny

Systemy Operacyjne - Operacje na plikach

Wprowadzenie 5 Rozdział 1. Lokalna sieć komputerowa 7

Rozwiązywanie problemów z konfliktem driverów RFID czytnika 3M RTE8000 i Vicomp VPR600/610/620e

Best Connectivity. UA0042 Adapter USB2.0 na port szeregowy. Instrukcja szybkiej instalacji

Aplikacje Systemów Wbudowanych

WPROWADZENIE DO. Instalowania sterowników Nokia Connectivity Cable Drivers

PLUTO Sterownik bezpieczeństwa Skrócona Instrukcja obsługi oprogramowania. PlutoProgrammingManualPL_v7A.pdf 1

Konfigurowanie sterownika BC8150 firmy Beckhoff wprowadzenie

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

1 Zapoznanie się ze środowiskiem Xenomai.

Wykład 3: Implementacja programów wbudowanych

System plików warstwa logiczna

INSTRUKCJA INSTALACJI DRUKARKI. (Dla Windows CP-D70DW/D707DW)

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

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

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

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

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

Obudowa zewnętrznego dysku USB 2.0, 2.5" (6.35cm)

NWD-210N Bezprzewodowy adapter USB n

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

WPROWADZENIE DO. Instalowania sterowników Nokia Connectivity Cable Drivers

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Wersja polska. Wstęp. Zawartość opakowania. Dane techniczne BT100. Dodatkowe dane techniczne BT100 S W E E X. C O M

raceboard-s Szybki start

DA Podręcznik użytkownika. Kabel USB 2.0 DLA IDE i SATA

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

AG-220 Bezprzewodowa karta sieciowa USB a/g

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

Wykład 4 Moduły jądra i urządzenia blokowe. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Instalacja sterownika portu USB

TECHNIKA MIKROPROCESOROWA II

Jak zaprogramować procesor i. wgrać firmwar-e do yampp3usb. Copyright SOFT COM sp. z o. o.

Budowa komputera KROK PO KROKU! Opis wszystkich części komputera w sposób zrozumiały dla nowatorów

BF30 OCDLINK/USBASP ARM-JTAG/AVR-ISP Programmer-debugger Instrukcja obsługi

Analiza malware Remote Administration Tool (RAT) DarkComet

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

ADAPTER USB INTERFEJS SZEREGOWY

Przełącznik USB 2.0. Podręcznik użytkownika. Typ: DA & DA

1.Wstęp. 2.Generowanie systemu w EDK

UNIWERSALNA KARTA PCI RS-232

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

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji. Sieci komputerowe Laboratorium 8

Konfigurowanie sterownika CP6601 firmy Beckhoff wprowadzenie

DVD MAKER USB2.0 Instrukcja instalacji

INSTRUKCJA U YTKOWNIKA. Karty synchroniczne V.35 TAHOE 931/932 WOLNOή KOMUNIKACJI

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Laboratorium 2 Sieci Komputerowe II Nazwisko Imię Data zajęd

Sieciowe Systemy Operacyjne

Adapter USB do CB32. MDH-SYSTEM ul. Bajkowa 5, Lublin tel./fax lub kom e mail: info@mdh-system.pl

Instalacja i konfiguracja SAS PC Files Server

Kolejki FIFO (łącza nazwane)

Rejestr HKEY_LOCAL_MACHINE

System Linux. 1.1 Historia. PDF created with pdffactory trial version

Podstawy technologii informacyjnej. Beata Kuźmińska

OPIS PROGRAMU OBSŁUGI STEROWNIKA DISOCONT >> DISOCONT MASTER RAPORTY <<

Transkrypt:

3. SYSTEM LINUX 3.1 Budowa jądra Linux'a Poniższy rysunek przedstawia blokow ą budow ę jądra Linux'a. The System Call Interface Process management Memory management Filesystems Device control Networking Kernel subsystems Concurrency multitasking Virtual memory Files and dirs: the VFS Ttys & device access Connectivity Features implemented Archdependent Code Memory manager File system types Block devices Character devices Network subsystem IF drivers Software Support CPU Memory Disks & CDs Consoles, etc. Features implemented as modules Nework interfaces Hardware Rys. 2.1 Schemat blokowy jądra Linux'a. [k3] LINUX Device Drivers 2 nd edition str. 5. Schemat ten przedstawia poglądow ą struktur ę budowy jądra Linux'a. Jak wida ć na diagramie, jądro podzielone jest na następujące bloki: process menagement jądro tworzy i usuwa procesy, jak również jest pośrednikiem pomiędzy urzą dzeniami I/O a procesami. Jest także pośrednikiem pomiędzy samymi procesami (np.: sygnał y, pipe). Scheduler jest managerem procesów w systemie, czyli dba o odpowiedni podzia ł czasu procesora, memory menagement modu ł ten powoduje i ż procesy widzą wirtualn ą przestrze ń adresow ą, co jest możliwe dzięki moduł owi MMU. Linux także można uruchomi ć na procesorach nie wyposaż onych w 1/6

MMU możliwe jest to dzię ki projektowi uclinux[i11]. Rożne części jądra współdziałaj ą z t ą części ą ją dra poprzez zestaw funkcji np.: malloc() / free(), filesystems Linux jest silnie zwią zany z systemem plików np. katalog /proc jest abstrakcyjnym katalogiem nie znajduje się fizycznie na żadnym noś niku. Jest to odzwierciedlenie działającego systemu w pamięci RAM. Katalog /dev jest katalogiem, którego pliki odzwierciedlają urządzenia w systemie np.: /dev/hda to pierwszy dysk podłą czony do kontrolera ATA. Linux obsługuje wiele systemów plików: fat, ntfs, vfat, ext2..., device control każde z urządze ń przyłą czonych do systemu musi mie ć swój driver [sterownik] aby funkcjonowa ć (móc si ę z nim komunikowa ć), networking system operacyjny zajmuje si ę dostarczaniem pakietów od programów do interfejsów sieciowych i na odwrót. Routing pakietów jak i rozwiązywanie nazw s ą zaimplementowane w jądrze. 3.2 Sterowniki urządze ń w systemie Linux Sterownik jest to program, który kontroluje dane urzą dzenie i dostarcza funkcji interfejsu, które umożliwiaj ą innym programom współdziałanie z danym urzą dzeniem. Sterowniki nie musz ą współdziała ć z fizycznym urządzeniem. Przykładem może być urządzenie /dev/random, które jest aktywne prawie w każ dym systemie UNIX. Urzą dzenie to dostarcza bajtów o losowych wartościach. Urządzenie to jest form ą abstrakcji i nie ma nic wspólnego ze sprzętem. Dostęp do sterowników realizowany jest za pomoc ą systemu plików. Katalog /dev to katalog, w którym znajduj ą si ę uchwyty do urządze ń. Wystarczy napisa ć ls -l /dev aby zobaczy ć jakie urządzenia mamy w systemie. Jedyn ą różnic ą jaka wyróżnia pliki urządze ń od innych plików to flaga c lub b w opisie pliku: c - oznacza urządzenie znakowe (character device), b - oznacza urządzenie blokowe (block device). Urządzenia charakteryzuj ą dwa ważne numery: major number - określa w sposób unikalny dane urzą dzenie w systemie, nie może zaistnie ć sytuacja, gdy numer ten się powtórzy, minor number - określa numer uchwytu do danego urządzenia. Pliki urządze ń tworzy si ę przez polecenie systemowe mknod: mknod "nazwa urzadzenia" "typ urzadzenia" "major number" "minor number" System Linux pracuje w dwóch trybach: uż ytkownika - jest to poziom aplikacji działają cych w systemie. 2/6

Procesy działające w tym trybie nie mog ą odwoływa ć się bezpośrednio do sprzętu, nadzorcy - jest to tak zwany kernel mode w tym trybie wykonywany jest kod jądra i moduły jądra. 3.3 Moduły jądra Modu ł jądra to fragment kodu, który może zosta ć dodany do działającego jądra Linux'a zwiększając jego funkcjonalno ść. W Linux'ie występuje kilka rodzajów modułów: character devices [urzą dzenie znakowe] minimalny zestaw funkcji dostarczany przez urzą dzenie tego typu to: open(), close(), write(), read(). Rożnica w dostępie do zwykł ego pliku i do character device jest taka, że po pliku można si ę porusza ć, a w przypadku pliku driver'a w większości przypadków dostę p jest sekwencyjny bez możliwości poruszania si ę. Przykładem może być urządzenie: /dev/ttys0 port szeregowy COM1, block devices [urzą dzenie blokowe] tak samo jak dla character devices, dostęp do tego rodzaju urządze ń nastę puje poprzez katalog /dev. W systemach UNIX dostęp do urzą dzenia blokowego możliwy jest poprzez wielokrotno ść wielkości bloku. Wielkość bloku to zazwyczaj jeden kilobajt albo inna potę ga dwójki. W tym typie urządzenia dane można pobiera ć seriami. Interfejs programisty wzbogacony jest o funkcje umożliwiają ce transfer danych blokami, network interface [interfejs sieciowy] moduł y tego typu udostępniaj ą możliwo ść przesył ania / odbierania danych poprzez interfejs sieciowy do innego host'a. Moduł y Network Interface słu żą do odbierania i wysyłania pakietów. Urzą dzenia tego typu nie maj ą odzwierciedlenia w systemie plików. Interfejsem sieciowym jest równie ż loopback [pętla zwrotna]. Rożnica w dostępie pomiędzy urzą dzeniem blokowym a urządzeniem znakowym jest taka, że dane wewnę trznie reprezentowane s ą w rożny sposób. Dla użytkownika systemu ważne jest to, że urządze ń znakowych nie instaluje si ę. Natomiast urządzenia blokowe instaluje si ę w systemie (polecenie systemowe: mount). Dysk twardy albo CDROM musimy zainstalowa ć, natomiast portu szeregowego nie musimy instalowa ć aby mie ć do niego dostęp. 3.3.1 Kompilacja modułów jądra Kompilacja modułów jądra nie jest trudniejsza niż kompilacja zwykłych aplikacji, nie musimy używa ć dziwnych narzą dzi typu DDK jak jak to jest w przypadku systemu Windows. Załóżmy, że chcemy zbudowa ć prosty modu ł o nazwie: 3/6

pierwszy_modul z pliku źródłowego: pierwszy_modul.c Aby to zrobi ć należy wyda ć następując ą komend ę: gcc D KERNEL D SMP DMODULE I/usr/src/linux/include o pierszy_modul.o c pierszy_modul.c Należy zauważy ć, że podajemy ścieżk ę z plikami nagł ówkowymi dla jądra, dla którego ten ten modu ł jest budowany: -I/usr/src/linux/include. Jest to bardzo ważne w przypadku cross-platform, poniewa ż jeś li ścieżka będzie wskazywała np. na katalog z innym jądrem ni ż ten właściwy to wystąpi ą problemy - nasz modu ł nie będzie działa ć. Użyte dyrektywy kompilatora (-D): KERNEL - informacja, że będzie to modu ł działają cy w trybie uprzywilejowanym - kernel mode, SMP - Symetric Multi Processor jeśli jądro był o kompilowane w trybie wieloprocesorowym moduły także musz ą mieć ustawion ą t ę dyrektyw ę. Jeśli jądro było kompilowane w trybie jednoprocesorowym UP (Uni Processor), to moduły powinny by ć równie ż kompilowane z taką dyrektyw ą, MODULE informacja, że program będzie kompilowany do modułu. 3.3.2 Ładowanie modułu jądra do systemu Należy pamięta ć, aby uaktywni ć w jądrze opcj ę umożliwiającą ładowanie modułów jądra. Należy to zrobi ć w głównym menu konfiguracyjnym jądra: "Loadable module support > Enable loadable module support" Aby załadowa ć modu ł jądra do systemu należy wyda ć polecenie: insmod pierwszy_modul.o Załadowane moduły można wyświetli ć poleceniem: lsmod Do usuwania modułu służy polecenie: rmmod pierwszy_modul Wyświetlenie symboli ją dra (plik widoczny jest po uaktywnieniu dynamicznego ładowania modułów jądra): cat /proc/ksyms 3.3.3 Przykładowy program najprostszy modu ł jądra Projekt z najprostszym modułem jądra znajduje si ę w katalogu kernelsimplestmodule. #include <linux/module.h> kernelsimplestmodule/kernelsimplestmodule.c #if defined(config_smp) #define SMP 4/6

#endif #include <linux/kernel.h> int init_module(void) { printk(kern_debug "Witam > Modol zainstalowany!\n"); return 0; } void cleanup_module(void) { printk(kern_debug "Zegnam > Modol zwolniony!\n"); } kernelsimplestmodule/kernelsimplestmodule.c Funkcja init_module() jest wywoływana w trakcie rejestracji moduł u w systemie czyli po wykonaniu komendy systemowej insmod. Funkcja cleanup_module() jest wywoływana w trakcie usuwania moduł u z systemu czyli po wykonaniu komendy systemowej rmmod. Modu ł kompilujemy dla platformy ARM poleceniem: kernelsimplestmodule/makefile... arm linux gcc D KERNEL I./kernel/linux 2.4.21/include DMODULE Wall O2 c o kernelsimplestmodule.o kernelsimplestmodule.c... kernelsimplestmodule/makefile Zakładamy, że pliki nagłówkowe jądra znajduj ą si ę w katalogu:./kernel/linux 2.4.21/include Zastosowano dodatkowo poziom optymalizacji: -O2. 3.3.4 Przykładowy program modu ł jądra migają cy diodami LED na płycie EP9301 Aby zademonstrowa ć jak działa bardziej realistyczny moduł jądra przyjrzyjmy si ę moduł owi short z katalogu: kernelledblinkmodule. Modu ł ten przeznaczony jest do sterowania portem równoległ ym komputera PC. Jego budowa jest na tyle elastyczna, że użyjemy go jako sterownika portów I/O, które podpięte s ą do dwóch diod świecą cych (LED) w systemie. Aby proces ładowania i zwalniania moduł ów z systemu jak najbardziej zautomatyzowa ć, utworzone zostały skrypty powłoki: make_arm.sh - kompilujący moduły dla platformy EP9301, short_load_led - automatycznie ładujący modu ł short.o do systemu, tworzy uchwyty do urządzenia poleceniem mknod. Po wykonaniu tego skryptu możemy podejrze ć poleceniem ls -la /dev, dodatkowe urządzenia, które zostały utworzone w systemie, short_blink - jest to program, który będzie komunikowa ł si ę ze sterownikiem urzą dzenia, jego zadaniem jest zapalanie i gaszenie 5/6

czerwonej lub zielonej diody LED na płycie, short_unload - automatyczne usuwanie moduł u z systemu oraz uchwytów do urządze ń. 6/6