Procesy, pliki, potoki, sygnały - uzupełnienie
|
|
- Bogdan Cichoń
- 6 lat temu
- Przeglądów:
Transkrypt
1 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: oraz Na materiałach opracowanych przez dr inż. Jędrzeja Ułasiewicza: jedrzej.ulasiewicz.staff.iiar.pwr.wroc.pl S. Samolej: Procesy 1
2 Uruchomienie programu z innego programu #include <stdlib.h> int system (const char *string); #include <stdlib.h> int main() { printf( Running ps with system\n ); system( ps -ax ); printf( Done.\n ); exit(0); Wada: nowy program jest uruchamiany przez powłokę. $./system1 Running ps with system PID TTY STAT TIME COMMAND 1? S 0:05 init 2? SW 0:00 [keventd] pts/1 S 0:00 /bin/bash 1273 pts/2 S 0:00 su pts/2 S 0:00 -bash 1463 pts/1 S 0:00 oclock -transparent - geometry 135x pts/1 S 0:01 emacs Makefile 1480 pts/1 S 0:00./system pts/1 R 0:00 ps -ax Done. S. Samolej: Procesy 2
3 Zastępowanie procesu (1) Rodzina funkcji: exec* (execl, execlp, execle, execv, execvp, execve) zastępuje bieżący proces innym, tworzonym na podstawie podanych argumentów. int main() { printf( Running ps with execlp\n ); execlp( ps, ps, -ax, 0); printf( Done.\n ); exit(0); $./pexec Running ps with execlp PID TTY STAT TIME COMMAND 1? S 0:05 init 2? SW 0:00 [keventd] pts/1 S 0:00 /bin/bash 1273 pts/2 S 0:00 su pts/2 S 0:00 -bash 1465 pts/1 S 0:01 emacs Makefile 1514 pts/1 R 0:00 ps ax S. Samolej: Procesy 3
4 exec*() char **environ; int execl(const char *path, const char *arg0,..., (char *)0); int execlp(const char *path, const char *arg0,..., (char *)0); int execle(const char *path, const char *arg0,..., (char *)0, char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *path, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]); path nazwa programu arg0 argn argumenty programu dla wersji funkcji execv argumenty mogą być przekazane przez tablicę argv Funkcje z przyrostkiem p przeszukują zmienną środowiskową PATH (echo $PATH) Zmienna environ może zawierać wartość nowego środowiska programu W funkcjach execle i execve jest dodatkowa zmienna do przekazania tablicy ciągów, która zostanie wykorzystana jako nowe środowisko programu S. Samolej: Procesy 4
5 Zastępowanie procesu (2) Jeśli wystąpiło zastąpienie procesu to PID procesu jest taki sam jak procesu, w którym nastąpiło wywołanie funkcji exex* Efekt jest taki, jakby program rozpoczął wykonywać nowy kod z nowego pliku wykonywalnego, określonego w argumentach funkcji exec* Funkcje exec* zwykle nie powracają, chyba, że wystąpi błąd. Wtedy funkcja zwraca wartość -1 i ustawiana jest zmienna errno. Nowy proces uruchomiony przez exec* dziedziczy między innymi deskryptory pliku. Zamykane są natomiast wszystkie strumienie katalogowe, otwarte w pierwotnym procesie. S. Samolej: Procesy 5
6 Blokowanie dostępu do pliku #include <sys/file.h> int lockf(int fd, int cmd, off_t len); Parametry funkcji: fd Uchwyt pliku cmd len Wartości zwracane: -1 Błąd >0 Sukces Specyfikacje operacji: F_LOCK F_ULOCK F_TEST F_TLOCK Specyfikacja operacji: F_LOCK, F_ULOCK, F_TEST,F_TLOCK Zakres blokowania (o ile bajtów od bieżącego położenia plik ma być zablokowany) (0 - blokowany jest cały plik) Zablokuj dostęp do pliku na długości zakres od pozycji bieżącej Zwolnij dostęp do pliku. Testuj czy fragment pliku jest zablokowany przez inny proces Testuj czy fragment pliku jest zablokowany przez inny proces. Gdy nie to zajmij plik S. Samolej: Pliki, potoki, sygnały 6
7 Kontrolowany zapis 2 procesów do 1 pliku - przykład #include <stdlib.h> #include <sys/stat.h> #include <sys/types.h> #include <sys/wait.h> #include <fcntl.h> int main() { int fd, i; pid_t pid; char buf1[]="to jest tekst1\n"; char buf2[]="to jest tekst2\n"; printf("tworze proces potomny...\n"); fd=open("plik1.txt",o_creat O_WRONLY,0777); pid=fork(); switch(pid) { case -1: perror("blad...\n"); exit(1); case 0: for(i=0;i<10;i++) { lockf(fd,f_lock,0); write(fd,buf1,sizeof(buf1)); sleep(2); lockf(fd,f_ulock,0); exit(112); default: { int stat_val; for(i=0;i<10;i++) { if(lockf(fd,f_test,0)==-1) { printf("zablokowany...\n"); else { lockf(fd,f_lock,0); write(fd,buf2,sizeof(buf2)); lockf(fd,f_ulock,0); sleep(1); wait(&stat_val); exit(0); S. Samolej: Pliki, potoki, sygnały 7
8 Potoki procesowe FILE *popen(const char *command, const char *open_mode); int pclose(file *stream_to_close); popen uruchamia inny programu jako nowy proces oraz przekazuje lub odbiera od niego dane parametr command jest nazwą programu, który należy uruchomić wraz ze wszystkimi parametrami wywołania, parametr open_mode musi mieć wartość r lub w. pclose czeka do momentu zakończenia uruchomionego procesu zwraca kod wyjściowy uruchomionego procesu jeśli proces uruchamiający wykona funkcję wait tracimy wówczas kod wyjściowy, pclose zwróci -1, a zamienna errno będzie zawierała wartość ECHILD S. Samolej: Pliki, potoki, sygnały 8
9 Przykład użycie popen i pclose #include <stdlib.h> #include <string.h> int main() { FILE *read_fp; char buffer[bufsiz + 1]; int chars_read; memset(buffer, \0, sizeof(buffer)); read_fp = popen( uname -a, r ); if (read_fp!= NULL) { chars_read = fread(buffer, sizeof(char), BUFSIZ, read_fp); if (chars_read > 0) { printf( Output was:-\n%s\n, buffer); pclose(read_fp); exit(exit_success); exit(exit_failure); Output was:- Linux gw #1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux S. Samolej: Pliki, potoki, sygnały 9
10 Wysyłanie danych ze pomocą popen #include <stdlib.h> int main() { FILE *write_fp; char buffer[bufsiz + 1]; sprintf(buffer, Once upon a time, there was...\n ); write_fp = popen( od -c, w ); if (write_fp!= NULL) { fwrite(buffer, sizeof(char), strlen(buffer), write_fp); pclose(write_fp); exit(exit_success); exit(exit_failure); $./popen O n c e u p o n a t i m e , t h e r e w a s... \n S. Samolej: Pliki, potoki, sygnały 10
11 Przekazywanie większej ilości danych #include <stdlib.h> #include <string.h> int main() { FILE *read_fp; char buffer[bufsiz + 1]; int chars_read; memset(buffer, \0, sizeof(buffer)); read_fp = popen( ps -ax, r ); if (read_fp!= NULL) { chars_read = fread(buffer, sizeof(char), BUFSIZ, read_fp); while (chars_read > 0) { buffer[chars_read 1] = \0 ; printf( Reading:-\n %s\n, buffer); chars_read = fread(buffer, sizeof(char), BUFSIZ, read_fp); pclose(read_fp); exit(exit_success); exit(exit_failure); $./popen3 Reading:- PID TTY STAT TIME COMMAND 1? S 0:04 init 2? SW 0:00 [kflushd] 3? SW 0:00 [kpiod] 4? SW 0:00 [kswapd] 5? SW< 0:00 [mdrecoveryd] tty2 S 0:02 emacs draft1.txt Reading:- 368 tty1 S 0:00./popen3 369 tty1 R 0:00 ps -ax... S. Samolej: Pliki, potoki, sygnały 11
12 Producent: Potoki i exec #include <stdlib.h> #include <string.h> int main() { int data_processed; int file_pipes[2]; const char some_data[] = 123 ; char buffer[bufsiz + 1]; pid_t fork_result; memset(buffer, \0, sizeof(buffer)); if (pipe(file_pipes) == 0) { fork_result = fork(); if (fork_result == (pid_t)-1) { fprintf(stderr, Fork failure ); exit(exit_failure); if (fork_result == 0) { sprintf(buffer, %d, file_pipes[0]); (void)execl( pipe4, pipe4, buffer, (char *)0); exit(exit_failure); else { data_processed = write(file_pipes[1], some_data, strlen(some_data)); printf( %d - wrote %d bytes\n, getpid(), data_processed); exit(exit_success); Konsument: #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { int data_processed; char buffer[bufsiz + 1]; int file_descriptor; memset(buffer, \0, sizeof(buffer)); sscanf(argv[1], %d, &file_descriptor); data_processed = read(file_descriptor, buffer, BUFSIZ); printf( %d - read %d bytes: %s\n, getpid(), data_processed, buffer); exit(exit_success); $./pipe wrote 3 bytes read 3 bytes: 123 S. Samolej: Pliki, potoki, sygnały 12
13 Jak to działa? Program producenta korzysta z funkcji pipe, aby stworzyć potok, a następnie z funkcji fork, aby utworzyć nowy proces Zapisuje w buforze bufor deskryptor pliku do odczytu otrzymany z funkcji pipe W ramach procesu potomnego wywoływana jest funkcja exec uruchamiająca inny program (konsument), do której jako parametry wywołania przekazywany jest deskryptor pliku do odczytu. Program konsumenta pobiera deskryptor pliku do odczytu i z niego czyta. S. Samolej: Pliki, potoki, sygnały 13
14 Sygnały - wprowadzenie Sygnał to zdarzenie w systemie Linux powstałe w odpowiedzi na zaistnienie pewnych okoliczności Po otrzymaniu sygnału proces może podjąć określone czynności Sygnały są generowane przez niektóre błędy (naruszenie segmentów pamięci, błędy jednostki zmiennoprzecinkowej) Mogą być generowane przez powłokę i programy obsługi terminala, aby wykonać przerwanie. Mogą być też jawnie wysyłane z jednego procesu do drugiego w celu przesłania informacji lub modyfikacji pracy procesu. Na poziomie interfejsu można: Generować sygnały Przechwytywać sygnały Wykonywać na ich podstawie pewne czynności Zignorować (ale nie wszystkie). S. Samolej: Pliki, potoki, sygnały 14
15 Tablica sygnałów Nazwa sygnału SIGABORT SIGALRM SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV SIGTERM SIGUSR1 SIGUSR2 Opis *Przerwanie procesu Zegar alarmowy *Wyjątek związany z jednostką zmiennoprzecinkową Zawieszenie *Nielegalna instrukcja Przerwanie z terminala Zabójstwo (nie można go przechwycić ani zignorować) Zapis do potoku bez odbiorcy Sygnał zakończenia terminala *Dostęp do niewłaściwego segmentu pamięci Zakończenie Sygnał 1 zdefiniowany przez użytkownika Sygnał 1 zdefiniowany przez użytkownika S. Samolej: Pliki, potoki, sygnały 15
16 Reakcja procesów na sygnały Jeśli proces otrzyma jeden z wymienionych wyżej sygnałów i nie jest przygotowany na jego przechwycenie, to zostaje natychmiast zakończony W przypadkach sygnałów oznaczonych * mogą zostać podjęte w systemie czynności zależne od implementacji W chwili takiego zakończenia procesu w jego bieżącym katalogu tworzony jest plik core zawierający zrzut pamięci S. Samolej: Pliki, potoki, sygnały 16
17 Sygnały dodatkowe Nazwa sygnału SIGCHLD SIGCONT SIGSTOP SIGTSTP SIGTTIN SIGTTOU Opis Proces potomny zatrzymał się lub zakończył pracę Wznowienie wykonania, o ile proces był zatrzymany Zatrzymanie wykonywania (nie można go przechwycić ani zignorować) Sygnał zatrzymania terminala Proces pracujący w tle próbuje przeprowadzić odczyt Proces pracujący w tle próbuje przeprowadzić zapis SIGCHILD można zastosować do sterowania procesami potomnymi Pozostałe, poza SIGCONT powodują zatrzymanie otrzymujących je procesów Normalnie skonfigurowany terminal po przyciśnięciu kombinacji Ctrl+C powoduje wysłanie sygnału SIGINT do pierwszoplanowego procesu uruchomionego na tym terminalu. S. Samolej: Pliki, potoki, sygnały 17
18 Manipulowanie sygnałami #include <signal.h> void (*signal(int sig, void (*func)(int)))(int); Funkcja signal przyjmuje 2 parametry: Sygnał, który należy przechwycić lub zignorować (sig) Funkcję, którą należy wywołać po otrzymaniu sygnału, która: Musi przyjmować pojedynczy argument tupu int, a sama być typu void Funkcja signal zwraca z kolei funkcję tego samego typu poprzednią wartość funkcji ustawionej do obsługi sygnału, albo jedną z wartości specjalnych: SIG_IGN = zignorować sygnał SIG_DFL = przywrócić domyślne zachowanie W systemie Linux domyślne zachowanie przywracane jest automatycznie S. Samolej: Pliki, potoki, sygnały 18
19 Prosta obsługa sygnałów - przykład #include <signal.h> void ouch(int sig) { printf( OUCH! - I got signal %d\n, sig); (void) signal(sigint, SIG_DFL); int main() { (void) signal(sigint, ouch); while(1) { printf( \n ); sleep(1); $./ctrlc1 ^C OUCH! - I got signal 2 ^C $ Sygnał jest domyślnie obsługiwany tylko raz. Do ponownej obsługi trzeba procedurę obsługi ponownie ustanowić (pojawia się możliwość niezdążenia z ponowną obsługą). S. Samolej: Pliki, potoki, sygnały 19
20 Wysyłanie sygnałów Wysłanie sygnału do dowolnego procesu: #include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); Funkcja alarm planuje dostarczenie sygnału SIGALRM za seconds sekund unsigned int alarm(unsigned int seconds); S. Samolej: Pliki, potoki, sygnały 20
21 Symulator funkcji alarm - budzik #include <sys/types.h> #include <signal.h> static int alarm_fired = 0; void ding(int sig) { alarm_fired = 1; int main() { pid_t pid; printf( alarm application starting\n ); pid = fork(); switch(pid) { case -1: /* Failure */ perror( fork failed ); exit(1); case 0: /* child */ sleep(5); kill(getppid(), SIGALRM); exit(0); /* if we get here we are the parent process */ printf( waiting for alarm to go off\n ); (void) signal(sigalrm, ding); pause(); if (alarm_fired) printf( Ding!\n ); printf( done\n ); exit(0); $./alarm alarm application starting waiting for alarm to go off <5 second pause> Ding! done $ Jeśli zastosujemy pause, a sygnał już został wysłany do naszego procesu, to możemy spowodować zawieszenie procesu. S. Samolej: Pliki, potoki, sygnały 21
22 Odporny interfejs sygnałowy #include <signal.h> int sigaction( int sig, const struct sigaction *act, struct sigaction *oact); Struktura sigaction jest zdefiniowana w pliku nagłówkowym signal.h i musi się składać przynajmniej z następujących elementów: void (*) (int) sa_handler funkcja, SIG_DFL lub SIG_IGN sigset_t sa_mask sygnały, które należy zablokować w sa_handler int sa_flags modyfikatory reakcji na sygnał Funkcja sigaction ustala reakcję na sygnał sig. Jeśli oact ma wartość inną niż null, sigaction zapisuje poprzednią reakcję na sygnał w lokacji wskazanej przez oact Jeśli act ma wartość null, to jest to jedyny rezultat działania sigaction; jeśli zaś act jest różne od null, wówczas ustawiana jest reakcja na określony sygnał Wewnątrz struktury sigaction, na którą wskazuje argument act, sa_handelr jest wskaźnikiem do funkcji wywoływanej po otrzymaniu sygnału sig. S. Samolej: Pliki, potoki, sygnały 22
23 Przykładowy program stosujący sigaction #include <signal.h> void ouch(int sig) { printf( OUCH! - I got signal %d\n, sig); int main() { struct sigaction act; act.sa_handler = ouch; sigemptyset(&act.sa_mask); act.sa_flags = 0; sigaction(sigint, &act, 0); while(1) { printf( \n ); sleep(1); $./ctrlc2 ^C OUCH! - I got signal 2 ^C OUCH! - I got signal 2 ^\ Quit $ S. Samolej: Pliki, potoki, sygnały 23
Pliki, potoki, sygnały
Pliki, potoki, sygnały 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/
Procesy. S. Samolej: Procesy
Procesy 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/ oraz Na materiałach
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
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
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,
Programowanie Współbieżne. W Linuxie/Unixie
Programowanie Współbieżne W Linuxie/Unixie Identyfikatory pid numer identyfikacyjny procesu zwykle od 0 do 32K przydzielany przez system każdemu nowemu procesowi uzyskać możemy go przez int getpid() 0
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
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
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
Krótki kurs programowania współbieżnego
Krótki kurs programowania współbieżnego Procesy i sygnały w językach C oraz Python Semafory i pamięć dzielona (język C) Uproszczony semafor z Pythona Inne metody komunikowania urs systemu UNIX 1 Ale najpierw
Łą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
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
2. Zarządzanie procesami
J. Ułasiewicz Komputery i systemy równoległe 1 2. Zarządzanie procesami 2.1 Funkcje zarządzania procesami Administrowanie procesami obejmuje następujące czynności: Tworzenie procesu. Testowanie atrybutów
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
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
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
Procesy i potoki. S. Samolej: Procesy
Procesy i potoki 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/ oraz
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ą
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
J. Ułasiewicz Łącza nienazwane, nazwane, select 1
J. Ułasiewicz Łącza nienazwane, nazwane, select 1 4. Komunikacja pomiędzy procesami przez łącza nienazwane i nazwane Łącza nienazwane (ang. Unnamed Pipes) i nazwane (ang. Unnamed Pipes) - jedna z historycznie
pami eć operacyjna przechowuje dane do przetworzenia, tymczasowe dane pomocnicze,
16 3 Procesy 3 Procesy Pojecie procesu jest kluczowe dla zrozumienia funkcjonowania wielozadaniowych systemów operacyjnych. Trudność w zrozumieniu tego pojecia i tym samym zg lebienie mechanizmu obs lugi
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
Procesy. 5. Procesy (2005/2006)
Procesy Program w systemie UNIX jest plikiem zawierającym gotowy do wykonania przez komputer ciąg instrukcji oraz zestaw danych zainicjowanych przez programistę. Proces jest podstawową aktywną jednostką
Łą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ś
Procesy w systemach UNIX i Linux
SOE Systemy Operacyjne Wykład 5 Procesy w systemach UNIX i Linux dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Procesy Proces wykonujący się program identyfikator PID Procesy
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
Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias 7 październik 2008 Uruchomienie, monitorowanie
jeszcze dygresja o macierzach...
#include #include jeszcze dygresja o macierzach... /* przyklad pokazuje, jak dla macierzy wielowymiarowych dziala operator dereferencji * ; otoz jesli macierz jest np. trzywymiarowa
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
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.
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
przypadków wywo lanie systemowe (funkcja systemowa) lub funkcja biblioteczna zwraca wartość 1(czasamiNULL) iprzypisujezmiennej zewn etrznej,
c Wies law P laczek 3 1 Obs luga b l edów Wwi ekszości przypadków wywo lanie systemowe (funkcja systemowa) lub funkcja biblioteczna kończ ac si e b l edem zwraca 1(czasamiNULL) iprzypisujezmiennej zewn
4. Komunikacja pomiędzy procesami przez łącza nienazwane i nazwane
Jędrzej Ułasiewicz Łącza nienazwane, nazwane, funkcja select 1 4. Komunikacja pomiędzy procesami przez łącza nienazwane i nazwane Łącza nienazwane (ang. Unnamed Pipes) i nazwane (ang. Named Pipes) - jedna
2. Zarządzanie procesami
J. Ułasiewicz Sieciowe Systemy Operacyjne 1 2. Zarządzanie procesami W systemie Linux wszelkie aktywności wykonywane są przez procesy które operują na pamięci operacyjnej, plikach i urządzeniach. Procesy
2. Zarządzanie procesami
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 2. Zarządzanie procesami 2.1 Funkcje zarządzania procesami Administrowanie procesami obejmuje następujące czynności: Testowanie atrybutów procesu.
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ę,
Funkcje jadra systemu operacyjnego UNIX
Funkcje jadra systemu operacyjnego UNIX Dariusz Wawrzyniak IIPP 29 września 2009 Plan Wstęp Pliki Procesy Łacza Mechanizmy IPC Sygnały Plan Wstęp Pliki Procesy Łacza Mechanizmy IPC Sygnały Funkcje systemowe
UNIX. mgr inż. Marcin Borkowski
UNIX 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
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ę
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:
J. Ułasiewicz Łącza nienazwane, nazwane, select 1
J. Ułasiewicz Łącza nienazwane, nazwane, select 1 4. Komunikacja pomiędzy procesami przez łącza nienazwane i nazwane Łącza nienazwane (ang. Unnamed Pipes) i nazwane (ang. Unnamed Pipes) - jedna z historycznie
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt
Wątki, sygnały i szeregowanie w systemach UNIX, Linux
SOE Systemy Operacyjne Wykład 6 Wątki, sygnały i szeregowanie w systemach UNIX, Linux dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Wątki w systemie Solaris Modele implementacji
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,
Krótkie wprowadzenie do korzystania z OpenSSL
Krótkie wprowadzenie do korzystania z OpenSSL Literatura: http://www.openssl.org E. Rescola, "An introduction to OpenSSL Programming (PartI)" (http://www.linuxjournal.com/article/4822) "An introduction
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:
Systemy Operacyjne Ćwiczenia
Systemy Operacyjne Ćwiczenia Wies law P laczek Wydzia l Fizyki, Astronomii i Informatyki Stosowanej, Uniwersytet Jagielloński ul. Reymonta 4, 30-059 Kraków 4 lutego 2009 Streszczenie Praca ta zawiera materia
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
Sygnały i ich obsługa
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 i ich obsługa 1. i ich obsługa...2 1.1 Informacje wstępne...2 1.2 Standardy obsługi sygnałów...3 1.3 Wysyłanie sygnałów...6 1.4 Maskowanie sygnałów...10
Argumenty wywołania programu, operacje na plikach
Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują
Wstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
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 -
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
Shared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1.
Shared memory and messages Shared memory vs message passing Shared memory - C functions Shared memory - example program Message queues - C functions Message queues - example program process 0 process 1
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:
Procesy i sygnały. Procesy. 6. Procesy i sygnały (2006/2007)
Procesy i sygnały Procesy Program w systemie UNIX jest plikiem zawierającym gotowy do wykonania przez komputer ciąg instrukcji oraz zestaw danych zainicjowanych przez programistę. Proces jest podstawową
Zarządzanie Procesami
Rozumienie pojęcia proces w informatyce jest, w istocie rzeczy, bliskie jego zwyczajowemu pojmowaniu, czyli jako pewnej sekwencji zmian lub czy zdarzeń zachodzących wg ustalonego schematu (choć niekoniecznie
Funkcje jadra systemu operacyjnego UNIX
Funkcje jadra systemu operacyjnego UNIX Dariusz Wawrzyniak IIPP 29 września 2009 Plan 1 Wstęp 2 Pliki 3 Procesy 4 Łacza 5 Mechanizmy IPC 6 Sygnały Funkcje jadra systemu operacyjnego UNIX 29 września 2009
1. Utwórz blok pamięci współdzielonej korzystając z poniższego kodu:
6 Pamięć współdzielona 6.1 Dostęp do pamięci współdzielonej 1. Utwórz blok pamięci współdzielonej korzystając z poniższego kodu: #include #include #include #include
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
Podstawy administracji systemu Linux
Podstawy administracji systemu Linux Tryb tekstowy Instytut Fizyki Teoretycznej UWr 4 stycznia 2006 Plan kursu 1 Instalacja Linuksa 2 Tryb tekstowy 3 Linux od podszewki 4 Pierwsze kroki w administracji
Temat zajęć: Obsługa łączy komunikacyjnych
Temat zajęć: Obsługa łączy komunikacyjnych Czas realizacji zajęć: 180 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: I. Łącza komunikacyjne Potoki nienazwane, potoki nazwane, przykłady
Unix: programowanie procesów
Unix: programowanie procesów Witold Paluszyński witold.paluszynski@pwr.wroc.pl http://sequoia.ict.pwr.wroc.pl/ witold/ Copyright c 1999 2013 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera
Wskaźniki. Informatyka
Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą
Funkcja (podprogram) void
Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji
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
9. Procesy, urządzenia i system plików w systemie Linux
9. Procesy, urządzenia i system plików w systemie Linux 9.1. Procesy Z systemami unixowymi związane jest pojęcie procesu. W takim ujęciu, proces, rozumiany jest jako wykonywany w systemie program. Każdy
Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011
Obsługa plików Systemy Operacyjne 2 laboratorium Mateusz Hołenko 25 września 2011 Plan zajęć 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach otwieranie i zamykanie zapis i odczyt
Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok
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
Unix: programowanie procesów
Unix: programowanie procesów Witold Paluszyński witold.paluszynski@pwr.edu.pl http://kcir.pwr.edu.pl/ witold/ Copyright c 1999 2018 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera materia
Serwery współbieżne c.d.
Serwery współbieżne c.d. 1. Serwery wielousługowe i wieloprotokołowe. 2. Sterowanie współbieżnością w serwerze współbieżność sterowana zapotrzebowaniem, alokacja wstępna procesów podporządkowanych. 3.
Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)
Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie trzecie (jedne zajęcia) Temat: Potoki i łącza nazwane w Linuksie. Opracowanie: dr in ż. Arkadiusz Chrobot Wprowadzenie 1. Komunikacja
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ą
System operacyjny Linux
Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 6 Język bash Pierwszy skrypt Rozwinięcia parametryczne Bloki instrukcji Dwa przydatne polecenia Tablice Sprawdzanie warunków Instrukcje
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
Zwielokrotnianie wejścia wyjścia
Zwielokrotnianie wejścia wyjścia Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź, 21 marca 2006 Wstęp Zwielokrotnianie wejścia wyjścia informowanie przez jądro procesu użytkownika
Podział programu na moduły
Materiały Podział programu na moduły Informatyka Szczegółowe informacje dotyczące wymagań odnośnie podziału na moduły: http://www.cs.put.poznan.pl/wcomplak/bfiles/c_w_5.pdf Podział programu na moduły pozwala
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,
Unix: programowanie procesów
Unix: programowanie procesów Witold Paluszyński witold.paluszynski@pwr.edu.pl http://kcir.pwr.edu.pl/ witold/ Copyright c 1999 2018 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera materia
Kolejki komunikatów POSIX
Jędrzej Ułasiewicz IIAiR Politechnika Wrocławska 1 Kolejki komunikatów POSIX 1 Wstęp Kolejka komunikatów Q posiada następujące własności: - Posiada określoną pojemność N komunikatów (długość bufora komunikatów).
Unix: programowanie procesów
Unix: programowanie procesów Witold Paluszyński witold.paluszynski@pwr.edu.pl http://kcir.pwr.edu.pl/ witold/ Copyright c 1999 2018 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera materia
SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)
Program my_ping: wysłanie komunikatu ICMP z żądaniem echa Struktura icmp (plik netinet/ip_icmp.h) 0 7 8 15 16 31 TYP (icmp_type) KOD (icmp_code) IDENTYFIKATOR (icmp_id) SUMA KONTROLNA (icmp_cksum) NUMER
dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! )
dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! ) 1 dynamiczny przydział pamięci void * memccpy (void * to, void * from, int c, int
sposób wykonywania operacji zapisu i odczytu dane odczytywane z l acza usuwane (nie można ich odczytać ponownie),
27 4 L acza L acza w systemie UNIX sa plikami specjalnymi, s luż acymi do komunikacji pomiedzy procesami. L acza maja kilka cech typowych dla plików zwyk lych, czyli posiadaja swój i-weze l, posiadaja
Laboratorium systemów operacyjnych ćwiczenie nr 3. [ilość modułów: 1] Temat zajęć: Procesy w systemie operacyjnym
Temat zajęć: Procesy w systemie operacyjnym Czas realizacji zajęć: 45 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Pojęcie procesu, procesy w systemie, usuwanie procesów, priorytety
Problem producentakonsumenta
Problem producentakonsumenta 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/
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM
ĆWICZENIE 5 TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM Wiadomości wstępne: Port szeregowy może pracować w czterech trybach. Tryby różnią się między sobą liczbą bitów
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Wprowadzenie do systemu operacyjnego Linux zarzdzanie procesami, cz. 2
Wprowadzenie do systemu operacyjnego Linux zarzdzanie procesami, cz. 2 PCSS plan funkcje i struktura jdra funkcje systemowe, pułapki i przerwania zarzdzanie procesami: charakterystyka ogólna tworzenie,
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach. 1. Dynamiczna alokacja pamięci dla tablic wielowymiarowych - Przykładowa
UŻYCIE I ZARZĄDZANIE WĄTKAMI
Proces jako pewna instancja programu, w trakcie wykonania, ze swej natury w każdym systemie operacyjnym wyróżniają: prawa własności zasobu a jednym z fundamentalnych zadań systemu jest ochrona przed jednoczesnym
Systemy Operacyjne 1 Laboratorium 3 Potoki i łącza nazwane w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot
Systemy Operacyjne 1 Laboratorium 3 Potoki i łącza nazwane w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot 15 października 2016 Wstęp W tej instrukcji zawarte są informacje na temat jednych z podstawowych
RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )
III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego
Gniazda BSD. komunikacja bezpołączeniowa
Gniazda BSD komunikacja bezpołączeniowa Użycie gniazd w transmisji bezpołączeniowej socket() socket() bind() bind() STOP! recv() żądanie send() send() odpowiedź recv() STOP! recvfrom() #include
Programowanie Proceduralne
Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.
Struktura programu Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem. W ostatnich latach najbardziej używanym stylem oprogramowania