UNIX. mgr inż. Marcin Borkowski
|
|
- Gabriel Podgórski
- 6 lat temu
- Przeglądów:
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 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ółowoInstrukcja 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ółowoPoniż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.
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ółowoSystemy 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ółowoObsł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ółowoKomunikacja 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ółowoProcesy. 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ółowoSYSTEMY 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ółowoTemat 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ółowoMETODY 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ółowoWykł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ółowoModel 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)
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ółowoLinux: 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ółowoLaboratorium 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ółowoSystemy 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ółowo5. 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ółowo4.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ółowo1. 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ółowoCo 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ółowoPROGRAMOWANIE 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ółowoprocesy 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ółowoPodstawy 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ółowoObsł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ółowoPliki. 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ółowoLaboratorium 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ółowoDział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ółowoLaboratorium 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ółowoPodstawy 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ółowoDział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ółowo4. 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ółowoZaawansowane 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ółowoTemat: 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ółowoprojektowanie 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ółowoDział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ółowoOd 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ółowoprzerwany 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ółowo3. 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ółowo4. 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ółowoProgramowanie 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ółowoZASADY 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ółowoWskaź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ółowoInstytut 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ółowoPobieranie 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ółowoInstrukcja 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ółowoUniwersytet 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ółowoProcesy, 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ółowo1. 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ółowo1 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ółowoMechanizmy 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ółowoWskaź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ółowoWyją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ółowoWidoczność 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ółowoProgramowanie 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ółowoDział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ółowoLinux 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ółowoPodstawy 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ółowoSieci 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ółowoCzym 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ółowoBiblioteka 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ółowoAutor: 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ółowoSystemy 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ółowoSYSTEMY 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ółowoProcesy 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ółowoWykł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ółowoProcesy, 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ółowoProgramowanie 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ółowoKolejki 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ółowoPOSIX: 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 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ółowoSYLABUS 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ółowoLaboratorium 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ółowoProgramowanie 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ółowoSygnał 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ółowoInstytut 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ółowoWykł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ółowoProgramowanie 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ółowoTablice (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ółowoGniazda 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ółowo2.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ółowoNazwa 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ółowoFutex (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ółowoWprowadzenie. 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ółowo1. 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ółowoWprowadzenie. 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ółowoPodstawy 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ółowo4. 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ółowoZarzą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ółowoGlobalne / 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ółowoSystemy 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ółowoStruktury 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ółowoTransport. 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ółowoPROE 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ółowoProces 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ółowoOperacje 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ółowo1. 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ółowoZarzą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ółowoKARTA 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ółowo1.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