290 likes | 435 Views
Środowisko pracy informatyka zima 2014. Wykład 3 Budowa systemu Unix / Linux. dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz. Architektura systemu operacyjnego. Architektura systemu operacyjnego.
E N D
Środowisko pracy informatykazima 2014 Wykład 3 Budowa systemu Unix / Linux dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz
Architektura systemu operacyjnego Jądro systemu operacyjnego kontroluje bezpośrednio podległy sprzęt. Zapewnia sterowniki niskopoziomowe urządzeń, funkcje zarządzania pamięcią i procesorem (np. obsługę przerwań sprzętowych, podział procesora pomiędzy wiele programów, alokację pamięci dla programów itp.) Podstawowe niezależne od sprzętu usługi jądra są dostępne dla programów wyższego poziomu poprzez bibliotekę wywołań systemowych (np. usługi tworzenia pliku, rozpoczęcie wykonywania programu, otwarcie logicznego połączenia sieciowego). Aplikacje (np. edytory tekstu, arkusze kalkulacyjne) oraz narzędzia systemowe (proste programy dostarczane wraz z systemem operacyjnym, np. program wyszukujący łańcuch tekstowy) korzystają z wywołań systemowych. Są uruchamiane poprzez powłokę (linię poleceń) lub graficzny interfejs użytkownika.
Początki UNIXa 1965 MULTICS (MIT+ AT&T Bell Labs + GE) MULTiplexedInformation and Computing Service 1969 AT&T Bell Labs wycofuje się z projektu; Ken Thompson i Dennis Ritchie (Bell Labs) pracując na własną rękę, tworzą w oparciu o idee MULTICSa nowy system UNICS, (UNiplexedInformation and Computing Service), który implementują na PDP-7
Początki UNIXa, cd 1971 AT&TUNIX First Edition (11/3/1971)pierwsza oficjalna wersja systemu, zawierająca procesor tekstu, zaimplementowana na PDP-11 1973 3-th Edition UNIX (3/73) pojawiły się potoki(pipes) i filtry oraz kompilator języka C. Jądro systemu napisane w asemblerze. 1973 4-th Edition UNIX (11/73) jądro systemu napisane w C. 1975 6-th Edition UNIX (V6 UNIX) pierwsza wersja systemu powszechnie dostępna poza Bell Labs.
BSD UNIX Na skutek problemów prawnych AT&T nie mogło zarabiać na sprzedaży UNIXa – postanowiło więc udostępnić go uniwersytetom, gdzie system był dalej rozwijany. 1977 Bill Joy z Uniwersytetu Kalifornijskiego w Berkeley wydaje pierwszą wersję Berkeley Software Distribution, znaną jako 1BSD. 1980 W następstwie otrzymania kontraktu DARPA (DefenseAdvancedResearchProjectsAgency) Bill Joy tworzy w Berkeley kolejną dystrybucję: 4.1BSD. 1984 Powstaje 4.2BSD zawierająca TCP/IP. Rok wcześniej Bill Joy odchodzi, by stworzyć Sun Microsystems. 1986 Powstaje poprawiona wersja 4.3BSD. 1994 Powstaje ostatnia wersja z Berkeley: 4.4BSD.
AT&T UNIX 1982 UNIX System Group (AT&T) wypuszcza System III UNIX. 1983 UNIX System Development Labs (AT&T) wypuszcza System V UNIX Release 1(SVR1). 1984 Powstaje System V UNIX Release 2(SVR2). 1985 Pojawia się SVR3 zawierająca m.in. NFS (Network File System). 1992 UNIX System Labs (AT&T) wypuszcza SVR4.2. 1993 Novell kupuje USL od (AT&T) i wypuszcza SVR4.2MP. 1995 SCO (Santa Cruz Operation) kupuje Uniksa od Novella. 2001 Caldera (dystrybutor Linuxa) kupuje Uniksa od SCO.
Systemy z rodziny UNIX AIX http://www.ibm.com/aix/ FreeBSD http://www.freebsd.org/ HP-UX http://www.hp.com/go/hpux/ Linux http://www.kernel.org/ Mac OS X http://www.apple.com/macosx/ Minix http://www.minix3.org/ NetBSD http://www.netbsd.org/ OpenBSD http://www.openbsd.org/ SCO OpenServer http://www.sco.com/products/openserver6/ OpenSolaris http://www.opensolaris.com/, http://www.opensolaris.org/ Android http://www.android.com/
Odmiany UNIXa – przykłady Odmiany oparte o SYSV są bardziej konserwatywne, lecz mają lepsze wsparcie niż te oparte o BSD. Ostatnie wersje SYSV (SVR4) i BSD Unix są bardzo podobne – różnią się strukturą systemu plików, nazwami narzędzi systemowych i opcji oraz bibliotekami wywołań systemowych. Różnice pomiędzy SYSV a BSD Przykład Typowy SYSV Typowy BSD nazwa jądra /unix /vmunix skrypty rozruchowe katalogi /etc/rc.d pliki /etc/rc.* zamontowane systemy plików /etc/mnttab /etc/mtab domyślna powłoka sh, kshcsh, tcsh rozmiar bloku systemu plików 512B – 2kB 4kB – 8kB podsystem druku lp, lpstat, cancellpr, lpq, lprm polecenie echo (bez nowego wiersza) echo "\c" echo -n polecenie ‘ps’ ps –faeps -aux wywołanie wielokrotnego oczekiwania pollselect wywołanie dostępu do pamięci memset, memcpybzero, bcopy
Warstwy Unixa z punktu widzenia użytkownika Aplikacje – tysiące programów, obsługiwanych bądź z linii poleceń , bądź przez środowisko graficzne. Menedżery okien i środowiska graficzne – oprogramowanie korzystające z systemu X odpowiedzialne za wygląd interfejsu, mogące być również kompletnymi środowiskami pracy (np. GNOME, KDE); X Window– system graficznyudostepniający obsługęokien, menu, ikon, myszy i innych elementów typowych dla graficznego interfejsu użytkownika Powłoka – tekstowy interfejs użytkownika, pozwalający wpisywać polecenia, wykonywać je i wyświetlać wyniki; Narzędzia i biblioteki udostępniające programom użytkownika funkcje jądra Jądro systemu – system operacyjny niskiego poziomu, służący do komunikacji ze sprzętem zainstalowanym w komputerze;
Jądromonolityczne UNIXa Jądro monolityczne jest jednym programem, podzielonym na podprogramy, które wzajemnie są ze sobą powiązane. Brak w nich wyraźnej struktury, lub jest ona dosyć luźna. Przykłady oprócz Unixa to: MS-DOS, MS-Windows 95, 98, ME. Użytkownicy JĄDRO Interfejs pomiędzy wywołaniami systemowymi a resztą jądra Programy użytkowników, shell, biblioteki systemowe Interfejs pomiędzy jądrem a sprzętem terminale Pamięć masowa Pamięć operacyjna procesor Oryginalne jądro systemu Unix było zaprojektowane dla sprzętu nieposiadającego żadnego mechanizmu ochrony. Mimo to twórcy systemu postanowili dokładnie odseparować procesy użytkownika od sprzętu.
Czym jest Linux Akronim rekursywny: Linux IsNot UniX Linux jest to bezpłatna wersja systemu operacyjnego UNIX o otwartym źródle. praktycznie: nazwę „Linux” odnosimy do całego systemu operacyjnego: jądra wraz z aplikacjami. technicznie: Linux jest to jądro systemu; Pozostałe elementy systemu (narzędzia, aplikacje itp.) można dobrać na wiele sposobów – skorzystać z tysięcy rozwijanych niezależnie projektów. Dobór tych elementów systemu i ewentualne uzupełnienie własnym oprogramowaniem przez konkretną osobę, organizację lub firmę nosi nazwę dystrybucji. Linus Torvalds, twórca Linuxa Dystrybucji Linuxa nadających się do zastosowania na danym stanowisku może być bardzo wiele. Często użytkownicy kierują się dostępnością dystrybucji dla danej architektury, dotychczasowym doświadczeniem, poradami środowiska, oferowanym (także odpłatnie) wsparciem oraz własnym gustem.
Dystrybucje Linuxa – wskazówki Czym kierować się w wyborze dystrybucji Instalacja systemu – jak pracuje się z instalatorem dystrybucji? Konfiguracja systemu – jak łatwo/wygodnie konfiguruje się do działania urządzenia, usługi i środowiska do wymagań użytkownika? Instalacja i aktualizacja oprogramowania – jak łatwo/wygodnie instaluje się opcjonalne składniki systemu (biblioteki, aplikacje itp.) i jak często są one aktualizowane do najnowszych wersji? Dokumentacja i wsparcie – czy system jest dobrze udokumentowany, czy zależy nam na firmowym wsparciu (zazwyczaj odpłatnie) i jak szerokie jest wsparcie społeczności użytkowników?
Dystrybucje Linuxa – lista CentOS http://www.centos.org/ Debian http://www.debian.org/index.pl.html Fedora http://fedoraproject.org/pl/ Gentoo http://www.gentoo.org/ Knoppix http://www.knopper.net/knoppix/index-en.html Mandriva http://www.mandriva.com/pl/ openSUSE http://pl.opensuse.org/ RedHat http://www.redhat.com/ Slackware http://www.slackware.com/ Ubuntu http://www.ubuntu.com/ Xandros http://www.xandros.com/
Dystrybucje Linuxa – skąd pobrać sklepy detaliczne – ze względu na częste zmiany wersji niewiele dystrybucji jest rozprowadzanych w ten sposób; sklepy internetowe – znacznie częstsza forma sprzedaży dystrybucji, zazwyczaj dystrybucję można nabyć również bezpośrednio ze strony producenta; serwery udostępniające oprogramowanie – główne źródło pozyskiwania dystrybucji rozprowadzanych nieodpłatnie (również ze stron twórców i producentów); materiały dołączane do czasopism, czasami z dołączonym oprogramowaniem dodatkowym (własnościowym) lub promocje dystrybucji komercyjnych (wersje demonstracyjne lub bez wsparcia). Uwaga: większość dystrybucji Linuxa jest bezpłatnych, jednak aby legalnie posługiwać się systemem operacyjnym należy zakupić legalny nośnik (płytę CD lub DVD)
Jądro systemu Linux Jądro zawiera wsparcie dla sterowników sprzętowych dla wielu urządzeń PC (kart graficznych, sieciowych, dysków twardych itp.), zaawansowane funkcje zarządzania procesorem i pamięcią oraz wsparcie dla wielu różnych rodzajów systemów plików (łącznie z dyskietkami DOS, pendrive’ami i standardem ISO9660 dla CD-ROM i DVD-ROM). Jądro implementuje większość wywołań systemowych BSD i SYSV, jak również wywołania systemowe opisane w specyfikacji POSIX.1. Jądro Linuxa jest przykładem jądra monolitycznego z modułami – możliwość ładowanie w trakcie działania jądra pewnych jego fragmentów (np.: sterowników urządzeń) do pamięci, na podobnej zasadzie, jak programy użytkowników ładują biblioteki współdzielone. Jądro takie jest wyposażone w dodatkowe elementy: tablicę symboli, mechanizm ładowania modułu i mechanizm śledzenia zależności między modułami. Jądro w surowej postaci binarnej (ładowane bezpośrednio do pamięci w czasie uruchamiania) typowo znajduje się w pliku /boot/vmlinuz, podczas gdy źródła zazwyczaj można znaleźć w /usr/src/linux. Najnowsząwersję jądraLinuxa możnapobrać z http://www.kernel.org.
Powłoka i GUI Linuksa Dostępne dwie formy wprowadzania poleceń: tekstowa powłoka linii poleceń, podobna do spotykanej w większości systemów UNIX ‘sh’ – powłoka Bourne’a, ‘bash’ – „Bourne again shell” ‘csh’ –powłokajęzyka C); interfejs graficzny (GUI) – menedżery okien KDE lub GNOME.
Narzędzia systemowe Linuksa Każde narzędzie systemowe, którego można się spodziewać w standardowych implementacjach UNIX’a (włączając narzędzia systemowe opisane w specyfikacji POSIX.2) jest przeniesione do Linuksa. Narzędzia systemowe zaprojektowano tak, aby wykonywać efektywnie pojedyncze zadania. Użytkownik może często rozwiązywać problem łącząc te narzędzia zamiast budować jednolitą aplikację. Narzędzia systemowe Linuksa zawierają również programy zwane demonami, które zapewniają zdalne usługi sieciowe i administracyjne. Demon (łac. dæmonlubang. Disk And Executing MONitor) zazwyczaj jest uruchamiany automatycznie podczas startu systemu i przez większość czasu oczekuje na pojawienie się zdarzenia.
Przykłady demonów w Linuksie atd and crond: Task scheduler daemons bootparmd and dhcpd: Dynamic Host Configuration Protocol and Internet Bootstrap Protocol servers fingerd: Finger protocol server ftpd: File Transfer Protocol (FTP) server httpd: Hypertext Transfer Protocol (HTTP) daemon (web server) identd: Provides the identity of a user of a particular TCP connection inetd and xinetd: Internet Superserver Daemon amed: A Domain Name System (DNS) server daemon nfsd: Network File System (NFS) daemon ntpd: Network Time Protocol (NTP) service daemon portmap, rpcbind: SunRPC port mapper mysqld, postgresql: Database server daemons routed, gated: Manages routing tables nfsd, mountd, statd: Part of typical Network File System implementation rwhod: Maintains the database used by the rwho and ruptime tools sendmail, postfix: mail transfer agent daemons snmpd: Simple Network Management Protocol Daemon syslogd: Syslog daemon telnetd and sshd: Telnet and Secure Shell server daemons ypbind: A bind server for Network Information Service ("Yellow Pages")
Programy aplikacji w Linuksie Dystrybucja Linuksa typowo zawiera wiele użytecznych aplikacji, takich jak np. edytor tekstu ‘emacs’, przeglądarka obrazów ‘xv’, kompilator C ‘gcc’, kompilator C++ ‘g++’, program rysujący ‘xfig’, język składu tekstu ‘latex’, pakiet biurowy OpenOffice.org ‘ooffice’. RedhatLinux i inne dystrybucje zawierają również Redhat Program Manager ‘rpm’, który czyni łatwym instalację i deinstalację programów aplikacji.
Podstawowe polecenia Linuksa Poleceniawejścia i wyjścia
Podstawowe polecenia Linuksa Operacje na plikach i katalogach
Podstawowe polecenia Linuksa Operacje na plikach i katalogach
Podstawowe polecenia Linuksa Operacje na procesach
Podstawowe polecenia Linuksa Uzyskiwanie pomocy lub informacji
Podstawowe polecenia Linuksa Instalacja i deinstalacja aplikacji