Wykład 11 Zarządzanie pamięcią
|
|
- Zbigniew Stachowiak
- 9 lat temu
- Przeglądów:
Transkrypt
1 Wykład 11 Zarządzanie pamięcią część druga: przestrzeń adresowa procesu Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB
2 Pamięć wirtualna Idea: W danej chwili większość procesów potrzebuje tak naprawdę niewielkiego fragmentu przydzielonej przestrzeni adresowej (pewnego podzbioru stron). W związku z tym zarządzaj pamięcią tak, aby w pamięci były tylko te strony które są naprawdę potrzebne. Strony aktualnie niewykorzystane możemy: zapisać do obszaru wymiany (np. zmodyfikowane dane). czasami po prostu możemy o nich zapomnieć dotyczy to stron tylko do odczytu, głównie kodu. Stronę z kodem zawsze możemy sprowadzić z pliku programu (lub biblioteki) Dzisiejszy wykład spróbuje przybliżyć jak to się dzieje w Linuksie 2.0 I omówić niektóre zastosowane w nim bardzo sprytne pomysły. Ważna uwaga: mechanizm pamięci wirtualnej dotyczy wyłącznie pamięci procesu. Pamięć przydzielona przez jądro ( get_free_pages, kmalloc, vmalloc) nigdy nie zostanie zapisana do urządzenia. Ale trzeba pamiętać, że funkcje te mogą uśpić proces wykonywujący się w trybie jądra. (Dla kmalloc, get_free_* możemy przekazać flagę GFP_ATOMIC) aby tego uniknąć. Wojciech Kwedlo, Systemy Operacyjne II -2- Wydział Informatyki PB
3 Sprytny pomysł jeden: współdzielenie kodu Uruchamiamy 30 kopii shella bash. Podejście naiwne: wczytujemy do pamięci RAM 30 kopii programu. W związku z tym identyczny i niemodyfikowalny kod będzie powielony 30 krotnie Oczywiste marnotrawienie pamięci. Pomysł wykorzystany w Linuksie: każda kolejna kopia widzi ten sam kod. Pytanie: W jaki sposób zrealizowano mechanizm widzenia. Odpowiedź: Wykorzystując stronicowanie. Nic nie stoi na przeszkodzie aby jedna strona fizyczna (ramka) była współdzielona, tzn. odwzorowana w przestrzeni adresowej kilku procesów. Mechanizm współdzielenia jest wykorzystany (między innymi) do stron z kodem. W tym przypadku każda ze współdzielonych stron jest widoczna dokładnie pod tym samym adresem wirtualnym, ponieważ mamy do czynienia z procesami utworzonymi z tego samego obrazu. Ale to nie musi być regułą, o czym za chwilę Wojciech Kwedlo, Systemy Operacyjne II -3- Wydział Informatyki PB
4 Pojęcie pliku odwzorowanego w pamięci Standardowe wejście-wyjście z pliku (read, write) wymaga podwójnego kopiowania danych. Przy odczycie dane kopiowane są z urządzenia do pamięci buforowej jądra. Następnie dane kopiowane są do pamięci procesu. Przy zapisie kopiowanie następuje w przeciwną stronę. Jeżeli proces wczytuje duży blok danych to (a) operacja to nie jest najbardziej wydajna oraz (b) dane rezydują w dwóch miejscach w pamięci: pamięci buforowej i pamięci procesu. Rozwiązanie: Odwzoruj plik w pamięci. Możemy zażądać, aby plik pojawił się w pamięci wirtualnej procesu. Następnie operacje na tej pamięci będą operacjami na pliku. Np. odczyt 10 bajtu od początku odwzorowania w pamięci jest odczytem 10 bajtu z pliku. Rozwiązanie jest zaimplementowane przy pomocy mechanizmu stronicowania i ładowania na żądanie. Tworzona jest tablica stron, ale bez przydziału ramek. Przy próbie odczytu wyjątek błędu strony powoduje wczytanie odpowiedniej strony (często strona == 4 bufory) z pliku. Przy zapisie może zajść konieczność wcześniejszego wczytania stron. Wojciech Kwedlo, Systemy Operacyjne II -4- Wydział Informatyki PB
5 Funkcja systemowa i algorytm mmap void * mmap(void *addr,int length, int flags,int protection, int file, int offset). Funkcja ta mapuje pod adresem addr length bajtów z pliku file, począwszy od bajtu zaczynającego się od offset. (Offset musi być wielokrotnością rozmiaru strony). protecion to logiczne or (PROT_WRITE, PROT_READ, PROT_EXECUTE). Addr może być równy 0. Jeżeli jest różny od zera to jest to wskazówka (nie obowiązkowa) odnośnie adresu, pod który należy zamapować obszar pliku. Funkcja zwraca adres, pod który odwzorowała plik, lub -1 w przypadku błędu. Odwzorowanie obowiązuje także po zamknięciu pliku, do momentu wywołania funkcji munmap (void *addr, int length). Jako flagi możemy m.in. podać (nie w Linuksie 2.0.x) MAP_ANON co oznacza odwzorowanie pliku bez podawania pliku. Jest to po prostu żądanie alokacji pamięci. (file nie ma znaczenia). Implementacja malloc w bibliotece C używa mmap do alokacji dużych bloków danych (rozmiar zaokrąglany do rozmiaru strony) Dla małych bloków wykorzystywany jest brk. Algorytm mmap nie ładuje żadnych danych pliku do pamięci, tworzy natomiast tablice stron, tak aby w momencie odwołania do strony dane zostały załadowane. Wojciech Kwedlo, Systemy Operacyjne II -5- Wydział Informatyki PB
6 Odwzorowanie prywatne i współdzielone Typy zadawane przy pomocy parametru flags. Odwzorowanie współdzielone (MAP_SHARED). Jeżeli kilka procesów odwzorowało ten sam plik, to (a) zmiany w pamięci wykonane przez jeden z nich są widoczne dla pozostałych (b) zmiany powodują zmiany w odwzorowanym pliku. Odwzorowanie prywatne (MAP_PRIVATE). Jeżeli kilka procesów odwzorowało ten sam pliki to (a) zmiany w pamięci wykonane przez jeden proces nie są widoczne dla pozostałych. W przypadku gdy nie ma prawa do zapisu odwzorowanie prywatne jest równoważne współdzielonemu. (Linuks implementuje odwzorowanie prywatne). Strony są zamarkowane jako chronione przed zapisem a próba zapisu powoduje utworzenie prywatnej kopii strony. Odwzorowanie współdzielone jest dobrym sposobem na współdzielenie pamięci przez kilka procesów. Współdzielony plik pełni rolę obszaru wymiany (swap) Wojciech Kwedlo, Systemy Operacyjne II -6- Wydział Informatyki PB
7 Sprytny pomysł dwa: biblioteki współdzielone (ang. shared) Współdzielenie kodu pomaga ale nie rozwiązuje wszystkich problemów. Tradycyjnie kod programu był sumą kodu przeznaczonego dla tego programu (np. skompilowane pliki.o) i kodu bibliotek (pliki.a). Linker (polecenie ld) łączył ze sobą kod i biblioteki w jeden plik wykonywalny. Konsekwencje: Biblioteka języka C zajmuje 1MB, przyjmijmy że w systemie jest 10 procesów,a na dysku 1000 programów. Na pewno 1GB miejsca zmarnowanego na dysku. Potencjalnie 10MB zmarnowanej pamięci (potencjalnie bo kolejny sprytny pomysł, który za chwilę omówię sprawia, że proces niekoniecznie rezerwuje od razu całą pamięć). Rozwiązanie: biblioteki współdzielone (.so skrót od shared object). Biblioteka jest ładowana (ściślej odwzorowana w przestrzeń procesu) w chwili uruchomienia programu, a nie jego kompilacji. Kod biblioteki jest współdzielony przez wszystkie procesy z niej korzystające. Dane biblioteki nie są współdzielone każdy proces ma prywatną kopię Wojciech Kwedlo, Systemy Operacyjne II -7- Wydział Informatyki PB
8 Sprytny pomysł trzy: Ładowanie na żądanie (ang. demand loading) Poprzednio mówiłem o ładowaniu programu bądź też biblioteki. Tymczasem ładowanie całości nie ma wielkiego sensu. Program może (prawie) nigdy nie wykorzystywać części kodu programu bądź też danych. W przypadku biblioteki sprawa jest również istotna (chociaż i tak zyskujemy na współdzieleniu). W Linuksie załadowanie czegokolwiek oznacza utworzenie (między innymi) odpowiednich pozycji w tablicy stron. Strony na początku mogą być oflagowane jako nieobecne w pamięci. Stwierdziłem mogą, ponieważ możemy mieć do czynienia z kolejnym załadowaniem obrazu programu bądź też biblioteki i strony te mogłyby zostać sprowadzone przez działające do tej pory procesy. W przypadku, gdy proces usiłuje się odwołać do takiej załadowanej na niby strony generowany jest wyjątek braku strony i dopiero wtedy jest ona sprowadzana do pamięci. W ten sposób strony, których nigdy nie wykorzystamy nie zostaną załadowane. Powyższy opis jest podobny do algorytmu mmap. Nie jest to przypadek, ponieważ załadowanie polega na wykonaniu algorytmu mmap (co najmniej dwa razy dla sekcji kodu i sekcji danych). Wykorzystywane jest odwzorowanie prywatne. Wojciech Kwedlo, Systemy Operacyjne II -8- Wydział Informatyki PB
9 Jądro powyżej Przykład (uproszczony) przestrzeni adresowej procesu (Linux 2.0.x, format ELF) 0xbfffffff Argumenty programu i środowisko Stos: rośnie w dół Dane statyczne zainicjalizowane ładowane są (na żądanie) z pliku wykonywalnego. Miejsce na biblioteki współdzielone 0x (1GB) Wartość brk Dane statyczne niezainicjalizowane (BSS) Dane statyczne zainicjalizowane Kod procesu 0x x Dane niezainicjalizowane są zerowane (rozmiar sekcji BSS) jest przechowywany w pliku wykonywalnym. Jeżeli proces potrzebuje dodatkowej pamięci, może zwiększyć swoją wartość brk. Biblioteki począwszy od 1GB Biblioteki mają również sekcje kodu, danych zainicjalizowanych oraz BSS. Wojciech Kwedlo, Systemy Operacyjne II -9- Wydział Informatyki PB
10 Stronicowanie na żądanie Idea ładowania na żądanie jest rozszerzona na inne sytuacje w których nie mamy do czynienia z ładowaniem. Mówimy wtedy na stronicowaniu na żądanie (ang. demand paging) Przykłady: Przy wzroście rozmiaru stosu, po przekroczeniu przez wskaźnik stosu granicy strony i wystąpieniu błędu, alokowane są kolejne strony. Dane niezaiincjalizowane: przy próbie odwołania się do strony jest ona przydzielana i zerowana. Zmiana wartości brk. Proces może przydzielić sobie dodatkową pamięć na dane zwiększając wartość brk. Służą do tego funkcje systemowe z grupy brk. Oczywiście zwiększenie przydzielonej pamięci nie wiąże się z zarezerwowaniem strony. Strona jest rezerwowana dopiero po próbie odwołania się do przydzielonej pamięci. (Linuks zakłada, że proces może przydzielić pamięć i nigdy z niej nie wykorzystać). Tak naprawdę w dwóch poprzednich przypadkach Linuks odwzorowuje pamięć w tzw. Stronę zerową (ZERO_PAGE). Jest to ramka pamięci, zabezpieczona przed zapisem, zawierająca same zera. Przydział nowej ramki następuje dopiero przy próbie zapisu. Jest to szczególny przypadek kopiowanie przy zapisie (copy on write) Dygresja: Linuks nie wie o funkcjach malloc, operatorze new etc. Te mechanizmy implementowane są na poziomie procesu, konkretnie przez bibliotekę języka C (lub C++). Oczywiście implementacja malloc wykorzystuje funkcję brk. I musi utrzymywać struktury danych niezbędne do zarządzania wolnymi obszarami pamięci. Wojciech Kwedlo, Systemy Operacyjne II -10- Wydział Informatyki PB
11 Jeszcze o bibliotekach współdzielonych W nagłówku pliku wykonywalnego zawarta jest lista wykorzystywanych bibliotek współdzielonych (poleceniem ldd plik_wykonywalny wyświetlisz tę listę) oraz nazwa programu (ld.so) służącego do ładowania tych bibliotek. Jeżeli z systemu zniknie ld.so lub któraź ważna biblioteka (np. libc.so biblioteka języka C) wówczas czekają nas ***olbrzymie*** kłopoty. Z poprzedniego rysunku wynika, że kod procesu ładowany jest zawsze pod adres x Ale pod jaki adres ładować biblioteki. W systemie są setki bibliotek i jeżeli adres byłby ustalony na stałe, to prawie na pewno doszłoby do konfliktów. W formacie ELF (następca a.out) problem rozwiązano w ten sposób że kod biblioteki musi być działać po załadowaniu pod dowolny adres. Taki kod nazywamy PIC (ang. Position Independent Code). Generowany jest on po podaniu opcji -fpic dla kompilatora gcc. Niestety nie ma nic za darmo - wykorzystanie kodu PIC wiąże się ze zmniejszeniem wydajności o 5-10%. Między innymi trzeba poświęcić jeden rejestr procesora. Dlatego też nie należy umieszczać w bibliotekach dynamicznych funkcji realizujących ważne obliczenia. Wojciech Kwedlo, Systemy Operacyjne II -11- Wydział Informatyki PB
12 Dygresja: dostęp do bibliotek współdzielonych przy pomocy API dl API pozwalające procesom użytkownika na korzystanie bibliotek współdzielonych w przypadku gdy nie zostały jawnie zlinkowane z programem. Wykorzystywane np. do implementacji wtyczek. (ang. plugin). #include <dlfcn.h> void *dlopen (const char *filename, int flag); const char *dlerror(void); void *dlsym(void *handle, char *symbol); int dlclose (void *handle); Program trzeba zlinkować z biblioteką dl (-ldl) dlopen otwiera bibliotekę. Parametr flag może być albo RTLD_LAZY (wiąż niezdefiniowane symbole w momencie wykonania kodu biblioteki albo RTLD_NOW (wiąż w momencie ładowania, każdy niezdefiniowany symbol generuje błąd). Wynikiem dlopen jest uchwyt, którym posługujemy się wywołując funkcję dlsym zwracającą adres symbolu (zmiennej niestatycznej lub funkcji z biblioteki) o nazwie symbol. Wynik należy zrzutować na wskaźnik do zmiennej lub funkcji. W wypadku błędu w dlsym lub dlopen dlerror zwróci komunikat o błędzie lub NULL gdy błędu nie było. Poprzez dlclose zwalniamy uchwyt i bibliotekę. Wojciech Kwedlo, Systemy Operacyjne II -12- Wydział Informatyki PB
13 Problemy z funkcją fork Pierwsze wersje Uniksa używały funkcji fork do utworzenia kopii procesu. Wiązało się to (a) z przydzieleniem nowej pamięci potomkowi oraz (b) wykonaniu kopii z pamięci rodzica do pamięci potomka. Rozwiązanie to było niewydajne ponieważ bardzo często po wywoływaniu funkcji fork była wywoływana funkcja exec (Zwalniająca całą pamięć i uruchamiająca nowy proces). W Uniksie jeżeli inny proces chce uruchomić potomka i na niego zaczekać to wykonuje następujący kod: pid = fork(); if (pid < 0) { /* Błąd!!! */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* proces potomny */ execlp("/bin/ls","ls",null); } else { /* proces rodzicielski */ wait(null); printf("child Complete"); W klasycznym Uniksie cała pamięć zostanie skopiowana (fork) a za chwilę zwolniona (exec) Wojciech Kwedlo, Systemy Operacyjne II -13- Wydział Informatyki PB
14 Sprytny pomysł cztery: kopiowanie przy zapisie (ang. copy on write COW ) Częściowe rozwiązanie problemu już znamy możemy bezpiecznie dzielić kod pomiędzy proces rodzicielski i potomka. Czy musimy kopiować strony z danymi? Linuks robi to tylko wtedy gdy nie ma wyjścia!!! Po wykonaniu funkcji fork strony z danymi oflagowane są jako współdzielone (przez rodzica i potomka) oraz (uwaga!!!) zabezpieczone przed zapisem. Jeżeli obydwa procesy czytają strony nic się nie dzieje. Jeżeli jeden z procesów próbuje zmodyfikować stronę z danymi to generowany jest błąd ochrony (strona była zabezpieczona przed zapisem). Kopia strony wykonywana jest w tym momencie. Mechanizm COW jest wykorzystywany: w wywołaniu systemowym fork przy prywatnym odwzorowaniu plików w szczególności dane programów i bibliotek. Powyższe rozwiązanie (i pozostałe sprytne pomysły) pozwalają na zaoszczędzenie pamięci, ale potencjalnie kosztem np. zwiększenia czasu reakcji procesów interakcyjnych, zwłaszcza w przypadku znacznego obciążenia systemu. Wojciech Kwedlo, Systemy Operacyjne II -14- Wydział Informatyki PB
15 Jak to zaimplementować Te wszystkie rozwiązania pomagają (lub nie) ale ich zaimplementowanie staje się coraz trudniejsze. Wyobraźmy sobie wyjątek stronicowania (page fault). Jakie mogą być przyczyny: Proces odwołał się do strony do której nie miał prawa się odwołać => SIGSEGV Proces odwołał się do strony, którą trzeba sprowadzić (ale skąd, znowu kilka możliwości np. dane z pliku albo ze swapu, kod z pliku (jakiego)). Proces się odwołał do strony którą trzeba mu przydzielić i wyzerować (np. Dane niezainicjalizowane, powiększony obszar przez BRK). Proces odwołał się do strony, którą należy skopiować na żądanie. Wydaje się że proces odwołał się do strony, której nie miał prawa się odwołać, ale tak naprawdę jest to wynikiem sukcesywnego powiększania stosu => stronę trzeba przydzielić. Widać że kod zarządzający przestrzenią adresową procesu staje się nieczytelny (masa instrukcji switch). Z pomocą przychodzi nam, podobnie jak w przypadku VFS, programowanie obiektowe Wojciech Kwedlo, Systemy Operacyjne II -15- Wydział Informatyki PB
16 Pojęcie wirtualnego obszaru pamięci Do tej pory jedyną strukturą danych była tablica stron. Jednakże sama tablica nie jest w stanie zagwarantować sprawnej implementacji powyższych mechanizmów. Jest wyraźnie widoczne, że w przestrzeni adresowej mamy do czynienia z obszarami (grupami stron zajmującymi ciągły fragment przestrzeni adresowej) charakteryzującymi się podobnymi własnościami, takimi jak: Identyczny sposób reakcji wyjątek stronicowania. Prawa odczytu zapisu i wykonania. Oczywiście strony w takim obszarze mogą być umieszczone w różnych miejscach pamięci fizycznej, na dysku, albo mogą nie istnieć nigdzie (typu on demand - zerowane) Z powyższych przyczyn w Linuksie wprowadzono strukturę (obiekt???) obszaru pamięci wirtualnej (struct vm_area_struct), która także zawiera wskaźnik do tablicy metod (vm_operations_struct) Wojciech Kwedlo, Systemy Operacyjne II -16- Wydział Informatyki PB
17 Struktura mm_struct (sched.h) struct mm_struct { int count; // Liczba użytkowników pgd_t * pgd; // Katalog tablicy stron unsigned long context; // Początek i koniec kodu i danych. unsigned long start_code, end_code, start_data, end_data; // Podobnie w przypadku obszru brk i stosu unsigned long start_brk, brk, start_stack, start_mmap; // Podobnie w przypadku argumentów i środowiska unsigned long arg_start, arg_end, env_start, env_end; // Informacje statystyczne nie do końca prawdziwe unsigned long rss, total_vm, locked_vm; unsigned long def_flags; // Początek lista wirtualnych obszarów pamięci struct vm_area_struct * mmap; // Korzeń drzewa AVL listy wirtualnych obszarów pamięci struct vm_area_struct * mmap_avl; struct semaphore mmap_sem; }; Reprezentuje przestrzeń adresową procesu. Wskazuje na nią pole mm w strukturze task_struct. Drzewo AVL jest niezbędne do szybkiego przeprowadzenia operacji typu: znajdź obszar którego dotyczy dany adres, np. w funkcji verify_area sprawdzającej poprawność adresu Wojciech Kwedlo, Systemy Operacyjne II -17- Wydział Informatyki PB
18 Współdzielenie struktur mm Linux, oprócz klasycznego wywołania fork, zawiera inne wywołanie systemowe o nazwie clone(). W wyniku tego wywołania proces potomny współdzieli wirtualną przestrzeń adresową (czyli strukturę mm_struct) z procesem rodzicielskim. Stąd pole count w tej strukturze. W takiej sytuacji jakiekolwiek modyfikacje danych w jednym z procesów są widoczne natychmiast w drugim. Funkcja clone pozwala na zaimplementowanie wątków (po to zresztą powstała), np. Poprzez bibliotekę LinuxThreads implementującą wątki POSIX. W Linuksie nie odróżnia wątków od procesów, wątek to proces współdzielący przestrzeń adresową z innymi wątkami. Niestety takie proste rozwiązanie obniża wydajność i nie jest w 100% komatybilne ze standardem POSIX (sygnały). W najnowszej wersji jądra (2.6) i wersjach wcześniejszych (firmy RedHat) zastosowano nowsze i dużo lepsze rozwiązanie (NGPTL Next Generation Posix Thread Library) Wojciech Kwedlo, Systemy Operacyjne II -18- Wydział Informatyki PB
19 Struktura vm_area_struct struct vm_area_struct { struct mm_struct * vm_mm; // początek i koniec unsigned long vm_start; unsigned long vm_end; pgprot_t vm_page_prot; unsigned short vm_flags; // Drzewo AVL i lista liniowa short vm_avl_height; struct vm_area_struct * vm_avl_left; struct vm_area_struct * vm_avl_right; struct vm_area_struct * vm_next; }; // Lista cykliczna (dla obszarów z i-węzłem i współdzielonych) struct vm_area_struct * vm_next_share; struct vm_area_struct * vm_prev_share; // tablica metod struct vm_operations_struct * vm_ops; // przesunięcie w pliku, od którego rozpoczyna się obszar unsigned long vm_offset; // i-węzeł pliku struct inode * vm_inode; // katalog stron unsigned long vm_pte; Flagi obszaru: VM_READ, VM_WRITE, VM_EXEC, VM_SHARED (obszar reprezentuje odwzorowanie współdzielone) VM_GROWSDOWN - automatycznie rośnie w dół (stos i386) VM_LOCKED stron nie można usunąć z pamięci (wymaga przywilejów superużytkownika). Wojciech Kwedlo, Systemy Operacyjne II -19- Wydział Informatyki PB
20 Obszary pamięci c.d. Obszary możemy podzielić na dwie grupy. Obszary związane z odwzorowaniem pliku w pamięci (a) utworzonym jawnie poprzez mmap, (b) utworzonym poprzez uruchomienie pliku wykonywalnego (c) utworzonym poprzez załadowanie biblioteki współdzielonej. W przypadku tego obszaru obsługa błędu braku strony może się wiązać z jej sprowadzeniem z pliku. Obszary anonimowe, w których pole vm_inode==null. Nie są związane z odwzorowaniem pliku, brak strony oznacza konieczność sprowadzenie jej z pamięci wymiany. Zastosowanie drzew AVL. Kluczem w drzewie jest początek obszaru (vm_start). Podczas obsługi wyjątku stronicowania musimy odnaleźć obszar, którego dotyczy ten wyjątek. Robi to funkcja jądra struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr) Zazwyczaj proces ma niewiele obszarów. Niektóre (np. obiektowe bazy danych) mogą jednak mieć ich kilka tysięcy. W takim przypadku wyszukiwanie w drzewie O(logN) jest znacznie szybsze niż wyszukiwanie liniowe O(N). Wojciech Kwedlo, Systemy Operacyjne II -20- Wydział Informatyki PB
21 Obszary przykładowego procesu Program mc. Zawartość pliku /proc/59/maps zakres adresów prawa offset urządzenie i-węzeł (0-obszar anonimowy) e9000 r-xp : (kod programu) 080e f0000 rw-p 000a : (dane) 080f rwxp :00 0 (bss+sterta ) r-xp : rw-p : rw-p : r--s : r-xp : (biblioteka C - kod) rw-p : (biblioteka C - dane) ba000 rw-p :00 0 (biblioteka C - bss) bfffd000-c rwxp ffffe000 00:00 0 (stos + środowisko) Prawa dostępu (rwx) + (p) MAP_PRIVATE albo (s) MAP_SHARED W procesorach Intela r implikuje x. offset przesunięcie od początku pliku (musi być wielokrotnością rozmiaru strony). Wojciech Kwedlo, Systemy Operacyjne II -21- Wydział Informatyki PB
22 Metody obszaru struct vm_operations_struct { void (*open)(struct vm_area_struct * area); void (*close)(struct vm_area_struct * area); void (*unmap)(struct vm_area_struct *area, unsigned long, size_t);void (*protect)(struct vm_area_struct *area, unsigned long, size_t, unsigned int newprot); int (*sync)(struct vm_area_struct *area, unsigned long, size_t, unsigned int flags); void (*advise)(struct vm_area_struct *area, unsigned long, size_t, unsigned int advise); unsigned long (*nopage)(struct vm_area_struct * area, unsigned long address, int write_access); unsigned long (*wppage)(struct vm_area_struct * area, unsigned long address, unsigned long page); int (*swapout)(struct vm_area_struct *, unsigned long, pte_t *); pte_t (*swapin)(struct vm_area_struct *, unsigned long, unsigned long); }; Najważniejsze metody to: nopage wywoływana przy braku strony. wppage przy zapisie do strony chronionej. swapin, swapout przy wymianie pamięć <=> wymiany open, close zliczanie referencji modułu w przypadku pliku specjalnego odwzorowanego w pamięć (odwzorowanie pozostaje w pamięci po zamknięciu pliku szczegóły na następnym wykładzie) Wojciech Kwedlo, Systemy Operacyjne II -22- Wydział Informatyki PB
Wykład 12. Zarządzanie pamięcią (część III) oraz urządzenia sieciowe. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB
Wykład 12 Zarządzanie pamięcią (część III) oraz urządzenia sieciowe Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB Funkcja mmap na pliku specjalnym Funkcje systemową mmap możemy również
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,
Systemy operacyjne III
Systemy operacyjne III WYKŁAD Jan Kazimirski Pamięć wirtualna Stronicowanie Pamięć podzielona na niewielki bloki Bloki procesu to strony a bloki fizyczne to ramki System operacyjny przechowuje dla każdego
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
Wykład 10 Zarządzanie pamięcią
Wykład 10 Zarządzanie pamięcią część pierwsza: pamięć jądra Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB Sprzeczności przy projektowaniu systemu zarządzania pamięcią Implementuj możliwie
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,
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
dr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc Rok akademicki
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ę,
Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces
Procesy pojęcia podstawowe 1 1.1 Jak kod źródłowy przekształca się w proces W języku wysokiego poziomu tworzy się tak zwany kod źródłowy który po zapisaniu będzie plikiem z programem źródłowym. Plik źródłowy
PRZYDZIAŁ PAMIĘCI OPERACYJNEJ
PRZYDZIAŁ PAMIĘCI OPERACYJNEJ dr inż. Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski k.patan@issi.uz.zgora.pl Wstęp Pamięć komputera wielka tablica słów (bajtów)
Języki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
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:
Wykład 7 Podręczna pamięć buforowa (ang. buffer cache) w systemie Linuks. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB
Wykład 7 Podręczna pamięć buforowa (ang. buffer cache) w systemie Linuks Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB Wstęp Przyczyną wprowadzenia pamięci buforowej są ogromne różnice
System plików warstwa fizyczna
System plików warstwa fizyczna Dariusz Wawrzyniak Plan wykładu Przydział miejsca na dysku Zarządzanie wolną przestrzenią Implementacja katalogu Przechowywanie podręczne Integralność systemu plików Semantyka
System plików warstwa fizyczna
System plików warstwa fizyczna Dariusz Wawrzyniak Przydział miejsca na dysku Zarządzanie wolną przestrzenią Implementacja katalogu Przechowywanie podręczne Integralność systemu plików Semantyka spójności
System plików warstwa fizyczna
System plików warstwa fizyczna Dariusz Wawrzyniak Przydział miejsca na dysku Przydział ciągły (ang. contiguous allocation) cały plik zajmuje ciąg kolejnych bloków Przydział listowy (łańcuchowy, ang. linked
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
Lab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Wykład 1: Wskaźniki i zmienne dynamiczne
Programowanie obiektowe Wykład 1: Wskaźniki i zmienne dynamiczne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Podstawy programowania w C++ Wskaźniki 2 dr Artur Bartoszewski - Programowanie
Wykład 8. Pamięć wirtualna. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB
Wykład 8 Pamięć wirtualna Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wprowadzenie Podstawowa idea: System operacyjny pozwala na wykorzystanie pamięci o pojemności większej,
ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku
System plików 1. Pojęcie pliku 2. Typy i struktury plików 3. etody dostępu do plików 4. Katalogi 5. Budowa systemu plików Pojęcie pliku (ang( ang. file)! Plik jest abstrakcyjnym obrazem informacji gromadzonej
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.
SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią
Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 2. Pamięć rzeczywista 3. Pamięć wirtualna
Wskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres
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
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
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
Systemy operacyjne II
Systemy operacyjne II Wojciech Kwedlo Wydział Informatyki PB, p. 205 wkwedlo@ii.pb.bialystok.pl aragorn.pb.bialystok.pl/~wkwedlo Pracownia specjalistyczna: Wojciech Kwedlo Krzysztof Bandurski Wojciech
Programowanie obiektowe i C++ dla matematyków
Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 22 XI 2011 Uwaga! Ponieważ już sobie powiedzieliśmy np. o wskaźnikach i referencjach, przez które nie chcemy przegrzebywać
dr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017 Wykład nr 7 (11.01.2017) Rok akademicki 2016/2017, Wykład
Jak Windows zarządza pamięcią?
Jak Windows zarządza pamięcią? System Windows definiuje dwa typy pamięci, często mylone przez użytkowników. Pamięć fizyczna (pamięc RAM zainstalowana w komputerze) Pamięć widziana przez daną aplikację
Pliki. Informacje ogólne. Obsługa plików w języku C
Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego
Kompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
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
Adam Kotynia, Łukasz Kowalczyk
Adam Kotynia, Łukasz Kowalczyk Dynamiczna alokacja pamięci Alokacja pamięci oraz dezalokacja pamięci jest to odpowiednio przydział i zwolnienie ciągłego obszaru pamięci. Po uruchomieniu, proces (program)
Pamięć współdzielona
Pamięć współdzielona Systemy Operacyjne 2 Piotr Zierhoffer 17 listopada 2011 Mechanizmy IPC IPC Inter Process Communication kolejki komunikatów, pamięć współdzielona semafory polecenia bash: ipcs, ipcrm
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Programowanie w asemblerze Linkowanie
Programowanie w asemblerze Linkowanie January 17, 2017 Problem rozmieszczenia (relokacji) Ponieważ w pamięci równocześnie może znajdować się kilka programów, nie można w trakcie kompilacji przewidzieć
Zarządzanie pamięcią operacyjną
SOE Systemy Operacyjne Wykład 7 Zarządzanie pamięcią operacyjną dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Hierarchia pamięci czas dostępu Rejestry Pamięć podręczna koszt
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu inż. Daniel Solarz Wydział Fizyki i Informatyki Stosowanej AGH 1. Cel projektu. Celem projektu było napisanie wtyczki
Szablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Struktury. Przykład W8_1
Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla
Programowanie na poziomie sprzętu. Tryb chroniony cz. 1
Tryb chroniony cz. 1 Moduł zarządzania pamięcią w trybie chronionym (z ang. PM - Protected Mode) procesorów IA-32 udostępnia: - segmentację, - stronicowanie. Segmentacja mechanizm umożliwiający odizolowanie
Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
DYNAMICZNE PRZYDZIELANIE PAMIECI
DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne
Wstęp do programowania
Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład
Podstawy. Pamięć wirtualna. (demand paging)
Pamięć wirtualna Podstawy Podstawy Stronicowanie na żądanie Wymiana strony Przydział ramek Szamotanie (thrashing) Pamięć wirtualna (virtual memory) oddzielenie pamięci logicznej użytkownika od fizycznej.
Podstawy programowania komputerów
Podstawy programowania komputerów Wykład 10: Sterowanie pamięcią w C Pamięć na stosie!każdy program napisany w języku C ma dostęp do dwóch obszarów pamięci - stosu i sterty, w których może być przechowywana
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
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ą
Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
Zarządzanie pamięcią operacyjną
Dariusz Wawrzyniak Plan wykładu Pamięć jako zasób systemu komputerowego hierarchia pamięci przestrzeń owa Wsparcie dla zarządzania pamięcią na poziomie architektury komputera Podział i przydział pamięci
dr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2009/2010 Wykład nr 8 (29.01.2009) dr inż. Jarosław Forenc Rok akademicki
dr inŝ. Jarosław Forenc
Rok akademicki 2009/2010, Wykład nr 8 2/19 Plan wykładu nr 8 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2009/2010
Wstęp do programowania
wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych
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ęć
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
Algorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Wykład 7. Zarządzanie pamięcią
Wykład 7 Zarządzanie pamięcią -1- Świat idealny a świat rzeczywisty W idealnym świecie pamięć powinna Mieć bardzo dużą pojemność Mieć bardzo krótki czas dostępu Być nieulotna (zawartość nie jest tracona
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Wykład 4. Tablice. Pliki
Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada
Zarządzanie pamięcią w systemie operacyjnym
Zarządzanie pamięcią w systemie operacyjnym Cele: przydział zasobów pamięciowych wykonywanym programom, zapewnienie bezpieczeństwa wykonywanych procesów (ochrona pamięci), efektywne wykorzystanie dostępnej
Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com
Pamięć Jan Tuziemski Źródło części materiałów: os-book.com Cele wykładu Przedstawienie sposobów organizacji pamięci komputera Przedstawienie technik zarządzania pamięcią Podstawy Przed uruchomieniem program
Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Komputery przemysłowe i systemy wbudowane
Komputery przemysłowe i systemy wbudowane Systemy operacyjne w systemach wbudowanych 2 KSEM WETI PG October 7, 2015 System operacyjny System operacyjny (OS) - opcjonalny w systemach wbudowanych. zbiór
System plików JFS. 1 Najważniejsze informacje. Mateusz Zakrzewski. 18 stycznia JFS to skrót od Journalled File System.
System plików JFS Mateusz Zakrzewski 18 stycznia 2004 1 Najważniejsze informacje. JFS to skrót od Journalled File System. Stworzony przez firmę IBM w 1990 roku. Jest niezawodny, dzięki księgowaniu. Zamiast
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
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 005 Plik wymiany Pamięć wirtualna 2 SO i SK/WIN Plik wymiany - rodzaj pamięci wirtualnej komputerów. Plik ten służy do tymczasowego przechowywania
4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24
Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.
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
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
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ę
Zadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
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
Przedmowa... 7. Wstęp...9. 1. Wprowadzenie podstawowe pojęcia... 15
Spis treści Przedmowa... 7 Wstęp...9 1. Wprowadzenie podstawowe pojęcia... 15 Programowanie systemowe 15 API i ABI 18 Standardy 20 Pojęcia dotyczące programowania w Linuksie 23 Początek programowania systemowego
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
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
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
architektura komputerów w. 8 Zarządzanie pamięcią
architektura komputerów w. 8 Zarządzanie pamięcią Zarządzanie pamięcią Jednostka centralna dysponuje zwykle duża mocą obliczeniową. Sprawne wykorzystanie możliwości jednostki przetwarzającej wymaga obecności
Linux Kernel III. Character devices
Linux Kernel III Character devices Urządzenia systemu Linux (I) Character device Block device Network device Do urządzenia piszemy jak do pliku, Dozwolone działania: open, close, read, write, Np. /dev/tty1.
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
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
Schematy zarzadzania pamięcia
Schematy zarzadzania pamięcia Segmentacja podział obszaru pamięci procesu na logiczne jednostki segmenty o dowolnej długości. Postać adresu logicznego: [nr segmentu, przesunięcie]. Zwykle przechowywana
KURS C/C++ WYKŁAD 6. Wskaźniki
Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można
IdyllaOS. Prosty, alternatywny system operacyjny. www.idyllaos.org. Autor: Grzegorz Gliński. Kontakt: milyges@gmail.com
IdyllaOS www.idyllaos.org Prosty, alternatywny system operacyjny Autor: Grzegorz Gliński Kontakt: milyges@gmail.com Co to jest IdyllaOS? IdyllaOS jest to mały, prosty, uniksopodobny, wielozadaniowy oraz
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski
Łą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
PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec
PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Stronicowanie w systemie pamięci wirtualnej
Pamięć wirtualna Stronicowanie w systemie pamięci wirtualnej Stronicowanie z wymianą stron pomiędzy pamięcią pierwszego i drugiego rzędu. Zalety w porównaniu z prostym stronicowaniem: rozszerzenie przestrzeni
Pliki. Informacje ogólne. Obsługa plików w języku C
Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych. Może posiadać określone atrybuty, a odwołanie do niego odbywa się poprzez nazwę. Każdy plik ma skończoną
Systemy operacyjne III
Systemy operacyjne III WYKŁAD 2 Jan Kazimirski 1 Procesy w systemie operacyjnym 2 Proces Współczesne SO w większości są systemami wielozadaniowymi. W tym samym czasie SO obsługuje pewną liczbę zadań procesów
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 007 Tryb rzeczywisty i chroniony procesora 2 SO i SK/WIN Wszystkie 32-bitowe procesory (386 i nowsze) mogą pracować w kilku trybach. Tryby pracy
Uzupełnienie dot. przekazywania argumentów
Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;
utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,
Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz