System operacyjny - szybki przewodnik

System operacyjny (OS) to interfejs między użytkownikiem komputera a sprzętem komputerowym. System operacyjny to oprogramowanie, które wykonuje wszystkie podstawowe zadania, takie jak zarządzanie plikami, zarządzanie pamięcią, zarządzanie procesami, obsługa wejścia i wyjścia oraz sterowanie urządzeniami peryferyjnymi, takimi jak napędy dysków i drukarki.

Niektóre popularne systemy operacyjne obejmują system operacyjny Linux, system operacyjny Windows, VMS, OS / 400, AIX, z / OS itp.

Definicja

System operacyjny to program, który działa jako interfejs między użytkownikiem a sprzętem komputerowym i kontroluje wykonywanie wszelkiego rodzaju programów.

Poniżej przedstawiono niektóre ważne funkcje systemu operacyjnego.

  • Zarządzanie pamięcią
  • Zarządzanie procesorami
  • Zarządzanie urządzeniami
  • Zarządzanie plikami
  • Security
  • Kontrola wydajności systemu
  • Rozliczanie zleceń
  • Pomoc w wykrywaniu błędów
  • Koordynacja między innym oprogramowaniem a użytkownikami

Zarządzanie pamięcią

Zarządzanie pamięcią odnosi się do zarządzania pamięcią podstawową lub pamięcią główną. Pamięć główna to duża tablica słów lub bajtów, gdzie każde słowo lub bajt ma swój własny adres.

Pamięć główna zapewnia szybką pamięć, do której można uzyskać bezpośredni dostęp z procesora. Aby program mógł zostać wykonany, musi znajdować się w pamięci głównej. System operacyjny wykonuje następujące czynności związane z zarządzaniem pamięcią -

  • Przechowuje ślady pamięci podstawowej, tj. Jaka jej część jest używana przez kogo, która część nie jest używana.

  • W przypadku wieloprogramowania system operacyjny decyduje, który proces otrzyma pamięć, kiedy i ile.

  • Alokuje pamięć, gdy proces tego zażąda.

  • Usuwa przydział pamięci, gdy proces już jej nie potrzebuje lub został zakończony.

Zarządzanie procesorami

W środowisku wieloprogramowym system operacyjny decyduje, który proces pobiera procesor, kiedy i przez jaki czas. Ta funkcja nazywa sięprocess scheduling. System operacyjny wykonuje następujące czynności związane z zarządzaniem procesorem -

  • Śledzi procesora i stan procesu. Program odpowiedzialny za to zadanie nosi nazwętraffic controller.

  • Przydziela procesor (CPU) do procesu.

  • Cofa przydział procesora, gdy proces nie jest już potrzebny.

Zarządzanie urządzeniami

System operacyjny zarządza komunikacją z urządzeniami za pośrednictwem odpowiednich sterowników. Wykonuje następujące czynności związane z zarządzaniem urządzeniami -

  • Śledzi wszystkie urządzenia. Program odpowiedzialny za to zadanie jest znany jakoI/O controller.

  • Decyduje, który proces otrzyma urządzenie, kiedy i przez jaki czas.

  • Przydziela urządzenie w efektywny sposób.

  • Cofa przydział urządzeń.

Zarządzanie plikami

System plików jest zwykle podzielony na katalogi w celu ułatwienia nawigacji i użytkowania. Te katalogi mogą zawierać pliki i inne wskazówki.

System operacyjny wykonuje następujące czynności związane z zarządzaniem plikami -

  • Śledzi informacje, lokalizację, zastosowania, status itp. Obiekty zbiorowe są często nazywane file system.

  • Decyduje, kto otrzyma zasoby.

  • Alokuje zasoby.

  • Anuluje alokację zasobów.

Inne ważne działania

Oto niektóre z ważnych czynności wykonywanych przez system operacyjny -

  • Security - Za pomocą hasła i podobnych innych technik zapobiega nieautoryzowanemu dostępowi do programów i danych.

  • Control over system performance - Rejestrowanie opóźnień między żądaniem usługi a odpowiedzią z systemu.

  • Job accounting - Śledzenie czasu i zasobów wykorzystywanych przez różne prace i użytkowników.

  • Error detecting aids - Tworzenie zrzutów, śladów, komunikatów o błędach i innych narzędzi do debugowania i wykrywania błędów.

  • Coordination between other softwares and users - Koordynacja i przydzielanie kompilatorów, tłumaczy, asemblerów i innego oprogramowania różnym użytkownikom systemów komputerowych.

Systemy operacyjne istnieją od pierwszej generacji komputerów i ewoluują z czasem. W tym rozdziale omówimy kilka ważnych typów systemów operacyjnych, które są najczęściej używane.

System operacyjny wsadowy

Użytkownicy wsadowego systemu operacyjnego nie współdziałają bezpośrednio z komputerem. Każdy użytkownik przygotowuje swoją pracę na urządzeniu offline, takim jak karty perforowane, i przesyła ją do operatora komputera. Aby przyspieszyć przetwarzanie, zadania o podobnych potrzebach są grupowane i uruchamiane jako grupa. Programiści zostawiają swoje programy operatorowi, a operator sortuje programy o podobnych wymaganiach w partie.

Problemy z systemami wsadowymi są następujące -

  • Brak interakcji między użytkownikiem a pracą.
  • Procesor jest często bezczynny, ponieważ prędkość mechanicznych urządzeń we / wy jest mniejsza niż procesora.
  • Trudno jest zapewnić pożądany priorytet.

Systemy operacyjne z podziałem czasu

Współdzielenie czasu to technika, która umożliwia wielu osobom znajdującym się na różnych terminalach jednoczesne korzystanie z określonego systemu komputerowego. Dzielenie czasu lub wielozadaniowość to logiczne rozszerzenie wieloprogramowania. Czas procesora, który jest współdzielony przez wielu użytkowników jednocześnie, nazywany jest współdzieleniem czasu.

Główną różnicą między wieloprogramowymi systemami wsadowymi a systemami z podziałem czasu jest to, że w przypadku systemów wieloprogramowych wsadowych celem jest maksymalizacja wykorzystania procesora, podczas gdy w systemach z podziałem czasu celem jest zminimalizowanie czasu odpowiedzi.

Procesor wykonuje wiele zadań, przełączając się między nimi, ale przełączniki występują tak często. W ten sposób użytkownik może otrzymać natychmiastową odpowiedź. Na przykład podczas przetwarzania transakcji procesor wykonuje każdy program użytkownika w krótkiej serii lub ilości obliczeń. To znaczy, jeślinUżytkownicy są obecni, wtedy każdy użytkownik może uzyskać kwant czasu. Gdy użytkownik przesyła polecenie, czas odpowiedzi wynosi najwyżej kilka sekund.

System operacyjny wykorzystuje planowanie procesora i wieloprogramowanie, aby zapewnić każdemu użytkownikowi niewielką część czasu. Systemy komputerowe, które zostały zaprojektowane głównie jako systemy wsadowe, zostały zmodyfikowane do systemów z podziałem czasu.

Zalety systemów operacyjnych z podziałem czasu są następujące:

  • Zapewnia szybką reakcję.
  • Pozwala uniknąć powielania oprogramowania.
  • Zmniejsza czas bezczynności procesora.

Wady systemów operacyjnych z podziałem czasu są następujące -

  • Problem niezawodności.
  • Kwestia bezpieczeństwa i integralności programów i danych użytkownika.
  • Problem przesyłania danych.

Rozproszony system operacyjny

Systemy rozproszone wykorzystują wiele procesorów centralnych do obsługi wielu aplikacji czasu rzeczywistego i wielu użytkowników. Zadania przetwarzania danych są odpowiednio rozdzielane między procesory.

Procesory komunikują się ze sobą za pośrednictwem różnych linii komunikacyjnych (takich jak szybkie magistrale lub linie telefoniczne). Są one określane jakoloosely coupled systemslub systemy rozproszone. Procesory w systemie rozproszonym mogą różnić się rozmiarem i funkcją. Te procesory są nazywane lokacjami, węzłami, komputerami i tak dalej.

Zalety systemów rozproszonych są następujące -

  • Dzięki funkcji współdzielenia zasobów użytkownik w jednej witrynie może mieć możliwość korzystania z zasobów dostępnych w innej.
  • Przyspiesz wymianę danych między sobą za pośrednictwem poczty elektronicznej.
  • Jeśli jedna witryna ulegnie awarii w systemie rozproszonym, pozostałe mogą nadal działać.
  • Lepsza obsługa klientów.
  • Zmniejszenie obciążenia komputera hosta.
  • Redukcja opóźnień w przetwarzaniu danych.

Sieciowy system operacyjny

Sieciowy system operacyjny działa na serwerze i zapewnia serwerowi możliwość zarządzania danymi, użytkownikami, grupami, zabezpieczeniami, aplikacjami i innymi funkcjami sieciowymi. Głównym celem sieciowego systemu operacyjnego jest umożliwienie udostępniania plików i drukarek wielu komputerom w sieci, zazwyczaj w sieci lokalnej (LAN), sieci prywatnej lub w innych sieciach.

Przykłady sieciowych systemów operacyjnych obejmują Microsoft Windows Server 2003, Microsoft Windows Server 2008, UNIX, Linux, Mac OS X, Novell NetWare i BSD.

Zalety sieciowych systemów operacyjnych są następujące -

  • Scentralizowane serwery są bardzo stabilne.
  • Bezpieczeństwo jest zarządzane przez serwer.
  • Uaktualnienia do nowych technologii i sprzętu można łatwo zintegrować z systemem.
  • Zdalny dostęp do serwerów jest możliwy z różnych lokalizacji i typów systemów.

Wady sieciowych systemów operacyjnych są następujące -

  • Wysoki koszt zakupu i eksploatacji serwera.
  • Zależność od centralnej lokalizacji dla większości operacji.
  • Wymagana jest regularna konserwacja i aktualizacje.

System operacyjny czasu rzeczywistego

System czasu rzeczywistego definiuje się jako system przetwarzania danych, w którym przedział czasu wymagany do przetwarzania i reagowania na dane wejściowe jest tak mały, że kontroluje środowisko. Czas, w jakim system reaguje na dane wejściowe i wyświetla wymagane zaktualizowane informacje, jest określany jakoresponse time. Zatem w tej metodzie czas odpowiedzi jest znacznie krótszy w porównaniu z przetwarzaniem online.

Systemy czasu rzeczywistego są wykorzystywane, gdy istnieją sztywne wymagania czasowe dotyczące działania procesora lub przepływu danych, a systemy czasu rzeczywistego mogą służyć jako urządzenie sterujące w dedykowanej aplikacji. System operacyjny czasu rzeczywistego musi mieć dobrze zdefiniowane, stałe ograniczenia czasowe, w przeciwnym razie system ulegnie awarii. Na przykład eksperymenty naukowe, medyczne systemy obrazowania, przemysłowe systemy sterowania, systemy uzbrojenia, roboty, systemy kontroli ruchu lotniczego itp.

Istnieją dwa rodzaje systemów operacyjnych czasu rzeczywistego.

Twarde systemy czasu rzeczywistego

Twarde systemy czasu rzeczywistego gwarantują terminowe wykonanie krytycznych zadań. W twardych systemach czasu rzeczywistego dodatkowa pamięć jest ograniczona lub jej brakuje, a dane są przechowywane w pamięci ROM. W tych systemach prawie nigdy nie można znaleźć pamięci wirtualnej.

Miękkie systemy czasu rzeczywistego

Miękkie systemy czasu rzeczywistego są mniej restrykcyjne. Krytyczne zadanie w czasie rzeczywistym ma pierwszeństwo przed innymi zadaniami i zachowuje priorytet, dopóki nie zostanie ukończone. Miękkie systemy czasu rzeczywistego mają ograniczoną użyteczność niż twarde systemy czasu rzeczywistego. Na przykład multimedia, rzeczywistość wirtualna, zaawansowane projekty naukowe, takie jak eksploracja podmorska i łaziki planetarne itp.

System operacyjny zapewnia usługi zarówno użytkownikom, jak i programom.

  • Zapewnia programom środowisko do wykonania.
  • Zapewnia użytkownikom usługi umożliwiające wygodne wykonywanie programów.

Oto kilka typowych usług świadczonych przez system operacyjny -

  • Wykonanie programu
  • Operacje we / wy
  • Manipulacja systemem plików
  • Communication
  • Wykrywanie błędów
  • Alokacja zasobów
  • Protection

Wykonanie programu

Systemy operacyjne obsługują wiele rodzajów działań, od programów użytkownika po programy systemowe, takie jak bufor drukarki, serwery nazw, serwer plików itp. Każde z tych działań jest hermetyzowane jako proces.

Proces obejmuje pełny kontekst wykonania (kod do wykonania, dane do manipulacji, rejestry, używane zasoby systemu operacyjnego). Poniżej przedstawiono główne czynności systemu operacyjnego w zakresie zarządzania programami -

  • Ładuje program do pamięci.
  • Wykonuje program.
  • Obsługuje wykonanie programu.
  • Zapewnia mechanizm synchronizacji procesów.
  • Zapewnia mechanizm komunikacji procesu.
  • Zapewnia mechanizm obsługi zakleszczeń.

Obsługa we / wy

