UNIX. mgr inż. Marcin Borkowski

Wielkość: px
Rozpocząć pokaz od strony:

Download "UNIX. mgr inż. Marcin Borkowski"

Transkrypt

1 UNIX

2 Cel Przedmiotu Doskonalenie umiejętności poprawnego programowania w systemach klasy UNIX Nabycie i rozwinięcie technik pisania przenośnego kodu w C Opanowanie standardu POSIX w zakresie funkcji systemowych (API jądra) Poznanie poprawnych i niepoprawnych rozwiązań typowych zadań programistycznych (np. jak poprawnie używać funkcji write)

3 Nie Jest Celem Przedmiotu Powtarzanie podstawowych informacji z zakresu Systemów Operacyjnych Nauka poprawnego kodowania w C Nauka poprawnego pisania procedur Nauka używania Linuksa Nauka używania poleceń konsolowych To wszystko student powinien już umieć, ewentualnie samodzielnie takie braki uzupełnić.

4 Nie Jest Celem Przedmiotu Tłumaczenie różnic pomiędzy systemami operacyjnymi Przekonywanie o wyższości systemów UNIX/Linux nad innymi systemami Prowadzenie dyskusji na temat sensu kodowania w C podczas laboratoriów Opowiadanie masy ciekawych ale nie przekładających się na praktykę programowania informacji o UNIX'ie, POSIX'ie itp. Przytaczanie składni funkcji z man'a

5 Ocena Ocena z przedmiotu jest oceną z laboratorium Nie będzie testów ani zaliczeń wykładu Wykład ma pomóc w prawidłowym napisaniu kolejnych ćwiczeń Bez systematycznej samodzielnej pracy dramatycznie obniżają się szanse na zaliczenie! W poprzednich latach zaliczało: 80% studentów (2006),68% studentów (2007) 70% studentów (2008),76% studentów (2009)

6 Plan Wykładu Wstęp Sygnały i procesy Pliki i katalogi Pipe i FIFO IPC Socket'y unix tcp udp Wątki Asynchroniczne I/O

7 Materiały Dodatkowe Książki: UNIX. Programowanie usług sieciowych - tom 1 - API: gniazda i XTI, WNT Richard W. Stevens UNIX. Programowanie usług sieciowych - tom 2 - Komunikacja międzyprocesowa, WNT Richard W. Stevens Programowanie w systemie UNIX dla zaawansowanych, WNT 2007!!! Marc J. Rochkind (słabe tłumaczenie) Materiały elektroniczne są podane w instrukcji do laboratoriów Quiz'y (Ang.) :

8 Uwagi o Książkach Zawierają błędy, zwłaszcza w przykładach (podane zawierają ich mniej) Ze względów dydaktycznych zawierają daleko idące uproszczenia Są zawsze mało aktualne Książka Rochkinda w starszym wydaniu jest dla tego przedmiotu kompletnie nieprzydatna Nie spotkałem się z publikacją uwzględniającą od początku sygnały, standaryzację i przenośność

9 Uwagi o Przenośności Różnice w implementacjach UNIX'ów są na tyle duże, że bardziej złożony program napisany w C nie może być w 100% przenośny W praktyce stosuje się warstwy pośrednie w dostępie do zasobów systemu lub definiuje się skomplikowane konstrukcje #define sterowane odpowiednimi testami konfiguracji systemu przed kompilacją

10 Uwagi o Przenośności Standardy, takie jak POSIX pozwalają na zmniejszanie nakładu pracy na warstwy pośrednie lub #define, zwiększają też czytelność oraz ułatwiają zrozumienie kodu Podczas laboratorium postaramy się osiągnąć możliwie dużą zgodność z standardem POSIX. Tam, gdzie to nie będzie gwarantowało jednocześnie przenośności i poprawności skorzystamy z rozwiązań GNU

11 Uwagi o Modularyzacji Poprawnie napisane funkcje można używać w wielu programach, niepoprawnie - tylko w jednym. Szczególnie niemodularne rozwiązania będą skutkowały karą punktową Własna biblioteka funkcji pomocniczych znacznie ułatwi proces pisania rozwiązań do kolejnych zadań!

12 Uwagi o API Jądra Funkcje mogą kończyć się błędem, nawet jeśli wydaje się to mało prawdopodobne. Należy zawsze sprawdzać jaki jest status wykonania funkcji Powyższa uwaga jest szczególnie ważna w odniesieniu do funkcji systemowych. Błąd na tym poziomie może oznaczać poważne problemy w dalszym prawidłowym działaniu naszego programu. W takiej sytuacji lepiej z gracją program zakończyć niż pozwolić mu się zawiesić.

13 Uwagi o API Jądra W praktyce często spotyka się kod ignorujący błędy. Dobrze, jeśli jest to świadomie podjęte ryzyko a nie niewiedza programisty. Trzeba znać reguły aby móc je potem czasem łamać Na laboratorium obowiązuje reżim sprawdzania każdego krytycznego błędu! Wolno ignorować tylko takie błędy, które na pewno (100%) nigdy nie będą mogły wystąpić Przykład: funkcja kill (man 2 kill, man 3p kill):

