Laboratorium systemów operacyjnych ćwiczenie nr 3. [ilość modułów: 1] Temat zajęć: Procesy w systemie operacyjnym



Podobne dokumenty
Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias

Linux: Procesy. Systemy Operacyjne. Mateusz Hołenko. 26 marca 2013

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

Systemy Operacyjne I: Procesy

Moduł 4: Strumienie, potoki, sterowanie procesami

Zarządzanie procesami

Laboratorium Procesy w systemach UNIX 3.2 Polecenia związane z procesami

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

W pierwszej kolumnie wyświetlany jest identyfikator procesu (pid)

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Linux cz.2: terminal, użytkownicy, grupy

Technologie Informacyjne - Linux 2

Systemy operacyjne Skrypt do ćwiczeń laboratoryjnych

Utwórz na pulpicie katalog: pierwsza-litera-imienia_nazwisko (np. j_kowalski). W tym katalogu zapisz pliki, które będą tworzone w ramach ćwiczenia

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Temat : Procesy, zmienne, programy, pliki, standardowe wyjscie i wejscie. Wykorzystane polecenia:

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

4. Procesy pojęcia podstawowe

Dogadać się z Linuxem. Zarządzanie

1. Znajdź za pomocą programu locate wszystkie pliki które zawierają w nazwie słowo netscape locate netscape

Zespół Szkół Technicznych w Suwałkach. Pracownia Systemów Komputerowych. Ćwiczenie Nr 25 ARCHITEKTURA SYSTEMU LINUX. Opracował Sławomir Zieliński

Jądro Powłoka System plików Programy użytkowe

Systemy operacyjne ćwiczenia 1 procesy, wątki, polecenia UNIXa.

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1)

Zarządzanie procesami (omawiane zagadnienia)

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2009/2010

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

WPROWADZENIE. Warto pamiętać o opcji autouzupełniania, której używamy naciskając klawisz [Tab]

4. Procesy pojęcia podstawowe

Rejestracja faktury VAT. Instrukcja stanowiskowa

1 Przygotował: mgr inż. Maciej Lasota

WYKŁAD 3 Jądro systemu i procesy. Marcin Tomana Wyższa Szkoła Informatyki i Zarządzania

Zarządzanie użytkownikami w

Zakład Systemów Rozproszonych

1 Zapoznanie się ze środowiskiem Xenomai.

Edytor materiału nauczania

STEKOP S.A. Białystok 2003 INSTRUKCJA OBSŁUGI TERMINALA KONTROLI DOSTĘPU SYSTEMU INTEGRUJĄCEGO ULISSES

SYSTEMY OPERACYJNE ĆWICZENIE POLECENIA SYSTEMU MSDOS

Administracja serwerami

EDYTOR TEKSTOWY VIM WYBRANE POLECENIA. Pracownia Informatyczna 5

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Ćwiczenie nr 14: System Linux

4. Procesy pojęcia podstawowe

Wstęp... 7 Rozdział 1. Wprowadzenie do systemów operacyjnych Rozdział 2. Rozpoczęcie pracy z systemem Linux... 27

Akademia Górniczo-Hutnicza im. St. Staszica. Unix/Linux 3. procesy, archiwa i inne Tomasz Bartuś

Skanowanie podsieci oraz wykrywanie terminali ABA-X3

Narzędzia informatyczne w językoznawstwie

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Nowa Netia administrator firmy Nagrywanie połączeń-zarządzanie

Powłoka, redyrekcja, potok

1.1 Definicja procesu

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Ustalanie dostępu do plików - Windows XP Home/Professional

Program dla praktyki lekarskiej

Proces. Systemy Operacyjne I ćwiczenie laboratoryjne nr 5 (wersja ) Polecenia: kill, killall, nice, ps, pstree, renice, time, top

Działanie systemu operacyjnego

Niektóre katalogi są standardowymi katalogami zarezerwowanymi do użytku przez system. Znaczenie wybranych katalogów systemowych jest następujące:

Instrukcja redaktora strony

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

UŻYTKOWNIK. APLIKACJE UŻYTKOWE (wszelkie programy zawarte domyślnie w systemie operacyjnym jak i samodzielnie zainstalowane przez użytkownika systemu)

Program GroupWise WebAccess interfejs podstawowy

2. Informacje o mechanizmie limitów

Działanie systemu operacyjnego

Instrukcja obsługi Konfigurator MLAN-1000

Wstęp do systemu Linux

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika)

System epon Dokumentacja użytkownika

Utworzenie pliku. Dowiesz się:

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

ABA-X3 PXES v Podręczna instrukcja administratora. XDMCP Licencja FDL (bez prawa wprowadzania zmian) Tryb X terminala

Działanie systemu operacyjnego

ZAJĘCIA Komendy Linux WB -> w konsoli tty2 finger exit man pwd pwd finger ls man ls. -> po 2 minusach interpretacja słowa

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

1 Moduł Inteligentnego Głośnika

instrukcja użytkownika terminala ARGOX PA-20 SYSTEMY AUTOMATYCZNEJ IDENTYFIKACJI

Rozdział 5. Administracja kontami użytkowników

1. Logowanie do Systemu BCW

Systemy Operacyjne 1 Laboratorium 2 Procesy i sygnały w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Na komputerach z systemem Windows XP zdarzenia są rejestrowane w trzech następujących dziennikach: Dziennik aplikacji

Płace Optivum. 1. Zainstalować serwer SQL (Microsoft SQL Server 2008 R2) oraz program Płace Optivum.

1 Moduł Inteligentnego Głośnika 3

UMOWY INSTRUKCJA STANOWISKOWA

Podstawy użytkowania Linux a

Administracja serwerami

Odczyty 2.0 Spis treści

Zakład Systemów Rozproszonych

Programowanie w języku Python. Grażyna Koba

Powłoka interpreter poleceń systemu UNIX

Przed przystąpieniem do czytania dokumentu, proszę o zapoznanie się z podstawowym dokumentem Instrukcja obsługi AZU dla użytkownika zewnętrznego.

Kurs walut. Specyfikacja projektu. Marek Zając

Transkrypt:

Temat zajęć: Procesy w systemie operacyjnym Czas realizacji zajęć: 45 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Pojęcie procesu, procesy w systemie, usuwanie procesów, priorytety procesów, zarządzanie procesami, status zakończenia procesu, uruchamianie procesów w tle I. Pojęcie procesu Każdy uruchomiony w systemie Unix program nosi nazwę procesu. Na proces składają się następujące elementy: 1. Kod binarny procesu załadowany z pliku. 2. Dane programu: struktury danych zadeklarowane w programie oraz pamięć dynamicznie przydzielona do procesu w trakcie jego działania. 3. Dane systemowe: informacja o procesie utrzymywana przez system. Dodatkowo, podczas tworzenia procesu system inicjalizuje systemowe struktury danych opisujące proces, które następnie są aktualizowane podczas wykonania tego procesu. Do danych systemowych należą: 1. Identyfikator procesu (PID) unikalna liczba całkowita jednoznacznie identyfikująca proces. 2. Identyfikator procesu macierzystego (PPID) wartość PID procesu, który stworzył dany proces. 3. Środowisko procesu zbiór zmiennych środowiskowych. Każdy proces ma swoje, niezależne od innych procesów środowisko wykonania, które początkowo jest kopiowane z procesu-rodzica a następnie jest modyfikowane niezależnie od innych procesów. 4. Standardowe strumienie danych. Oprócz procesów, w systemie Unix, jak w większości nowoczesnych systemów, wyróżnia się wątki (ang. thread), będące najmniejszymi aktywnymi elementami systemu. Wątek jest rodzajem procesu, który dzieli przestrzeń adresową z innym procesem każdemu wątkowi jest więc przydzielony niezależny identyfikator. II. Procesy w systemie Listę procesów dla aktualnej powłoki otrzymamy wywołując polecenie ps (ang. processes). %ps PID TTY TIME CMD 14285 pts/0 0:00 -csh 14286 pts/0 0:00 ps str. nr 1/6