Podsystem we / wy składa się z urządzeń we / wy i odpowiadającego im oprogramowania sterownika. Sterowniki ukrywają przed użytkownikami specyfikę poszczególnych urządzeń sprzętowych.

System operacyjny zarządza komunikacją między użytkownikiem a sterownikami urządzeń.

  • Operacja we / wy oznacza operację odczytu lub zapisu z dowolnym plikiem lub dowolnym określonym urządzeniem we / wy.
  • System operacyjny zapewnia dostęp do wymaganego urządzenia we / wy, gdy jest to wymagane.

Manipulowanie systemem plików

Plik reprezentuje zbiór powiązanych informacji. Komputery mogą przechowywać pliki na dysku (pamięć dodatkowa) w celu długoterminowego przechowywania. Przykłady nośników danych obejmują taśmę magnetyczną, dyski magnetyczne i napędy dysków optycznych, takie jak CD i DVD. Każdy z tych nośników ma swoje własne właściwości, takie jak szybkość, pojemność, szybkość przesyłania danych i metody dostępu do danych.

System plików jest zwykle podzielony na katalogi w celu ułatwienia nawigacji i użytkowania. Te katalogi mogą zawierać pliki i inne wskazówki. Poniżej przedstawiono główne czynności systemu operacyjnego związane z zarządzaniem plikami -

  • Program musi odczytać plik lub zapisać plik.
  • System operacyjny zezwala programowi na działanie na pliku.
  • Uprawnienia różnią się od tylko do odczytu, do odczytu i zapisu, odmowy i tak dalej.
  • System operacyjny zapewnia użytkownikowi interfejs do tworzenia / usuwania plików.
  • System operacyjny zapewnia użytkownikowi interfejs do tworzenia / usuwania katalogów.
  • System operacyjny zapewnia interfejs do tworzenia kopii zapasowych systemu plików.

Komunikacja

W przypadku systemów rozproszonych, które są zbiorem procesorów, które nie współużytkują pamięci, urządzeń peryferyjnych lub zegara, system operacyjny zarządza komunikacją między wszystkimi procesami. Wiele procesów komunikuje się ze sobą za pośrednictwem linii komunikacyjnych w sieci.

System operacyjny obsługuje strategie routingu i połączeń oraz problemy rywalizacji i bezpieczeństwa. Poniżej przedstawiono główne czynności systemu operacyjnego w zakresie komunikacji -

  • Dwa procesy często wymagają przesyłania danych między nimi
  • Oba procesy mogą znajdować się na jednym komputerze lub na różnych komputerach, ale są połączone siecią komputerową.
  • Komunikacja może być realizowana na dwa sposoby, albo przez pamięć współdzieloną, albo przez przekazywanie wiadomości.

Obsługa błędów

Błędy mogą wystąpić w dowolnym miejscu i czasie. Może wystąpić błąd w CPU, w urządzeniach I / O lub w sprzęcie pamięci. Poniżej przedstawiono główne działania systemu operacyjnego w zakresie obsługi błędów -

  • System operacyjny stale sprawdza możliwe błędy.
  • System operacyjny podejmuje odpowiednie działania, aby zapewnić poprawne i spójne przetwarzanie.

Zarządzanie zasobami

W przypadku środowiska wieloużytkownikowego lub wielozadaniowego zasoby, takie jak pamięć główna, cykle procesora i magazyn plików, mają być przydzielone każdemu użytkownikowi lub zadaniu. Poniżej przedstawiono główne czynności systemu operacyjnego w zakresie zarządzania zasobami -

  • System operacyjny zarządza wszystkimi rodzajami zasobów za pomocą harmonogramów.
  • Algorytmy planowania procesora służą do lepszego wykorzystania procesora.

Ochrona

Biorąc pod uwagę, że system komputerowy ma wielu użytkowników i jednocześnie wykonuje wiele procesów, różne procesy muszą być chronione przed wzajemnymi działaniami.

Ochrona odnosi się do mechanizmu lub sposobu kontrolowania dostępu programów, procesów lub użytkowników do zasobów zdefiniowanych przez system komputerowy. Poniżej przedstawiono główne działania systemu operacyjnego w zakresie ochrony -

  • System operacyjny zapewnia, że ​​cały dostęp do zasobów systemowych jest kontrolowany.
  • System operacyjny zapewnia, że ​​zewnętrzne urządzenia we / wy są chronione przed nieważnymi próbami dostępu.
  • System operacyjny zapewnia funkcje uwierzytelniania dla każdego użytkownika za pomocą haseł.

Przetwarzanie wsadowe

Przetwarzanie wsadowe to technika, w której system operacyjny zbiera programy i dane razem w partii przed rozpoczęciem przetwarzania. System operacyjny wykonuje następujące czynności związane z przetwarzaniem wsadowym -

  • System operacyjny definiuje zadanie, które ma predefiniowaną sekwencję poleceń, programów i danych jako pojedynczą jednostkę.

  • System operacyjny przechowuje w pamięci szereg zadań i wykonuje je bez żadnych ręcznych informacji.

  • Zlecenia są przetwarzane w kolejności zgłoszeń, tj. Według kolejności zgłoszeń.

  • Po zakończeniu wykonywania zadania jego pamięć jest zwalniana, a dane wyjściowe zadania są kopiowane do bufora wyjściowego w celu późniejszego wydrukowania lub przetworzenia.

Zalety

  • Przetwarzanie wsadowe zajmuje komputerowi większość pracy operatora.

  • Zwiększona wydajność, ponieważ nowe zadanie rozpoczyna się natychmiast po zakończeniu poprzedniego zadania, bez ręcznej interwencji.

Niedogodności

  • Program trudny do debugowania.
  • Praca może wejść w nieskończoną pętlę.
  • Ze względu na brak schematu ochrony jedno zadanie wsadowe może wpływać na oczekujące zadania.

Wielozadaniowość

Wielozadaniowość ma miejsce, gdy wiele zadań jest wykonywanych jednocześnie przez procesor, przełączając się między nimi. Przełączenia występują tak często, że użytkownicy mogą wchodzić w interakcje z każdym programem, gdy jest on uruchomiony. System operacyjny wykonuje następujące czynności związane z wielozadaniowością -

  • Użytkownik przekazuje instrukcje bezpośrednio do systemu operacyjnego lub programu i otrzymuje natychmiastową odpowiedź.

  • System operacyjny obsługuje wielozadaniowość w taki sposób, że może obsługiwać wiele operacji / wykonywać wiele programów jednocześnie.

  • Wielozadaniowe systemy operacyjne są również znane jako systemy z podziałem czasu.

  • Te systemy operacyjne zostały opracowane w celu umożliwienia interaktywnego korzystania z systemu komputerowego po rozsądnych kosztach.

  • System operacyjny ze współdzieleniem czasu wykorzystuje koncepcję planowania procesora i wieloprogramowania, aby zapewnić każdemu użytkownikowi niewielką część procesora ze współdzieleniem czasu.

  • Każdy użytkownik ma co najmniej jeden oddzielny program w pamięci.

  • Program ładowany do pamięci i wykonywany jest powszechnie określany jako plik process.

  • Gdy proces jest wykonywany, zwykle jest wykonywany tylko przez bardzo krótki czas, zanim zakończy się lub będzie musiał wykonać operacje we / wy.

  • Ponieważ interaktywne wejścia / wyjścia zwykle działają z mniejszą prędkością, ukończenie ich może zająć dużo czasu. W tym czasie procesor może być używany przez inny proces.

  • System operacyjny umożliwia użytkownikom jednoczesne udostępnianie komputera. Ponieważ każde działanie lub polecenie w systemie z podziałem czasu jest zwykle krótkie, każdemu użytkownikowi potrzeba tylko trochę czasu procesora.

  • Ponieważ system szybko przełącza procesor z jednego użytkownika / programu na drugiego, każdy użytkownik ma wrażenie, że ma swój własny procesor, podczas gdy w rzeczywistości jeden procesor jest współdzielony przez wielu użytkowników.

Wieloprogramowanie

Współdzielenie procesora, gdy dwa lub więcej programów znajduje się w pamięci w tym samym czasie, jest określane jako multiprogramming. Wieloprogramowanie zakłada jeden współużytkowany procesor. Wieloprogramowanie zwiększa wykorzystanie procesora, organizując zadania tak, aby procesor zawsze miał jedno do wykonania.

Poniższy rysunek przedstawia układ pamięci dla systemu wieloprogramowego.

System operacyjny wykonuje następujące czynności związane z wieloprogramowaniem.

  • System operacyjny jednocześnie przechowuje w pamięci kilka zadań.

  • Ten zestaw zadań jest podzbiorem zadań przechowywanych w puli zadań.

  • System operacyjny wybiera i zaczyna wykonywać jedno z zadań w pamięci.

  • Wieloprogramowe systemy operacyjne monitorują stan wszystkich aktywnych programów i zasobów systemowych za pomocą programów do zarządzania pamięcią, aby zapewnić, że procesor nigdy nie jest bezczynny, chyba że nie ma zadań do przetworzenia.

Zalety

  • Wysokie i wydajne wykorzystanie procesora.
  • Użytkownik czuje, że wiele programów ma przydzielone CPU prawie jednocześnie.

Niedogodności

  • Wymagane jest planowanie procesora.
  • Aby pomieścić wiele zadań w pamięci, wymagane jest zarządzanie pamięcią.

Interaktywność

Interaktywność odnosi się do zdolności użytkowników do interakcji z systemem komputerowym. System operacyjny wykonuje następujące czynności związane z interaktywnością -

  • Udostępnia użytkownikowi interfejs do interakcji z systemem.
  • Zarządza urządzeniami wejściowymi w celu pobierania danych wejściowych od użytkownika. Na przykład klawiatura.
  • Zarządza urządzeniami wyjściowymi, aby pokazać je użytkownikowi. Na przykład Monitor.

Czas odpowiedzi systemu operacyjnego musi być krótki, ponieważ użytkownik przesyła i czeka na wynik.

System czasu rzeczywistego

Systemy czasu rzeczywistego to zwykle dedykowane systemy wbudowane. System operacyjny wykonuje następujące czynności związane z aktywnością systemu w czasie rzeczywistym.

  • W takich systemach systemy operacyjne zazwyczaj odczytują dane z czujników i reagują na nie.
  • System operacyjny musi gwarantować reakcję na zdarzenia w ustalonych odstępach czasu, aby zapewnić prawidłowe działanie.

Rozproszone środowisko

Środowisko rozproszone odnosi się do wielu niezależnych procesorów lub procesorów w systemie komputerowym. System operacyjny wykonuje następujące czynności związane ze środowiskiem rozproszonym -

  • System operacyjny rozdziela logikę obliczeń na kilka procesorów fizycznych.

  • Procesory nie współużytkują pamięci ani zegara. Zamiast tego każdy procesor ma własną pamięć lokalną.

  • System operacyjny zarządza komunikacją między procesorami. Komunikują się ze sobą różnymi liniami komunikacyjnymi.

Szpulowanie

Buforowanie to akronim oznaczający jednoczesne operacje peryferyjne online. Buforowanie to umieszczanie danych z różnych zadań we / wy w buforze. Bufor ten jest specjalnym obszarem w pamięci lub na dysku twardym, do którego mają dostęp urządzenia we / wy.

System operacyjny wykonuje następujące czynności związane ze środowiskiem rozproszonym -

  • Obsługuje buforowanie danych urządzeń we / wy, ponieważ urządzenia mają różne szybkości dostępu do danych.

  • Utrzymuje bufor buforowania, który zapewnia stację oczekującą, w której dane mogą odpoczywać, podczas gdy wolniejsze urządzenie nadrabia zaległości.

  • Utrzymuje obliczenia równoległe ze względu na proces buforowania, ponieważ komputer może równolegle wykonywać operacje we / wy. Komputer może odczytywać dane z taśmy, zapisywać je na dysku i zapisywać na drukarce taśmowej, gdy wykonuje swoje zadanie obliczeniowe.

Zalety

  • Podczas operacji buforowania dysk jest używany jako bardzo duży bufor.
  • Buforowanie może nakładać operacje we / wy dla jednego zadania z operacjami procesora dla innego zadania.

Proces

Proces to po prostu program w trakcie wykonywania. Wykonanie procesu musi postępować w sposób sekwencyjny.

Proces definiuje się jako jednostkę, która stanowi podstawową jednostkę pracy do zaimplementowania w systemie.

Mówiąc prościej, programy komputerowe piszemy w pliku tekstowym i po uruchomieniu tego programu staje się on procesem, który wykonuje wszystkie zadania wymienione w programie.

Gdy program jest ładowany do pamięci i staje się procesem, można go podzielić na cztery sekcje: stos, stertę, tekst i dane. Poniższy obraz przedstawia uproszczony układ procesu w pamięci głównej -

SN Opis podzespołu
1

Stack

Stos procesów zawiera tymczasowe dane, takie jak parametry metody / funkcji, adres zwrotny i zmienne lokalne.

2

Heap

Jest to pamięć przydzielana dynamicznie procesowi podczas jego wykonywania.

3

Text

Obejmuje to bieżącą aktywność reprezentowaną przez wartość Licznika programu i zawartość rejestrów procesora.

4

Data

Ta sekcja zawiera zmienne globalne i statyczne.

Program

