Professional Documents
Culture Documents
Slides 1 PL
Slides 1 PL
Sieci Komputerowe
dr Piotr Przymus
3 października 2019
1
System operacyjny
Systemu Operacyjny
System Operacyjny:
(Źródło wiki) 2
Użytkownik
Aplikacja
System operacyjny
Sprzęt
Polska wikipedia, 2009-2015
4
Application
POSIX-compatible
n
tio
nc
fu alls
c
Linux
memory
manager
lls
m ca
Virtual
IPC syste
file
manager
system Linux
process
scheduler
syste
m call
s
I/O Network
interface interface
fu
nc
ca tion
lls
Linux-specific
Application
Abstraction APIs
Hardware
6
Interakcja z systemem operacyjnym - przykład
7
Fazy kompilacji
Fazy kompilacji wyjaśnienie
• Preprocesor
• Kompilacja i optymalizacja
• Assemblacja
• Linkowanie
8
Preprocesor
Przykład
• W miejsce #include, zostanie wstawiony podany plik,
• gdy #if nie będzie spełniony, kod w tym warunku (tzn. do # endif )
zostanie usunięty,
• w miejsca użycia makr i identyfikatorów zostaną wstawione
odpowiednie dane lub rozwinięte makra.
9
Kompilacja i optymalizacja
Przykład
• W tym procesie kompilator usuwa takie elementy jak pętle zamieniając
je na zwykłe warunki i instrukcje goto,
• przygotowuje tłumaczenie kodu na język assemblera.
10
Assemblacja
Asemblacja - kod jest tłumaczony na kod maszynowy, ale nadal nie nadaje
się do uruchomienia:
Wynikiem tej fazy jest tzw. obiekt (rozszerzenie .o), fragment programu.
11
Konsolidacja, czyli linkowanie
12
Proces kompilacji
1 onestep :
2 gcc hello . c −o hello . out
3
4 compilation_cycle : preprocesor compilator assembler linker
5
6 preprocesor : hello . c
7 cpp hello . c > hello . i
8
9 compilator : hello . i
10 gcc −Wall −S hello . i
11
12 assembler : hello . s
13 as hello . s −o hello . o
14
15 linker : hello . o
16 gcc −v hello . o −o hello . dyn
17 gcc −v hello . o −static −o hello . static
13
Czym jest biblioteka
Biblioteka jest to zbiór funkcji, które zostały wydzielone po to, aby dało się z
nich korzystać w wielu programach.
Cechy biblioteki:
14
Budowa bibliotek
15
Pliki
Deskryptor
Deskryptor pliku:
16
Pliki - operacje na deskryptorach
Operacje na plikach:
18
Naiwny cat - pełen przykład
19
Obsługa błędów - errno i perror
• buforowane I/O
• typowe funkcje fopen, fread, fwrite, fclose
• dostęp poprzez uchwyt pliku typu FILE*
21
Praca z plikami i katalogami
Naiwny ls - schemat
Działanie ls −l
1 $ls −l
2 drwx−−−−−− 15 adam students 4096 lip 6 13:27 ./
3 drwxr−xr−x 54 adam students 4096 lip 6 11:20 . . /
4 −rwxr−−r−x 2 adam students 4096 cze 23 13:32 abc . txt
22
Praca z plikami i katalogami
23
Naiwny ls - schemat
Schemat naiwnego ls :
24
readdir
1 struct dirent {
2 ino_t d_ino ; /* inode number */
3 off_t d_off ; /* offset to the next dirent */
4 unsigned short d_reclen ; /* length of this record */
5 unsigned char d_type ; /* type of f i l e ; not supported
6 by all f i l e system types */
7 char d_name[256]; /* filename */
8 };
25
Typ pliku - pliki specjalne
• Katalogi
• Dowiązania symboliczne
• Abstrakcje komunikacyjne:
• Potoki z nazwą (FIFO)
• Gniazda (sockets)
• Urządzenia blokowe
• Urządzenia znakowe
26
Informacje o plikach - stat
27
Prawa pliku - przypomnienie
Dodatkowo:
28
Prawa katalogu - przypomnienie
Przeglądanie zawartości r
katalogu
Wejście do katalogu x dziedziczone (brak x w katalogu
nadrzędnym uniemożliwia wejście
do potomka który ma x)
Tworzenie, usuanie wx samo w bez efektu
i zmiana nazw plików
1 $ls −l
2 drwx−−−−−− 15 adam students 4096 lip 6 13:27 ./
3 drwxr−xr−x 54 adam students 4096 lip 6 11:20 . . /
4 −rwxr−−r−x 2 adam students 4096 cze 23 13:32 abc . txt
30
Prawa tłumaczenie
4 2 1 4 2 1
100 010 001 100 010 001
31
Przykład
Dla praw
32
Naiwny ls - przykład
33
Użytkownicy
Użytkownicy w systemach UNIX
• użytkownicy /etc/passwd
• grupy /etc/group
• NIS,
• LDAP
34
Użytkownicy w systemach UNIX
35
Użytkownicy w systemach UNIX
Plik /etc/passwd
1 root : x : 0 : 0 : root :/ root :/ bin/bash
2 daemon: x : 1 : 1 :daemon:/ usr/sbin :/ usr/sbin/nologin
3 bin : x : 2 : 2 : bin :/ bin :/ usr/sbin/nologin
4 sys : x : 3 : 3 : sys :/dev:/ usr/sbin/nologin
5 sync : x :4:65534:sync:/ bin :/ bin/sync
1 struct passwd {
2 char *pw_name; /* username */
3 char *pw_passwd; /* user password */
4 uid_t pw_uid ; /* user ID */
5 gid_t pw_gid ; /* group ID */
6 char *pw_gecos ; /* user information */
7 char *pw_dir ; /* home directory */
8 char *pw_shell ; /* shell program */
9 };
36
Użytkownicy w systemach UNIX
37
Użytkownicy w systemach UNIX
Plik /etc/group
1 root : x : 0 :
2 daemon: x : 1 :
3 bin : x : 2 :
4 sys : x : 3 :
5 adm: x : 4 : eror
1 struct group {
2 char *gr_name; /* group name */
3 char *gr_passwd ; /* group password */
4 gid_t gr_gid ; /* group ID */
5 char **gr_mem; /* group members */
6 };
38
Informacje uwierzytelniające
Informacje mające znaczenie przy ustalaniu praw dostępu do plików oraz ich
własności:
39