numer procesu terminal czas aktywności nazwa Pełne informacje o procesach aktualnej powłoki podaje polecenie ps -f (ang. full) %ps -f USER PID PPID C STIME TTY TIME CMD Piotr 14285 14267 0 14:44:00 pts/0 0:00 -csh Piotr 14286 14285 7 14:44:27 pts/0 0:00 ps nazwa numer numer czas terminal czas nazwa procesu właściciela procesu procesu nadrzędnego uruchamiania Pełne informacje o wszystkich procesach uzyskamy łącząc opcję -f z -e (ang. every process). Poniżej podano inne przydatne przełączniki polecenia ps: -a (ang. all) wyświetla listę wszystkich procesów (także tych należących do innych użytkowników) -l (ang. long) pozwala wyświetlić dodatkowe informacje o każdym procesie -x (ang. long) dołącza do listy informacje o procesach nie dołączonych do terminali (procesy demony) -u powoduje dodanie nazwy użytkownika na początku listy -w powoduje rozszerzenie wyświetlanej listy. Użycie przełącznika -l pozwala na wyświetlenie większej liczby szczegółów dotyczących procesów. W rezultacie wyświetlane są dodatkowe kolumny zawierające następujące informacje: S status procesu ( S proces jest uśpiony; R proces jest aktualnie wykonywany) UID identyfikator właściciela procesu PPID identyfikator procesu macierzystego PRI i NI opisują priorytety procesów WCHAN pozwala sprawdzić jaką funkcję systemową jądra wywołał proces Wiele z procesów uruchamianych jest przy starcie systemu, pozostałe są uaktywniane przez użytkowników w momencie zlecenia wywołania programów. Dowolny proces może uruchomić kolejny proces potomny i stać się macierzystym (nadrzędnym) wobec tego procesu potomnego. W momencie zarejestrowania się użytkownika w systemie uruchomiony zostaje jego pierwszy proces, czyli powłoka interpretująca polecenia użytkownika. Wszystkie procesy pracujące w systemie tworzą hierarchiczną strukturę, na szczycie której stoi proces init, będący rodzicem wszystkich procesów. Proces init ma zawsze wartość PID równą 1. Hierarchię procesów można obserwować korzystając z programu pstree. Istnieje także interaktywna wersja komendy ps - program top. Top oprócz wartości zwracanych przez polecenie ps wyświetla też inne informacje: aktualną liczbę użytkowników w systemie (linia pierwsza), liczbę procesów (linia druga), obciążenie procesora (linia trzecia) i informację nt. dostępnej pamięci w systemie (linie czwarta i piąta). Innym programem służącym do obserwowania listy procesów jest program ksysguard (dedykowany dla środowiska KDE), lub gtop (dla środowiska GNOM). str. nr 2/6