Program to fragment kodu, który może być pojedynczą linią lub milionami linii. Program komputerowy jest zwykle napisany przez programistę w języku programowania. Na przykład tutaj jest prosty program napisany w języku programowania C -

#include <stdio.h>

int main() {
   printf("Hello, World! \n");
   return 0;
}

Program komputerowy to zbiór instrukcji wykonujących określone zadanie przez komputer. Porównując program z procesem, możemy wywnioskować, że proces jest dynamiczną instancją programu komputerowego.

Część programu komputerowego, która wykonuje dobrze zdefiniowane zadanie, nazywana jest plikiem algorithm. Zbiór programów komputerowych, bibliotek i powiązanych danych jest określany jako asoftware.

Cykl życia procesu

Kiedy proces jest wykonywany, przechodzi przez różne stany. Te etapy mogą się różnić w różnych systemach operacyjnych, a nazwy tych stanów również nie są znormalizowane.

Ogólnie proces może mieć jednocześnie jeden z następujących pięciu stanów.

SN Stan i opis
1

Start

Jest to stan początkowy, w którym proces jest uruchamiany / tworzony po raz pierwszy.

2

Ready

Proces oczekuje na przypisanie do procesora. Gotowe procesy czekają na przydzielenie im procesora przez system operacyjny, aby mogły działać. Proces może wejść w ten stan poStart stan lub podczas uruchamiania, ale przerywany przez program planujący w celu przypisania procesora do innego procesu.

3

Running

Po przypisaniu procesu do procesora przez program planujący system operacyjny stan procesu jest ustawiany na uruchomiony, a procesor wykonuje jego instrukcje.

4

Waiting

Proces przechodzi w stan oczekiwania, jeśli musi czekać na zasób, na przykład oczekuje na dane wejściowe użytkownika lub czeka, aż plik stanie się dostępny.

5

Terminated or Exit

Gdy proces zakończy wykonywanie lub zostanie zakończony przez system operacyjny, jest przenoszony do stanu zakończenia, w którym oczekuje na usunięcie z pamięci głównej.

Blok sterowania procesem (PCB)

Blok sterowania procesem to struktura danych utrzymywana przez system operacyjny dla każdego procesu. Płytka drukowana jest identyfikowana przez całkowity identyfikator procesu (PID). PCB przechowuje wszystkie informacje potrzebne do śledzenia procesu, zgodnie z poniższą tabelą -

SN Informacje i opis
1

Process State

Bieżący stan procesu, tj. Czy jest gotowy, działa, oczekuje lub cokolwiek.

2

Process privileges

Jest to wymagane, aby zezwolić / zabronić dostępu do zasobów systemowych.

3

Process ID

Unikalna identyfikacja dla każdego procesu w systemie operacyjnym.

4

Pointer

Wskaźnik do procesu nadrzędnego.

5

Program Counter

Program Counter to wskaźnik do adresu następnej instrukcji, która ma zostać wykonana dla tego procesu.

6

CPU registers

Różne rejestry procesora, w których proces musi być przechowywany w celu wykonania dla stanu pracy.

7

CPU Scheduling Information

Priorytet procesu i inne informacje dotyczące planowania, które są wymagane do planowania procesu.

8

Memory management information

Obejmuje to informacje o tabeli stron, limitach pamięci, tabeli segmentów w zależności od pamięci używanej przez system operacyjny.

9

Accounting information

Obejmuje to ilość procesora używanego do wykonania procesu, limity czasowe, identyfikator wykonania itp.

10

IO status information

Obejmuje to listę urządzeń we / wy przydzielonych do procesu.

Architektura PCB jest całkowicie zależna od systemu operacyjnego i może zawierać różne informacje w różnych systemach operacyjnych. Oto uproszczony schemat PCB -

Płytka drukowana jest utrzymywana dla procesu przez cały okres jego życia i jest usuwana po zakończeniu procesu.

Definicja

Szeregowanie procesów to czynność menedżera procesu, która zajmuje się usunięciem uruchomionego procesu z CPU i wyborem innego procesu na podstawie określonej strategii.

Planowanie procesów jest istotną częścią wieloprogramowych systemów operacyjnych. Takie systemy operacyjne pozwalają na jednoczesne załadowanie więcej niż jednego procesu do pamięci wykonywalnej, a załadowany proces współdzieli procesor za pomocą multipleksowania czasu.

Kolejki planowania procesów

System operacyjny utrzymuje wszystkie PCB w kolejkach planowania procesów. System operacyjny utrzymuje oddzielną kolejkę dla każdego ze stanów procesu, a płytki PCB wszystkich procesów w tym samym stanie wykonania są umieszczane w tej samej kolejce. Gdy stan procesu ulega zmianie, jego płytka drukowana jest odłączana od bieżącej kolejki i przenoszona do nowej kolejki stanu.

System operacyjny obsługuje następujące ważne kolejki planowania procesów -

  • Job queue - Ta kolejka przechowuje wszystkie procesy w systemie.

  • Ready queue- Ta kolejka przechowuje zestaw wszystkich procesów znajdujących się w pamięci głównej, gotowych i oczekujących na wykonanie. W tej kolejce zawsze umieszczany jest nowy proces.

  • Device queues - Tę kolejkę tworzą procesy, które są blokowane z powodu niedostępności urządzenia we / wy.

System operacyjny może używać różnych zasad do zarządzania każdą kolejką (FIFO, Round Robin, Priority itp.). Harmonogram systemu operacyjnego określa, w jaki sposób przenosić procesy między kolejkami gotowości i uruchomienia, które mogą mieć tylko jeden wpis na rdzeń procesora w systemie; na powyższym schemacie został połączony z procesorem.

Model procesu dwustanowego

Model procesu dwustanowego odnosi się do stanów uruchomionych i niedziałających, które opisano poniżej -

SN Stan i opis
1

Running

Gdy tworzony jest nowy proces, wchodzi do systemu w stanie uruchomionym.

2

Not Running

Procesy, które nie są uruchomione, są trzymane w kolejce, czekając na swoją kolej na wykonanie. Każdy wpis w kolejce jest wskaźnikiem do określonego procesu. Kolejka jest implementowana przy użyciu listy połączonej. Korzystanie z dyspozytora jest następujące. Przerwanie procesu powoduje przeniesienie go do kolejki oczekiwania. Jeśli proces został zakończony lub przerwany, proces jest odrzucany. W obu przypadkach dyspozytor następnie wybiera proces z kolejki do wykonania.

Harmonogramy

Harmonogramy to specjalne oprogramowanie systemowe, które obsługuje szeregowanie procesów na różne sposoby. Ich głównym zadaniem jest wybór zadań, które mają zostać przesłane do systemu i podjęcie decyzji, który proces uruchomić. Programy planujące są trzech typów -

  • Harmonogram długoterminowy
  • Harmonogram krótkoterminowy
  • Harmonogram średnioterminowy

Harmonogram długoterminowy

Nazywa się to również a job scheduler. Planista długoterminowy określa, które programy są dopuszczane do systemu w celu przetworzenia. Wybiera procesy z kolejki i ładuje je do pamięci w celu wykonania. Proces ładuje się do pamięci w celu planowania procesora.

Głównym celem harmonogramu zadań jest zapewnienie zrównoważonej kombinacji zadań, takich jak związane z we / wy i procesorem. Kontroluje również stopień wieloprogramowania. Jeśli stopień multiprogramowania jest stabilny, to średnia szybkość tworzenia procesów musi być równa średniej szybkości odejścia procesów wychodzących z systemu.

W niektórych systemach harmonogram długoterminowy może być niedostępny lub minimalny. Systemy operacyjne z podziałem czasu nie mają długoterminowego harmonogramu. Gdy proces zmienia stan z nowego na gotowy, używany jest długoterminowy planista.

Harmonogram krótkoterminowy

Nazywa się to również jako CPU scheduler. Jego głównym celem jest zwiększenie wydajności systemu zgodnie z wybranym zestawem kryteriów. Jest to zmiana stanu gotowości na stan pracy procesu. Planista procesora wybiera proces spośród procesów, które są gotowe do wykonania i przydziela procesor jednemu z nich.

Planiści krótkoterminowi, zwani również dyspozytorami, decydują o tym, który proces wykonać jako następny. Planiści krótkoterminowi są szybsi niż planiści długoterminowi.

Harmonogram średnioterminowy

Częścią jest planowanie średnioterminowe swapping. Usuwa procesy z pamięci. Zmniejsza stopień wieloprogramowania. Średnioterminowy planista jest odpowiedzialny za obsługę zamienionych procesów wyjściowych.

Działający proces może zostać zawieszony, jeśli wysyła żądanie we / wy. Zawieszone procesy nie mogą czynić postępów w kierunku zakończenia. W tym stanie, aby usunąć proces z pamięci i zrobić miejsce dla innych procesów, zawieszony proces jest przenoszony do pamięci dodatkowej. Ten proces nazywa sięswappingi mówi się, że proces został zmieniony lub wdrożony. Konieczna może być zamiana, aby ulepszyć mieszankę procesów.

Porównanie między harmonogramem

SN Harmonogram długoterminowy Harmonogram krótkoterminowy Harmonogram średnioterminowy
1 To program do planowania zadań Jest to harmonogram procesora Jest to program planujący zamianę procesów.
2 Szybkość jest mniejsza niż w przypadku harmonogramu krótkoterminowego Szybkość jest najszybsza spośród innych dwóch Szybkość jest pomiędzy harmonogramem krótko- i długoterminowym.
3 Kontroluje stopień wieloprogramowania Zapewnia mniejszą kontrolę nad stopniem wieloprogramowania Zmniejsza stopień wieloprogramowania.
4 Jest prawie nieobecny lub minimalny w systemie podziału czasu Jest to również minimalny system podziału czasu Jest częścią systemów współdzielenia czasu.
5 Wybiera procesy z puli i ładuje je do pamięci w celu wykonania Wybiera te procesy, które są gotowe do wykonania Może ponownie wprowadzić proces do pamięci i wykonanie może być kontynuowane.

Przełącznik kontekstu

Przełącznik kontekstu to mechanizm służący do przechowywania i przywracania stanu lub kontekstu procesora w bloku sterowania procesem, aby można było wznowić wykonywanie procesu z tego samego punktu w późniejszym czasie. Korzystając z tej techniki, przełącznik kontekstu umożliwia współdzielenie jednego procesora przez wiele procesów. Przełączanie kontekstu jest istotną częścią wielozadaniowych funkcji systemu operacyjnego.

Kiedy program planujący przełącza CPU z wykonywania jednego procesu na wykonywanie innego, stan z aktualnie uruchomionego procesu jest przechowywany w bloku sterowania procesem. Następnie stan kolejnego uruchomienia procesu jest ładowany z własnej płytki PCB i używany do ustawiania komputera, rejestrów itp. W tym momencie można rozpocząć wykonywanie drugiego procesu.

Przełączniki kontekstowe wymagają dużej mocy obliczeniowej, ponieważ stan rejestru i pamięci musi zostać zapisany i przywrócony. Aby uniknąć długiego czasu przełączania kontekstu, niektóre systemy sprzętowe wykorzystują dwa lub więcej zestawów rejestrów procesora. Po przełączeniu procesu następujące informacje są przechowywane do późniejszego wykorzystania.

  • Licznik programu
  • Informacje dotyczące planowania
  • Wartość rejestru bazowego i granicznego
  • Aktualnie używany rejestr
  • Zmieniony stan
  • Informacje o stanie we / wy
  • Informacje księgowe

Harmonogram procesów planuje przypisanie różnych procesów do procesora w oparciu o określone algorytmy planowania. Istnieje sześć popularnych algorytmów planowania procesów, które omówimy w tym rozdziale -

  • Planowanie „kto pierwszy, ten lepszy” (FCFS)
  • Planowanie najkrótszego zadania-następnego (SJN)
  • Planowanie priorytetowe
  • Najkrótszy pozostały czas
  • Planowanie okrężne (RR)
  • Planowanie kolejek wielopoziomowych

Te algorytmy też są non-preemptive or preemptive. Algorytmy nie wywłaszczające są zaprojektowane w taki sposób, że gdy proces wejdzie w stan działania, nie można go wywłaszczyć, dopóki nie zakończy wyznaczonego czasu, podczas gdy planowanie z wywłaszczaniem jest oparte na priorytecie, w którym harmonogram może wywłaszczać działający proces o niskim priorytecie w dowolnym momencie, gdy ma wysoki priorytet proces przechodzi w stan gotowości.

Kto pierwszy, ten lepszy (FCFS)

  • Zlecenia są wykonywane na zasadzie kto pierwszy, ten lepszy.
  • Jest to nie wywłaszczający, wywodzący algorytm planowania.
  • Łatwe do zrozumienia i wdrożenia.
  • Jego realizacja oparta jest na kolejce FIFO.
  • Słaba wydajność, ponieważ średni czas oczekiwania jest długi.

Wait time każdego procesu wygląda następująco -

Proces Czas oczekiwania: Czas obsługi - czas przybycia
P0 0 - 0 = 0
P1 5 - 1 = 4
P2 8-2 = 6
P3 16-3 = 13

Średni czas oczekiwania: (0 + 4 + 6 + 13) / 4 = 5,75

Najkrótsza następna praca (SJN)

  • Jest to również znane jako shortest job firstlub SJF

  • Jest to nie wywłaszczający, wywłaszczający algorytm planowania.

  • Najlepsze podejście, aby zminimalizować czas oczekiwania.

  • Łatwe do wdrożenia w systemach wsadowych, w których wymagany czas procesora jest znany z góry.

  • Niemożliwe do wdrożenia w systemach interaktywnych, gdzie wymagany czas procesora nie jest znany.

  • Podmiot przetwarzający powinien wiedzieć z wyprzedzeniem, ile czasu zajmie ten proces.

Dane: Tabela procesów i ich czas przybycia, czas wykonania

Proces Czas przybycia Czas egzekucji Czas naprawy
P0 0 5 0
P1 1 3 5
P2 2 8 14
P3 3 6 8

Waiting time każdego procesu wygląda następująco -

Proces Czas oczekiwania
P0 0 - 0 = 0
P1 5 - 1 = 4
P2 14-2 = 12
P3 8 - 3 = 5

Średni czas oczekiwania: (0 + 4 + 12 + 5) / 4 = 21/4 = 5,25

Planowanie oparte na priorytetach

  • Szeregowanie priorytetowe to algorytm bez wywłaszczania i jeden z najpowszechniejszych algorytmów planowania w systemach wsadowych.

  • Każdy proces ma przypisany priorytet. Proces o najwyższym priorytecie ma zostać wykonany jako pierwszy i tak dalej.

  • Procesy o tym samym priorytecie są wykonywane na zasadzie kto pierwszy, ten lepszy.

  • O priorytecie można decydować na podstawie wymagań dotyczących pamięci, wymagań czasowych lub innych wymagań dotyczących zasobów.

Biorąc pod uwagę: Tabela procesów i ich czas przybycia, czas wykonania i priorytet. Tutaj rozważamy, że 1 jest najniższym priorytetem.

Proces Czas przybycia Czas egzekucji Priorytet Czas naprawy
P0 0 5 1 0
P1 1 3 2 11
P2 2 8 1 14
P3 3 6 3 5

Waiting time każdego procesu wygląda następująco -

Proces Czas oczekiwania
P0 0 - 0 = 0
P1 11 - 1 = 10
P2 14-2 = 12
P3 5 - 3 = 2

Średni czas oczekiwania: (0 + 10 + 12 + 2) / 4 = 24/4 = 6

Najkrótszy pozostały czas

  • Najkrótszy pozostały czas (SRT) to wywłaszczająca wersja algorytmu SJN.

  • Procesor jest przydzielany do zadania znajdującego się najbliżej ukończenia, ale może zostać wywłaszczone przez nowsze, gotowe zadanie z krótszym czasem do zakończenia.

  • Niemożliwe do wdrożenia w systemach interaktywnych, gdzie wymagany czas procesora nie jest znany.

  • Jest często używany w środowiskach wsadowych, w których pierwszeństwo mają krótkie prace.

Planowanie okrężne

  • Round Robin to zapobiegawczy algorytm szeregowania procesów.

  • Każdy proces ma ustalony czas na wykonanie, nazywany jest quantum.

  • Gdy proces jest wykonywany przez określony czas, jest wywłaszczany, a inny proces jest wykonywany przez określony czas.

  • Przełączanie kontekstu służy do zapisywania stanów wywłaszczonych procesów.

Wait time każdego procesu wygląda następująco -

Proces Czas oczekiwania: Czas obsługi - czas przybycia
P0 (0 - 0) + (12 - 3) = 9
P1 (3 - 1) = 2
P2 (6 - 2) + (14 - 9) + (20 - 17) = 12
P3 (9 - 3) + (17 - 12) = 11

Średni czas oczekiwania: (9 + 2 + 12 + 11) / 4 = 8,5

Planowanie kolejek wielopoziomowych

Kolejki wielopoziomowe nie są niezależnym algorytmem planowania. Korzystają z innych istniejących algorytmów do grupowania i planowania zadań o wspólnych cechach.

  • Dla procesów o wspólnych cechach jest utrzymywanych wiele kolejek.
  • Każda kolejka może mieć własne algorytmy planowania.
  • Priorytety są przypisane do każdej kolejki.

Na przykład zadania związane z procesorem można zaplanować w jednej kolejce, a wszystkie zadania związane z we / wy w innej kolejce. Harmonogram procesów następnie na przemian wybiera zadania z każdej kolejki i przypisuje je do procesora na podstawie algorytmu przypisanego do kolejki.

Co to jest wątek?

Wątek to przepływ wykonywania przez kod procesu, z własnym licznikiem programu, który śledzi, która instrukcja ma zostać wykonana w następnej kolejności, rejestrami systemowymi, które przechowują bieżące zmienne robocze, oraz stosem, który zawiera historię wykonania.

Wątek udostępnia swoim równorzędnym wątkom kilka informacji, takich jak segment kodu, segment danych i otwarte pliki. Gdy jeden wątek zmienia element pamięci segmentu kodu, wszystkie inne wątki to widzą.

Wątek jest również nazywany lightweight process. Wątki zapewniają sposób na poprawę wydajności aplikacji dzięki równoległości. Wątki reprezentują podejście programowe do poprawy wydajności systemu operacyjnego poprzez zmniejszenie narzutu wątku, co jest równoważne klasycznemu procesowi.

Każdy wątek należy do dokładnie jednego procesu i żaden wątek nie może istnieć poza procesem. Każdy wątek reprezentuje oddzielny przepływ kontroli. Wątki są z powodzeniem wykorzystywane we wdrażaniu serwerów sieciowych i serwera WWW. Zapewniają również odpowiednią podstawę do równoległego wykonywania aplikacji na wieloprocesorach z pamięcią współdzieloną. Poniższy rysunek przedstawia działanie procesu jednowątkowego i wielowątkowego.

Różnica między procesem a wątkiem

SN Proces Wątek
1 Proces jest ciężki lub wymaga dużej ilości zasobów. Wątek jest lekki i zajmuje mniej zasobów niż proces.
2 Przełączanie procesów wymaga interakcji z systemem operacyjnym. Przełączanie wątków nie wymaga interakcji z systemem operacyjnym.
3 W wielu środowiskach przetwarzania każdy proces wykonuje ten sam kod, ale ma własną pamięć i zasoby plików. Wszystkie wątki mogą współdzielić ten sam zestaw otwartych plików, procesów potomnych.
4 Jeśli jeden proces jest zablokowany, żaden inny proces nie może zostać wykonany, dopóki pierwszy proces nie zostanie odblokowany. Podczas gdy jeden wątek jest zablokowany i czeka, można uruchomić drugi wątek w tym samym zadaniu.
5 Wiele procesów bez użycia wątków zużywa więcej zasobów. Wiele procesów wielowątkowych zużywa mniej zasobów.
6 W wielu procesach każdy proces działa niezależnie od innych. Jeden wątek może czytać, zapisywać lub zmieniać dane innego wątku.

Zalety Thread

  • Wątki minimalizują czas przełączania kontekstu.
  • Użycie wątków zapewnia współbieżność w procesie.
  • Skuteczna komunikacja.
  • Tworzenie wątków i przełączanie kontekstu jest bardziej ekonomiczne.
  • Wątki pozwalają na wykorzystanie architektur wieloprocesorowych na większą skalę i wydajność.

Rodzaje wątków

Wątki są realizowane na dwa sposoby -

  • User Level Threads - Wątki zarządzane przez użytkowników.

  • Kernel Level Threads - Wątki zarządzane przez system operacyjny działające na jądro, rdzeń systemu operacyjnego.

Wątki na poziomie użytkownika

W tym przypadku jądro zarządzania wątkami nie jest świadome istnienia wątków. Biblioteka wątków zawiera kod do tworzenia i niszczenia wątków, do przekazywania wiadomości i danych między wątkami, do planowania wykonywania wątków oraz do zapisywania i przywracania kontekstów wątków. Aplikacja rozpoczyna się od pojedynczego wątku.

Zalety

  • Przełączanie wątków nie wymaga uprawnień trybu jądra.
  • Wątek na poziomie użytkownika może działać w dowolnym systemie operacyjnym.
  • Planowanie może być specyficzne dla aplikacji w wątku na poziomie użytkownika.
  • Wątki na poziomie użytkownika są szybkie w tworzeniu i zarządzaniu.

Niedogodności

  • W typowym systemie operacyjnym większość wywołań systemowych jest blokowana.
  • Aplikacja wielowątkowa nie może korzystać z wieloprocesowości.

Wątki na poziomie jądra

W tym przypadku zarządzanie wątkami jest wykonywane przez jądro. W obszarze aplikacji nie ma kodu zarządzania wątkami. Wątki jądra są obsługiwane bezpośrednio przez system operacyjny. Każda aplikacja może zostać zaprogramowana jako wielowątkowa. Wszystkie wątki w aplikacji są obsługiwane w ramach jednego procesu.

Jądro przechowuje informacje kontekstowe dla całego procesu i dla poszczególnych wątków w procesie. Planowanie przez jądro odbywa się na zasadzie wątku. Kernel wykonuje tworzenie wątków, planowanie i zarządzanie w przestrzeni jądra. Wątki jądra są generalnie wolniejsze w tworzeniu i zarządzaniu niż wątki użytkownika.

Zalety

  • Kernel może jednocześnie zaplanować wiele wątków z tego samego procesu w wielu procesach.
  • Jeśli jeden wątek procesu jest zablokowany, jądro może zaplanować inny wątek tego samego procesu.
  • Same procedury jądra mogą być wielowątkowe.

Niedogodności

  • Wątki jądra są generalnie wolniejsze w tworzeniu i zarządzaniu niż wątki użytkownika.
  • Przeniesienie kontroli z jednego wątku do drugiego w ramach tego samego procesu wymaga przełączenia trybu na jądro.

Modele wielowątkowe

Niektóre systemy operacyjne zapewniają połączenie funkcji wątku na poziomie użytkownika i wątku na poziomie jądra. Solaris jest dobrym przykładem tego połączonego podejścia. W połączonym systemie wiele wątków w tej samej aplikacji może działać równolegle na wielu procesorach, a blokujące wywołanie systemowe nie musi blokować całego procesu. Modele wielowątkowe dzielą się na trzy typy

  • Relacja wiele do wielu.
  • Relacja wiele do jednego.
  • Relacja jeden do jednego.

Wiele do wielu modeli

Model wiele-do-wielu multipleksuje dowolną liczbę wątków użytkownika na równą lub mniejszą liczbę wątków jądra.

Poniższy diagram przedstawia model wątków wiele-do-wielu, w którym 6 wątków na poziomie użytkownika multipleksuje z 6 wątkami na poziomie jądra. W tym modelu programiści mogą tworzyć dowolną liczbę wątków użytkownika, a odpowiadające im wątki jądra mogą działać równolegle na maszynie wieloprocesorowej. Ten model zapewnia najlepszą dokładność współbieżności, a gdy wątek wykonuje blokujące wywołanie systemowe, jądro może zaplanować wykonanie innego wątku.

Model wiele do jednego

Model wiele do jednego mapuje wiele wątków na poziomie użytkownika do jednego wątku na poziomie jądra. Zarządzanie wątkami odbywa się w przestrzeni użytkownika przez bibliotekę wątków. Gdy wątek wykona blokujące wywołanie systemowe, cały proces zostanie zablokowany. Tylko jeden wątek może uzyskać dostęp do jądra na raz, więc wiele wątków nie może działać równolegle na wielu procesorach.

Jeśli biblioteki wątków na poziomie użytkownika są zaimplementowane w systemie operacyjnym w taki sposób, że system ich nie obsługuje, wówczas wątki jądra używają trybów relacji wiele do jednego.

Model jeden do jednego

Istnieje relacja jeden do jednego między wątkiem na poziomie użytkownika a wątkiem na poziomie jądra. Ten model zapewnia większą współbieżność niż model wiele do jednego. Pozwala również na uruchomienie innego wątku, gdy wątek wykonuje blokujące wywołanie systemowe. Obsługuje wiele wątków do równoległego wykonywania na mikroprocesorach.

Wadą tego modelu jest to, że tworzenie wątku użytkownika wymaga odpowiedniego wątku jądra. OS / 2, Windows NT i Windows 2000 używają modelu relacji jeden do jednego.

Różnica między wątkiem na poziomie użytkownika i wątku na poziomie jądra

SN Wątki na poziomie użytkownika Wątek na poziomie jądra
1 Tworzenie wątków na poziomie użytkownika i zarządzanie nimi są szybsze. Wątki na poziomie jądra są wolniejsze do tworzenia i zarządzania.
2 Implementacja odbywa się za pomocą biblioteki wątków na poziomie użytkownika. System operacyjny obsługuje tworzenie wątków jądra.
3 Wątek na poziomie użytkownika jest ogólny i może działać w dowolnym systemie operacyjnym. Wątek na poziomie jądra jest specyficzny dla systemu operacyjnego.
4 Aplikacje wielowątkowe nie mogą korzystać z wieloprocesowości. Same procedury jądra mogą być wielowątkowe.

Zarządzanie pamięcią to funkcja systemu operacyjnego, która obsługuje lub zarządza pamięcią podstawową oraz przenosi procesy między pamięcią główną a dyskiem podczas wykonywania. Zarządzanie pamięcią śledzi każdą lokalizację pamięci, niezależnie od tego, czy jest przydzielona do jakiegoś procesu, czy jest wolna. Sprawdza, ile pamięci ma być przydzielone procesom. Decyduje o tym, który proces uzyska pamięć w jakim czasie. Śledzi, kiedy część pamięci zostaje zwolniona lub nieprzydzielona i odpowiednio aktualizuje stan.

Ten samouczek nauczy Cię podstawowych pojęć związanych z zarządzaniem pamięcią.

Przestrzeń adresowa procesu

Przestrzeń adresowa procesu to zestaw adresów logicznych, do których proces odwołuje się w swoim kodzie. Na przykład, gdy używane jest adresowanie 32-bitowe, adresy mogą mieć zakres od 0 do 0x7fffffff; to znaczy 2 ^ 31 możliwych liczb, co daje całkowity teoretyczny rozmiar 2 gigabajtów.

System operacyjny dba o mapowanie adresów logicznych na adresy fizyczne w momencie alokacji pamięci do programu. Istnieją trzy typy adresów używanych w programie przed i po przydzieleniu pamięci -

SN Adresy pamięci i opis
1

Symbolic addresses

Adresy użyte w kodzie źródłowym. Nazwy zmiennych, stałe i etykiety instrukcji są podstawowymi elementami symbolicznej przestrzeni adresowej.

2

Relative addresses

W czasie kompilacji kompilator konwertuje adresy symboliczne na adresy względne.

3

Physical addresses

Program ładujący generuje te adresy w momencie ładowania programu do pamięci głównej.

Adresy wirtualne i fizyczne są takie same w schematach wiązania adresu w czasie kompilacji i wczytywania. Adresy wirtualne i fizyczne różnią się schematem wiązania adresu w czasie wykonywania.

Zbiór wszystkich adresów logicznych generowanych przez program jest nazywany plikiem logical address space. Zbiór wszystkich adresów fizycznych odpowiadających tym adresom logicznym jest nazywany aphysical address space.

Mapowanie środowiska wykonawczego z adresu wirtualnego na fizyczny jest wykonywane przez jednostkę zarządzania pamięcią (MMU), która jest urządzeniem sprzętowym. MMU używa następującego mechanizmu do konwersji adresu wirtualnego na adres fizyczny.

  • Wartość w rejestrze bazowym jest dodawana do każdego adresu generowanego przez proces użytkownika, który w momencie wysyłania do pamięci jest traktowany jako przesunięcie. Na przykład, jeśli wartość rejestru bazowego wynosi 10000, wówczas próba użycia adresu lokalizacji 100 zostanie dynamicznie ponownie przydzielona do lokalizacji 10100.

  • Program użytkownika obsługuje adresy wirtualne; nigdy nie widzi prawdziwych adresów fizycznych.

Ładowanie statyczne a dynamiczne

Wyboru między obciążeniem statycznym a dynamicznym należy dokonać na etapie opracowywania programu komputerowego. Jeśli musisz ładować swój program statycznie, to w momencie kompilacji kompletne programy zostaną skompilowane i połączone bez pozostawiania zależności od zewnętrznego programu lub modułu. Konsolidator łączy program obiektowy z innymi niezbędnymi modułami obiektowymi w program absolutny, który zawiera również adresy logiczne.

Jeśli piszesz program ładowany dynamicznie, Twój kompilator skompiluje program i dla wszystkich modułów, które chcesz dołączyć dynamicznie, zostaną dostarczone tylko odniesienia, a reszta pracy zostanie wykonana w momencie wykonania.

W momencie załadunku z static loading, program absolutny (i dane) są ładowane do pamięci w celu rozpoczęcia wykonywania.

Jeśli używasz dynamic loadingdynamiczne procedury biblioteki są przechowywane na dysku w postaci relokowalnej i ładowane do pamięci tylko wtedy, gdy są potrzebne programowi.

Łączenie statyczne a dynamiczne

Jak wyjaśniono powyżej, gdy używane jest łączenie statyczne, konsolidator łączy wszystkie inne moduły wymagane przez program w jeden program wykonywalny, aby uniknąć jakiejkolwiek zależności w czasie wykonywania.

Gdy używane jest dynamiczne łączenie, nie jest wymagane łączenie rzeczywistego modułu lub biblioteki z programem, raczej odniesienie do dynamicznego modułu jest dostarczane w czasie kompilacji i linkowania. Biblioteki dołączane dynamicznie (DLL) w systemie Windows i obiekty współdzielone w systemie Unix są dobrymi przykładami bibliotek dynamicznych.

Zamiana

Zamiana to mechanizm, w którym proces można tymczasowo zamienić z pamięci głównej (lub przenieść) do pamięci dodatkowej (dysku) i udostępnić tę pamięć innym procesom. Jakiś czas później system zamienia proces z pamięci dodatkowej na pamięć główną.

Chociaż proces wymiany zwykle wpływa na wydajność, pomaga to w równoległym uruchamianiu wielu dużych procesów i to jest powód Swapping is also known as a technique for memory compaction.

Całkowity czas potrzebny na proces wymiany obejmuje czas potrzebny na przeniesienie całego procesu na dysk pomocniczy, a następnie skopiowanie procesu z powrotem do pamięci, a także czas potrzebny na odzyskanie pamięci głównej.

Załóżmy, że proces użytkownika ma rozmiar 2048KB, a na standardowym dysku twardym, na którym nastąpi zamiana, szybkość przesyłania danych wynosi około 1 MB na sekundę. Faktyczny transfer procesu 1000K do lub z pamięci zajmie

2048KB / 1024KB per second
= 2 seconds
= 2000 milliseconds

Biorąc pod uwagę czas wejścia i wyjścia, zajmie to pełne 4000 milisekund plus inne obciążenie, w którym proces konkuruje o odzyskanie pamięci głównej.

Alokacja pamięci

Pamięć główna ma zwykle dwie partycje -

  • Low Memory - System operacyjny znajduje się w tej pamięci.

  • High Memory - Procesy użytkownika są przechowywane w dużej pamięci.

System operacyjny wykorzystuje następujący mechanizm alokacji pamięci.

SN Alokacja i opis pamięci
1

Single-partition allocation

W tym typie alokacji schemat rejestru relokacji jest używany do ochrony procesów użytkowników przed sobą oraz przed zmianą kodu i danych systemu operacyjnego. Rejestr relokacji zawiera wartość najmniejszego adresu fizycznego, natomiast rejestr limitów zawiera zakres adresów logicznych. Każdy adres logiczny musi być mniejszy niż rejestr limitów.

2

Multiple-partition allocation

W tego typu alokacji pamięć główna jest podzielona na kilka partycji o stałej wielkości, z których każda powinna zawierać tylko jeden proces. Gdy partycja jest wolna, proces jest wybierany z kolejki wejściowej i ładowany do wolnej partycji. Po zakończeniu procesu partycja staje się dostępna dla innego procesu.

Podział

Gdy procesy są ładowane i usuwane z pamięci, wolne miejsce w pamięci jest dzielone na małe kawałki. Zdarza się później, że procesy nie mogą być przydzielone do bloków pamięci ze względu na ich mały rozmiar, a bloki pamięci pozostają nieużywane. Ten problem jest znany jako fragmentacja.

Fragmentacja jest dwojakiego rodzaju -

SN Fragmentacja i opis
1

External fragmentation

Całkowita ilość pamięci jest wystarczająca, aby spełnić żądanie lub przebywać w nim proces, ale nie jest ciągła, więc nie może być używana.

2

Internal fragmentation

Blok pamięci przypisany do procesu jest większy. Część pamięci pozostaje niewykorzystana, ponieważ nie może być wykorzystana przez inny proces.

Poniższy diagram pokazuje, w jaki sposób fragmentacja może powodować marnowanie pamięci, a technika zagęszczania może służyć do tworzenia większej ilości wolnej pamięci z pofragmentowanej pamięci -

Fragmentację zewnętrzną można zmniejszyć przez zagęszczenie lub przetasowanie zawartości pamięci, aby umieścić całą wolną pamięć w jednym dużym bloku. Aby zagęszczenie było wykonalne, przenoszenie powinno być dynamiczne.

Wewnętrzną fragmentację można zmniejszyć, skutecznie przypisując najmniejszą partycję, ale wystarczająco dużą dla procesu.

Paging

Komputer może adresować więcej pamięci niż ilość fizycznie zainstalowana w systemie. Ta dodatkowa pamięć jest w rzeczywistości nazywana pamięcią wirtualną i jest to sekcja dysku skonfigurowanego do emulacji pamięci RAM komputera. Technika stronicowania odgrywa ważną rolę we wdrażaniu pamięci wirtualnej.

Stronicowanie to technika zarządzania pamięcią, w której przestrzeń adresowa procesu jest dzielona na bloki o tej samej wielkości pages(rozmiar to potęga 2, od 512 bajtów do 8192 bajtów). Rozmiar procesu mierzy się liczbą stron.

Podobnie, główna pamięć jest podzielona na małe bloki (fizycznej) pamięci o stałej wielkości, tzw frames a rozmiar ramki jest taki sam jak rozmiar strony, aby zapewnić optymalne wykorzystanie pamięci głównej i uniknąć fragmentacji zewnętrznej.

Tłumaczenie adresów

Nazywa się adres strony logical address i reprezentowany przez page number i offset.

Logical Address = Page number + page offset

Wywoływany jest adres ramki physical address i reprezentowany przez frame number i offset.

Physical Address = Frame number + page offset

Struktura danych o nazwie page map table służy do śledzenia relacji między stroną procesu a ramką w pamięci fizycznej.

Kiedy system przydziela ramkę do dowolnej strony, tłumaczy ten adres logiczny na adres fizyczny i tworzy wpis w tablicy stron, który ma być używany podczas wykonywania programu.

Kiedy proces ma zostać wykonany, jego odpowiednie strony są ładowane do wszystkich dostępnych ramek pamięci. Załóżmy, że masz program o wielkości 8 KB, ale w danym momencie Twoja pamięć może pomieścić tylko 5 KB, wtedy pojawi się koncepcja stronicowania. Gdy komputerowi zabraknie pamięci RAM, system operacyjny (OS) przeniesie bezczynne lub niechciane strony pamięci do pamięci dodatkowej, aby zwolnić pamięć RAM dla innych procesów i przywróci je, gdy będą potrzebne programowi.

Ten proces jest kontynuowany podczas całego wykonywania programu, w którym system operacyjny usuwa bezczynne strony z pamięci głównej i zapisuje je w pamięci dodatkowej i przywraca je, gdy jest to wymagane przez program.

Zalety i wady stronicowania

Oto lista zalet i wad stronicowania -

  • Paging zmniejsza fragmentację zewnętrzną, ale nadal cierpi z powodu fragmentacji wewnętrznej.

  • Stronicowanie jest proste do wdrożenia i uważane za skuteczną technikę zarządzania pamięcią.

  • Ze względu na równy rozmiar stron i ramek zamiana staje się bardzo łatwa.

  • Tabela stron wymaga dodatkowej pamięci, więc może nie być dobra dla systemu z małą pamięcią RAM.

Segmentacja

Segmentacja to technika zarządzania pamięcią, w której każde zadanie jest podzielone na kilka segmentów o różnych rozmiarach, po jednym dla każdego modułu zawierającego elementy pełniące powiązane funkcje. Każdy segment jest w rzeczywistości inną logiczną przestrzenią adresową programu.

Kiedy proces ma być wykonany, jego odpowiednia segmentacja jest ładowana do pamięci niesąsiadującej, chociaż każdy segment jest ładowany do ciągłego bloku dostępnej pamięci.

Zarządzanie pamięcią segmentacji działa bardzo podobnie do stronicowania, ale tutaj segmenty mają zmienną długość, podczas gdy tak jak w przypadku stron stronicowania mają stały rozmiar.

Segment programu zawiera główną funkcję programu, funkcje narzędziowe, struktury danych i tak dalej. System operacyjny obsługuje pliksegment map tabledla każdego procesu i listę wolnych bloków pamięci wraz z numerami segmentów, ich rozmiarem i odpowiadającymi im lokalizacjami w pamięci głównej. Dla każdego segmentu tabela przechowuje początkowy adres segmentu i długość segmentu. Odniesienie do lokalizacji pamięci zawiera wartość, która identyfikuje segment i przesunięcie.

Komputer może adresować więcej pamięci niż ilość fizycznie zainstalowana w systemie. Ta dodatkowa pamięć jest faktycznie nazywanavirtual memory i jest to sekcja dysku twardego skonfigurowana do emulacji pamięci RAM komputera.

Główną widoczną zaletą tego schematu jest to, że programy mogą być większe niż pamięć fizyczna. Pamięć wirtualna służy dwóm celom. Po pierwsze, pozwala nam rozszerzyć wykorzystanie pamięci fizycznej za pomocą dysku. Po drugie, zapewnia nam ochronę pamięci, ponieważ każdy adres wirtualny jest tłumaczony na adres fizyczny.

Poniżej przedstawiono sytuacje, w których nie jest wymagane pełne załadowanie całego programu do pamięci głównej.

  • Procedury obsługi błędów napisane przez użytkownika są używane tylko wtedy, gdy wystąpił błąd w danych lub obliczeniach.

  • Niektóre opcje i funkcje programu mogą być używane rzadko.

  • Wiele tabel ma przypisaną stałą ilość przestrzeni adresowej, mimo że w rzeczywistości używana jest tylko niewielka część tabeli.

  • Możliwość wykonania programu, który jest tylko częściowo w pamięci, niweczy wiele korzyści.

  • Do załadowania lub zamiany każdego programu użytkownika w pamięci potrzebna byłaby mniejsza liczba operacji we / wy.

  • Program nie byłby już ograniczony ilością dostępnej pamięci fizycznej.

  • Każdy program użytkownika może zajmować mniej pamięci fizycznej, więcej programów może być uruchomionych w tym samym czasie, z odpowiednim wzrostem wykorzystania procesora i przepustowości.

W sprzęt wbudowane są nowoczesne mikroprocesory przeznaczone do użytku ogólnego, jednostka zarządzania pamięcią lub MMU. Zadaniem MMU jest tłumaczenie adresów wirtualnych na adresy fizyczne. Poniżej podano podstawowy przykład -

Pamięć wirtualna jest powszechnie implementowana przez stronicowanie na żądanie. Może być również wdrożony w systemie segmentacji. Segmentacja popytu może również służyć do udostępniania pamięci wirtualnej.

Paging na żądanie

System stronicowania na żądanie jest dość podobny do systemu stronicowania z wymianą, w którym procesy znajdują się w pamięci dodatkowej, a strony są ładowane tylko na żądanie, a nie z wyprzedzeniem. Kiedy następuje przełączenie kontekstu, system operacyjny nie kopiuje żadnej ze stron starego programu na dysk ani żadnej ze stron nowego programu do pamięci głównej. Zamiast tego po prostu rozpoczyna wykonywanie nowego programu po załadowaniu pierwszej strony i pobiera strony programu w postaci przywołania.

Podczas wykonywania programu, jeśli program odwołuje się do strony, która nie jest dostępna w pamięci głównej, ponieważ została niedawno wymieniona, procesor traktuje to nieprawidłowe odwołanie do pamięci jako page fault i przekazuje kontrolę z programu do systemu operacyjnego w celu zażądania powrotu strony do pamięci.

Zalety

Oto zalety stronicowania na żądanie -

  • Duża pamięć wirtualna.
  • Bardziej efektywne wykorzystanie pamięci.
  • Nie ma ograniczeń co do stopnia wieloprogramowania.

Niedogodności

  • Liczba tabel i ilość narzutów procesora na obsługę przerwań stron są większe niż w przypadku prostych technik zarządzania stronicowaniem.

Algorytm zamiany stron

Algorytmy zastępowania stron to techniki, za pomocą których system operacyjny decyduje, które strony pamięci zamienić, zapisać na dysku, gdy trzeba przydzielić stronę pamięci. Stronicowanie ma miejsce za każdym razem, gdy wystąpi błąd strony, a bezpłatna strona nie może zostać użyta do rozliczenia celu alokacji, ponieważ strony są niedostępne lub liczba bezpłatnych stron jest mniejsza niż wymagana.

Gdy strona, która została wybrana do zastąpienia i została wymieniona na stronie, jest ponownie przywoływana, musi zostać odczytana z dysku, co wymaga zakończenia operacji we / wy. Ten proces określa jakość algorytmu zastępowania stron: im krótszy czas oczekiwania na załadowanie stron, tym lepszy algorytm.

Algorytm zastępowania stron analizuje ograniczone informacje o dostępie do stron dostarczanych przez sprzęt i próbuje wybrać, które strony powinny zostać zastąpione, aby zminimalizować całkowitą liczbę pominięć stron, jednocześnie równoważąc ją z kosztami podstawowej pamięci i czasem procesora algorytmu samo. Istnieje wiele różnych algorytmów zastępowania stron. Oceniamy algorytm, uruchamiając go na określonym ciągu odwołań do pamięci i obliczając liczbę błędów stronicowania,

Ciąg odniesienia

Ciąg odwołań do pamięci nazywany jest ciągiem referencyjnym. Ciągi referencyjne są generowane sztucznie lub przez śledzenie danego systemu i zapisywanie adresu każdego odwołania do pamięci. Ten ostatni wybór daje dużą liczbę danych, w których zauważamy dwie rzeczy.

  • Dla danego rozmiaru strony musimy brać pod uwagę tylko numer strony, a nie cały adres.

  • Jeśli mamy odniesienie do strony p, a następnie wszelkie bezpośrednio następujące odniesienia do strony pnigdy nie spowoduje błędu strony. Strona p będzie w pamięci po pierwszym odwołaniu; następujące bezpośrednio odniesienia nie będą obarczone błędem.

  • Weźmy na przykład pod uwagę następującą sekwencję adresów - 123,215,600,1234,76,96

  • Jeśli rozmiar strony wynosi 100, ciąg odniesienia to 1, 2, 6, 12, 0, 0

Algorytm FIFO (First In First Out)

  • Najstarsza strona w pamięci głównej to ta, która zostanie wybrana do wymiany.

  • Łatwy do wdrożenia, zachowaj listę, zamień strony od ogona i dodaj nowe strony na czele.

Optymalny algorytm strony

  • Optymalny algorytm zastępowania stron ma najniższy wskaźnik błędów stronicowania spośród wszystkich algorytmów. Istnieje optymalny algorytm zastępowania stron i został nazwany OPT lub MIN.

  • Zastąp stronę, która nie będzie używana przez najdłuższy czas. Wykorzystaj czas, kiedy strona ma być używana.

Algorytm najrzadziej używany (LRU)

  • Strona, która najdłużej nie była używana w pamięci głównej, zostanie wybrana do wymiany.

  • Łatwość implementacji, prowadzenie listy, zastępowanie stron przez spoglądanie w przeszłość.

Algorytm buforowania strony

  • Aby szybko rozpocząć proces, zachowaj pulę wolnych ramek.
  • W przypadku błędu strony wybierz stronę do zastąpienia.
  • Napisz nową stronę w ramce wolnej puli, zaznacz tabelę stron i zrestartuj proces.
  • Teraz wypisz brudną stronę z dysku i umieść ramkę zawierającą zastąpioną stronę w wolnej puli.

Najrzadziej używany algorytm (LFU)

  • Strona o najmniejszej liczbie to ta, która zostanie wybrana do wymiany.

  • Ten algorytm cierpi z powodu sytuacji, w której strona jest intensywnie wykorzystywana w początkowej fazie procesu, ale potem nigdy nie jest używana ponownie.

Najczęściej używany algorytm (MFU)

  • Algorytm ten opiera się na argumencie, że strona o najmniejszej liczbie została prawdopodobnie właśnie pobrana i nie została jeszcze użyta.

Jednym z ważnych zadań systemu operacyjnego jest zarządzanie różnymi urządzeniami we / wy, w tym myszą, klawiaturami, panelem dotykowym, napędami dysków, kartami graficznymi, urządzeniami USB, ekranem z mapowaniem bitowym, diodą LED, konwerterem analogowo-cyfrowym, włączaniem / wyłącznik, połączenia sieciowe, wejścia / wyjścia audio, drukarki itp.

System we / wy jest wymagany do przyjęcia żądania we / wy aplikacji i wysłania go do urządzenia fizycznego, a następnie odebrania jakiejkolwiek odpowiedzi z urządzenia i wysłania jej do aplikacji. Urządzenia I / O można podzielić na dwie kategorie -

  • Block devices- Urządzenie blokowe to takie, z którym sterownik komunikuje się, wysyłając całe bloki danych. Na przykład dyski twarde, kamery USB, dysk na klucz itp.

  • Character devices- Urządzenie znakowe to takie, z którym komunikuje się sterownik wysyłając i odbierając pojedyncze znaki (bajty, oktety). Na przykład porty szeregowe, porty równoległe, karty dźwiękowe itp

Kontrolery urządzeń

Sterowniki urządzeń to moduły oprogramowania, które można podłączyć do systemu operacyjnego w celu obsługi określonego urządzenia. System operacyjny korzysta z pomocy sterowników urządzeń, aby obsługiwać wszystkie urządzenia we / wy.

Kontroler urządzenia działa jak interfejs między urządzeniem a sterownikiem urządzenia. Jednostki I / O (klawiatura, mysz, drukarka itp.) Zazwyczaj składają się z części mechanicznej i części elektronicznej, gdzie komponent elektroniczny nazywany jest kontrolerem urządzenia.

Zawsze istnieje kontroler i sterownik urządzenia dla każdego urządzenia do komunikacji z systemami operacyjnymi. Kontroler urządzenia może obsługiwać wiele urządzeń. Jako interfejs, jego głównym zadaniem jest konwersja szeregowego strumienia bitów na blok bajtów, w razie potrzeby korekcja błędów.

Każde urządzenie podłączone do komputera jest połączone za pomocą wtyczki i gniazda, a gniazdo jest połączone ze sterownikiem urządzenia. Poniżej przedstawiono model łączenia procesora, pamięci, sterowników i urządzeń we / wy, w którym wszystkie sterowniki procesorów i urządzeń używają wspólnej magistrali do komunikacji.

Synchroniczne vs asynchroniczne operacje we / wy

  • Synchronous I/O - W tym schemacie wykonanie CPU czeka na kontynuację operacji we / wy

  • Asynchronous I/O - I / O przebiega równolegle z wykonywaniem CPU

Komunikacja z urządzeniami we / wy

Procesor musi mieć możliwość przekazywania informacji do iz urządzenia we / wy. Istnieją trzy metody komunikacji z procesorem i urządzeniem.

  • Specjalne instrukcje I / O
  • We / wy mapowane w pamięci
  • Bezpośredni dostęp do pamięci (DMA)

Specjalne instrukcje I / O

Wykorzystuje instrukcje procesora, które zostały stworzone specjalnie do sterowania urządzeniami we / wy. Instrukcje te zazwyczaj pozwalają na wysyłanie danych do urządzenia we / wy lub na odczyt z urządzenia we / wy.

We / wy mapowane w pamięci

Podczas korzystania z operacji we / wy mapowanych w pamięci ta sama przestrzeń adresowa jest współdzielona przez pamięć i urządzenia we / wy. Urządzenie jest podłączone bezpośrednio do pewnych głównych lokalizacji pamięci, dzięki czemu urządzenie I / O może przesyłać blok danych do / z pamięci bez przechodzenia przez procesor.

Podczas korzystania z operacji we / wy mapowanych w pamięci system operacyjny przydziela bufor w pamięci i informuje urządzenie we / wy, aby użyło tego bufora do wysłania danych do procesora. Urządzenie I / O działa asynchronicznie z CPU, przerywa CPU po zakończeniu.

Zaletą tej metody jest to, że każda instrukcja, która ma dostęp do pamięci, może być użyta do manipulowania urządzeniem we / wy. Mapowane w pamięci IO jest używane dla większości szybkich urządzeń I / O, takich jak dyski, interfejsy komunikacyjne.

Bezpośredni dostęp do pamięci (DMA)

Wolne urządzenia, takie jak klawiatury, generują przerwanie w głównym procesorze po przesłaniu każdego bajtu. Gdyby szybkie urządzenie, takie jak dysk, generowało przerwanie dla każdego bajtu, system operacyjny spędzałby większość czasu na obsłudze tych przerwań. Tak więc typowy komputer wykorzystuje sprzęt z bezpośrednim dostępem do pamięci (DMA), aby zmniejszyć ten narzut.

Bezpośredni dostęp do pamięci (DMA) oznacza, że ​​procesor przyznaje modułowi I / O uprawnienia do odczytu lub zapisu w pamięci bez ingerencji. Sam moduł DMA steruje wymianą danych pomiędzy pamięcią główną a urządzeniem I / O. Procesor jest zaangażowany tylko na początku i na końcu transferu i przerywany dopiero po przesłaniu całego bloku.

Bezpośredni dostęp do pamięci wymaga specjalnego sprzętu zwanego kontrolerem DMA (DMAC), który zarządza przesyłaniem danych i rozstrzyga o dostępie do magistrali systemowej. Sterowniki są zaprogramowane za pomocą wskaźników źródłowych i docelowych (gdzie odczytać / zapisać dane), liczników do śledzenia liczby przesłanych bajtów oraz ustawień, które obejmują wejścia / wyjścia i typy pamięci, przerwania i stany cykli procesora.

System operacyjny wykorzystuje sprzęt DMA w następujący sposób -

Krok Opis
1 Sterownik urządzenia ma przesyłać dane z dysku do bufora o adresie X.
2 Następnie sterownik urządzenia instruuje kontroler dysku, aby przesłał dane do bufora.
3 Kontroler dysku rozpoczyna transfer DMA.
4 Kontroler dysku wysyła każdy bajt do kontrolera DMA.
5 Kontroler DMA przesyła bajty do bufora, zwiększa adres pamięci, zmniejsza licznik C, aż C stanie się zerem.
6 Kiedy C osiąga zero, DMA przerywa procesor, aby zakończyć przesyłanie sygnału.

Polling vs Interrupts I / O

Komputer musi mieć możliwość wykrywania nadejścia dowolnego typu danych wejściowych. Może się to zdarzyć na dwa sposoby, znane jakopolling i interrupts. Obie te techniki pozwalają procesorowi radzić sobie ze zdarzeniami, które mogą wystąpić w dowolnym momencie i które nie są związane z aktualnie uruchomionym procesem.

