Systemy operacyjne

11:02:07

str. 24

Adam Naumowicz: Systemy operacyjne

Opis przedmiotu

11:02:07

str. 24

Adam Naumowicz: Systemy operacyjne

Wykład (30 godz.)

program wykładu

Laboratorium (30 godz.)

LINUX

serwer / stacja robocza?

Egzamin na koniec semestru (test)

materiał z wykładu

ok. 20 pytań, na które należy udzielić odpowiedzi (punktowane 0, 1 lub 2 punkty)

William Stallings - Systemy operacyjne (seria Szkoła programowania, ok. 700 str.)

11:02:07

str. 24

Adam Naumowicz: Systemy operacyjne

Literatura dodatkowa:

Aeleen Frisch – Essential System Administration (O'Reilly & Associates, ok. 450 str.)

11:02:08

str. 24

Adam Naumowicz: Systemy operacyjne

Literatura dodatkowa:

Stephen Prata, Donald Martin – Biblia systemu UNIX V. Polecenia i programy użytkowe (rok wyd. 1994, ok. 450 str.)

11:02:08

str. 24

Adam Naumowicz: Systemy operacyjne

Literatura dodatkowa:

Craig Hunt – TCP/IP Network Administration (O'Reilly & Associates, ok. 470 str.)

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Literatura dodatkowa:

Z ostatniej chwili – powstał „ważny” serwis internetowy: http://wazniak.mimuw.edu.pl

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Literatura dodatkowa:

(...)

Przekazujemy do rąk wykładowców i studentów informatyki materiały dydaktyczne przygotowane w ramach projektu Opracowanie programów nauczania na odległość na kierunku studiów wyższych – Informatyka. Główne cele projektu to:

Opracowanie programów nauczania dla studiów informatycznych I i II stopnia.

Przygotowanie elektronicznych materiałów dydaktycznych, w tym pakietów multimedialnych do prowadzenia zajęć zdalnych.

Ministerstwo Edukacji Narodowej zakwalifikowało projekt do realizacji w maju 2006 roku. Wykonanie projektu sfinansowano ze środków Europejskiego Funduszu Społecznego z programu Sektorowy Program Operacyjny Rozwój Zasobów Ludzkich 2004 - 2006.

Tylko uczelnie o różnorodnych i uzupełniających się profilach oraz dużych doświadczeniach dydaktycznych były w stanie zrealizować tak złożony i trudny projekt. Dlatego do realizacji projektu powołano partnerstwo czterech, czołowych polskich uczelni - Uniwersytetu Warszawskiego, Uniwersytetu Jagiellońskiego, Politechniki Poznańskiej i Politechniki Warszawskiej.

(...)

Program wykładu

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Ogólna charakterystyka systemów Unixowych.

Rys historyczny.

Identyfikacja – użytkownicy, grupy.

Struktura katalogów - polecenia:	cd, ls, mkdir, rm, rmdir, cp, mv, pwd.

System plików – prawa dostępu, polecenia:	chmod, chown, chgrp. Bity SUID i SGID.

Dowiązania statyczne i symboliczne.

Program wykładu - c.d.

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Wykorzystanie mechanizmu pipeline oraz redirekcji do budowania potoków poleceń.

Użycie poleceń:	echo, cat, more, less, tee, head, tail, wc, sort, uniq, rev.

Archiwizacja i kompresja danych przy pomocy standardowych narzędzi systemu Unix.

Standardowe programy archiwizujące: tar, cpio.

Przegląd standardowych programów kompresujących: gzip, compress, pack, zip.

Kodowanie plików binarnych do postaci tekstowej przy pomocy programów uuencode i uudecode.

Program wykładu - c.d.

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Nazwy wieloznaczne oraz wyrażenia regularne.

Opis znaków specjalnych powłoki.

Definicja pełnych i ograniczonych wyrażeń	regularnych.

Użycie programów: grep, fgrep, egrep.

Przegląd podstawowych narzędzi CLI (command line interface).

Opis możliwości i zastosowań programów: find, tr, sed, awk, diff, patch.

Program wykładu - c.d.

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Skrypty powłoki systemowej.

Przegląd konstrukcji interpretera poleceń Bash.

Użycie zmiennych środowiskowych i cytowania poleceń.

Zarządzanie procesami.

Opis pojęcia procesu w systemie Unix.

Użycie polecenia ps.

Wysyłanie sygnałów do	działających procesów – polecenia kill i nice.

Praca w tle – polecenia jobs, fg, nohup.

Program wykładu - c.d.

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Proces startu systemu Unix.

Etapy startu systemu Unix.

Ładowanie jądra.

Standardowe skrypty startowe różnych	odmian Unixa.

Poziomy pracy systemu.

Partycje w systemie plików Unixa.

Typy partycji.

Tworzenie i formatowanie partycji.

Montowanie partycji w systemie	plików. System plików NFS.

Zestaw narzędzi ltools do bezpośredniego dostępu do napędów dyskietek w systemie Linux.

Program wykładu - c.d.

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Standardowe demony.

Opis działania standardowych demonów: inetd, atd, crond.

Podstawowe protokoły i usługi sieciowe.

Wprowadzenie do zagadnień sieci komputerowych.

Identyfikacja i przepływ	informacji w sieci Internet.

Użycie klientów protokołów: telnet, ftp, http.

Program wykładu - c.d.

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Podstawowe własności i działanie systemu
X-Window.

Przegląd podstawowych własności graficznego interfejsu X-Window.

Rutynowe prace administratora systemu Unix.

Instalacja i aktualizacja systemu.

Administracja kontami użytkowników oraz zasobami dyskowymi.

Czym jest system operacyjny?

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

“An elephant is a mouse with an Operating System.” - D. Knuth

oprogramowanie nadzorujące pracę systemu komputerowego, które:

przyjmuje zlecenia przekazywane przez programy użytkowe (lub samych użytkowników)

wykonuje je (przydzielając im zasoby komputera: pamięć, czas procesora, urządzenia zewnętrzne, itp.)

działa zawsze (program startuje jako pierwszy i kończy pracę jako ostatni)

Fragment historii systemu UNIX

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

1960s – AT&T Bell Labs. + MIT = MULTICS

1969 – Ken Thompson, Dennis Ritchie, Brian Kernighan – UNIX jako przeciwieństwo (DEC PDP-7, single user)

1973 – D. Ritchie (język programowania C)

AT&T UNIX kontra BSD (standard POSIX)

1991 – Fin Linus Torvalds – LINUX

FSF, GNU, GPL

Fragment historii systemów MicroSoft Windows

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

1981 – MSDOS 1.0, IBM 8086

1983 – DOS 2.0, PC XT – dysk twardy

1984 – DOS 3.0, PC AT 80286 – adresowanie pamięci nie wykorzystane przez DOS

DOS 3.1 – obsługa sieci

1987 – PS/2 80386, DOS 3.3

1990 – WINDOWS 3.0 – dorównywał Macintosh

1993 – NT 3.1 – IBM OS/2 – podział

NT 4 / WINDOWS 95 – ten sam interface graficzny

98, Millenium, 2000, XP, 2003, Vista,...

Charakterystyka systemu UNIX

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

wieloplatformowość

PC <-> Cray

wielozadaniowość

wielodostępność

wielu użytkowników

praca lokalna i zdalna (sieć)

Elementy filozofii systemu UNIX

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Reguła KISS

“Keep it small, stupid!”

“Keep it small and simple”

BUZI:

“Bez Udziwnień Zapisu, Idioto!”

“Wszystko jest plikiem”

Logowanie do systemu

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Interface użytkownika

11:02:09

str. 24

Adam Naumowicz: Systemy operacyjne

Podstawowe polecenia UNIX / DOS

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Dowiązania statyczne i symboliczne

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Prawa dostępu do plików

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Standardowe deskryptory plikowe

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

program

stdin (0)

stderr (2)

stdout (1)

Łączenie programów/filtrów w potok

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

stdin (0)

stderr (2)

stdout (1)

|

prog1

prog2

stdin (0)

stdout (1)

stderr (2)

stderr (2)

Archiwizacja danych

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Korzyści

kopie bezpieczeństwa

kopiowanie / przenoszenie pomiędzy systemami

łączenie wielu plików w jedno archiwum
(jeden i-node)

porządkowanie danych (biblioteki)

Standardowe narzędzia

ar (biblioteki procedur)

cpio (drzewo katalogów)

tar (napędy taśmowe)

Kompresja danych

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Historia

1951 - Huffman coding (prefix-free code)

MIT PhD student (Robert M. Fano) - egzamin/praca

A Method for the Construction of Minimum-Redundancy Codes

lepszy niż Shannon-Fano coding (bottom-up / top-down)

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Historia - c.d.

1977 - Abraham Lempel, Jacob Ziv

LZ77

A Universal Algorithm for Sequential Data Compression

1978 – LZ78 (słownik)

1984 – Terry Welch

LZW (szybsza obsługa słownika)

1985,1986 (IBM) – patenty

1987 – GIF (CompuServe)

1994 – orzeczenie: trzeba płacić za LZW w GIF

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Podstawowe narzędzia

pack (unpack, pcat)

Huffman

~50% kompresji (opcja -f)

rozszerzenie .z

compress (uncompress, zcat)

LZW

~50-60% kompresji

rozszerzenie .Z

gzip (gunzip, gzcat)

LZW w wersji PKZIP

~60-70% kompresji

rozszerzenie .gz

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Idea algorytmu Huffmana

1. Start with as many leaves as there are symbols.

2. Push all leaf nodes into the heap.

3. While there is more than one node in the heap:

4. Remove two nodes with the lowest weight from the heap.

5. If the heap was storing copies of node data rather than pointers to nodes in final storage for the tree, move these nodes to final storage.

6. Create a new internal node, with the two just-removed nodes as children (either node can be either child) and the sum of their weights as the new weight.

7. Update the parent links in the two just-removed nodes to point to the just-created parent node.

8. Push the new node into the heap.

9. The remaining node is the root node; the tree has now been generated.

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Idea algorytmu LZW

(Więcej na ten temat: http://www.dogma.net/markn/articles/lzw/lzw.htm)

STRING = get input character

WHILE there are still input characters DO

CHARACTER = get input character

IF STRING+CHARACTER is in the string table then

STRING = STRING+character

ELSE

output the code for STRING

add STRING+CHARACTER to the string table

STRING = CHARACTER

END of IF

END of WHILE

output the code for STRING

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

* - dowolny ciąg znaków (także pusty)

znak . na początku musi być podany bezpośrednio

znak . po / musi być podany bezpośrednio

znak / musi być podany bezpośrednio

? - jeden dowolny znak

[lista] – dowolny znak z podanej listy

wielkość liter

zakresy, np. [a-z]

łączenie, np. [A-Zabc]

[!lista] – dowolny znak spoza listy

Nazwy wieloznaczne (metaznaki)

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

.profile	bagfile	bgfile	canfile

ashcan	bigfile	boogfile	sleepy

*file

.*file

*ashcan

b?gfile

*can*

b[aou]gfile

[ac]*

[c-t]*

[!ac]*

Przykłady użycia metaznaków

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

podstawowe wyrażenia regularne

ograniczone wyrażenia regularne

pełne wyrażenia regularne

Uwaga: ograniczone ⊈ pełne

Wyrażenia regularne (regular expressions)

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

c – znak niebędący znakiem specjalnym

znaki specjalne: \, [, . oraz w pewnych kontekstach ], *, ^, $

. - jeden dowolny znak

\ - pozbawia znak specjalny jego znaczenia

[lista] – jeden ze znaków z listy

[aeiou], [a-z], [AEIOUa-m]

l[ao]s -> 'las' lub 'los' ale nie 'laos'

[^lista] – jeden znak spoza listy

k[^oa]t -> 'kit', 'ket', ... ale nie 'kot' ani 'kat'

* - zero lub więcej wystąpień poprzedzającego znaku

^ - początek linii (jeśli jest pierwszym znakiem wyrażenia)

$ - koniec linii (jeśli jest ostatnim znakiem wyrażenia)

Podstawowe wyrażenia regularne

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

[Kk]ot

[Kk][ao]t

s[aeiou]*k

^\.

^$.*\.$

^[a-z]* 100

Przykłady

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Podwyrażenia

\( i \)

odwołanie poprzez \1, \2, itd.

Bim \(Bom\) \1

Bim Bom Bom

\(hau\) \(miau\) \2 \1

hau miau miau hau

rozszerzenia

\{n\} - dokładnie n wystąpień znaku poprzedzającego

\{n,\} - przynajmniej n wystapień

\{n,m\} - od n do m wystąpień

Ograniczone wyrażenia regularne (ed, sed, grep)

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

+ - jedno lub więcej wystapień poprzedniego wyrażenia

go+d -> 'god', 'good', 'goood', itd., ale nie 'gd'

? - zero lub jedno wystapienie poprzedniego wyrażenia

go?d -> 'gd' lub 'god', ale nie 'good'

| - jedno z dwóch rozdzielonych wyrażeń

kot|pies

( oraz ) - grupowanie wyrażeń

go(go)? -> 'go' lub 'gogo'

gogo? -> 'gog' lub 'gogo'

priorytet (od najsilniejszego): nawiasy, *, ?, +, konkatenacja, |

Pełne wyrażenia regularne (egrep, awk)

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

[a-z] +[0-9]

[a-z]+[0-9]?

Tony|Anthony

Tony|Anthony Quinn

(Tony|Anthony) Quinn

(so?)+

tak: 'so', 'sos', 'sso', 'soso', 'sosssssosos', itd.

nie: 'soo', 'soos', itd.

Przykłady

11:02:10

str. 24

Adam Naumowicz: Systemy operacyjne

Edytory:

ed

sed

vi

Porównywanie plików:

diff (DOS: fc.exe)

patch

rcs/cvs/svn

Przetwarzanie danych tekstowych

awk

perl

Podstawowe narzędzia CLI (command line interface)

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

składnia: ed [-p prompt] [file] [< commands]

tryby pracy (polecenia/tekstowy) – obsługa ograniczonych wyrażeń regularnych, praca na buforze

znaczniki (adresy)

. - bieżąca linia, $ - ostatnia linia, n – linia o numerze n, 'c - mark

/wyr/ - pierwsza linia odpowiadająca wyrażeniu, // - powtarza ostatnio użyty wzorzec

?wyr? - poszukuje w tył

+, -, +n, -n (adresy wzgl. bieżącej linii) adr+n, adr-n (wzgl. adr)

adr1,adr2 – zakres, adr1;adr2 – zakres i bieżąca:=adr1

, = 1,$

; = .,$

Edytor ed

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

przykłady poleceń

[.]a – tryb tekstowy, pojedynczy znak '.' w linii kończy

[.]i – wstawia tekst przed linią

[.,.]d – kasuje

e file – wstawia plik

f name – zmienia nazwę

[.]kc – markuje jako c

[.,.]p, [.,.]l, [.,.]n – wypisuje linie, (l – znaki specjalne ósemkowo, n- z numerami)

[1,$]r file, [$]r !prog – wczytuje plik lub output programu

[1,$]w file, [$]r !prog – zapisuje do pliku lub jako input programu

! prog – uruchamia program

Edytor ed - c.d.

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

[1,$]g/wyr/lista poleceń (każde polecenie w osobnej linii zakończonej \ - bez ostatniej)

[1,$]v/wyr/lista poleceń – działa gdy nie znajdzie wyr w linii

[1,$]s/wyr/napis/[g] – wymienia wyr na napis (z g – wszystkie wystapienia)

[.,.]m adr – move pod adres

[.,.]t adr – copy za adr

u – undo

q - quit

Edytor ed - c.d.

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

składnia: sed [-e 'skrypt'] [-f plik_skryptu] [-n (drukowanie tylko z p)]

bufor wzorca i cykl

komendy:

a\, c\, i\ - tekst za \

: etykieta, b etykieta – umożliwia skoki

h (hold), g (get), x (exchange) - obsługa bufora przechowywania

s/wyr/napis/[1-512,g,p (print),w file – dodaje bufor wzorca do pliku jeśli nastąpiła wymiana]

y/napis1/napis2/ = tr

GNU sed: adresowanie first~step, np. sed -n -e '1~3 p'

Edytor strumieniowy sed

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Proces: fragment programu posiadający własną przestrzeń adresową

np. ls – jeden proces

|, &&, || - każdy segment

Typy procesów w systemie UNIX

interaktywne

terminal, foreground, background

batch

kolejka (que), nie są skojarzone z terminalem

daemon

czekają aż jakiś proces bedzie wymagał ich akcji

Procesy

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Cechy procesu:

PID

PPID

USER

UID (RUID, EUID), GID (RGID, EGID)

TTY

%CPU

%MEM

TIME

STIME

PRI

NI

STAT

Procesy - c.d.

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Procesy - c.d.

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

bootstrapping (booting)

“The computer must pull itself up by its own bootstraps”

ROM

power ON

komenda wydana na konsoli systemowej

block 0

network

boot program

dodatkowy test hardware'u

czy jest dostępna pamięć

czy są podstawowe urządzenia zewnętrzne

kernel

inicjalizacja tablic

kompletny test pamięci i urządzeń (detekcja, tworzenie plików specjalnych)

fork – init: proces 1

Proces startu systemu UNIX

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

single-user mode <-> multi-user mode

BSD

/etc/rc

/etc/rc.local

SunOS

/etc/rc.boot

/etc/rc.single

/etc/rc.net itd.

Unix V

runlevels

/etc/inittab

Konfiguracja programu init

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

nohup

SIGHUP, nohup.out

screen

^A + D (detach), -r

batch

stdin, load average

at

time + increment, atq, atrm, /etc/at.{allow,deny}

cron

crontab, -l, -r, -e, /etc/cron.{allow,deny}

Zarządzanie procesami nieinteraktywnymi

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Szeregowanie zadań

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Szeregowanie zadań - c.d.

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Kolejkowanie przy szeregowaniu

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Kolejkowanie priorytetowe

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Strategie szeregowania

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Strategie szeregowania - c.d.

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Przykłady algorytmów szeregowania

11:02:11

str. 24

Adam Naumowicz: Systemy operacyjne

Szeregowanie cykliczne

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

Szeregowanie ze sprzężeniem zwrotnym

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

Charakterystyka wybranych algorytmów

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

Tradycyjne szeregowanie UNIX'a

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

Szeregowanie w LINUX'ie

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

Przykład

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

Przykład

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

Szeregowanie w UNIX V

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

System plików - struktura i-node'u

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

Alokacja i-node'ów

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

Alokacja - c.d.

11:02:12

str. 24

Adam Naumowicz: Systemy operacyjne

Montowanie

Zarządzanie systemem plików

fdisk

format (DOS format), mkfs (UnixV), newfs (BSD), mknod (MAKEDEV)

fsck

mount

umount

stat

df

du

mtools (ltools)

11:02:13

str. 24

Adam Naumowicz: Systemy operacyjne

Budowa dysku magnetycznego

11:02:13

str. 24

Adam Naumowicz: Systemy operacyjne

Budowa dysku -c.d.

11:02:13

str. 24

Adam Naumowicz: Systemy operacyjne

Przykładowe strategie buforowania

11:02:14

str. 24

Adam Naumowicz: Systemy operacyjne

Buforowanie - c.d.

11:02:14

str. 24

Adam Naumowicz: Systemy operacyjne

Buforowanie - c.d.

11:02:14

str. 24

Adam Naumowicz: Systemy operacyjne

Poziomy RAID

11:02:14

str. 24

Adam Naumowicz: Systemy operacyjne

RAID 0-2

11:02:14

str. 24

Adam Naumowicz: Systemy operacyjne

RAID 3-6

11:02:14

str. 24

Adam Naumowicz: Systemy operacyjne

diagnostyka

ping, traceroute, netstat, nslookup, nmap, tcpdump

konfiguracja

loopback (127.0.0.1)

ifconfig, route, hostname, dhcp(c)d

pliki

/etc/hosts

/etc/resolv.conf

zdalne połączenie

telnet, rsh (ssh)

ftp (sftp)

UNIX'owe narzędzia sieciowe

11:02:14

str. 24

Adam Naumowicz: Systemy operacyjne

root

su, sudo (/etc/sudoers)

użytkownicy

passwd, useradd (adduser), userdel (deluser), group, etc.

komunikacja

write, wall, mesg, who, w, finger, last

/etc/motd (.hushlogin)

mail, talk

oprogramowanie

./configure, make, gcc

logi systemowe (np. w /var/log/)

Rutynowe prace administracyjne w UNIX'ie

2006-02-20T10:30:35