14 Uwagi o API Jądra EINVAL An invalid signal was specified. EPERM The process does not have permission to send the signal to any of the target processes. ESRCH The pid or process group does not exist. Note that an existing process might be a zombie, a process which already committed termination, but has not yet been wait(2)ed for. Błąd EINVAL możemy zazwyczaj wykluczyć, o ile numer sygnału generujemy sami lub jest on stały Podobnie EPERM w typowych przypadkach Nie można wykluczyć błędu ESRCH, zatem sprawdzanie błędów funkcji kill jest niezbędne

15 Uwagi o API Jądra Sprawdzenie ewentualnego błędu funkcji powinno przebiegać dwuetapowo: Sprawdzenie czy funkcja zgłasza błąd najczęściej funkcja zwraca wartość -1 czasem (f. malloc) jest to NULL informacja jak błąd jest sygnalizowany jest zawsze opisana w man Sprawdzenie jaki błąd wystąpił poprzez analizę zmiennej globalnej errno (opcjonalnie)

16 Uwagi o API Jądra Sama analiza errno nie wystarcza, konieczne jest sprawdzenie, czy w ogóle błąd wystąpił. Zatem poprawny fragment kodu wygląda następująco: if (-1 == sigaction(signo, &act, NULL)) { } fprintf(stderr, "%s:%d\n", FILE, LINE ); perror("sigaction"); kill(0, SIGINT); exit(exit_failure); Jak widać - nie zawsze musimy wnikać w przyczynę błędu. Ważne, że błąd wystąpił.

17 Uwagi o API Jądra Typową reakcją na błąd (w programie laboratoryjnym) jest zakończenie działania programu. Jedynym wyjątkiem jest błąd EINTR, który tak naprawdę błędem nie jest (p. sygnały) W praktyce czasem błąd będzie można naprawić Błędy należy sprawdzać po każdym wywołaniu funkcji, zatem warto napisać sobie własną funkcję lub makro do ich obsługi Co z błędami występującymi podczas obsługi błędu? Z konieczności zostaną zignorowane

18 Uwagi o API Jądra Błąd EINTR: To nie jest błąd Wiele funkcji, zwłaszcza tych czekających, może być przerwanych obsługą sygnału zanim tak naprawdę cokolwiek zostanie wykonane. W takiej sytuacji najczęściej musimy powtórzyć wywołanie przerwanej funkcji Zamiast mozolnie pisać pętle przy każdej funkcji wygodniej użyć makra GNU:

19 Uwagi o API Jądra #define _GNU_SOURCE #include <unistd.h>... TEMP_FAILURE_RETRY(wait(NULL)); Można też to makro (licencja LGPL) skopiować aby uniknąć pogarszającego przenośność _GNU_SOURCE: #define TEMP_FAILURE_RETRY(expression) \ ( extension ({ long int result; \ do result = (long int) (expression);\ while ( result == -1L && errno == EINTR);\ result; }))

20 Uwagi o API Jądra Błąd EINTR, a także inne błędy, mogą być opisane tylko w man standardu POSIX Przykładowo man 3 fflush wspomina tylko o jednym błędzie, podczas gdy man 3p fflush wymienia ich aż 10! w tym EINTR Obowiązują manuale POSIX! standard POSIX mówi, że funkcje rodziny printf mogą zgłaszać także te same błędy co fputc, zatem także EINTR, taka sytuacja bardzo komplikuje zaawansowane użycie tych funkcji. Podczas laboratorium dopuszczalne jest ignorowanie tego typu błędów ale tylko w przypadku pisania na stdout lub stderr

21 Uwagi o Zasobach Zasoby to nie tylko procesor i pamięć. Limitowanymi zasobami w szczególności są ilość procesów oraz liczba otwartych deskryptorów Pamięć Tam gdzie to możliwe należy używać zmiennych automatycznych (prawie wszystkie zadania można zrobić opierając się o takie zmienne) Dynamicznie przydzieloną pamięć należy zawsze zwalniać (para malloc - free)

22 Uwagi o Zasobach CPU Unikać tzw. busy waiting Przykład bardzo negatywny: while (0 == waitpid(0, NULL, WNOHANG)); Przykład mniej negatywny (dalej niepoprawny) while (0 == waitpid(0, NULL, WNOHANG)) sleep(1); Przykład poprawny (p. sygnały) while (TEMP_FAILURE_RETRY(wait(NULL)) > 0);

23 Uwagi o Zasobach Deskryptory Reprezentują nie tylko pliki, ale także i socket'y, FIFO, pipe, directory stream. Zamykamy, gdy tyko przestają być potrzebne (f. close i closedir) Procesy Aby zapobiec wyczerpaniu limitu procesów (per user) należy unikać tzw. procesów zombie, obsługując sygnał SIGCHLD (p. sygnały)

24 Uwagi o Zasobach Zwalnianie zasobów podczas krytycznego wyjścia z programu polega na wysłaniu sygnału kończącego inne procesy w aplikacji i wywołaniu funkcji exit, która zwalnia pamięć i deskryptory. Wywołanie funkcji exit nie ma wpływu na procesy potomne, które po zakończeniu procesu rodzica przejęte zostają przez proces init, w wyniku czego działają dalej - stąd konieczność zasygnalizowania im, że czas kończyć pracę.