Polling I / O

Polling to najprostszy sposób komunikacji urządzenia we / wy z procesorem. Proces okresowego sprawdzania stanu urządzenia w celu sprawdzenia, czy nadszedł czas na następną operację we / wy, nazywany jest odpytywaniem. Urządzenie we / wy po prostu umieszcza informacje w rejestrze stanu, a procesor musi przyjść i pobrać informacje.

W większości przypadków urządzenia nie będą wymagały uwagi, a kiedy to zrobisz, będziesz musiał poczekać, aż zostanie ponownie zapytany przez program odpytywający. Jest to nieefektywna metoda i większość czasu procesorów jest tracona na niepotrzebne ankiety.

Porównaj tę metodę z nauczycielem, który ciągle pyta każdego ucznia w klasie, jednego po drugim, czy potrzebują pomocy. Oczywiście bardziej skuteczną metodą byłoby poinformowanie nauczyciela przez ucznia, gdy potrzebuje pomocy.

Przerywa I / O

Alternatywnym schematem postępowania z I / O jest metoda sterowana przerwaniami. Przerwanie to sygnał wysyłany do mikroprocesora z urządzenia, które wymaga uwagi.

Kontroler urządzenia umieszcza sygnał przerwania na magistrali, gdy potrzebuje uwagi procesora, gdy procesor otrzyma przerwanie, zapisuje swój bieżący stan i wywołuje odpowiednią procedurę obsługi przerwań przy użyciu wektora przerwania (adresy procedur systemu operacyjnego do obsługi różnych zdarzeń). Po rozwiązaniu problemu z urządzeniem przerywającym, procesor kontynuuje swoje pierwotne zadanie, tak jakby nigdy nie zostało przerwane.

Oprogramowanie I / O jest często zorganizowane w następujących warstwach -

  • User Level Libraries- Zapewnia to prosty interfejs dla programu użytkownika do wykonywania operacji wejścia i wyjścia. Na przykład,stdio to biblioteka udostępniana przez języki programowania C i C ++.

  • Kernel Level Modules - Zapewnia to sterownikowi urządzenia współpracę ze sterownikiem urządzenia i niezależnymi od urządzenia modułami we / wy używanymi przez sterowniki urządzeń.

  • Hardware - Ta warstwa zawiera rzeczywisty sprzęt i kontroler sprzętowy, który współdziała ze sterownikami urządzeń i ożywia sprzęt.

Kluczową koncepcją w projektowaniu oprogramowania I / O jest to, że powinno być niezależne od urządzenia, gdzie powinno być możliwe pisanie programów, które mają dostęp do dowolnego urządzenia I / O bez konieczności wcześniejszego określania urządzenia. Na przykład program, który odczytuje plik jako dane wejściowe, powinien być w stanie odczytać plik z dyskietki, dysku twardego lub dysku CD-ROM, bez konieczności modyfikowania programu dla każdego innego urządzenia.

Sterowniki urządzeń

Sterowniki urządzeń to moduły oprogramowania, które można podłączyć do systemu operacyjnego w celu obsługi określonego urządzenia. System operacyjny korzysta z pomocy sterowników urządzeń, aby obsługiwać wszystkie urządzenia we / wy. Sterowniki urządzeń hermetyzują kod zależny od urządzenia i implementują standardowy interfejs w taki sposób, aby kod zawierał odczyty / zapisy rejestrów specyficzne dla urządzenia. Sterownik urządzenia jest zazwyczaj napisany przez producenta urządzenia i dostarczany wraz z urządzeniem na dysku CD-ROM.

Sterownik urządzenia wykonuje następujące zadania -

  • Aby przyjąć żądanie od powyższego oprogramowania niezależnego od urządzenia.
  • Wejdź w interakcję ze sterownikiem urządzenia, aby pobrać i przekazać we / wy oraz wykonać wymaganą obsługę błędów
  • Upewnij się, że żądanie zostało wykonane pomyślnie

Sposób, w jaki sterownik urządzenia obsługuje żądanie, wygląda następująco: Załóżmy, że przychodzi żądanie odczytania bloku N. Jeżeli kierowca jest bezczynny w momencie nadejścia żądania, natychmiast rozpoczyna realizację żądania. W przeciwnym razie, jeśli kierowca jest już zajęty jakimś innym żądaniem, umieszcza nowe żądanie w kolejce oczekujących żądań.

Obsługa przerwań

Procedura obsługi przerwań, znana również jako procedura obsługi przerwań lub ISR, to oprogramowanie lub dokładniej funkcja wywołania zwrotnego w systemie operacyjnym lub dokładniej w sterowniku urządzenia, której wykonanie jest wyzwalane przez odbiór przerwania.

Kiedy dochodzi do przerwania, procedura przerwania robi wszystko, co konieczne, aby obsłużyć przerwanie, aktualizuje struktury danych i budzi proces, który czekał na przerwanie.

Mechanizm przerwań przyjmuje adres ─ liczbę, która wybiera określoną procedurę / funkcję obsługi przerwań z małego zestawu. W większości architektur ten adres jest przesunięciem przechowywanym w tabeli zwanej tablicą wektorów przerwań. Ten wektor zawiera adresy pamięci wyspecjalizowanych programów obsługi przerwań.

Oprogramowanie we / wy niezależne od urządzenia

Podstawową funkcją oprogramowania niezależnego od urządzenia jest wykonywanie funkcji I / O, które są wspólne dla wszystkich urządzeń oraz zapewnienie jednolitego interfejsu dla oprogramowania na poziomie użytkownika. Chociaż trudno jest napisać oprogramowanie całkowicie niezależne od urządzenia, możemy napisać kilka modułów, które są wspólne dla wszystkich urządzeń. Poniżej znajduje się lista funkcji oprogramowania we / wy niezależnych od urządzenia -

  • Jednolity interfejs dla sterowników urządzeń
  • Nazewnictwo urządzeń - nazwy mnemoniczne odwzorowane na główne i poboczne numery urządzeń
  • Ochrona urządzenia
  • Zapewnienie rozmiaru bloku niezależnego od urządzenia
  • Buforowanie, ponieważ dane wychodzące z urządzenia nie mogą być przechowywane w miejscu docelowym.
  • Alokacja pamięci na urządzeniach blokowych
  • Alokacja i zwalnianie dedykowanych urządzeń
  • Zgłaszanie błędów

Oprogramowanie we / wy przestrzeni użytkownika

Są to biblioteki, które zapewniają bogatszy i uproszczony interfejs, aby uzyskać dostęp do funkcjonalności jądra lub ostatecznie interaktywnie ze sterownikami urządzeń. Większość oprogramowania we / wy na poziomie użytkownika składa się z procedur bibliotecznych, z pewnymi wyjątkami, takimi jak system buforowania, który jest sposobem radzenia sobie z dedykowanymi urządzeniami we / wy w systemie wieloprogramowym.

Biblioteki we / wy (np. Stdio) znajdują się w przestrzeni użytkownika, aby zapewnić interfejs dla niezależnego od urządzenia oprogramowania we / wy rezydującego w systemie operacyjnym. Na przykład putchar (), getchar (), printf () i scanf () są przykładami standardowej biblioteki we / wy poziomu użytkownika dostępnej w programowaniu w C.

Podsystem We / Wy jądra

Podsystem Kernel I / O jest odpowiedzialny za dostarczanie wielu usług związanych z I / O. Oto niektóre z oferowanych usług.

  • Scheduling- Kernel planuje zestaw żądań we / wy, aby określić dobrą kolejność ich wykonania. Gdy aplikacja wysyła blokujące wywołanie systemowe we / wy, żądanie jest umieszczane w kolejce dla tego urządzenia. Program planujący We / Wy jądra zmienia kolejność kolejki, aby poprawić ogólną wydajność systemu i średni czas odpowiedzi doświadczany przez aplikacje.

  • Buffering - Podsystem We / Wy jądra utrzymuje obszar pamięci znany jako bufferktóry przechowuje dane podczas ich przesyłania między dwoma urządzeniami lub między urządzeniem, na którym działa aplikacja. Buforowanie jest wykonywane, aby poradzić sobie z niedopasowaniem prędkości między producentem a konsumentem strumienia danych lub w celu dostosowania się między urządzeniami, które mają różne rozmiary transferu danych.

  • Caching- Jądro utrzymuje pamięć podręczną, która jest obszarem szybkiej pamięci przechowującej kopie danych. Dostęp do kopii w pamięci podręcznej jest bardziej wydajny niż dostęp do oryginału.

  • Spooling and Device Reservation- Bufor to bufor przechowujący dane wyjściowe dla urządzenia, takiego jak drukarka, które nie może przyjmować przeplecionych strumieni danych. System buforowania kopiuje kolejkowane zbiory buforowe do drukarki pojedynczo. W niektórych systemach operacyjnych buforowaniem zarządza proces demona systemowego. W innych systemach operacyjnych jest obsługiwany przez wątek jądra.

  • Error Handling - System operacyjny korzystający z pamięci chronionej może chronić przed wieloma rodzajami błędów sprzętu i aplikacji.

Plik

Plik to nazwany zbiór powiązanych informacji, który jest zapisywany w pamięci dodatkowej, takiej jak dyski magnetyczne, taśmy magnetyczne i dyski optyczne. Ogólnie plik to sekwencja bitów, bajtów, wierszy lub rekordów, których znaczenie jest określone przez twórcę pliku i użytkownika.

Struktura plików

Struktura plików powinna być zgodna z wymaganym formatem zrozumiałym dla systemu operacyjnego.

  • Plik ma określoną strukturę zgodnie z jego typem.

  • Plik tekstowy to sekwencja znaków zorganizowana w linie.

  • Plik źródłowy to sekwencja procedur i funkcji.

  • Plik obiektowy to sekwencja bajtów zorganizowana w bloki, które są zrozumiałe dla maszyny.

  • Gdy system operacyjny definiuje różne struktury plików, zawiera również kod obsługujący tę strukturę plików. Unix, MS-DOS obsługują minimalną liczbę struktur plików.

Typ pliku

Typ pliku odnosi się do zdolności systemu operacyjnego do rozróżniania różnych typów plików, takich jak pliki tekstowe, pliki źródłowe, pliki binarne itp. Wiele systemów operacyjnych obsługuje wiele typów plików. Systemy operacyjne, takie jak MS-DOS i UNIX, mają następujące typy plików -

Zwykłe pliki

  • Są to pliki zawierające informacje o użytkowniku.
  • Mogą one zawierać tekst, bazy danych lub program wykonywalny.
  • Użytkownik może wykonywać różne operacje na takich plikach, takie jak dodawanie, modyfikowanie, usuwanie lub nawet usuwanie całego pliku.

Pliki katalogu

  • Te pliki zawierają listę nazw plików i inne informacje związane z tymi plikami.

Pliki specjalne

  • Te pliki są również nazywane plikami urządzeń.
  • Pliki te reprezentują urządzenia fizyczne, takie jak dyski, terminale, drukarki, sieci, napęd taśmowy itp.

Te pliki są dwojakiego rodzaju -

  • Character special files - dane przetwarzane są znak po znaku, tak jak w przypadku terminali czy drukarek.

  • Block special files - dane przetwarzane są w blokach, jak w przypadku dysków i taśm.

Mechanizmy dostępu do plików

Mechanizm dostępu do plików odnosi się do sposobu, w jaki można uzyskać dostęp do rekordów pliku. Dostęp do plików można uzyskać na kilka sposobów -

  • Dostęp sekwencyjny
  • Dostęp bezpośredni / losowy
  • Indeksowany dostęp sekwencyjny

Dostęp sekwencyjny

Dostęp sekwencyjny to taki, w którym dostęp do rekordów odbywa się w określonej kolejności, tj. Informacje w pliku są przetwarzane po kolei, jeden rekord po drugim. Ta metoda dostępu jest najbardziej prymitywna. Przykład: kompilatory zwykle uzyskują dostęp do plików w ten sposób.

Dostęp bezpośredni / losowy

  • Organizacja plików o swobodnym dostępie zapewnia bezpośredni dostęp do rekordów.

  • Każdy rekord ma swój własny adres w pliku, za pomocą którego można uzyskać bezpośredni dostęp do odczytu lub zapisu.

  • Zapisy nie muszą znajdować się w żadnej kolejności w pliku i nie muszą znajdować się w sąsiednich lokalizacjach na nośniku pamięci.

Indeksowany dostęp sekwencyjny

  • Mechanizm ten jest zbudowany na zasadzie dostępu sekwencyjnego.
  • Dla każdego pliku tworzony jest indeks zawierający wskaźniki do różnych bloków.
  • Indeks jest przeszukiwany sekwencyjnie, a jego wskaźnik jest używany do bezpośredniego dostępu do pliku.

Przydział przestrzeni

Pliki są przydzielane miejsca na dysku przez system operacyjny. Systemy operacyjne są wdrażane według trzech głównych sposobów przydzielania miejsca na dysku do plików.

  • Ciągła alokacja
  • Powiązana alokacja
  • Alokacja indeksowana

Ciągła alokacja

  • Każdy plik zajmuje ciągłą przestrzeń adresową na dysku.
  • Przydzielony adres dysku jest uporządkowany liniowo.
  • Łatwe do wdrożenia.
  • Fragmentacja zewnętrzna jest głównym problemem w przypadku tego rodzaju techniki alokacji.

