podsumowanie UNIX, Studia, WAT Informatyka 2, semestr IV, Systemy operacyjne

 

[ Pobierz całość w formacie PDF ]
Katalog
/etc:
/etc/passwd:
Jeden z najważniejszych plików w systemie - przechowuje informacje o kontach wszystkich
użytkowników Jeden wiersz w tym pliku zawiera informacje o jednym użytkowniku Każdy składa się z
pól rozdzielonych dwukropkiem
login:haslo:UID:GID:komentarz:katalog_domowy:powłoka
marek:x:502:1000:Marek Kowalski:/home/users/zenek:/bin/bash
/etc/group
plik zawierający nazwy utworzonych grup i przypisania do niech użytkowników według schematu
nazwa_grupy::GID:login1,login2,login3,...
audio::23:kasia,marek
/etc/shadow
plik zawierający zakodowane hasła i dodatkowe informacje dla systemu uwierzytelniania użytkowników
login :hasło :ostatnio_1970:może:musi :ostrz:dni:dni_1970:zarez
marek:$1$qb/waABk…/:12575 :0 :99999:5 : : :
/etc/shells
Zawiera listę dostępnych dla użytkowników powłok np
/bin/ksh
/bin/sh
/bin/bash
/etc/fstab
Zawiera informacje o systemach partycjach i systemach plików Wpisy w tym pliku
są konieczne do automatycznego montowania partycji systemowych dlatego jest to
krytyczny plik systemu błąd w nim może spowodować że system może mieć problemy
z uruchomieniem. Jeden wiersz zawiera informacje o dokładnie jednej partycji
urządzenie punkt_montowania system_plików opcje dump passno
/dev/hde3 / reiserfs defaults 0 0
Oznaczenia urządzenie to plik pochodzący z katalogu /dev identyfikujący partycję dyskową lub
urządzenie punkt_montowania wskazuje katalog który będzie reprezentował urządzenie lub partycję
system plików - informacja o tym w jaki posób przechowuje się pliki na danej partycji opcje - dodatkowe
opcje montowania, dump - informacja dla dla programu dump (wykonywanie kopii zapasowych), dla
wszystkich wpisów można spokojnie ustawić "0" passno -informacja dla programu "fsck" o kolejności
sprawdzania poprawności systemu plików można wszędzie ustawic "0";
/etc/sysconfig
Katalog przechowujący w jednym miejscu wiele plików konfiguracji
/etc/sysconfig/interfaces
Zawiera pliki konfiguracyjne interfejsów sieciowych
/etc/inittab
Pliki konfiguracji programu init - pierwszego procesu startującego w systemie
W nim zdefiniowane są min skrytpy startowe z katalogu /etc/rcd i domyślny
poziom startowy systemu
/etc/printcap
Przechowuje definicje dostępnych drukarek w systemie Obecnie tego pliku się nie edytuje są
odpowiednie narzędzia konfiguracji drukarek nadpisujących zawartość tego pliku.
/etc/modprobe.conf
Od niedawna jest to miejsce przechowywania listy ładowanych modułów jądra Należy unikać jego
ręcznej konfiguracji Do generowania listy modułów i opcji służy program /sbin/generate-modprobe.conf
/etc/modules.conf
Nie używany już plik zawierający kiedyś konfigurację modułów jego rolę przejął plik /etc/modprobe.conf
/etc/modules
Lista modułów dodatkowych które można ręcznie dodawać przez użytkownika
/etc/issue i /etc/issue.net
Przed zalogowaniem do systemu wyświetlana jest treść tego pliku Pierwszy dla logujących się lokalnie
drugi zaś dla logujących się zdalnie - np.: przez ssh
/etc/motd
Message of the day - treść wyświetlana po zalogowaniu
/etc/X11/XFree86
lub
/etc/X11/xorg
Plik konfiguracji systemu XWindow. Pierwszy dla wersji XFree86, drugi dla X.org
/var/spodl
Katalogi robocze dla wielu usług i programów umieszczających tymczasowo dane. Przykładowo tu są
umieszczane zadania do druku.
/var/log
Katalog zawierający pliki rejestrowania zdarzeń systemowych (logów) Tam umieszczane są komunikaty
oraz błędy W przypadku problemów to miejsce należy odwiedzić w pierszej kolejności
/etc/poldek.conf
Plik konfiguracji programu Poldek - menadżera pakietów dla PLD
Procesy:
fork()
- tworzy proces
Różnica w działaniu funkcji
vfork
() polega na tym że proces potomny współdzieli całą pamięć z procesem
macierzystym. Ponadto proces macierzysty zostaje wstrzymany do momentu gdy proces potomny wywoła
funkcję systemową
_exit
() lub
execve
() czyli zakończy się lub rozpocznie wykonywanie innego programu
Funkcja
vfork
() pozwala zatem zaoszczędzić zasoby systemowe w sytuacji, gdy nowy proces jest tworzony
tylko po to aby zaraz uruchomić w nim nowy program funkcją
execve()
.
Wartościzwracaneprzezfunkcjęfork():
PID potomka dla procesu macierzystego
0
dla procesu potomnego
-1
w przypadku gdy proces nie może zostać utworzony
SystemrezerwujekilkanumerówPIDdlaspecjalnychprocesów:
proces
0
(czasem
2
) - proces wymiany
proces
1
- proces inicjujący
getpid()
- proces procesu bieżącego
getppid()
- proces rodzica
getpgrp()
- identyfikator grupy procesu
getsid()
- identyfikator sesji
exec()
-gdy program wywoła tą funkcje proces przestaje wykonywać ten program i zaczyna wykonywanie
nowego programu
Początkowo proces zostaje umieszczony w tym samym katalogu co jego proces macierzysty Gdy proces
potomny zmienia katalog roboczy bieżący katalog roboczy procesu rodzicielskiego pozostaje niezmieniony
exit(
status
)
– funkcja kończy proces jako argument przyjmuje stan zakończenia procesu
wait
() wstrzymuje działanie procesu dopóki nie zakończy się dowolny z jego procesów potomnych
waitpid
(
status,pid,flagi
) powoduje oczekiwanie na zakończenie konkretnego potomka wskazanego przez
argument pid, gdzie:
status
- status zakończenia procesu potomnego
pid
- identyfikator PID procesu potomnego,
flags
- flagi.
ps xf
- powoduje wyświetlenie procesów użytkownika w postaci drzewa procesów
ps aux
- powoduje wyświetlenie listy wszystkich procesów
Wątki:
Wątki stanowią mechanizm pozwalający programowi na robienie kilka rzeczy na raz Zwane są inaczej
lekkimi procesami ponieważ operacje potrzebne do przełączania wątków zajmują mniej czasu niż
przełączanie kontekstu procesów Żaden wątek nie może istnieć bez procesu nadrzędnego
Wątki poziomu użytkownika rezygnują z wykonywania przez jądro i robią to same
W przypadku wątków poziomu jądra system zarządza każdym wątkiem wykorzystując każdy kwant czasu
przyznany dla jego procesu-rodzica.
Wątkiwspółdzielą:
Przestrzeń pamięci
Deskryptory plików
Inne zasoby systemowe
WątkiNIE współdzielą:
Stosu
„Własne dane wątku”
Kiedy wątek jest tworzony zaczyna wykonywać funkcję wątku Wraz z jej zakończeniem przestaje istnieć
także wątek Do tworzenia wątku służy funkcja
pthread_create(…):
int pthread_create (&
watek, atrybuty_watku, wsk _funkcje_w, argumenty_funkcji_watku
)
x = pthread_create(&t_watki[i], NULL, funkcja, (void *)(atoi(argv[i])) )
Po wykonaniu funkcja ta zwraca 0, i umieszcza identyfikator nowo utworzonego wątku w miejscu
wskazywanym przez argument
pthread_t
, np.
&t_watki[i]
. W razie błędu zwracane jest
EAGAIN
w
przypadku gdy brakuje zasobów systemowych żeby stworzyć proces dla nowego wątku lub gdy więcej niż
PTHREAD_THREADS_MAX
wątków już działa w systemie
Do ustalania atrybutów wątku służy funkcja
pthread_atrr_init(…)
Jeśli jako argument funkcji podamy
NULL
zostaną ustawione domyślne atrybutu czyli
możliwość dołączania
domyślny sposób kolejkowania
pthread_join(
th,thread_return
) –
funcja zawiesz działanie wątku do momentu gdy wątkek wskazywany
przez
th
nie zakończy swojego działania
Jeśli argument
thread_return
jest różny od
NULL
to kod zakończenia wątku
th
jest umieszczany w miejscu
wskazanym przez
thread_return.
Kodem zakończenia wątku może być wartość określona przy wywołaniu
funkcji
pthread_exit
lub
pthread_canceled
jeśli wątek był usunięty
W momencie gdy watek w stanie umożliwiającym dołączenie kończy działanie jego zasoby (
deskryptor
wątkuistos
) nie są zwalniane dopóki inny watek nie wykona na nim pthread_join. Dlatego pthread_join
powinien być wykonany dla każdego nieodłączonego wątku
Co najwyżej jeden watek może czekać na zakończenie danego wątku Wywołanie pthread_join w momencie,
gdy jakiś inny watek już oczekuje na jego zakończenie spowoduje powrót z funkcji pthread_join z błędem
W przypadku sukcesu funkcja
pthread_join
zwraca
0
i kod zakończenia wątku
th
jest umieszczany w miejscu
wskazywanym przez
thread_return
W przypadku błędu zwracana jest wartość
EINVAL
jeśli watek th już
został odłączony (detached) lub inny watek już oczekuje na jego zakończenie albo wartość
EDEADLK
jeśli
argument th odnosi się do wołającego wątku
pthread_self
- zwraca identyfikator wątku który wywołał funkcje
int pthread_equal(pthread_t thread1, pthread_t thread2)
- określa czy oba identyfikatory odnoszą się do
tego samego wątku Zwraca niezerowa wartość jeśli thread1 i thread2 odnoszą się do tego samego
wątku W przeciwnym przypadku 0 jest zwracane
void pthread_exit(void *status)
- funkcja zakończa wątek z wewnątrz którego została uruchomiona
(parametr status to wartość dostępna dla każdego przyłączonego wątku)
int pthread_cancel( pthread_t tid )
- zamyka wątek z wewnątrz innego wątku
Sygnały:
Sygnały są przerwaniami programowymi Służą do obsługi asynchronicznych zdarzeń które występują np
gdy użytkownik uruchomi za pomocą terminalu klawisz przerwania by zatrzymać program lub gdy kolejny
program w potoku zakończy się przedwcześnie Każdy sygnał ma nazwę Nazwy sygnałów zaczynają się od
napisu
SIG
Wszystkie nazwy sygnałów są zdefiniowane w pliku nagłówkowym za pomocą dodatnich stałych
całkowitoliczbowych (numerów sygnałów)
Sygnałmożnawygenerowaćpoprzez:
przez terminal przez naciśniecie niektórych klawiszy
w sytuacjach wyjątkowych przy próbie dzielenia przez 0
przy próbie nieprawidłowego odwołania się do pamięci
przez funkcję kill()
przez polecenie kill
przez pewne warunki programowe
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • fotocafe.xlx.pl
  •