25 Uwagi o Zasobach Normalne zakończenie programu wymaga zazwyczaj jednak innego podejścia: Zasoby należy zwalniać, gdy tylko przestają być potrzebne, czekanie na koniec programu jest tu błędem Myśląc przyszłościowo można założyć, że to, co jest teraz końcem funkcji main, może kiedyś stać się końcem modułu, gdzie zasoby trzeba zwolnić normalnie. Na procesy potomne trzeba poczekać (f. wait)

26 Uwagi o Zmiennych Globalnych Bez bardzo ważnego powodu nie używa się zmiennych globalnych, gdyż prowadzą one do niejawnych zależności pomiędzy funkcjami Jednym z takich powodów, dla którego skorzystamy ze zmiennej globalnej są funkcje obsługi sygnałów. Zmienne te łatwo rozpoznać po typie (p. sygnały): volatile sig_atomic_t Inne wyjątki: funkcja ftw (rzadko) nieuzasadnione zmienne globalne będą ujemnie punktowane podczas laboratorium

27 UNIX Procesy i sygnały

28 Procesy Powtórzmy podstawowe fakty Procesy tworzą drzewo (f. pid, ppid) Proces potomny musi być zwolniony (f. wait, waitpid) przez proces - rodzica Proces rodzic jest informowany o zakończeniu procesu potomnego sygnałem SIGCHLD Proces potomny który zakończył działanie a nie został zwolniony przez rodzica nazywamy zombie (<defunct>) Zasoby zombie są zwalniane (poza minimalną informacją), ale sam proces liczy się do limitu procesów

29 Procesy Jeśli proces - rodzic zakończy się przed procesami potomnymi, procesy potomne są adoptowane przez proces init(1) - także zombie. Nie jest to jednak sytuacja naturalna i należy jej unikać init oraz shell czekają na zakończenie procesów potomnych (wykonują wait) Funkcja fork tworzy proces potomny (również f. system, ale w innych zastosowaniach) Proces potomny rozpoczyna wykonanie w tym samym stanie i miejscu co proces rodzic (czyli od momentu zwrócenia statusu przez funkcję fork)

30 Procesy Analiza wartości zwracanej przez fork pozwala na zróżnicowanie dalszego działania obu procesów Proces potomny i proces - rodzic są niezależne i niezwiązane za wyjątkiem: pipe pozycji karetki w otwartych plikach Typowe błędy popełniane po wykonaniu fork to: śmieci w buforach stdin i stdout (f. fflush) niezwalnianie nieużywanych zasobów dziwne efekty spowodowane wspólną pozycją karetki w pliku

31 Procesy Proces potomny różni się od rodzica: pid, ppid własne deskryptory plików (uwaga na karetkę) ma wyzerowane liczniki czasu procesora ma wyzerowane alarmy (p. funkcja alarm) nie dziedziczy blokad plików (p. pliki i katalogi) nie dziedziczy czekających (blokowanych) sygnałów

32 Procesy Procesy wynikające z wykonania pojedynczej komendy tworzą process group w obrębie takiej grupy łatwiej wysyłać sygnały (f. kill) i czekać na zakończenie (f. waitpid) wysłanie SIGINT z terminala (C-c) oznacza właśnie rozesłanie sygnału do całej grupy można zmienić grupę do której należy proces (f. setpgid), ale nie będziemy tego robić podczas laboratorium odczyt numeru grupy (f. getpgid) więcej na temat grup procesów można przeczytać w dziale Job Control dokumentacji glibc

33 Sygnały Powtórzmy podstawowe fakty Sygnały to najprostszy sposób komunikacji międzyprocesowej używany do informowania procesu o pewnych zdarzeniach: Systemowych, np.: zakończenie procesu potomka (SIGCHLD) błąd obliczeń np. dzielenia przez 0 (SIGFPE) błąd segmentacji (SIGSEGV) systemowy stoper (SIGALRM) asynchroniczne I/O (SIGIO) zerwane połączenie (SIGPIPE)

34 Sygnały Przeznaczonych do implementacji przez programistę (f. kill) SIGUSR1 i SIGUSR2 SIGRTMIN do SIGRTMAX Generowanych przez użytkownika z konsoli lub przy użyciu polecenia kill SIGINT (C-c), SIGQUIT (C-\ ) SIGSTOP (C-z) SIGKILL

35 Sygnały W programie sygnały możemy generować niejawnie: funkcjami alarm i setitimer (nie wolno ich mieszać) używając f. sleep (może używać SIGALRM) kończąc działanie procesu (sygnał dla rodzica) operacje aio (p. aio) Oraz jawnie f. kill może wysłać sygnał do pojedynczego procesu lub do grupy procesów f. sigqueue wysyła sygnał do pojedynczego procesu, dotyczy sygnałów Real Time wysyłanych wraz z daną

36 Sygnały Reakcja na sygnał domyślna (zazwyczaj zakończenie programu lub ignorowanie), są to dobrze dobrane zachowania i bez wyraźnej potrzeby ich nie zmieniamy ustawione ignorowanie ustawiona funkcja obsługi domyślna reakcja na sygnały SIGKILL i SIGSTOP nie może być zmieniona Ustawianie obsługi sygnału (f. sigaction) pozwala na wywołanie funkcji obsługi sygnału Nie używamy starszej funkcji signal