Powiązana alokacja

  • Każdy plik zawiera listę łączy do bloków dyskowych.
  • Katalog zawiera link / wskaźnik do pierwszego bloku pliku.
  • Brak zewnętrznej fragmentacji
  • Skutecznie używany w pliku sekwencyjnego dostępu.
  • Nieskuteczne w przypadku pliku z bezpośrednim dostępem.

Alokacja indeksowana

  • Zapewnia rozwiązania problemów związanych z ciągłą i połączoną alokacją.
  • Tworzony jest blok indeksu zawierający wszystkie wskaźniki do plików.
  • Każdy plik ma swój własny blok indeksu, który przechowuje adresy miejsca na dysku zajmowanego przez plik.
  • Katalog zawiera adresy bloków indeksowych plików.

Bezpieczeństwo odnosi się do zapewnienia systemu ochrony zasobów systemu komputerowego, takich jak procesor, pamięć, dysk, programy i, co najważniejsze, dane / informacje przechowywane w systemie komputerowym. Uruchomienie programu komputerowego przez nieuprawnionego użytkownika może spowodować poważne uszkodzenie komputera lub danych na nim przechowywanych. Dlatego system komputerowy musi być chroniony przed nieautoryzowanym dostępem, złośliwym dostępem do pamięci systemowej, wirusami, robakami itp. W tym rozdziale omówimy następujące tematy.

  • Authentication
  • Hasła jednorazowe
  • Zagrożenia programowe
  • Zagrożenia systemowe
  • Klasyfikacje bezpieczeństwa komputerów

Poświadczenie

Uwierzytelnianie oznacza identyfikację każdego użytkownika systemu i powiązanie programów wykonujących z tymi użytkownikami. Obowiązkiem systemu operacyjnego jest stworzenie systemu ochrony zapewniającego autentyczność użytkownika, który uruchamia określony program. Systemy operacyjne generalnie identyfikują / uwierzytelniają użytkowników na trzy sposoby -

  • Username / Password - Użytkownik musi wprowadzić zarejestrowaną nazwę użytkownika i hasło w systemie operacyjnym, aby zalogować się do systemu.

  • User card/key - Użytkownik musi wbić kartę w gniazdo karty lub wprowadzić klucz wygenerowany przez generator kluczy w opcji dostarczonej przez system operacyjny, aby zalogować się do systemu.

  • User attribute - fingerprint/ eye retina pattern/ signature - Użytkownik musi przekazać swój atrybut za pośrednictwem wyznaczonego urządzenia wejściowego używanego przez system operacyjny do logowania się do systemu.

Hasła jednorazowe

Hasła jednorazowe zapewniają dodatkowe bezpieczeństwo wraz z normalnym uwierzytelnianiem. W systemie haseł jednorazowych za każdym razem, gdy użytkownik próbuje zalogować się do systemu, wymagane jest unikalne hasło. Po użyciu hasła jednorazowego nie można go użyć ponownie. Hasła jednorazowe są realizowane na różne sposoby.

  • Random numbers- Użytkownicy otrzymują karty z nadrukowanymi numerami i odpowiadającymi im alfabetami. System prosi o podanie liczb odpowiadających kilku losowo wybranym alfabetom.

  • Secret key- Użytkownik otrzymuje urządzenie sprzętowe, które może utworzyć tajny identyfikator odwzorowany na identyfikator użytkownika. System prosi o podanie takiego tajnego identyfikatora, który ma być generowany za każdym razem przed zalogowaniem.

  • Network password - Niektóre aplikacje komercyjne wysyłają do użytkownika jednorazowe hasła na zarejestrowany telefon komórkowy / adres e-mail, które należy wprowadzić przed zalogowaniem.

Zagrożenia programowe

Procesy i jądro systemu operacyjnego wykonują wyznaczone zadanie zgodnie z instrukcją. Jeśli program użytkownika zmusił te procesy do wykonania złośliwych zadań, jest znany jakoProgram Threats. Jednym z typowych przykładów zagrożenia programowego jest program zainstalowany na komputerze, który może przechowywać i wysyłać dane uwierzytelniające użytkownika przez sieć do jakiegoś hakera. Poniżej znajduje się lista niektórych znanych zagrożeń dla programu.

  • Trojan Horse - Taki program przechwytuje dane logowania użytkownika i przechowuje je w celu wysłania do złośliwego użytkownika, który może później zalogować się do komputera i uzyskać dostęp do zasobów systemowych.

  • Trap Door - Jeśli program, który jest zaprojektowany do działania zgodnie z wymaganiami, ma lukę w zabezpieczeniach w swoim kodzie i wykonuje nielegalne działania bez wiedzy użytkownika, to jest wywoływany jako drzwi-pułapka.

  • Logic Bomb- Bomba logiczna to sytuacja, w której program działa nieprawidłowo tylko wtedy, gdy spełnione są określone warunki, w przeciwnym razie działa jak prawdziwy program. Trudniej to wykryć.

  • Virus- Wirus, jak sugeruje nazwa, może replikować się w systemie komputerowym. Są bardzo niebezpieczne i mogą modyfikować / usuwać pliki użytkownika, zawieszać systemy. Wirus to zazwyczaj mały kod osadzony w programie. Gdy użytkownik uzyskuje dostęp do programu, wirus zaczyna osadzać się w innych plikach / programach i może uniemożliwić użytkownikowi korzystanie z systemu

Zagrożenia systemowe

Zagrożenia systemowe odnoszą się do niewłaściwego wykorzystania usług systemowych i połączeń sieciowych w celu wprowadzenia użytkownika w kłopoty. Zagrożenia systemowe mogą służyć do uruchamiania zagrożeń programowych w całej sieci, nazywanych atakiem programu. Zagrożenia systemowe tworzą takie środowisko, że zasoby systemu operacyjnego / pliki użytkownika są niewłaściwie wykorzystywane. Poniżej znajduje się lista niektórych dobrze znanych zagrożeń systemowych.

  • Worm- Robak to proces, który może spowolnić działanie systemu, wykorzystując zasoby systemowe do ekstremalnych poziomów. Proces robaka generuje wiele kopii, przy czym każda kopia wykorzystuje zasoby systemowe, uniemożliwiając innym procesom uzyskanie wymaganych zasobów. Procesy robaków mogą nawet zamknąć całą sieć.

  • Port Scanning - Skanowanie portów to mechanizm lub środek, za pomocą którego haker może wykryć luki w systemie w celu wykonania ataku na system.

  • Denial of Service- Ataki typu „odmowa usługi” zwykle uniemożliwiają użytkownikowi legalne korzystanie z systemu. Na przykład użytkownik może nie być w stanie korzystać z Internetu, jeśli odmowa usługi atakuje ustawienia przeglądarki.

Klasyfikacje bezpieczeństwa komputerów

Zgodnie z kryteriami oceny zaufanych systemów komputerowych Departamentu Obrony Stanów Zjednoczonych istnieją cztery klasyfikacje zabezpieczeń w systemach komputerowych: A, B, C i D. Jest to powszechnie stosowana specyfikacja określająca i modelująca bezpieczeństwo systemów i rozwiązań zabezpieczających. Poniżej znajduje się krótki opis każdej klasyfikacji.

SN Typ i opis klasyfikacji
1

Type A

Najwyższy poziom. Stosuje formalne specyfikacje projektu i techniki weryfikacji. Zapewnia wysoki stopień bezpieczeństwa procesu.

2

Type B

Zapewnia obowiązkowy system ochrony. Posiadają wszystkie właściwości systemu klasy C2. Dołącza etykietę czułości do każdego obiektu. Występuje w trzech typach.

  • B1- Utrzymuje etykietę bezpieczeństwa każdego obiektu w systemie. Etykieta służy do podejmowania decyzji dotyczących kontroli dostępu.

  • B2 - Rozszerza etykiety wrażliwości na każdy zasób systemowy, taki jak obiekty pamięci, obsługuje ukryte kanały i audyt zdarzeń.

  • B3 - Umożliwia tworzenie list lub grup użytkowników w celu kontroli dostępu w celu udzielenia dostępu lub cofnięcia dostępu do danego nazwanego obiektu.

3

Type C

Zapewnia ochronę i odpowiedzialność użytkownika za pomocą funkcji audytu. Jest dwojakiego rodzaju.

  • C1- Zawiera mechanizmy kontroli, dzięki którym użytkownicy mogą chronić swoje prywatne informacje i uniemożliwić innym użytkownikom przypadkowe odczytanie / usunięcie ich danych. Wersje UNIX są w większości klasy Cl.

  • C2 - Dodaje kontrolę dostępu na poziomie indywidualnym do możliwości systemu na poziomie Cl.

4

Type D

Najniższy poziom. Minimalna ochrona. Do tej kategorii należy MS-DOS, Window 3.1.

Linux jest jedną z popularnych wersji systemu operacyjnego UNIX. Jest open source, ponieważ jego kod źródłowy jest swobodnie dostępny. Jest darmowy. Linux został zaprojektowany z uwzględnieniem zgodności z UNIX. Jego lista funkcji jest dość podobna do tej z UNIX.

Składniki systemu Linux

System operacyjny Linux składa się głównie z trzech komponentów

  • Kernel- Jądro jest podstawową częścią Linuksa. Odpowiada za wszystkie główne działania tego systemu operacyjnego. Składa się z różnych modułów i współdziała bezpośrednio z podstawowym sprzętem. Jądro zapewnia wymaganą abstrakcję, aby ukryć szczegóły sprzętu niskiego poziomu przed programami systemowymi lub aplikacjami.

  • System Library- Biblioteki systemowe to specjalne funkcje lub programy, za pomocą których aplikacje lub narzędzia systemowe uzyskują dostęp do funkcji jądra. Biblioteki te implementują większość funkcjonalności systemu operacyjnego i nie wymagają praw dostępu do kodu modułu jądra.

  • System Utility - Programy narzędziowe systemu są odpowiedzialne za wykonywanie specjalistycznych zadań na poziomie indywidualnym.

Tryb jądra a tryb użytkownika

Kod składnika jądra jest wykonywany w specjalnym uprzywilejowanym trybie o nazwie kernel modez pełnym dostępem do wszystkich zasobów komputera. Ten kod reprezentuje pojedynczy proces, jest wykonywany w jednej przestrzeni adresowej i nie wymaga przełączania kontekstu, dzięki czemu jest bardzo wydajny i szybki. Kernel uruchamia każdy proces i dostarcza usługi systemowe do procesów, zapewnia chroniony dostęp do sprzętu do procesów.

Kod pomocniczy, który nie jest wymagany do działania w trybie jądra, znajduje się w bibliotece systemowej. Programy użytkownika i inne programy systemowe działają wUser Modektóry nie ma dostępu do sprzętu systemowego i kodu jądra. Programy użytkownika / narzędzia używają bibliotek systemowych, aby uzyskać dostęp do funkcji jądra w celu pobrania zadań niskiego poziomu systemu.

Podstawowe funkcje

Poniżej przedstawiono niektóre z ważnych funkcji systemu operacyjnego Linux.

  • Portable- Przenośność oznacza, że ​​oprogramowanie może działać na różnych typach sprzętu w ten sam sposób. Jądro Linuksa i aplikacje obsługują ich instalację na dowolnej platformie sprzętowej.

  • Open Source- Kod źródłowy Linuksa jest ogólnie dostępny i jest to projekt rozwojowy oparty na społeczności. Wiele zespołów współpracuje w celu zwiększenia możliwości systemu operacyjnego Linux i stale się rozwija.

  • Multi-User - Linux jest systemem dla wielu użytkowników, co oznacza, że ​​wielu użytkowników może jednocześnie uzyskać dostęp do zasobów systemowych, takich jak pamięć / pamięć RAM / aplikacje.

  • Multiprogramming - Linux jest systemem wieloprogramowym, co oznacza, że ​​wiele aplikacji może działać w tym samym czasie.

  • Hierarchical File System - Linux zapewnia standardową strukturę plików, w której rozmieszczone są pliki systemowe / pliki użytkownika.

  • Shell- Linux udostępnia specjalny program interpretujący, którego można używać do wykonywania poleceń systemu operacyjnego. Może służyć do wykonywania różnego rodzaju operacji, wywoływania programów użytkowych. itp.

  • Security - Linux zapewnia bezpieczeństwo użytkownika dzięki funkcjom uwierzytelniania, takim jak ochrona hasłem / kontrolowany dostęp do określonych plików / szyfrowanie danych.

Architektura

Poniższa ilustracja przedstawia architekturę systemu Linux -

Architektura systemu Linux składa się z następujących warstw -

  • Hardware layer - Sprzęt składa się ze wszystkich urządzeń peryferyjnych (RAM / HDD / CPU itp.).

  • Kernel - Jest to podstawowy składnik systemu operacyjnego, współdziała bezpośrednio ze sprzętem, zapewnia usługi niskiego poziomu dla komponentów wyższych warstw.

  • Shell- Interfejs do jądra, ukrywający złożoność funkcji jądra przed użytkownikami. Powłoka przyjmuje polecenia od użytkownika i wykonuje funkcje jądra.

  • Utilities - Programy narzędziowe zapewniające użytkownikowi większość funkcji systemów operacyjnych.