III. Usuwanie procesów Laboratorium systemów operacyjnych ćwiczenie nr 3. Dowolny proces może zostać usunięty z systemu przez jego właściciela. Służy do tego polecenie kill, wysyłające do procesu o podanym identyfikatorze sygnał przerwania pracy: kill [ -nazwa_lub_numer_sygnału ] identyfikator_procesu Domyślnie, jeśli nie podano numeru sygnału, wysłany zostanie sygnał TERM, powodujący zatrzymanie procesu. Aktualnie uruchomiony proces można również przerwać naciskając kombinację Ctrl-C, co również powoduje wysłanie sygnału TERM. Gdy wysłanie sygnału TERM jest niewystarczające do zatrzymania procesu, należy wtedy wysłać sygnał KILL, który powoduje bezwarunkowe przerwanie procesu. kill -KILL identyfikator_procesu Sygnały mają przypisane numeryczne identyfikatory. Identyfikator sygnału TERM wynosi 2, natomiast sygnału KILL jest równy 9. W poleceniu kill można korzystać także z wartości numerycznych synałów: kill -9 identyfikator_procesu Zatrzymanie wszystkich procesów o danej nazwie powoduje polecenie killall. Przykładowo: killall find powoduje zatrzymanie wszystkich programów find. Szczegółową listę sygnałów wraz z ich wartościami numerycznymi zawiera strona pomocy systemowej signal(7). IV. Priorytety procesów Każdy proces wykonywany w systemie posiada przypisany mu priorytet, który można odczytać w wyniku wywołania polecenia ps z przełącznikiem -l. Kolumna PRI wyświetlana w wyniku tego polecenia zawiera informacje o wartości priorytetu określonego procesu, nadanej mu poprzez system operacyjny. Wartość ta nie może być bezpośrednio zmieniana przez użytkownika. Jednakże użytkownik może wpłynąć na wartość PRI, zmieniając tzw. liczbę nice, której aktualna wartość znajduje się w kolumnie NI. Wartość liczby nice należy do przedziału: od -20 do 19 i początkowo przyjmuje wartość 0. Im mniejsza wartość liczby nice tym wyższy priorytet procesu. Dla działającego procesu liczbę nice można zmienić poleceniem: renice zmiana_priorytetu [ -p ] pid [ -u użytkownik ] str. nr 3/6

Na przykład: renice +10 3442 zwiększa liczbe nice o 10, co powoduje zmniejszenie priorytetu tego zadania. Zwykli użytkownicy mogą jedynie zwiększać liczbę nice, czyli obniżać priorytet wykonania swoich zadań, natomiast użytkownik root jest uprawniony do wykonywania wszelkich zmian na wartości nice. Możliwe jest uruchamianie nowych procesów z ustawionym już nowym priorytetem: nice -n zmiana_priorytetu polecenie V. Zarządzanie procesami Procesy uruchamiane z klawiatury terminala są nazywane pierwszoplanowymi. Powłoka czeka na zakończenie wykonywania procesu i dopiero wtedy jest gotowa na przyjęcie kolejnych poleceń od użytkownika. Proces można jednak uruchomić w tle. Wówczas powłoka utworzy nowy proces potomny, będący powłoką, której nakaże wykonanie zadanego polecenia, a sama powróci do stanu gotowości na kolejne polecenia. W rezultacie proces, który został uruchomiany w tle zaczyna pracować równolegle z interpreterem poleceń. Warto zaznaczyć, że praca w tle ma sens jedynie w przypadku programów nieinteraktywnych, czyli takich, które do swojej pracy nie potrzebują interakcji za strony użytkownika. W przypadku uruchamiania programu w tle interpreter poleceń natychmiast przechodzi w stan oczekiwania na następne zlecenie, czyli rozpoczyna czytanie danych z klawiatury. Podobnie, programy działające w tle nie powinny wypisywać informacji na ekranie, bo będą one wypisywane asynchronicznie w stosunku do aktualnie wykonywanych operacji. W tym przypadku, rozwiązaniem tego problemu może być przekierowanie wyników działania takiego programu do pliku i jego późniejsza analiza. Polecenie jest uruchomione w tle, jeśli po ostatnim parametrze następuje znak &: polecenie & Aktualnie uruchomiony proces można także zatrzymać wciskając kombinację Ctrl Z. Spowoduje to wstrzymanie tego procesu. Wstrzymany proces istnieje w systemie, ale nie jest dla niego przydzielany procesor. Zastopowany proces można wprowadzić do wykonania (kontynuacji) w tle poleceniem bg (ang. background), a nawet przywrócić po dowolnym czasie z powrotem na pierwszy plan poleceniem fg (ang. foreground), pod warunkiem jednak, że pomiędzy tymi poleceniami nie uruchomimy w tle innego procesu. Listę aktualnie kontrolowanych zadań można wyświetlić poleceniem jobs. Jeśli wstrzymano więcej niż jedno zadanie, niezbędna będzie ich identyfikacja. Interpreter poleceń wewnętrznie przydziela swoje identyfikatory i za pomocą polecenia jobs można wyświetlić ich wartości. Do konkretnego procesu można odwołując się korzystając z identyfikatora poprzedzonego znakiem %. str. nr 4/6

%jobs [1]- Stopped vim praca.html [2]+ Stopped find /usr -name signal.h %fg 1 VI. Status zakończenia procesu Każdy proces w systemie Unix po zakończeniu swojej pracy przekazuje do systemu informację o tym jak zakończyło się przetwarzanie, określaną statusem zakończenia procesu. Status zakończenia jest liczbą jednobajtową, przy czym przyjęto, że wartość 0 oznacza poprawne zakończenie przetwarzania. Wartości różne od 0 oznaczają błąd. Status zakończenia ostatnio wykonywanego programu można uzyskać w następujący sposób: %echo $? Status zakończenia procesu można wykorzystać do warunkowego uruchomiania poleceń. Fakt, że polecenie_2 można wykonać tylko gdy polecenie_1 zakończyło się sukcesem zapisujemy następująco: %polecenie_1 && polecenie_2 Natomiast gdy polecenie_2 może być wykonane tylko wtedy gdy polecenie polecenie_1 zakończyło się niepowodzeniem: %polecenie_1 polecenie_2 Ponadto w systemie UNIX możemy jednym poleceniem uruchomić kilka procesów, oddzielając poszczególne z nich średnikiem: %polecenie_1; polecenie_2; polecenie_3 Taką sekwencję można również wprowadzić w tło: %(polecenie_1; polecenie_2; polecenie_3) & VII.Ćwiczenia. 1. Wyświetl listę własnych procesów komenda ps. Porównaj wyniki z wynikami poleceń: ps x i ps ax. Zbadaj działanie przełączników l i i u. Zaloguj się do systemu kilkukrotnie poprzez wirtualne konsole lub otwierając nowe okno w środowisku graficznym. Sprawdź poleceniem tty(1) nazwę terminala, na którym pracujesz. 2. Znajdź proces macierzysty dla procesu ps. Odszukaj przodka wszystkich procesów (PID=1). Wyświetl hierarchię procesów poleceniem pstree(1). Obejrzyj listę procesów poleceniem top(1) sortując ją wg stopnia zajętości procesora i ilości zajętej pamięci. W środowisku graficznym KDE uruchom program ksysguard (dostępny po wciśnięciu C t r l E s c ). str. nr 5/6

3. Sprawdź identyfikator procesu init. Za pomocą polecenia pgrep(1) wyświetl identyfikatory wszystkich swoich interpreterów poleceń. 4. Zapoznaj się z listą sygnałów na stronie pomocy systemowej signal(7). Uruchom sesję edytora vi i wysyłaj komendą kill kolejne sygnały do tego procesu. Użyj sygnałów: HUP, INT, TERM, QUIT, KILL, STOP, CONT. 5. Zbadaj działanie poleceń killall(1) i pkill(1). 6. Uruchom proces sleep w tle. Przełącz go do pracy w trybie pierwszoplanowym. Wstrzymaj sesję edytora vi kombinacja Ctrl-Z, uruchom nową sesję i wstrzymaj ją również. Wyświetl aktywne sesje komendą jobs. Wznów pracę do trybu pierwszoplanowego komendą fg, następnie znów przełącz go do pracy w tle komenda bg. VIII.Zadania do samodzielnego wykonania. 1) Sprawdź, jakie polecenia uruchomił dowolny inny użytkownik, pracujący w tej chwili w systemie. 2) Uruchom w tle wyszukiwanie w całym systemie plików o nazwach pasujących do wzorca *user*, błędy przekieruj na urządzenie puste, wyniki do pliku wyniki. Uruchamiając, obniż priorytet tego polecenia do najniższego. IX. Literatura. [Sob01] Sobaniec C., Linux. Podręcznik Użytkownika., Wydawnictwo NAKOM, 2001, ISBN 83-86969-53-9. str. nr 6/6