37 Sygnały Funkcja obsługi sygnału: nie przyjmuje dodatkowych parametrów, zatem komunikacja z resztą programu musi odbywać się poprzez zmienne globalne ze względu na możliwe skutki uboczne zmienne takie muszą mieć zapewnioną atomowość operacji. Jedyny typ danych gwarantujący takie zachowanie to : volatile sig_atomic_t ze względu na blokowanie reszty programu wykonanie funkcji obsługi musi być jak najkrótsze; poważnym błędem jest użycie w funkcji obsługi funkcji czekających (np. sleep) aktualnie obsługiwany sygnał jest na czas wykonania funkcji obsługi blokowany, inne sygnały można opcjonalnie zablokować - o ile zostanie to odpowiednio uzasadnione

38 Sygnały Najprostsza i najlepsza funkcja obsługi sygnału zmienia jedynie globalną zmienną stanu, pozostawiając właściwą reakcję na sygnał głównemu programowi. Użyteczne flagi sigaction: SA_NODEFER nie blokuje aktualnie obsługiwanego sygnału SA_RESTART powoduje niepojawianie się EINTR, ale: nie działa z funkcjami do IPC czasem właśnie chcemy być poinformowani o przybyciu sygnału f. sigsuspend SA_NOCLDWAIT ustawiona dla SIGCHLD oznacza, że po zakończeniu procesy potomne nie staną się zombie, a funkcję wait można wywołać tylko raz - na końcu programu

39 Sygnały Sygnały klasyczne (nie Real Time) podlegają sklejaniu (z ang. merge), czyli nie wolno polegać na ich zliczaniu, może się okazać że dwa (lub więcej) identyczne sygnały odbierzemy jako jeden Kolejność dostarczenia sygnałów może być inna niż kolejność ich wysłania Obie powyższe sytuacje mogą zachodzić, gdy sygnały były wysłane w krótkim odstępie czasowym lub gdy są one blokowane Wiele systemów implementuje wszystkie sygnały tak, jakby były typu Real Time, ale POSIX tego nie gwarantuje.

40 Sygnały Sygnały można maskować Tylko te, które w danym momencie są niepożądane, nigdy wszystkie Funkcja sigprocmask Oczekiwanie na wybrany sygnał (f. sigsuspend) Niektóre funkcje posiadają warianty pozwalające na podobną podmianę zbioru blokowanych sygnałów (np.: pselect) Dwie powyższe funkcje często występują razem (patrz przykłady)

41 Sygnały Sygnały czekające (pending) otrzymanie sygnału, który jest aktualnie maskowany nie ma wpływu na działanie programu, ale w momencie usunięcia maskowania sygnał taki zostanie obsłużony jeśli obsługa sygnału jest ustawiona na ignorowanie to maskowanie nie ma znaczenia - sygnał taki zostaje od razu zignorowany

42 Sygnały Przerywanie działania funkcji czekających przez nadejście sygnału (EINTR) Nie dotyczy sygnałów ignorowanych i blokowanych Blokowanie sygnałów (zwłaszcza wszystkich) w celu uniknięcia takiej sytuacji jest błędem, należy użyć makra TEMP_FAILURE_RETRY lub flagi SA_RESTART Przerywanie operacji I/O Funkcje rodziny read / write mogą zostać przerwane w trakcie ich wykonywania, co będzie oznaczać fizyczny odczyt/zapis mniejszej ilości danych, niż zlecono (p. Pliki)

43 Sygnały Real-Time Sygnały Real Time (RT) Służą wyłącznie komunikacji międzyprocesowej Numery od SIGRTMIN do SIGRTMAX Są kolejkowane (ale kolejka ta ma ograniczony rozmiar) Kolejność obsługi sygnałów odzwierciedla kolejność ich odbioru przez proces (kolejka FIFO) Przenoszą prostą daną liczbową (int lub pointer) Dodatkowa funkcję sigqueue używamy, gdy: trzeba przesłać daną możliwe jest przepełnienie kolejki sygnałów (błąd EAGAIN)

44 Procesy i Sygnały - przykłady Jak spać : W sekundach: int tt, t = 5; for (tt = t; tt > 0; tt = sleep(tt)); Nie wolno mieszać takiego spania z funkcją alarm! Spanie wykorzystuje sygnał SIGALRM - nie wolno go blokować na czas spania W nanosekundach (nie wpływa na SIGALRM): struct timespec tt, t = {0, 200}; for(tt=t;nanosleep(&tt,&tt);) if(eintr!=errno) ERR("nanosleep:");

45 Procesy i Sygnały przykłady Jak eliminować procesy zombie Handler do SIGCHLD void sigchld_handler(int sig) { } pid_t pid; for (;;) { pid = waitpid(0, NULL, WNOHANG); if (0 == pid) return; if (0 >= pid) { if (ECHILD == errno) return; ERR("waitpid:"); } }

46 Procesy i Sygnały przykłady Na końcu programu i tak trzeba poczekać: while (TEMP_FAILURE_RETRY(wait(NULL)) > 0); Nie wiadomo, który wait zadziała jako pierwszy, oba muszą być obecne Jak zablokować wybrane sygnały: sigset_t s; for (sigemptyset(&s), i = SIGRTMIN; i <= SIGRTMAX; i++) sigaddset(&s,i); sigprocmask(sig_block, &s, NULL);

