SO - LAB1 Wojciech Pieprzyca Systemy operacyjne SO - LAB1 Wojciech Pieprzyca
1. Systemy wielodostępne systemy wielodostępowe charakteryzują się możliwością równoczesnej pracy wielu użytkowników w danym systemie mówimy o tzw. obsłudze wielu sesji z użytkownikami, dostęp do systemu poprzez terminale tekstowe i graficzne, możliwość dostępu za pomocą protokołów sieciowych takich jak Telnet, SSH przykłady: UNIX, MVS/OS370, VMS/VAX, Windows Terminal Server (WTS), Citirix.
2. Praca wielodostępna (I) praca wielodostępna w uproszczeniu polega na umożliwieniu dostępu do zasobów (np. mocy obliczeniowej, pamięci, określonych plików i programów) wielu użytkownikom jednocześnie, należy jednak zapewnić sprawiedliwy podział dostępu do zasobów, a przy tym odpowiednio zabezpieczyć system przed niepowołanym dostępem zarówno do całego systemu jak i poszczególnych zasobów pierwsza zasada polega na tym, że każdy z użytkowników ma przydzielony swój identyfikator oraz hasło dostępowe
Praca wielodostępna (II) identyfikatory użytkowników związane są z prawami dostępu (uprawnieniami), dzięki temu administrator systemu może kontrolować dostęp do plików i innych zasobów, dodatkowo użytkownik może być członkiem jednej lub wielu grup użytkowników, dzięki czemu uzyskuje dodatkowe uprawnienia, jest to szczególnie funkcjonalne, gdy w systemie istnieje wielu użytkowników o podobnych uprawnieniach.
Praca wielodostępna (III) tworzeniem nowych użytkowników, grup oraz nadawaniem uprawnień zajmuje się zwykle uprzywilejowany w systemie użytkownik – administrator, w systemach klasy Unix użytkownik ten nosi nazwę root.
3. Wielozadaniowość (I) Wielozadaniowość jest cechą systemu operacyjnego umożliwiającą wykonywanie wielu procesów (programów) na raz. Prawdziwa wielozadaniowość możliwa jest wtedy gdy system ma do dyspozycji więcej niż jeden procesor, w innym przypadku możemy jedynie mówić o quasi-wielozadaniowości. Na jednym procesorze wielozadaniowość sprowadza się do wykonywania po fragmencie każdego z programów w bardzo niewielkich odstępach czasu.
Wielozadaniowość (II) Jak widzimy na rysunku wielozadaniowość polega na wykonywaniu zadań z podziałem czasu. Dodatkowo pomiędzy poszczególnymi fazami wykonania zadań występuje tzw. czas przełączania, co wydłuża czas wykonania obu zadań łącznie. Paradoksalnie więc wykonanie zadań w quasi-wielozadaniowości trwa dłużej niż kolejne, nie równoczesne wykonywanie tych zadań.
4. Wielozadaniowość z wywłaszczaniem W tym rodzaju wielozadaniowości to system operacyjny ściśle nadzoruje czas na jaki dana aplikacja uzyskuje dostęp do zasobów i pozwolenie na wykonywanie się. Przydzielaniem czasu zajmuje się tzw. scheduler. Mechanizm ten w każdej chwili może odebrać dostęp do zasobów jednemu procesowi i przekazać go innemu. Dodatkowo każdy z procesów ma przyporządko-wany priorytet, dzięki czemu scheduler może kierować do wykonania procesy o wyższym priorytecie, a zatrzymywać procesy o niższym priorytecie.
5. Wielozadaniowość bez wywłaszczania W tym przypadku system operacyjny ma niewiele do powiedzenia, cała rola schedulera sprowadza się do przełączania pomiędzy procesami, ale dopiero wtedy, gdy aktualnie wykonujący się proces zwolni dostęp do zasobów. Innymi słowy scheduler nie ma możliwości przerywania procesów. W takim przypadku, aby uzyskać wielozadaniowość to sam programista musi pisać swoje oprogramowanie tak, aby poszczególne procesy zwalniały dostęp do zasobów co jakiś czas.
6. Wieloprogramowość Wieloprogramowość to takie planowanie zadań do wykonania, aby optymalnie wykorzystać moce obliczeniowe systemu. Niektóre z zadań mogą oczekiwać na zasoby lub wprowadzenie danych i nie mogą być aktualnie dalej wykonywane, wówczas system wieloprogramowy przechodzi po prostu do wykonania kolejnego zadania z puli zadań. Kiedy oczekujące zadanie otrzyma zasoby, wówczas system spowrotem przywróci mu stan aktywności. System musi kontrolować wieloprogramowy dostęp tak aby nie zaistniały konflikty w dostępie do zasobów np. pamięci operacyjnej, dyskowej, itp.
7. Zarządzanie pamięcią (I) Cele zarządzania pamięcią to m.in.: - zbieranie informacji o zajętych obszarach pamięci wraz z informacją na temat, który z procesów jest właścicielem tego obszaru - wybieranie tych procesów i tych struktur danych, które mają aktualnie znajdować się w pamięci, - przydzielanie i zwalnianie obszarów pamięci stosownie do aktualnych potrzeb.
Zarządzanie pamięcią (II) W zależności od dostępnej całkowitej wielkości pamięci operacyjnej częściej lub rzadziej dochodzi do wyczerpania tego zasobu, wówczas system musi sobie poradzić przenosząc część aktualnie nieużywanych danych i programów do pamięci pomocniczej (zwykle dyskowej w postaci pliku wymiany). Nazwa pliku wymiany pochodzi od tego, że dane i procesy są przesuwane (wymieniane) pomiędzy pamięcią operacyjną a dyskiem i spowrotem.
8. Model warstwowy (I) Nowoczesne systemy operacyjne posiadają budowę warstwową. Najniższą warstwę stanowi sprzęt, najwyższą jest interfejs użytkownika. Główną cechą modelu jest modularność tzn. że każda warstwa korzysta z usług warstw niższych.
Model warstwowy (II) Najniższa warstwa związana jest ze sprzętem, zawiera procedury bardzo niskiego poziomu, często wykorzystujące oprogramowanie na stałe zapisane w pamięciach stałych sprzętu. Centralną częścią modelu jest jądro zawierające właściwe mechanizmy systemowe. Mechanizmy systemowe można zwykle przydzielić do jednej z dwóch grup: 1) zarządzanie procesami i pamięcią, 2) zarządzanie systemem plików i urządzeniami.
Model warstwowy (III) Powłoka realizuje dwa główne zadania: 1) udostępnia interfejs użytkownika, 2) posiada interpreter języka powłoki umożliwiając użytkownikowi programowanie w języku wysokiego poziomu, 3) realizuje systemowe polecenia wewnętrzne (tzn. domyślnie zaimplementowane wraz z jądrem systemu).
9. System plików (I) Zadania systemu plików: - tworzenie i usuwanie plików, - zapis i odczyt plików, - zarządzanie obszarem pamięci pomocniczej (plik wymiany), - odwoływanie się do plików poprzez nazwy symboliczne, - ochrona plików przed skutkami awarii, - współużywalność plików.
System plików (II) W systemach klasy Unix znajdują się tylko pliki. Oznacza to, że również katalogi traktowane są jako pliki specjalne. Podobnie fizyczne urządzenia również identyfikowane są i można się do nich odwoływać poprzez pliki specjalne. Dysk podzielony jest na bloki: Boot block (blok systemowy) Super block (blok identyfikacyjny) tablica i-wezlow bloki danych Boot block – położony jest na początku systemu plików, zawiera dane o dysku oraz program ładujący system operacyjny
System plików (III) Super block – blok identyfikacyjny, zawiera informacje o rozmiarze systemu plików (liczbie bloków), podziale na partycje, itp. Bloki danych – bloki danych służą do bezpośredniego przechowywania danych i nie są związane z zarządzaniem systemem plików. Jeden blok może należeć tylko do jednego pliku lub być wolny. Lista i-węzłów – każdemu plikowi na dysku odpowiada i-węzeł (węzeł indeksu)
System plików (IV) Każdy z i-węzłów przechowuje następujące informacje: tryb pliku (typ pliku, prawa dostępu), rozmiar pliku w bajtach, identyfikatory właściciela UID, identyfikator grupy GID, daty i czasy: - utworzenia pliku, - ostatniej modyfikacji zawartości, - ostatniej zmiany atrybutów, adresy bloków danych: 12 adresów bezpośrednich, wskazujących bloki danych, 1 adres pośredni, wskazujący blok dyskowy zawierający właściwe adresy bloków danych, 1 adres podwójnie pośredni, zawierający dwa poziomy wskazań pośrednich bloków z adresami, 1 adres potrójnie pośredni, zawierający trzy poziomy wskazań pośrednich bloków z adresami.
System plików (V) Logiczny sposób uporządkowania plików zakłada zastosowanie struktury hierarchicznej. Szczytem struktury jest tzw. korzeń drzewa plików (root). Najważniejsze podkatalogi katalogu głównego w systemach Unix: /bin - pliki binarne używane przez programy zawarte w /usr. /sbin - narzędzia służące do administrowania systemem, /usr - większość plików i programów systemu operacyjnego. Do typowych jego podkatalogów zaliczają się /bin, /sbin oraz /lib. /etc - pliki konfiguracyjne. /var - pliki tymczasowe, kolejki wydruków oraz skrzynki pocztowe, /dev - pliki urządzeń, /tmp - pliki tymczasowe, /home - katalogi domowe użytkowników, /lib - współdzielone biblioteki, /boot - pliki rozruchowe, /man - strony pomocy man.
10. Interpretatory poleceń Interpretatorem poleceń inaczej nazywana jest powłoka (shell). Każde polecenie wpisane z klawiatury zostaje zamienione przez powłokę na język zrozumiały dla jądra systemu, które może odpowiednio zareagować na to polecenie. Istnieje wiele różnych powłok. Najpopularniejsze z nich to: - Bourne Again Shell (bash), która jest bazowana na powłoce Bourne`a i stanowi standard w Linuxie, - powłoka C (csh), która jest bazowana na składni języka C i zawiera wiele wygodnych funkcji, - Tcsh - rozszerzona wersja csh, która w wielu dystrybucjach Linuxa występuje zamiast csh.
11. Praca w tle Praca w tle umożliwia wykonywanie kilku zadań jednocześnie, np. gdy jedno zadanie wykonuje czasochłonne obliczenia, a chcemy jednocześnie korzystać z konsoli terminala. W systemach klasy Unix, aby uruchomić zadanie w tle wystarczy w linii komend wywołać program z dodatkowym znacznikiem &, co spowoduje, że program zostanie uruchomiony w tle.
12. Niektóre polecenia Linuxa ls – wyświetlenie listy plików i katalogów z bieżącej ścieżki, cd – zmiana katalogu, mkdir – tworzenie katalogu, rmdir – usuwanie katalogu, rm – usuwanie pliku, cp – kopiowanie plików, chmod – ustalenie praw dostępu, cat – wyświetlanie plików, finger – lista aktualnie zalogowanych użytkowników, df, du – informacje na temat objętości dysków, plików, katalogów, dostępnego miejsca, itp. ps – lista uruchomionych procesów.