Wstęp do systemów operacyjnych Flashcards
(13 cards)
Przegląd systemów operacyjnych. Zadania i zasady działania systemów operacyjnych.
Struktura systemu.
> System operacyjny (OS) jest oprogramowaniem, które zarządza sprzętem i oprogramowaniem komputera.
Głównym zadaniem systemu operacyjnego jest udostępnienie interfejsu dla użytkownika, za pomocą którego można komunikować się z komputerem oraz zarządzać plikami i programami. System operacyjny również koordynuje dostęp do sprzętu, takiego jak pamięć, procesor i urządzenia wejścia/wyjścia, oraz zarządza zasobami systemu, takimi jak pamięć i przestrzeń dyskową.
>
>
> Istnieje wiele różnych systemów operacyjnych, z których każdy ma swoje własne cechy i zastosowanie. Oto kilka przykładów popularnych systemów operacyjnych:
>
> 1. Windows - system operacyjny firmy Microsoft, który jest powszechnie używany na komputerach osobistych i laptopach.
> 2. macOS - system operacyjny firmy Apple, który jest używany na komputerach Mac.
> 3. Linux - system operacyjny typu open-source, który jest popularny wśród programistów i administratorów systemów. Istnieje wiele dystrybucji Linuxa, w tym Ubuntu, Fedora i Debian.
> 4. iOS - system operacyjny firmy Apple, który jest używany na urządzeniach mobilnych, takich jak iPhone i iPad.
> 5. Android - system operacyjny firmy Google, który jest używany na różnych urządzeniach mobilnych, takich jak smartfony i tablety.
> 6. Chrome OS - system operacyjny firmy Google, który jest używany na laptopach zwanych Chromebookami.
>
> Struktura systemu operacyjnego składa się z kilku warstw, które odpowiadają za różne aspekty działania systemu:
>
> 1. Warstwa jądra (kernel): jest to serce systemu operacyjnego, które zarządza sprzętem i zasobami systemu, takimi jak pamięć i procesor. Jądro również koordynuje dostęp do sprzętu i zarządza procesami.
> 2. Warstwa systemu plików: odpowiada za zarządzanie plikami i folderami, umożliwiając użytkownikom i programom dostęp do plików i katalogów.
> 3. Warstwa bibliotek: zawiera biblioteki systemowe, które są wykorzystywane przez programy, udostępniając im różne funkcje i usługi.
> 4. Warstwa interfejsu użytkownika: zawiera interfejs graficzny lub tekstowy, za pomocą którego użytkownicy komunikują się z systemem operacyjnym.
> 5. Warstwa aplikacji: zawiera programy i aplikacje, które są uruchamiane na komputerze.
>
> Niektóre systemy operacyjne mają również dodatkowe warstwy, takie jak warstwa sieciowa, która odpowiada za komunikację sieciową, lub warstwa bezpieczeństwa, która zapewnia zabezpieczenia systemu przed nieautoryzowanym dostępem.
>
Uprawnienia, listy praw dostępu, rodzaje plików, struktura dysku i systemy plików.
Strumienie, potoki i filtry, znaki specjalne i cytowanie, kontrola procesów, środowisko
powłoki.
- Uprawnienia: są to prawa dostępu do plików i folderów, które określają, którzy użytkownicy i grupy mają dostęp do nich oraz jakie operacje mogą wykonać na nich. Przykłady uprawnień to “odczyt”, “zapis” i “wykonywanie”.
- Listy praw dostępu (ACL): to listy uprawnień, które określają dokładnie, którzy użytkownicy i grupy mają dostęp do danego pliku lub folderu oraz jakie operacje mogą wykonać na nim.
- Rodzaje plików: istnieje wiele rodzajów plików, które służą do różnych celów. Przykłady to pliki tekstowe, pliki graficzne, pliki wideo, pliki dźwiękowe, pliki exe itp.
- Struktura dysku: dysk twardy składa się z kilku części, takich jak sektory, partycje, katalogi i pliki. Sektory to najmniejsze jednostki pamięci na dysku, a partycje to podział dysku na kilka logicznych obszarów. Katalogi i pliki to sposób organizacji i przechowywania danych na dysku.
- Systemy plików: system pliku to sposób, w jaki dane są zapisywane i przechowywane na dysku. Istnieją różne systemy plików, takie jak NTFS, FAT32, ext4, itp. każdy z nich ma swoje własne specyfikacje i ograniczenia, dlatego ważne jest wybranie odpowiedniego systemu plików dla konkretnego zastosowania.
- Strumienie: Strumienie to sposób przesyłania danych między programami przy użyciu potoków.
- Potoki: Potoki to interfejsy, które umożliwiają programom przesyłanie danych między sobą.
- Filtry: Filtry to programy, które przetwarzają dane przesyłane przez potoki.
- Znaki specjalne: Znaki specjalne to symbole, które mają specjalne znaczenie dla systemu operacyjnego.
- Cytowanie: Cytowanie pozwala na omijanie tych znaków specjalnych, aby przekazać ich wartość dosłowną.
- Kontrola procesów: Kontrola procesów pozwala na zarządzanie programami, które są uruchomione na komputerze. Można je uruchomić, zatrzymać, przełączać się między nimi, zakończyć lub pozyskać informacje o nich.
- Środowisko powłoki: Powłoka to interfejs użytkownika, który pozwala na komunikację z systemem operacyjnym za pomocą poleceń tekstowych. Środowisko powłoki to zestaw poleceń i narzędzi, które są dostępne dla użytkownika w powłoce.
Programowanie w powłoce. Sygnały i pułapki. Edytor strumieniowy sed i interpreter
poleceń awk.
- Programowanie w powłoce: Programowanie w powłoce polega na tworzeniu skryptów i programów, które mogą być uruchamiane w środowisku powłoki. Skrypty powłoki mogą automatyzować czynności, które są często wykonywane przez użytkownika, lub zwiększać funkcjonalność powłoki.
- Sygnały i pułapki: Sygnały to komunikaty, które system operacyjny wysyła do procesów, informując o różnych zdarzeniach. Pułapki to instrukcje, które pozwalają na przechwytywanie sygnałów i na reagowanie na nie w określony sposób.
- Edytor strumieniowy sed: Sed (stream editor) to narzędzie do edycji plików tekstowych, które pozwala na przetwarzanie danych wejściowych, takich jak usuwanie lub zmiana linii, na przykład.
- Interpreter poleceń awk: Awk to język skryptowy, który pozwala na przetwarzanie danych tekstowych. Jest on często używany do przetwarzania danych z plików tekstowych i jest silnie zintegrowany z systemami powłoki.
Program make i pliki Makefile. Tworzenie bibliotek archiwalnych i współdzielonych w
języku C.
- Program make i pliki Makefile: Program make to narzędzie do automatyzacji procesu budowania programów. Plik Makefile zawiera instrukcje, które opisują, jak skompilować i skojarzyć program. Make używa tych instrukcji, aby określić, które pliki muszą zostać ponownie skompilowane i jakie komendy należy uruchomić, aby to zrobić.
- Tworzenie bibliotek archiwalnych i współdzielonych w języku C: Biblioteki to kolekcje gotowych kodów, które mogą być używane przez inne programy. Biblioteki archiwalne (zwane również statycznymi) są skompilowane do pliku .a (np. libexample.a), który jest łączony z programem podczas kompilacji, natomiast biblioteki współdzielone (zwane dynamicznymi) są skompilowane do pliku .so (np. libexample.so) i łączone z programem podczas jego uruchamiania.
Aby utworzyć bibliotekę archiwalną, trzeba skompilować pliki źródłowe do pliku obiektów, a następnie użyć narzędzia “ar” do stworzenia archiwum bibliot
Podstawy systemu kontroli wersji Git.
- Podstawy systemu kontroli wersji Git: Git jest systemem kontroli wersji, który pozwala na zarządzanie historią zmian w plikach i projektach. Umożliwia on śledzenie zmian, tworzenie i przełączanie między różnymi wersjami plików oraz zarządzanie konfliktami zmian.
- Repozytorium: Podstawową jednostką pracy w Git jest repozytorium, które jest miejscem przechowywania plików i historii zmian. Może być ono zlokalizowane na komputerze lokalnym lub na zdalnym serwerze.
- Commity: Aby wprowadzić zmiany do repozytorium, należy je “zatwierdzić” (commit) za pomocą polecenia “git commit”. Każdy commit jest oznaczony unikalnym identyfikatorem (SHA-1) i zawiera informacje o zmianach oraz metadane, takie jak data i autor.
- Gałęzie: Git pozwala na tworzenie i przełączanie się między różnymi gałęziami (branches), co umożliwia pracę nad
Komunikacja międzyprocesowa: potoki, pliki FIFO, kolejki komunikatów, pamięć
współdzielona i semafory. Implementacja w języku C.
- Potoki (pipes): Potoki to mechanizm komunikacji międzyprocesowej, który pozwala na przesyłanie danych pomiędzy dwoma procesami przez jednokierunkowy kanał. Proces, który jest nadawcą, zapisuje dane do potoku, a proces odbiorca odczytuje je z potoku. Potoki są implementowane jako pliki specjalne w systemie operacyjnym i są dostępne przez standardowe wejście/wyjście (stdin/stdout)
- Pliki FIFO (ang. First In, First Out): Pliki FIFO to specjalny rodzaj pliku, który jest używany do komunikacji międzyprocesowej. Działają one jak potoki, ale są reprezentowane przez pliki zwykłe, które mogą być używane przez różne procesy.
- Kolejki komunikatów: Kolejki komunikatów to mechanizm pozwalający na przesyłanie komunikatów między procesami. Procesy mogą wysyłać i odbierać komunikaty z kolejki, zachowując ich kolejność.
- Pamięć współdzielona: Pamięć współdzielona to obszar pamięci, do którego mogą mieć dostęp różne procesy. Procesy mogą wykonywać operacje na tym obszarze pamięci, jednocześnie, co pozwala na wymianę danych między nimi.
- Semafory: Semafory to mechanizm synchronizacji procesów, które pozwala na kontrolowanie dostępu do zasobów współdzielonych. Procesy mogą operować na semaforze, zwiększając lub zmniejszając jego wartość, co pozwala na kontrolowanie dostępu do zasobów.
Procesy i wątki. Współbieżność. Planowanie przydziału procesora. Szeregowanie
zadań. Przełączanie kontekstu, wywłaszczanie. Problemy zastoju i głodzenia.
- Procesy i wątki: Procesy i wątki to dwie podstawowe jednostki, z których składa się system operacyjny. Proces jest to program, który jest uruchomiony przez system operacyjny, posiadający swój własny adres przestrzeni i zestaw zasobów, takich jak pamięć i pliki. Wątek jest natomiast podzbiorem procesu, posiadającym swój własny stos, rejestry i kontekst wykonania, lecz dzielący zasoby procesu.
- Współbieżność: Współbieżność to zdolność systemu operacyjnego do jednoczesnego wykonywania kilku procesów lub wątków. Współbieżność pozwala na wykorzystanie wielu rdzeni procesora i zwiększa wydajność systemu.
- Planowanie przydziału procesora: Planowanie przydziału procesora to mechanizm, który decyduje, który proces lub wątek będzie miał dostęp do procesora w danym momencie. Istnieje wiele różnych algorytmów planowania, takich jak algorytm FIFO, algorytm Round Robin czy algorytm priorytetowy.
- Szeregowanie zadań to mechanizm, który decyduje, które zadanie będzie wykonane następne, w przypadku gdy kilka zadań jest gotowych do wykonania. Istnieją różne algorytmy szeregowania, takie jak algorytm FIFO, algorytm Round Robin czy algorytm priorytetowy.
- Przełączanie kontekstu (ang. context switching) to proces, w którym system operacyjny zmienia kontekst wykonania z jednego procesu lub wątku na inny. Ten proces jest wymagany do współbieżności i pozwala na równoległe wykonywanie wielu procesów lub wątków.
- Wywłaszczanie (ang. preemption) to mechanizm, który pozwala systemowi operacyjnemu na przejęcie procesora od procesu lub wątku, który jest aktualnie wykonywany. Jest to używane do zabezpieczenia przed zablokowaniem się systemu lub zapewnienia wymaganego poziomu współbieżności.
- Problemy zastoju (ang. deadlock) i głodzenia (ang. starvation) to dwa różne problemy, które mogą wystąpić w systemach współbieżnych. Zastój występuje, gdy dwa lub więcej procesów są zablokowane, ponieważ każdy z nich czeka na zwolnienie zasobów przez inny proces. Głodzenie natomiast występuje, gdy proces jest ignorowany przez system operacyjny i nie ma możliwości uzyskania dostępu do zasobów.
Wątki POSIX, muteksy, synchronizacja, semafory i sekcje krytyczne. Implementacja w
języku C.
- Wątki POSIX: POSIX (Portable Operating System Interface) to międzynarodowy standard, który zapewnia interfejs API dla tworzenia i obsługi wątków. Wątki POSIX pozwalają na tworzenie i zarządzanie wątkami w systemach operacyjnych, które są zgodne z tym standardem. W języku C, funkcje takie jak pthread_create(), pthread_join() czy pthread_exit() są używane do tworzenia, koordynacji i zakończenia wątków.
- Muteksy: Muteksy (ang. mutexes) to mechanizm synchronizacji, który pozwala na zabezpieczenie sekcji kodu przed dostępem przez wiele różnych wątków. Muteksy są używane do synchronizacji dostępu do zmiennych współdzielonych między wątkami. W języku C, funkcje takie jak pthread_mutex_lock() i pthread_mutex_unlock() są używane do blokowania i odblokowywania muteksów.
- Synchronizacja: Synchronizacja to proces koordynacji działania wielu wątków, aby uniknąć konfliktów w dostępie do zasobów. Muteksy, semafory i sekcje krytyczne są przykładami mechanizmów synchronizacji, które mogą być używane do tego celu.
- Semafory: Semafory to mechanizm synchronizacji, który pozwala na zabezpieczenie sekcji kodu przed dostępem przez wiele różnych wątków. Semafory są używane do synchronizacji dostępu do zmiennych współdzielonych między wątkami. W języku C, funkcje takie jak sem_init(), sem_wait() i sem_post() są używane do tworzenia, blokowania i odblokowywania semaforów.
- Sekcje krytyczne: Sekcje krytyczne to fragmenty kodu, które muszą być wykonywane przez tylko jeden wątek na raz. Sekcje krytyczne mogą być zabezpieczone za pomocą muteksów, semaforów lub innych mechanizmów synchronizacji. W języku C, można użyć makr takich jak pthread_mutex_lock() i pthread_mutex_unlock() do oznaczenia sekcji krytycznych i zabezpieczenia ich przed dostępem przez wiele różnych wątków.
Zarządzanie pamięcią. Stronicowanie, pamięć wirtualna – pojęcia i algorytmy
sterujące. Odwzorowywanie plików w pamięci.
- Zarządzanie pamięcią: Zarządzanie pamięcią to proces polegający na alokacji i zarządzaniu dostępnością pamięci operacyjnej dla procesów i programów. System operacyjny zarządza pamięcią, aby uniknąć konfliktów i zapewnić efektywne wykorzystanie zasobów.
- Stronicowanie: Stronicowanie to mechanizm zarządzania pamięcią, w którym pamięć operacyjna jest dzielona na małe kawałki, zwane stronami. Procesy i programy mogą korzystać z pamięci, przydzielając sobie strony. System operacyjny może zarządzać dostępnością stron, zastępując nieużywane strony i udostępniając nowe, gdy jest to potrzebne.
- Pamięć wirtualna: Pamięć wirtualna to technika zarządzania pamięcią, która pozwala procesom na posiadanie większej przestrzeni adresowej niż jest dostępna w pamięci fizycznej. Pamięć wirtualna pozwala na tworzenie iluzji posiadania przez proces pamięci RAM, poprzez dynamiczne przydzielanie i zarządzanie pamięcią na dysku.
- Algorytmy sterujące pamięcią wirtualną to metody, które system operacyjny używa do decydowanie, które strony pamięci wirtualnej powinny być przenoszone do pamięci fizycznej RAM. popularne algorytm to algorytm LRU (Least Recently Used), który polega na usuwaniu najrzadziej używanych stron z pamięci RAM, oraz algorytm FIFO (First In First Out) polegający na usuwaniu pierwszej strony, która została przydzielona do pamięci RAM.
- Odwzorowywanie plików w pamięci to proces polegający na mapowaniu pliku na przestrzeń adresową procesu. Dzięki temu proces może odczytywać i modyfikować plik bezpośrednio z pamięci operacyjnej, zwiększając prędkość dostępu do danych.
Podstawowe zadania systemu plików. Aliasy, systemy hierarchiczne. Alokacja
indeksowa i listowa. Przykładowe systemy plików. Pliki i katalogi z poziomu aplikacji
w języku C.
- Podstawowe zadania systemu plików: System plików jest odpowiedzialny za zarządzanie i organizację plików na dysku. Jego podstawowe zadania to tworzenie, usuwanie, modyfikowanie i przeglądanie plików oraz zarządzanie strukturą katalogów. Inne zadania to zarządzanie dostępem do plików, zabezpieczanie plików przed utratą i kontrolowanie wolnej przestrzeni na dysku.
- Aliasy: Aliasy to nazwy alternatywne dla pliku lub katalogu, które pozwalają na uzyskanie dostępu do tego samego zasobu za pomocą różnych nazw. Aliasy są często używane do tworzenia skrótów do często używanych plików lub katalogów.
- Systemy hierarchiczne: Systemy hierarchiczne to metoda organizacji plików, w której pliki są grupowane w katalogi i podkatalogi według określonej struktury. Ta metoda pozwala na łatwe znajdowanie i przeglądanie plików oraz zarządzanie dostępem do nich.
- Alokacja indeksowa: Alokacja indeksowa to metoda zarządzania plikami, w której każdy plik jest przypisany do indeksu, który zawiera informacje o położeniu pliku na dysku. Ta metoda pozwala na szybkie znajdowanie pliku na podstawie jego indeksu.
- Alokacja listowa: Alokacja listowa to metoda zarządzania plikami, w której dane są przechowywane w formie listy. Ta metoda pozwala na łatwe zarządzanie plikami, ale jest mniej efektywna niż alokacja indeksowa.
System wejścia-wyjścia, obsługa programowa, przerwania, bezpośredni dostęp do
pamięci.
- System wejścia-wyjścia (I/O): System wejścia-wyjścia to zestaw narzędzi i mechanizmów, które pozwalają procesom na komunikację z urządzeniami zewnętrznymi takimi jak dyski twarde, drukarki czy klawiatury. System wejścia-wyjścia pozwala na zarządzanie dostępem do tych urządzeń i koordynację ich działania.
- Obsługa programowa: Obsługa programowa to metoda polegająca na wywoływaniu funkcji systemowych przez program, aby uzyskać dostęp do urządzeń wejścia-wyjścia. Procesy wykonujące tą operację muszą być przerywane, aby umożliwić innym procesom dostęp do urządzeń
- Przerwania: Przerwania to sygnały, które informują system operacyjny o zakończeniu operacji wejścia-wyjścia lub o pojawieniu się błędu. Przerwania pozwalają na dynamiczne zarządzanie dostępem do urządzeń wejścia-wyjścia i umożliwiają procesom na kontynuowanie działania po zakończeniu operacji.
- Bezpośredni dostęp do pamięci (DMA): Bezpośredni dostęp do pamięci to metoda, która pozwala urządzeniom wejścia-wyjścia na bezpośredni dostęp do pamięci operacyjnej, bez konieczności przerywania procesów. DMA pozwala na przyspieszenie operacji wejścia-wyjścia i zwiększenie wydajności systemu.
Zarządzanie pamięcią masową. Sterowniki urządzeń. Wejście-wyjście w bibliotece C.
- Zarządzanie pamięcią masową: Zarządzanie pamięcią masową to proces polegający na alokacji i zarządzaniu dostępnością urządzeń pamięci masowej, takich jak dyski twarde czy pendrive dla procesów i programów. System operacyjny zarządza pamięcią masową, aby uniknąć konfliktów i zapewnić efektywne wykorzystanie zasobów.
- Sterowniki urządzeń: Sterowniki urządzeń to oprogramowanie, które pozwala systemowi operacyjnemu na komunikację z urządzeniem wejścia-wyjścia. Sterownik jest odpowiedzialny za konwersję poleceń wysyłanych przez system operacyjny do formatu odpowiedniego dla urządzenia.
- Wejście-wyjście w bibliotece C: Biblioteka C zawiera funkcje pozwalające na obsługę wejścia-wyjścia, takie jak fopen(), fread(), fwrite() i fclose() do obsługi plików. Funkcje takie jak scanf() i printf() służą do wczytywania i wypisywania danych z/do standardowego wejścia/wyjścia.
Ochrona i bezpieczeństwo. Problemy bezpieczeństwa w wybranych systemach
operacyjnych.
- Ochrona i bezpieczeństwo: Ochrona i bezpieczeństwo to proces polegający na zabezpieczaniu systemu operacyjnego i danych przed nieautoryzowanym dostępem, modyfikacją lub utratą. Ochrona obejmuje zarówno fizyczne zabezpieczenia, jak i zabezpieczenia logiczne, takie jak hasła i certyfikaty.
- Problemy bezpieczeństwa w wybranych systemach operacyjnych:
- Windows: Problemy bezpieczeństwa w systemie Windows obejmują zagrożenia związane z oprogramowaniem, takie jak wirusy, trojany i oprogramowanie szpiegujące, a także ataki phishingowe i nieautoryzowane dostępy do systemu.
- Linux: Problemy bezpieczeństwa w systemie Linux obejmują zagrożenia związane z oprogramowaniem, takie jak wirusy, trojany i oprogramowanie szpiegujące, a także ataki phishingowe i nieautoryzowane dostępy do systemu.