47 Procesy i Sygnały przykłady Jak czekać na konkretny sygnał (SIGUSR1): Przykład z opisu biblioteki glibc Wartość zmiennej usr_interrupt jest zmieniana w funkcji obsługi sygnału sigset_t mask, oldmask; sigemptyset(&mask); sigaddset(&mask, SIGUSR1); sigprocmask(sig_block, &mask, &oldmask);... while(!usr_interrupt) sigsuspend(&oldmask); sigprocmask(sig_unblock, &mask, NULL);

Sygnały. 7. Sygnały (2005/2006)

Sygnały. 7. Sygnały (2005/2006) Sygnały Sygnał jest to informacja dla procesu, że wystąpiło jakieś zdarzenie. Sygnały mogą być wysyłane: z procesu do innego procesu (grupy procesów) z procesu do siebie samego z jądra do procesu Sygnały

Bardziej szczegółowo

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

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi) Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie drugie (jedne zajęcia) Temat: Procesy i sygnały w Linuksie. Opracowanie: mgr in ż. Arkadiusz Chrobot Wprowadzenie 1. Budowa procesu

Bardziej szczegółowo

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

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej. Procesy Proces (zwany też zadaniem) jest jednostką aktywną, kontrolowaną przez system operacyjny i związaną z wykonywanym programem. Proces ma przydzielone zasoby typu pamięć (segment kodu, segment danych,

Bardziej szczegółowo

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int

Bardziej szczegółowo

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

Systemy Operacyjne 1 Laboratorium 2 Procesy i sygnały w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot Systemy Operacyjne 1 Laboratorium 2 Procesy i sygnały w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot października 2018 Wstęp W tej instrukcji zawarte są informacje na temat tworzenia i obsługiwania

Bardziej szczegółowo

Obsługa sygnałów. Tomasz Borzyszkowski

Obsługa sygnałów. Tomasz Borzyszkowski Obsługa sygnałów Tomasz Borzyszkowski Wprowadzenie Zaawansowane systemy operacyjne często realizując duże zadania, wykorzystują do ich realizacji wiele współdziałających ze sobą programów/procesów. Do

Bardziej szczegółowo

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Komunikacja za pomocą potoków. Tomasz Borzyszkowski Komunikacja za pomocą potoków Tomasz Borzyszkowski Wstęp Sygnały, omówione wcześniej, są użyteczne w sytuacjach błędnych lub innych wyjątkowych stanach programu, jednak nie nadają się do przekazywania

Bardziej szczegółowo

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

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011 Procesy Systemy Operacyjne 2 laboratorium Mateusz Hołenko 9 października 2011 Plan zajęć 1 Procesy w systemie Linux proces procesy macierzyste i potomne procesy zombie i sieroty 2 Funkcje systemowe pobieranie

Bardziej szczegółowo

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

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy) Procesy i shell. Polecenia ps, sleep, exit, jobs, bg, fg, top, kill, bash, tcsh, which, type, whereis, touch. Metaznak & i >>. Dowiązania miękkie i twarde. Proces jest programem, który jest wykonywany

Bardziej szczegółowo

Temat zajęć: Obsługa procesów w systemie.

Temat zajęć: Obsługa procesów w systemie. Temat zajęć: Obsługa procesów w systemie. Czas realizacji zajęć: 90 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Procesy macierzyste i potomne, tworzenie procesów potomnych, uruchamianie

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 3 Procesy i wątki Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Pojęcie procesu Program = plik wykonywalny na dysku Proces = uruchomiony i wykonywany program w pamięci

Bardziej szczegółowo

Model procesu w systemie Linux. Tomasz Borzyszkowski

Model procesu w systemie Linux. Tomasz Borzyszkowski Model procesu w systemie Linux Tomasz Borzyszkowski Definicja procesu klasyka Definicja [M.Bach WNT95] Proces jest wykonaniem programu i składa się ze zbiorowości bajtów, które CPU interpretuje jako instrukcje

Bardziej szczegółowo

Łącza nienazwane(potoki)

Łącza nienazwane(potoki) 8. Łącza nienazwane(potoki) Łącze (potok, ang. pipe) jest to urządzenie komunikacyjne pozwalające na przesyłanie informacji w jedną stronę. Jeden proces wysyła dane do łącza za pomocą funkcji write, zaś

Bardziej szczegółowo

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

Linux: Procesy. Systemy Operacyjne. Mateusz Hołenko. 26 marca 2013 Linux: Procesy Systemy Operacyjne Mateusz Hołenko 26 marca 2013 Plan zajęć Co to jest sygnał? Polecenia systemowe Sygnały Zadania Mateusz Hołenko Linux: Procesy [2/18] Co to jest proces? Co to jest proces?

Bardziej szczegółowo

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak Laboratorium z systemów operacyjnych System plików - funkcje systemowe Anna Wojak 1 Zagadnienia do samodzielnego przygotowania: podstawowe polecenia linux, podstawy programowania w jezyku C, deskryptor

Bardziej szczegółowo

Systemy Operacyjne I: Procesy

Systemy Operacyjne I: Procesy Politechnika Poznańska 4 kwietnia 2013 Materiały Prezentacja oraz inne materiały zostały przygotowane na podstawie: Użytkowanie systemu operacyjnego UNIX - dr D.Wawrzyniak Systemy operacyjne - skrypt -

Bardziej szczegółowo

5. Model komunikujących się procesów, komunikaty

5. Model komunikujących się procesów, komunikaty Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć

Bardziej szczegółowo

4.2 Sposób korzystania z l acza

4.2 Sposób korzystania z l acza 4.2 Sposób korzystania z l acza 31 Opis programu: Program procesu potomnego (linie 16 19) jest taki sam, jak w przyk ladzie na listingu 3. W procesie macierzystym nastepuje z kolei przekierowanie standardowego

Bardziej szczegółowo

1. Timery i zdarzenia

1. Timery i zdarzenia Sygnały 1 1. Timery i zdarzenia 1.1 Funkcje i programowanie timerów Jedną z najczęściej spotykanych funkcji systemu jest generowanie zdarzeń które w ustalonym czasie uruchomić mają określone akcje systemu.

Bardziej szczegółowo

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom). Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154

Bardziej szczegółowo

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino Interrupts Mariusz Rudnicki 2016 Wstęp W QNX Neutrino wszystkie przerwania sprzętowe przechwytywane są przez jądro systemu. Obsługę

Bardziej szczegółowo

procesy odrębne dzielone

procesy odrębne dzielone procesy odrębne Unikatowy PID (2-32000) Zmienne Zbiory deskryptorów plików Przestrzeń stosu (lokalne zmienne, wywołania funkcji) Środowisko Licznik rozkazów dzielone Kod programu brak możliwości zapisu

Bardziej szczegółowo

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1 Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem

Bardziej szczegółowo

Obsługa plików Procesy

Obsługa plików Procesy Obsługa plików Procesy Systemy Operacyjne 2 laboratorium Mateusz Hołenko 15 października 2011 Plan zajęć 1 Obsługa plików 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach 3 Operacje

Bardziej szczegółowo

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików: Pliki W celu wykonania jakiejkolwiek operacji na istniejącym pliku, plik ten musi zostać otwarty, natomiast jeśli plik jeszcze nie istnieje, to musi zostać utworzony. Plik może zostać otwarty w trybie:

Bardziej szczegółowo

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

Laboratorium Procesy w systemach UNIX 3.2 Polecenia związane z procesami Laboratorium 3 3.1 Procesy w systemach UNIX 3.2 Polecenia związane z procesami 1 3.1 Procesy w systemach UNIX Z systemami unixowymi związane jest pojęcie procesu. W takim ujęciu, proces, rozumiany jest

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Działanie systemu operacyjnego Budowa systemu komputerowego I NIC Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej

Bardziej szczegółowo

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania Krzysztof Kluza, Janusz Miller 1 Debugowanie Debugowanie, czy też po polsku odpluskiwanie, to proces polegający na kontrolowanym wykonaniu programu

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

projektowanie systemu

projektowanie systemu projektowanie systemu cel użytkownika: system operacyjny powinien być wygodny, łatwy w użyciu, prosty do nauczenia, niezawodny, bezpieczny i szybki cel producenta: system operacyjny powinien być łatwy

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć

Bardziej szczegółowo

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux. Kod szkolenia: Tytuł szkolenia: PS/LINUX Programowanie systemowe w Linux Dni: 5 Opis: Adresaci szkolenia Szkolenie adresowane jest do programistów tworzących aplikacje w systemie Linux, którzy chcą poznać

Bardziej szczegółowo

przerwany proces móg l zareagować na określone zdarzenie. Można je traktować jako software owe wersje przerwań sprz etowych.

przerwany proces móg l zareagować na określone zdarzenie. Można je traktować jako software owe wersje przerwań sprz etowych. c Wies law P laczek 9 3 Sygna ly 3.1 Opis sygna lów Najprostsz ametod akomunikacjimi edzyprocesowej w systenie UNIX s sygna ly. Umożliwiaj aoneasynchroniczne przerwanie dzia lania procesu przez inny proces

Bardziej szczegółowo

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen); 3.1. Określanie adresu połączonego hosta 3. #include int getpeername(int socket, struct sockaddr *addr, int *addrlen); Funkcja getpeername dostarcza adresu drugiej strony połączenia. Parametry:

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Programowanie współbieżne Wykład 2. Iwona Kochańska

Programowanie współbieżne Wykład 2. Iwona Kochańska Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami: Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Dziedzina Unix laboratorium: 06 Kraków, 2014 06. Programowanie Usług Sieciowych

Bardziej szczegółowo

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

Bardziej szczegółowo

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) wiczenie trzecie Temat: Potoki i ł cza nazwane w Linuksie. Opracowanie: mgr in ż. Arkadiusz Chrobot Wprowadzenie 1. Komunikacja z wykorzystaniem

Bardziej szczegółowo

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą

Bardziej szczegółowo

Procesy, pliki, potoki, sygnały - uzupełnienie

Procesy, pliki, potoki, sygnały - uzupełnienie Procesy, pliki, potoki, sygnały - uzupełnienie dr inż. Sławomir Samolej Katedra Informatyki i Automatyki Politechnika Rzeszowska Program przedmiotu oparto w części na materiałach opublikowanych na: http://wazniak.mimuw.edu.pl/

Bardziej szczegółowo

1. Ustanawianie ograniczeń na użycie zasobów

1. Ustanawianie ograniczeń na użycie zasobów 1. Ustanawianie ograniczeń na użycie zasobów W każdym systemie komputerowym zasoby potrzebne do tworzenia i wykonywania procesów są ograniczone. W przypadku gdy w systemie działa wiele procesów ważną rzeczą

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Mechanizmy pracy równoległej. Jarosław Kuchta

Mechanizmy pracy równoległej. Jarosław Kuchta Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy

Bardziej szczegółowo

Wskaźniki w C. Anna Gogolińska

Wskaźniki w C. Anna Gogolińska Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik

Bardziej szczegółowo

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Programowanie przy użyciu gniazdek

Programowanie przy użyciu gniazdek Programowanie przy użyciu gniazdek Gniazdo (ang. socket) pojęcie abstrakcyjne reprezentujące dwukierunkowy punkt końcowy połączenia. Dwukierunkowość oznacza możliwość wysyłania i przyjmowania danych. Wykorzystywane

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej sieci Pamięć operacyjna Przerwania Przerwania Przerwanie

Bardziej szczegółowo

Linux Kernel. Wprowadzenie

Linux Kernel. Wprowadzenie Linux Kernel Wprowadzenie Trochę historii (1) Rozpoczęło się od Bell Labolatories we wczesnych latach 70- tych XX wieku, kiedy rozpoczęto prace nad systemem UNIX: UNIX był pierwszym systemem operacyjnym

Bardziej szczegółowo

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++ Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 10 Kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard

Bardziej szczegółowo

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe Wykład 7: Transport: protokół TCP Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 7 1 / 23 W poprzednim odcinku Niezawodny transport Algorytmy

Bardziej szczegółowo

Czym są właściwości. Poprawne projektowanie klas

Czym są właściwości. Poprawne projektowanie klas Z akcesorów get i set korzysta każdy kto programuje w C#. Stanowią one duże udogodnienie w programowaniu obiektowym. Zapewniają wygodę, bezpieczeństwo i znacząco skracają kod. Akcesory są ściśle związane

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1 Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego

Bardziej szczegółowo

Systemy Operacyjne. Ćwiczenia

Systemy Operacyjne. Ćwiczenia Systemy Operacyjne Ćwiczenia Sprawy organizacyjne Kontakt: Artur.Basiura@agh.edu.pl Konsultacje po uzgodnieniu mailowym terminu Prośba o kontakt mailowy do jednej osoby z grupy (zmiany w terminach zajęć)

Bardziej szczegółowo

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

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie

Bardziej szczegółowo

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu Proces Procesy i wątki Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

Procesy, wątki i zasoby

Procesy, wątki i zasoby Procesy, wątki i zasoby Koncepcja procesu i zasobu, Obsługa procesów i zasobów, Cykl zmian stanów procesu i kolejkowanie, Klasyfikacja zasobów, Wątki, Procesy i wątki we współczesnych systemach operacyjnych.

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

Kolejki FIFO (łącza nazwane)

Kolejki FIFO (łącza nazwane) Kolejki FIFO (łącza nazwane) Systemy Operacyjne 2 laboratorium Mateusz Hołenko 6 listopada 2011 Plan zajęć 1 Łącza w systemie Linux kolejki FIFO vs. potoki specyfika łączy nazwanych schemat komunikacji

Bardziej szczegółowo

POSIX: IEEE Std 1003.1 2001 (Issue 6, 2004 edition)

POSIX: IEEE Std 1003.1 2001 (Issue 6, 2004 edition) POSIX: IEEE Std 1003.1 2001 (Issue 6, 2004 edition) Podstawowe rekomendacje przejęte z UNIXa wielodostęp wielozadaniowość system plików terminal gniazda Rekomendacje dla obszaru czasu rzeczywistego strategie

Bardziej szczegółowo

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil Środowisko Krzysztof Świentek Systemy wbudowane Spis treści 1 2 Źródła 1 http://infocenter.arm.com 2 http://www.keil.com/arm/mdk.asp 3 http://pl.wikipedia.org Spis treści 1 2 Co to jest toolchain? Zbiór

Bardziej szczegółowo

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017 Załącznik nr 4 do Uchwały Senatu nr 430/01/2015 SYLABUS DOTYCZY CYKLU KSZTAŁCENIA 2014-2018 realizacja w roku akademickim 2016/2017 1.1. PODSTAWOWE INFORMACJE O PRZEDMIOCIE/MODULE Nazwa przedmiotu/ modułu

Bardziej szczegółowo

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów

Bardziej szczegółowo

Sygnał mechanizm asynchronicznego powiadamiania procesów o zdarzeniach zwykle awaryjnych.

Sygnał mechanizm asynchronicznego powiadamiania procesów o zdarzeniach zwykle awaryjnych. J. Ułasiewicz 1 1. 1 INFORMACJE WSTĘPNE Sygnał mechanizm asynchronicznego powiadamiania procesów o zdarzeniach zwykle awaryjnych. Metoda powiadamiania procesów za pomocą sygnałów wywodzi się z systemu

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych IPC Systemu V laboratorium: 08 Kraków, 2014 08. Programowanie Usług Sieciowych

Bardziej szczegółowo

Wykład 5 Przerwania i wywołania systemowe. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Wykład 5 Przerwania i wywołania systemowe. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB Wykład 5 Przerwania i wywołania systemowe Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB Porty wejścia-wyjścia Intel x86 posiada 65536 portów wejścia-wyjścia, do których dostęp możliwy

Bardziej szczegółowo

Programowanie obiektowe i C++ dla matematyków

Programowanie obiektowe i C++ dla matematyków Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 04 X 2011 Wszelkie uwagi, poprawki, braki czy sugestie najlepiej wysyłać na maila. 1. wprowadzenie do Linuksa: kompilacja

Bardziej szczegółowo

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP

Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP Gniazda UDP Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź, 3 kwietnia 2006 Wstęp ZewzględunaróżnicewprotokołachTCPiUDPsposób korzystania z gniazd UDP różni sie znacznie od

Bardziej szczegółowo

2.1 Pojęcie wątku... 13 2.2 Modele wielowątkowości... 15 2.3 Wybrane zagadnienia wielowątkowości... 16 2.4 Wątki POSIX... 18

2.1 Pojęcie wątku... 13 2.2 Modele wielowątkowości... 15 2.3 Wybrane zagadnienia wielowątkowości... 16 2.4 Wątki POSIX... 18 Spis treści Spis treści 1 Procesy 1 1.1 Definicja procesu............................................. 1 1.2 Operacje na procesach.......................................... 3 1.3 Planowanie procesów...........................................

Bardziej szczegółowo

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia Wydział Matematyki i Informatyki Instytut Informatyki i

Bardziej szczegółowo

Futex (Fast Userspace Mutex) Łukasz Białek

Futex (Fast Userspace Mutex) Łukasz Białek Futex (Fast Userspace Mutex) Łukasz Białek Futex informacje podstawowe Stworzony w 2002 roku przez Hubertusa Franke, Matthew Kirkwooda, Ingo Molnára i Rustiego Russella. Jest mechanizmem w Linuxie, który

Bardziej szczegółowo

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego (2) Definicja systemu operacyjnego (1) Miejsce,

Bardziej szczegółowo

1. Tworzenie nowego projektu.

1. Tworzenie nowego projektu. Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty

Bardziej szczegółowo

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego (2) Miejsce, rola i zadania systemu operacyjnego

Bardziej szczegółowo

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Pętle Pętla jest konstrukcją sterującą stosowaną w celu wielokrotnego wykonania tego samego zestawu instrukcji jednokrotne

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Zarządzanie procesami (omawiane zagadnienia)

Zarządzanie procesami (omawiane zagadnienia) Zarządzanie procesami (omawiane zagadnienia) Pojęcie procesu Stany procesu Blok kontrolny procesu Tworzenie procesu Sygnały Kończenie wykonania procesu Działanie interpretatora poleceń (shell-a) Koncepcja

Bardziej szczegółowo

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2) Podstawy programowania (język C) Globalne / Lokalne Wykład 15. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Zmienne globalne / lokalne (1) int A, *Q; // definicja zmiennych globalnych

Bardziej szczegółowo

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wprowadzenie Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego

Bardziej szczegółowo

Struktury systemów operacyjnych

Struktury systemów operacyjnych Struktury systemów operacyjnych Jan Tuziemski Część slajdów to zmodyfiowane slajdy ze strony os-booi.com copyright Silberschatz, Galvin and Gagne, 2013 Cele wykładu 1. Opis usług dostarczanych przez OS

Bardziej szczegółowo

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski Transport część 2: protokół TCP Sieci komputerowe Wykład 6 Marcin Bieńkowski Protokoły w Internecie warstwa aplikacji HTTP SMTP DNS NTP warstwa transportowa TCP UDP warstwa sieciowa IP warstwa łącza danych

Bardziej szczegółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

Proces y i y w i ąt ą ki

Proces y i y w i ąt ą ki Procesy i wątki Proces Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz

Bardziej szczegółowo

Operacje wejścia/wyjścia odsłona pierwsza

Operacje wejścia/wyjścia odsłona pierwsza Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

1. Procesy i współbieżność

1. Procesy i współbieżność 1. Procesy i współbieżność Opracował: Sławomir Samolej Politechnika Rzeszowska, Katedra Informatyki i Automatyki, Rzeszów, 2013. 1.1. Wprowadzenie Proces to przestrzeń adresowa i pojedynczy wątek sterujący,

Bardziej szczegółowo

Zarządzanie procesami

Zarządzanie procesami Zarządzanie procesami Proces, najogólniej rzecz ujmując, jest wykonywanym programem. Na linuxowy proces składają się: Liniowa przestrzeń adresowa, w której z kolei można wydzielić sekcję tekstu zawierającą

Bardziej szczegółowo

KARTA KURSU. Języki skryptowe

KARTA KURSU. Języki skryptowe KARTA KURSU Nazwa Nazwa w j. ang. Języki skryptowe Script languages Kod Punktacja ECTS* 3 Koordynator mgr Alfred Budziak Zespół dydaktyczny: dr Olaf Bar mgr Alfred Budziak Opis kursu (cele kształcenia)

Bardziej szczegółowo

1.1 Definicja procesu

1.1 Definicja procesu 1 Procesy pojęcia podstawowe 1 1.1 Definicja procesu Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo