Konfiguracja sprzętu i oprogramowania

Metody wdrażania stosowanego oprogramowania. Rodzaje programów użytkowych

W tym artykule chciałbym opowiedzieć, czym są programy użytkowe, a także jakie zadania aplikacyjne można za ich pomocą rozwiązać (np. przykład prostej bazy danych) i jaką rolę pełnią dla końcowego użytkownika komputer osobisty. Przede wszystkim chciałbym zauważyć, że komputery mogą przetwarzać dowolne dane, które wysyła do nich użytkownik. Aby jednak te dane zostały poprawnie rozpoznane i zrozumiane przez maszynę, konieczne jest komponowanie program specjalny w zrozumiałym dla niego języku lub, jak łatwiej powiedzieć, szereg kolejnych instrukcji dotyczących wykonywania określonych czynności.

Rodzaje programy użytkowe

Programy aplikacyjne są takie programy, których celem jest rozwiązanie pewnych problemów i bezpośrednia interakcja z użytkownikiem. Programy komputerowe są potrzebne do automatyzacji wszelkich procesów, przechowywania i przetwarzania danych, modelowania, projektowania itp. złożone procesy obliczeniowe. Programy są zwykle podzielone na dwie klasy: programy systemowe i programy użytkowe. Te pierwsze służą głównie do przetwarzania informacji przychodzących z niektórych urządzeń: karty sieciowej, karty graficznej, podłączonego sprzętu, tj. są to programy, które współdziałają ze sprzętem lub urządzeniami zewnętrznymi. Porozmawiamy o nich w kolejnych artykułach. Ale o drugim - programach użytkowych, porozmawiajmy bardziej szczegółowo.

Programy aplikacyjne są zaprojektowane do interakcji z użytkownikiem końcowym, tj. użytkownik niejako wchodzi w interakcję ze sobą, ale tylko za pośrednictwem programu, wprowadza dowolne dane na wejściu i otrzymuje określony wynik przetworzonych danych na wyjściu. To jest rodzaj rozwiązania zastosowane zadanie, na przykład jest to skanowanie obrazów i ich późniejsze przetwarzanie lub wyszukiwanie odpowiednich plików. Korzystanie z programów użytkowych można zaobserwować w niemal wszystkich obszarach działalności człowieka, czy to księgowości w przedsiębiorstwie, czy też tworzenia obrazów graficznych, rysowania itp. Również korzystanie z programów użytkowych jest obecne w tak bardzo ważnych systemach, jak systemy zarządzania bazami danych. Jest to bardzo ważne w dużych przedsiębiorstwach, gdzie duża liczba użytkownicy i którzy naprawdę potrzebują przechowywać i wykorzystywać duże ilości informacji.

Rodzaje i przykłady programów użytkowych

Programy aplikacyjne to:

  • Edytory tekstu. Przeznaczony do tworzenia i edycji tekstu bez formatowania;
  • Procesory tekstu (MS Word). Bardziej zaawansowany edytory tekstu, pozwalający na edycję tekstu wraz z projektem, zmianę czcionek i rozmiarów, wstawianie plików graficznych, tabel itp. dla bardziej reprezentacyjnego projektu tekstu;
  • Arkusze kalkulacyjne (MS Excell). Służą one głównie do przetwarzania wszelkich danych zawartych w tych tabelach. Zastosowane zadania najczęściej wykonywane w celu przechowywania poświadczeń wraz z ich późniejszą analizą;
  • Edytory grafiki rastrowej i wektorowej (Photoshop, Corel), „przeglądarki”. Wykorzystanie programów użytkowych tego typu pozwala na tworzenie, edycję, a także przeglądanie obrazów graficznych;
  • Odtwarzacze audio wideo, edytory (WinAmp). Umożliwia oglądanie filmów, słuchanie muzyki, tworzenie kompozycji muzycznych;
  • Systemy zarządzania bazami danych (np. MSQL). Takie programy służą do pracy z bazami danych. Na przykład program księgowy klienta to prosta baza danych do przechowywania informacji o klientach, ich danych kontaktowych itp. Możesz wykonywać operacje wyszukiwania, usuwania i dodawania rekordów do bazy danych;
  • Tłumacze lub słowniki elektroniczne. Takie programy użytkowe pozwalają bez większego wysiłku tłumaczyć tekst na różne języki. języki obce bez ich bezpośredniego badania;
  • Gry komputerowe. Używany do rozrywki lub do rozwoju w zabawny sposób.

Jednym z przykładów programu aplikacyjnego jest na przykład program do liczenia repostów. Trudno jest wymienić wszystkie typy programów użytkowych, ale staraliśmy się wyróżnić główne programy użytkowe.

Stworzenie kompletnego środowiska aplikacji w pełni kompatybilnego ze środowiskiem innej firmy system operacyjny, to dość złożone zadanie, ściśle związane ze strukturą systemu operacyjnego. istnieje różne opcje budowanie wielu środowisk aplikacyjnych, różniących się zarówno cechami rozwiązań architektonicznych, jak i funkcjonalnością, zapewniających różny stopień przenośności aplikacji.

W wielu wersjach systemu operacyjnego UNIX translator środowiska aplikacji jest zaimplementowany jako zwykła aplikacja. W systemach operacyjnych zbudowanych przy użyciu koncepcji mikrojądra, takich jak Windows NT, środowiska aplikacji działają jako serwery trybu użytkownika. A w OS/2, z jego prostszą architekturą, środowiska aplikacji są wbudowane głęboko w system operacyjny.

Jedna z najbardziej oczywistych opcji implementacji wielu środowisk aplikacji opiera się na standardowej warstwowej strukturze systemu operacyjnego. Na ryc. 3. 8 system operacyjny OS1 obsługuje, oprócz swoich "natywnych" aplikacji, aplikacje systemu operacyjnego OS2. W tym celu zawiera specjalną aplikację - aplikowaną środowisko oprogramowania, który tłumaczy interfejs „obcego” systemu operacyjnego – API OS2 na interfejs jego „natywnego” systemu operacyjnego – API OS1.

Ryż. 3. 8. Środowisko oprogramowania aplikacyjnego, które nadaje
wywołania systemowe

W innej implementacji wielu środowisk aplikacji system operacyjny ma wiele równorzędnych interfejsów programowania aplikacji. Na ryc. 3. W przykładzie system operacyjny obsługuje aplikacje napisane dla OS1, OS2 i OS3. W tym celu aplikacyjne interfejsy programistyczne wszystkich tych systemów operacyjnych są umieszczone bezpośrednio w przestrzeni jądra systemu: API OS1, API OS2 i API OS3.

Ryż. 3. 9. Implementacja kompatybilności w oparciu o kilka
interfejsy API równorzędne

W tym wariancie funkcje poziomu API wywołują funkcje bazowego poziomu systemu operacyjnego, który musi obsługiwać wszystkie trzy ogólnie niekompatybilne środowiska aplikacji. Różne systemy operacyjne zarządzają inaczej czas systemu, używane są różne formaty czasu, czas procesora jest współdzielony na podstawie zastrzeżonych algorytmów itp. Funkcje każdego interfejsu API są implementowane przez jądro z uwzględnieniem specyfiki odpowiedniego systemu operacyjnego, nawet jeśli mają podobny cel.

Inny sposób budowania wielu środowisk aplikacji opiera się na podejściu mikrojądra. Jednocześnie bardzo ważne jest oddzielenie podstawowych, wspólnych dla wszystkich środowisk aplikacyjnych mechanizmów systemu operacyjnego od funkcji wysokopoziomowych specyficznych dla każdego ze środowisk aplikacyjnych, które rozwiązują problemy strategiczne.

Zgodnie z architekturą mikrojądra, wszystkie funkcje systemu operacyjnego są realizowane przez serwery mikrojądra i trybu użytkownika. Ważne jest, aby każde środowisko aplikacji zostało zaprojektowane jako osobny serwer trybu użytkownika i nie zawiera podstawowych mechanizmów (rys. 3.10). Aplikacje, korzystając z API, wykonują wywołania systemowe do odpowiedniego środowiska aplikacji za pośrednictwem mikrojądra. Środowisko aplikacji przetwarza żądanie, wykonuje je (być może prosząc w tym celu o pomoc z podstawowych funkcji mikrojądra) i wysyła wynik z powrotem do aplikacji. Podczas wykonywania żądania środowisko aplikacji z kolei musi uzyskać dostęp do podstawowych mechanizmów systemu operacyjnego zaimplementowanych przez mikrojądro i inne serwery systemu operacyjnego.

Ryż. 3. 10. Podejście mikrojądra do implementacji wielu
środowiska aplikacji

Takie podejście do projektowania wielu środowisk aplikacji ma wszystkie zalety i wady architektury mikrojądra, w szczególności:

Bardzo łatwo jest dodawać i wykluczać środowiska aplikacji, co jest konsekwencją dobrej rozszerzalności systemów operacyjnych z mikrojądrem;

Niezawodność i stabilność wyraża się w tym, że jeśli jedno ze środowisk aplikacji ulegnie awarii, wszystkie pozostałe pozostają sprawne;

· niska wydajność systemów operacyjnych z mikrojądrem wpływa na szybkość środowisk aplikacji, a co za tym idzie na szybkość wykonywania aplikacji.

Tworzenie kilku środowisk aplikacji w ramach jednego systemu operacyjnego w celu uruchamiania aplikacji różnych systemów operacyjnych to sposób, który pozwala na posiadanie jednej wersji programu i przenoszenie jej między systemami operacyjnymi. Wiele środowisk aplikacji zapewnia binarną zgodność danego systemu operacyjnego z aplikacjami napisanymi dla innych systemów operacyjnych. W rezultacie użytkownicy mają większą swobodę wyboru systemów operacyjnych i łatwiejszy dostęp do wysokiej jakości oprogramowania.

Pytania do samodzielnego zbadania

  1. Co oznacza architektura systemu operacyjnego?
  2. Jakie są trzy główne warstwy zwykle wyróżniające się w strukturze? system komputerowy?
  3. Jaka jest rola przypisana przez system operacyjny do interfejsu? wywołania systemowe?
  4. Jakie warunki muszą być spełnione podczas projektowania systemu operacyjnego, aby można go było łatwo przenosić?
  5. Jaka jest różnica między architekturą mikrojądra a tradycyjną architekturą systemu operacyjnego?
  6. Dlaczego mikrojądro jest dobrze przystosowane do obsługi przetwarzania rozproszonego?
  7. Co oznacza pojęcie wielu środowisk aplikacji?
  8. Jaka jest istota metody tłumaczenia bibliotecznego?

Koniec pracy -

Ten temat należy do:

System operacyjny, procesy, sprzęt

System operacyjny OS w największym stopniu determinuje wygląd całego systemu obliczeniowego jako całości, OS wykonuje dwa zasadniczo mało powiązane.. os jako wirtualna rozszerzona maszyna z wykorzystaniem większości komputerów.. z punktu widzenia użytkownika , funkcją systemu operacyjnego jest zapewnienie użytkownikowi jakiegoś rozszerzonego lub wirtualnego ..

Jeśli potrzebujesz dodatkowych materiałów na ten temat lub nie znalazłeś tego, czego szukałeś, zalecamy skorzystanie z wyszukiwania w naszej bazie prac:

Co zrobimy z otrzymanym materiałem:

Jeśli ten materiał okazał się dla Ciebie przydatny, możesz zapisać go na swojej stronie w sieciach społecznościowych:

Wszystkie tematy w tej sekcji:

Funkcje platform sprzętowych
Na właściwości systemu operacyjnego ma bezpośredni wpływ sprzęt, na który jest on zorientowany. Według rodzaju sprzętu rozróżnia się systemy operacyjne komputerów osobistych, mi

Zadania i ćwiczenia
1. Jakie wydarzenia w rozwoju bazy technicznej komputerów stały się kamieniami milowymi w historii systemów operacyjnych? 2. Jaka była podstawowa różnica między pierwszymi monitorami przetwarzania wsadowego a?

Architektura systemu operacyjnego
Każdy dobrze zorganizowany złożony system ma przejrzystą i racjonalną strukturę, to znaczy jest podzielony na części - moduły, które mają całkowicie wykończone przeznaczenie funkcjonalne z

Zarządzanie pamięcią główną
Pamięć to duża liczba słów lub bajtów, z których każdy ma swój własny adres. Jest to magazyn danych, do którego można szybko uzyskać dostęp, rozproszony między procesorem a

Zarządzanie pamięcią zewnętrzną
Ponieważ pamięć główna (pamięć podstawowa) jest ulotna i zbyt mała, aby trwale przechowywać wszystkie dane i programy, VS musi zapewnić pamięć dodatkową, aby zapisać pamięć główną. Bol

Podsystem zarządzania plikami
Plik to zbiór powiązanych informacji zdefiniowanych podczas tworzenia. Oprócz rzeczywistych danych pliki reprezentują programy, zarówno w postaci źródłowej, jak i obiektowej. Podsystem

Sieć
system rozproszony- zestaw procesorów, które nie przydzielają pamięci lub każdy procesor ma własną pamięć lokalną. Procesory w systemie są połączone śieć komputerowa i dostarczanie

Kernel i pomocnicze moduły systemu operacyjnego
Najbardziej ogólnym podejściem do budowy systemu operacyjnego jest podział wszystkich jego modułów na dwie grupy: jądro - moduły systemu operacyjnego, które wykonują podstawowe funkcje;

Tryb jądra i uprzywilejowany
Aby niezawodnie kontrolować wykonywanie aplikacji, system operacyjny musi mieć określone uprawnienia w stosunku do aplikacji. W przeciwnym razie nieprawidłowo działająca aplikacja może:

Warstwowa struktura systemu operacyjnego
System obliczeniowy działający w systemie operacyjnym opartym na jądrze można postrzegać jako system składający się z trzech hierarchicznie ułożonych warstw: dolna warstwa tworzy sprzęt

Struktura rdzenia
Wsparcie sprzętowe systemu operacyjnego. Do tej pory o systemie operacyjnym mówiono jako o zestawie programów, ale niektóre funkcje systemu operacyjnego mogą być również wykonywane przez sprzęt. Poeta

Zależność sprzętowa i przenośność systemu operacyjnego
Wiele systemów operacyjnych z powodzeniem działa na różnych platformach sprzętowych bez znaczących zmian w ich składzie. Wynika to w dużej mierze z faktu, że pomimo różnic

Przenośność systemu operacyjnego
Jeśli kod systemu operacyjnego można stosunkowo łatwo przenieść z jednego typu procesora na inny typ procesora oraz z jednego typu platformy sprzętowej na platformę sprzętową

Pojęcie
Architektura mikrojądra jest alternatywą dla klasycznego sposobu budowania systemu operacyjnego. Pod architektura klasyczna w tym przypadku rozumiemy powyższą organizację strukturalną

Kompatybilność binarna i źródłowa
Konieczne jest rozróżnienie pomiędzy kompatybilnością na poziomie binarnym a kompatybilnością na poziomie kodu źródłowego. Aplikacje są zwykle przechowywane w systemie operacyjnym w formie pliki wykonywalne, zawierający obrazy binarne

Tłumaczenie bibliotek
Wyjściem w takich przypadkach jest wykorzystanie tzw. środowisk oprogramowania aplikacyjnego. Jednym z elementów tworzących środowisko oprogramowania aplikacyjnego jest zestaw funkcji

Koncepcja procesu
Proces to działanie działające na procesorze. W najszerszym znaczeniu procesor to dowolne urządzenie w komputerze, które:

Koncepcja zasobów
Jedną z funkcji systemu operacyjnego jest zapewnienie wydajnego i bezkonfliktowego sposobu zarządzania zasobami systemu komputerowego. Zasób jest często rozumiany jako wskaźnik

Pojęcie wirtualizacji
Wirtualizacja tego lub innego zasobu odbywa się w ramach scentralizowanego schematu alokacji zasobów. Dzięki wirtualizacji realizowane są dwie formy oszukiwania użytkowników:

Dyscypliny obsługi pojedynczego zamówienia
a) FIFO (pierwsze weszło – pierwsze wyszło) – dyscyplina serwisowa w kolejności odbioru. Wszystkie żądania trafiają na koniec kolejki. W pierwszej kolejności obsługiwane są aplikacje na czele kolejki. Schematyczny

System przerwań
Sytuacja zaistniała w wyniku oddziaływania jakiegoś niezależnego zdarzenia, prowadząca do chwilowego zaprzestania wykonywania sekwencji poleceń jednego programu w celu

Koncepcja procesu
Proces (zadanie) to program, który jest w trybie wykonywania. Każdy proces ma powiązaną z nim własną przestrzeń adresową, z której może czytać i

Model procesu
W systemie wielozadaniowym rzeczywisty procesor przełącza się z procesu na proces, ale aby uprościć model, rozważany jest zestaw procesów działających równolegle (pseudo-równoległych). Rozważać

Zakończenie procesu
(call exit lub ExitProcess): Zaplanowane zakończenie (koniec wykonywania) Zaplanowane wyjście w przypadku znanego błędu (np. brakujący plik)

Hierarchia procesów
Systemy UNIX mają sztywną hierarchię procesów. Każdy nowy proces utworzony przez wywołanie systemowe fork jest dzieckiem poprzedniego procesu. Proces potomny pobierany jest z procesu nadrzędnego

Stan procesu
Trzy stany procesu to: Działa (zajmuje procesor) Gotowy (proces jest tymczasowo zawieszony, aby umożliwić uruchomienie innego procesu) Oczekiwanie (proces

Pojęcie przepływu
Każdy proces ma przestrzeń adresową i pojedynczy strumień wykonywalnych instrukcji. W systemach wieloużytkownikowych przy każdym wywołaniu tej samej usługi przybycie

model przepływu
Każdy wątek jest powiązany z: Licznikiem wykonania poleceń Rejestrami dla bieżących zmiennych Wątki stanu stosu współdzielą między sobą elementy

Korzyści z używania wątków
W niektórych przypadkach uproszczenie programu przy użyciu wspólnej przestrzeni adresowej. Szybkość tworzenia wątku w porównaniu z procesem jest około 100 razy. Lansowany

Implementacja wątków w przestrzeni użytkownika, jądrze i mieszanym
A - wątki w przestrzeni użytkownika B

Funkcje implementacji systemu Windows
Stosowane są cztery koncepcje: Zadanie — zbiór procesów ze wspólnymi przydziałami i limitami Proces — kontener zasobów (pamięć...), zawierający przynajmniej jeden wątek. Poto

Komunikacja między procesami
Sytuacje, w których procesy muszą wchodzić w interakcje: Przekazywanie informacji z jednego procesu do drugiego Kontrola nad działaniami procesów (na przykład: gdy konkurują o

Przekazywanie informacji z jednego procesu do drugiego
Transfer można wykonać na kilka sposobów: Kanały pamięci współdzielonej (potoki) to pseudoplik, do którego jeden proces zapisuje, a inny odczytuje.

Warunki wyścigu
Sytuacja wyścigu to sytuacja, w której wiele procesów jednocześnie odczytuje lub zapisuje dane (do pamięci lub do pliku). Rozważ przykład, w którym dwa procesy próbują

Krytyczne obszary
Region krytyczny to część programu, który uzyskuje dostęp do współdzielonych danych. Warunki unikania wyścigu i wydajnego działania procesów: dwa procesy nie

Zablokuj zmienne
Wprowadzono pojęcie zmiennej blokady, tj. jeśli wartość tej zmiennej jest równa np. 1, to zasób jest zajęty przez inny proces, a drugi proces przechodzi w stan czuwania (bloków) do

Ścisła zmiana
W modelu tym procesy mogą być realizowane ściśle po kolei za pomocą zmiennej.

Prymitywy interakcji procesów
Wprowadzono pojęcie dwóch prymitywów. sleep to żądanie systemowe, które powoduje blokowanie procesu wywołującego, dopóki nie zostanie uruchomiony przez inny proces. wak

semafory
Semafory są zmiennymi służącymi do zliczania sygnałów wyzwalających przechowywanych na przyszłość. Zaproponowano dwie operacje w dół i w górę (analogia snu i czuwania)

Harmonogramowanie w systemach przetwarzania wsadowego
6.2.1 First In Fist Out (FIFO) Procesy są umieszczane w kolejce po ich przybyciu. Zalety:

Planowanie cykliczne
Najprostszy algorytm planowania i często używany. Każdy proces otrzymuje wycinek czasu procesora. Kiedy kwant się kończy, proces jest przenoszony przez planistę na koniec

Planowanie priorytetowe
Każdemu procesowi przypisywany jest priorytet, a kontrola przekazywana jest procesowi o najwyższym priorytecie. Priorytet może być dynamiczny lub statyczny. Dynamika

Harmonogramowanie w systemach czasu rzeczywistego
Systemy czasu rzeczywistego dzielą się na: sztywne (ścisłe terminy dla każdego zadania) - sterowanie ruchem elastyczne (naruszenie harmonogramu nie jest pożądane, ale dopuszczalne) -

Ogólne planowanie w czasie rzeczywistym
Model jest używany, gdy każdy proces walczy o procesor z własnym zadaniem i harmonogramem jego wykonania. Planista musi wiedzieć: częstotliwość, z jaką każdy

Zakleszczenie procesu
Zakleszczenie procesów może wystąpić, gdy wiele procesów konkuruje o ten sam zasób. Zasoby mogą być stronicowane i niestronicowane, sprzęt i oprogramowanie.

Modelowanie impasów
Modelowanie ślepych uliczek za pomocą wykresów. Symbole W takim modelu bardzo

Wykrywanie i eliminacja zakleszczeń
System nie próbuje zapobiec zakleszczeniu, ale próbuje go wykryć i rozwiązać. Wykrywanie zakleszczeń, gdy istnieje jeden zasób każdego typu

Dynamiczne unikanie impasu
W ten sposób system operacyjny musi wiedzieć, czy przydział zasobów jest bezpieczny, czy nie. Trajektorie zasobów Rozważ model dwóch procesów i dwóch zasobów

Unikanie czterech warunków wymaganych do zakleszczenia
Zapobieganie warunkom wzajemnego wykluczenia Możesz zminimalizować liczbę procesów konkurujących o zasoby. Na przykład użycie buforowania drukarki, gdy t

Zasady dotyczące sprzętu we/wy
Dwa dolne poziomy systemu sterowania I/O to sprzęt: same urządzenia, które bezpośrednio wykonują operacje, oraz ich kontrolery, które służą do organizowania wspólnej pracy urządzeń.

Kontrolery urządzeń
Urządzenia I/O zazwyczaj składają się z dwóch części: mechanicznej (nie należy rozumieć dosłownie) – dysku, drukarki, monitora elektronicznego – kontrolera lub

We/wy mapowane w pamięci
Każdy kontroler ma kilka rejestrów, które służą do interakcji z jednostka centralna. Za pomocą tych rejestrów system operacyjny kontroluje (odczytuje, zapisuje, włącza itp.) i określa:

Bezpośredni dostęp do pamięci (DMA — bezpośredni dostęp do pamięci)
Bezpośredni dostęp do pamięci jest realizowany za pomocą kontrolera DMA. Kontroler zawiera kilka rejestrów: adres pamięci rejestr licznik bajtów

Przerwania
Po uruchomieniu urządzenia we/wy procesor przełącza się na inne zadania. Aby zasygnalizować procesorowi koniec procesora, urządzenie inicjuje przerwanie,

Zadania oprogramowania we/wy
Główne zadania do rozwiązania oprogramowanie I/O: Niezależność urządzenia - na przykład program, który odczytuje dane z pliku, nie musi zastanawiać się, dlaczego

Oprogramowanie we/wy
W tym przypadku procesor wykonuje całą pracę. Rozważmy w ten sposób proces drukowania ciągu ABCDEFGH.

We/wy sterowane przerwaniami
Jeżeli w poprzednim przykładzie bufor nie jest używany, a drukarka drukuje 100 znaków na sekundę, to każdy znak zajmie 10ms, w tym czasie procesor będzie bezczynny, czekając na gotowość wydruku.

Obsługa przerwań
Przerwania powinny być ukryte jak najgłębiej w trzewiach systemu operacyjnego, aby jak najmniej systemu operacyjnego miało z nimi do czynienia. Najlepiej zablokować sterownik, który uruchomił I/O. Algo

Sterowniki urządzeń
Sterownik urządzenia - wymagany dla każdego urządzenia. Różne systemy operacyjne wymagają różnych sterowników. Aby uzyskać dostęp do rejestrów, sterowniki muszą być częścią jądra (w systemie monolitycznym).

Niezależne od urządzenia oprogramowanie I/O
Funkcje oprogramowania I/O niezależne od urządzenia: Jednolity interfejs dla sterowników urządzeń, Buforowanie komunikatów o błędach

Uogólnienie poziomów I/O i funkcji
Poziomy i podstawowe funkcje systemu I/O Baz

Blokujące, nieblokujące i asynchroniczne wywołania systemowe
Wszystkie wywołania systemowe związane z realizacją operacji I/O można podzielić na trzy grupy ze względu na sposoby realizacji interakcji pomiędzy procesem a urządzeniem I/O. do pierwszego, do

Buforowanie i buforowanie
Bufor jest zwykle rozumiany jako pewien obszar pamięci do przechowywania informacji, gdy dane są wymieniane między dwoma urządzeniami, dwoma procesami lub procesem i urządzeniem. Wymiana w

Urządzenia buforujące i przechwytujące
O pojęciu buforowania mówiliśmy w pierwszym wykładzie naszego kursu, jako o mechanizmie, który po raz pierwszy umożliwił połączenie rzeczywistych operacji I/O jednego zadania z wykonaniem innego zadania.

Obsługa przerwań i błędów
Jeśli podczas pracy z zewnętrzne urządzenie system obliczeniowy nie stosuje metody odpytywania swojego stanu, ale wykorzystuje mechanizm przerwań, to gdy wystąpi przerwanie, jak już

Planowanie zapytań
Podczas korzystania z nieblokującego wywołania systemowego może się zdarzyć, że żądane urządzenie jest już zajęte wykonywaniem pewnych operacji. W takim przypadku połączenie nieblokujące może natychmiast

Zasady działania podsystemu sterowania WE/WY UNIX
1. Ten podsystem jest zbudowany w taki sam sposób, jak podsystem zarządzania danymi (system plików). Użytkownik ma zapewniony zunifikowany sposób dostępu zarówno do PU, jak i plików. W pliku w systemie operacyjnym

Zarządzanie pamięcią systemu operacyjnego
4.1. Pojęcie organizacji i zarządzania pamięcią fizyczną w systemach operacyjnych 4.2. Metody połączonej alokacji pamięci operacyjnej 4.2.1. Połączony rozproszony

Zrozumienie organizacji i zarządzania pamięcią fizyczną w systemach operacyjnych
Organizacja i zarządzanie pamięcią główną (pierwotną, fizyczną, rzeczywistą) komputera jest jednym z najważniejszych czynników determinujących budowę systemów operacyjnych. W języku angielskim technicznym

Przydział pamięci podłączonej dla jednego użytkownika
Przydział pamięci podłączonej dla jednego użytkownika, zwany także pojedynczym ciągłym przydziałem, jest stosowany w komputerach pracujących w trybie wsadowym pojedynczego programu pod kontrolą najprostszego

Podłączona alokacja pamięci w przetwarzaniu wieloprogramowym
Dzięki przetwarzaniu wieloprogramowemu w pamięci komputera umieszczanych jest jednocześnie kilka zadań. W tym przypadku alokację pamięci między zadaniami można wykonać w następujący sposób:

Strategie umieszczania informacji w pamięci
Strategie rozmieszczania pamięci mają na celu określenie, gdzie w pamięci głównej przychodzące programy i dane powinny być umieszczane w alokacji pamięci niepodlegającej relokacji.

Podstawowe pojęcia dotyczące pamięci wirtualnej
Termin pamięć wirtualna jest zwykle kojarzony ze zdolnością adresowania przestrzeni pamięci znacznie większej niż pojemność pamięci podstawowej (rzeczywistej, fizycznej) konkretnej maszyny obliczeniowej.

Stronicowanie pamięci wirtualnej
Czysto stronicujący adres wirtualny to uporządkowana para (p, d), gdzie p jest numerem strony w pamięć wirtualna, a d to przesunięcie w obrębie strony p. Proces może działać

Segmentowa organizacja pamięci wirtualnej
Adres wirtualny w organizacji segmentowej pamięci wirtualnej jest parą uporządkowaną n = (s, d) , gdzie s jest numerem segmentu pamięci wirtualnej, a d jest przesunięciem w tym segmencie. Proces może:

Organizacja pamięci wirtualnej według segmentów stron
Systemy przywoławcze mają zalety obu sposobów implementacji pamięci wirtualnej. Segmenty zwykle zawierają całkowitą liczbę stron i nie jest konieczne, aby wszystkie strony

Strategie zarządzania pamięcią wirtualną
Strategie zarządzania pamięcią wirtualną, podobnie jak strategie zarządzania pamięcią fizyczną, dzielą się na trzy kategorie: strategie push, strategie umieszczania i strategie pop.

Strategie wypychania
Do kontrolowania pchania stosuje się następujące strategie: pchanie (pompowanie) na żądanie (na żądanie); pchanie (pompowanie) z ołowiem (do przodu).

Strategie rozmieszczania
W systemach ze stronicowaniem pamięci wirtualnej decyzja o umieszczeniu nowo załadowanych stron jest podejmowana po prostu: nową stronę można umieścić w dowolnym wolnym

Strategie wypychania
W systemach wieloprogramowych z reguły cała pamięć podstawowa jest zajęta. W takim przypadku menedżer pamięci musi zdecydować, którą stronę lub który segment usunąć z podstawowej

Nazewnictwo plików
Długość nazwy pliku zależy od systemu operacyjnego, może wynosić od 8 (MS-DOS) do 255 (Windows, LINUX) znaków. Systemy operacyjne rozróżniają wielkie i małe litery. Na przykład WINDOWS i Windows dla MS-DOS są takie same i t

Struktura pliku
Trzy podstawowe struktury plików: 1. Sekwencja bajtów — system operacyjny nie dba o zawartość pliku, widzi tylko bajty. Główną zaletą takiego systemu jest elastyczność

Typy plików
Główne typy plików: · Zwykłe - zawierają informacje o użytkowniku. Używany w systemach Windows i UNIX. · Katalogi - pliki systemowe dostarczanie

Atrybuty plików
Główne atrybuty pliku: · Bezpieczeństwo - kto iw jaki sposób może uzyskać dostęp do pliku (użytkownicy, grupy, odczyt/zapis). Używany w systemach Windows i UNIX. · Hasło - hasło do fa

Pliki mapowane do przestrzeni adresowej pamięci
Czasami wygodnie jest zmapować plik do pamięci (nie ma potrzeby używania wywołań systemowych I/O do pracy z plikiem) i pracować z pamięcią, a następnie zapisać zmodyfikowany plik na dysku. Podczas używania

Jednopoziomowe systemy katalogowe
W tym systemie wszystkie pliki znajdują się w jednym katalogu. od

Nazwa ścieżki
Aby zorganizować drzewo katalogów, potrzebujesz jakiegoś sposobu określenia pliku. Dwie główne metody określania pliku to: bezwzględna nazwa ścieżki — określa ścieżkę od katalogu głównego

Implementacja katalogów
Podczas otwierania pliku do znalezienia wpisu w katalogu używana jest nazwa ścieżki. Wpis do katalogu wskazuje na adresy bloków dyskowych. W zależności od systemu może to być: piekło dysku

Implementacja długich nazw plików
Wcześniejsze systemy operacyjne używały krótkich nazw plików, MS-DOS do 8 znaków, w UNIX w wersji 7 do 14 znaków. Teraz używane są dłuższe nazwy plików (do 255 znaków lub więcej).

Przyspiesz wyszukiwanie plików
Jeśli katalog jest bardzo duży (kilka tysięcy plików), sekwencyjne odczytywanie katalogu nie jest zbyt wydajne. 1 Korzystanie z tablicy mieszającej w celu przyspieszenia wyszukiwania plików.

A - udostępniony plik
Taki system plików nazywa się skierowanym grafem acyklicznym (DAG, Directed Acyclic Graph). Występuje problem, jeśli adresy dysków są zawarte w samych wpisach katalogu.

Rozmiar bloku
Jeśli zostanie podjęta decyzja o przechowywaniu pliku w blokach, pojawia się pytanie o rozmiar tych bloków. Są dwie skrajności: Duże bloki – na przykład 1MB, wtedy nawet plik 1-bajtowy zajmie cały blok

Rozliczanie darmowych bloków
Istnieją dwa główne sposoby rozliczania wolnych bloków: · Połączona lista bloków dysku, każdy blok zawiera tyle numerów wolnych bloków, ile koliduje z blokiem. Często na listę rezerwową

Limity dyskowe
Aby ograniczyć użytkownika, istnieje mechanizm limitów. Dwa rodzaje limitów: Twardy – nie można przekroczyć Elastyczny – można go przekroczyć, ale po wylogowaniu użytkownika

Utworzyć kopię zapasową
Przypadki, dla których konieczne jest wykonanie kopii zapasowej: Awarie powodujące utratę danych na dysku Przypadkowe usunięcie lub uszkodzenie oprogramowania plików

Spójność systemu plików
Jeśli system ulegnie awarii przed zapisaniem zmodyfikowanego bloku, system plików może wejść w niespójny stan. Zwłaszcza jeśli jest to blok i-węzła, blok katalogu i

buforowanie
Block cache (buffer cache) - zestaw bloków przechowywanych w pamięci, ale logicznie należących do dysku. Wszystkie żądania odczytu z dysku są przechwytywane, a obecność wymaganego

System plików ISO 9660
Jeszcze dokładna informacja- http://ru.wikipedia.org/wiki/ISO_9660 Standard został przyjęty w 1988 roku. Zgodnie ze standardem dyski można podzielić na partycje logiczne, ale rozważymy dyski z

Wpis do katalogu ISO 9660
Lokalizacja pliku - numer początkowego bloku, ponieważ. bloki są umieszczane w kolejności. L - długość nazwy pliku w bajtach Nazwa pliku - 8 znaków, 3 znaki rozszerzenia (ze względu na kompatybilność)

Rozszerzenia Rock Ridge dla UNIX
To rozszerzenie zostało stworzone, aby system plików UNIX był obecny na płycie CD-ROM. W tym celu używane jest pole Użycie systemu. Rozszerzenia zawierają następujące pola: 1. PX -

System plików UDF (Universal Disk Format)
Więcej informacji - http://ru.wikipedia.org/wiki/Universal_Disk_Format Pierwotnie stworzony dla DVD, w wersji 1.50 dodano obsługę CD-RW i CD-R. Teraz najnowsza wersja

System plików MS-DOS (FAT-12,16,32)
Pierwsze wersje miały tylko jeden katalog (MS-DOS 1.0). Od wersji MS-DOS 2.0 zastosowano strukturę hierarchiczną. Wpisy katalogu, ustalone na 32 bajty. Nazwy plików -

Będą włączone w Windows 98
Atrybut archiwum jest potrzebny programom do tworzenia kopii zapasowych, za pomocą których określają, czy skopiować plik, czy nie. Pole czasu (16 bitów) podzielone jest na trzy podpola:

Rozszerzenie Windows 98 dla FAT-32
Do rozszerzenia wykorzystano 10 wolnych bitów. Formularz

Główna nadbudowa nad FAT-32, to są długie nazwy plików
Każdemu plikowi przypisano dwie nazwy: 1. Krótka 8+3 dla zgodności z MS-DOS 2. Długa nazwa pliku, w formacie Unicode Dostęp do pliku może mieć każdy

Format katalogów wpisów z fragmentem długiej nazwy pliku w Windows 98
Pole „Atrybuty” pozwala odróżnić fragment długiej nazwy (wartość 0x0F) od deskryptora pliku. Stare wpisy katalogu programów MS-DOS z wartością pola atrybutu 0x0

System plików NTFS
System plików NTFS został zaprojektowany dla systemu Windows NT. Cechy: · Adresy 64-bitowe, czyli tzw. teoretycznie może obsługiwać 264*216 bajtów (1 208 925 819 M

Znajdowanie pliku według nazwy
Podczas tworzenia pliku program wywołuje procedurę biblioteki CreateFile("C:windowsreadmy.txt", ...) To wywołanie przechodzi do biblioteki współdzielonej poziomu n

Kompresja pliku
Jeśli plik jest oznaczony jako skompresowany, system automatycznie kompresuje podczas zapisu i dekompresuje podczas odczytu. Algorytm pracy: 1. Pierwsze 16 bloków pliku jest pobieranych do analizy (n

Szyfrowanie plików
Wszelkie informacje, jeśli nie są zaszyfrowane, można odczytać, uzyskując dostęp. Dlatego najbardziej niezawodną ochroną informacji przed nieautoryzowanym dostępem jest szyfrowanie. Nawet jeśli cię okradną

System plików UNIX V7
Chociaż jest to stary system plików, podstawowe elementy są nadal używane przez nowoczesne systemy UNIX. Cechy: Nazwy plików są ograniczone do 14 znaków ASCII, z wyjątkiem ukośnika "/&q"

i-węzłowa struktura
Pole Bajty Opis Tryb Typ pliku, bity bezpieczeństwa, bity setuid i setgid Nlinks

Tworzenie i praca z plikiem
fd=creat("abc", mode) - Przykład tworzenia pliku abc z trybem ochrony określonym w zmiennej mode (do którego użytkownicy mają dostęp). System jest używany

System plików BSD
Podstawą jest klasyczny system plików UNIX. Funkcje (różnica w stosunku do poprzedniego systemu): Zwiększono długość nazwy pliku do 255 znaków Zreorganizowano katalogi

Lokalizacja systemu plików EXT2 na dysku
Inne cechy: · Rozmiar bloku 1 KB · Rozmiar każdego i-węzła to 128 bajtów. I-węzeł zawiera 12 adresów bezpośrednich i 3 adresy pośrednie, długość adresu w i-węźle wyniosła 4 bajty, czyli około

System plików EXT3
W przeciwieństwie do EXT2, EXT3 jest systemem plików z dziennikiem, tj. nie popadnie w niespójny stan po awariach. Ale jest w pełni kompatybilny z EXT2.

System plików XFS
XFS to system plików z księgowaniem opracowany przez Silicon Graphics, ale teraz wydany jako open source. Oficjalne informacje na http://oss.sgi.com/projec

System plików RFS
RFS (RaiserFS) to system plików z księgowaniem opracowany przez Namesys. Oficjalne informacje o RaiserFS Niektóre funkcje: Bardziej wydajna praca

System plików JFS
JFS (Journaled File System) to kronikowany system plików opracowany przez IBM dla systemu operacyjnego AIX, ale teraz wydany jako open source. Oficjalne informacje o Journaled File S

Struktura poziomów systemu plików NFS
VFS (Virtual File System) - wirtualny system plików. Potrzebny do zarządzania tabelą otwartych plików. Wpisy dla każdego otwartego pliku nazywane są v-węzłami

Podczas gdy wiele cech architektonicznych systemu operacyjnego jest bezpośrednio związanych tylko z programiści systemowi, koncepcja wielu udogodnień aplikacyjnych (operacyjnych) jest bezpośrednio związana z potrzebami użytkowników końcowych - zdolnością systemu operacyjnego do uruchamiania aplikacji napisanych dla innych systemów operacyjnych. Ta właściwość systemu operacyjnego nazywana jest kompatybilnością.

Kompatybilność aplikacji może być na poziomie binarnym i na poziomie kodu źródłowego. Aplikacje są zwykle przechowywane w systemie operacyjnym jako pliki wykonywalne zawierające binarne obrazy kodu i danych. Kompatybilność binarną osiąga się, gdy można pobrać program wykonywalny i uruchomić go w innym środowisku systemu operacyjnego.

Zgodność na poziomie źródłowym wymaga włączenia odpowiedniego kompilatora do oprogramowania komputera, na którym ma być uruchomiona aplikacja, a także kompatybilności na poziomie bibliotek i wywołań systemowych. Wymaga to rekompilacji kodu źródłowego aplikacji do nowego modułu wykonywalnego.

Zgodność na poziomie źródła jest ważna głównie dla twórców aplikacji, którzy mają do dyspozycji te źródła. Ale dla użytkowników końcowych tylko zgodność binarna ma praktyczne znaczenie, ponieważ tylko w tym przypadku mogą używać tego samego produktu w różnych systemach operacyjnych i na różnych maszynach.

Rodzaj możliwej kompatybilności zależy od wielu czynników. Najważniejszą z nich jest architektura procesora. Jeśli procesor używa tego samego zestawu instrukcji (może z dodatkami, jak w przypadku IBM PC: zestaw standardowy + multimedia + grafika + strumieniowanie) i ten sam zakres adresów, to zgodność binarną można osiągnąć całkiem prosto. W tym celu muszą być spełnione następujące warunki:

  • API, z którego korzysta aplikacja, musi być obsługiwane przez dany system operacyjny;
  • wewnętrzna struktura pliku wykonywalnego aplikacji musi być zgodna ze strukturą plików wykonywalnych systemu operacyjnego.

Jeśli procesory mają różne architektury, to oprócz powyższych warunków konieczne jest zorganizowanie emulacji kodu binarnego. Na przykład szeroko stosowana jest emulacja poleceń Procesor Intel na procesorze Macintosh Motorola 680x0. Emulator oprogramowania w tym przypadku sekwencyjnie wybiera instrukcję binarną procesora Intela i wykonuje równoważny podprogram zapisany w instrukcjach procesora Motorola. Ponieważ procesor Motoroli nie ma dokładnie tych samych rejestrów, flag, wewnętrznej jednostki ALU itp., co w procesorach Intela, musi również symulować (emulować) wszystkie te elementy za pomocą własnych rejestrów lub pamięci.

To proste, ale bardzo powolna praca, ponieważ jedna instrukcja Intela jest wykonywana znacznie szybciej niż sekwencja instrukcji procesora Motorola, która ją emuluje. Wyjściem w takich przypadkach jest wykorzystanie tzw. środowisk oprogramowania aplikacyjnego lub środowiska operacyjne. Jednym ze składników takiego środowiska jest zestaw funkcji API, które system operacyjny udostępnia swoim aplikacjom. Aby skrócić czas wykonywania programów innych osób, środowiska aplikacji imitują wywołania funkcji bibliotecznych.

Skuteczność tego podejścia wynika z faktu, że większość dzisiejszych programów działa pod GUI ( interfejsy graficzne użytkownika), takich jak Windows , MAC lub UNIX Motif , przy czym aplikacje spędzają 60-80% czasu na wykonywaniu funkcji GUI i innych wywołaniach bibliotek systemu operacyjnego. To właśnie ta właściwość aplikacji umożliwia środowiskom aplikacji rekompensowanie dużego czasu poświęcanego na emulację polecenia za poleceniem programów. Starannie zaprojektowane środowisko aplikacji zawiera biblioteki naśladujące biblioteki GUI, ale napisane w kodzie natywnym. W ten sposób uzyskuje się znaczne przyspieszenie wykonywania programów z API innego systemu operacyjnego. W przeciwnym razie takie podejście nazywa się tłumaczeniem - w celu odróżnienia go od wolniejszego procesu emulowania jednej instrukcji na raz.

Na przykład w przypadku programu Windows działającego na komputerze Macintosh podczas interpretowania poleceń z procesora Intel wydajność może być bardzo niski. Ale kiedy funkcja GUI jest wywoływana, otwiera się okno itp., moduł systemu operacyjnego, który implementuje aplikację Środowisko Windows, może przechwycić to wywołanie i przekierować je do rekompilowanego procesora Motorola 680x0 w celu otwarcia okna. W rezultacie w takich sekcjach kodu szybkość programu może osiągnąć (i ewentualnie przewyższyć) szybkość pracy na własnym procesorze.

Aby program napisany dla jednego systemu operacyjnego działał na innym systemie operacyjnym, nie wystarczy zapewnić zgodność API. Koncepcje leżące u podstaw różnych systemów operacyjnych mogą ze sobą kolidować. Na przykład w jednym systemie operacyjnym aplikacja może sterować urządzeniami we / wy, w innym działania te są prerogatywą systemu operacyjnego.

Każdy system operacyjny ma własne mechanizmy ochrony zasobów, własne algorytmy obsługi błędów i wyjątków, własną strukturę procesora i schemat zarządzania pamięcią, własną semantykę dostępu do plików oraz własny graficzny interfejs użytkownika. Aby zapewnić kompatybilność, konieczne jest zorganizowanie bezkonfliktowego współistnienia w tym samym systemie operacyjnym kilku sposobów zarządzania zasobami komputera.

Istnieją różne opcje budowania środowisk wielu aplikacji, różniących się zarówno cechami rozwiązań architektonicznych, jak i funkcjonalnością, która zapewnia różne stopnie przenośności aplikacji. Jedna z najbardziej oczywistych opcji implementacji wielu środowisk aplikacji opiera się na standardowej warstwowej strukturze systemu operacyjnego.

Inny sposób budowania wielu środowisk aplikacji opiera się na podejściu mikrojądra. Jednocześnie bardzo ważne jest zwrócenie uwagi na podstawową, wspólną dla wszystkich środowisk aplikacyjnych różnicę między mechanizmami systemu operacyjnego a funkcjami wysokopoziomowymi specyficznymi dla każdego ze środowisk aplikacyjnych, które rozwiązują problemy strategiczne. Zgodnie z architektura mikrojądrowa wszystkie funkcje systemu operacyjnego są realizowane przez mikrojądro i serwery trybu użytkownika. Ważne jest, aby środowisko aplikacji zostało zaprojektowane jako oddzielny serwer trybu użytkownika i nie zawiera podstawowych mechanizmów.

Aplikacje, korzystając z API, wykonują wywołania systemowe do odpowiedniego środowiska aplikacji za pośrednictwem mikrojądra. Środowisko aplikacji przetwarza żądanie, wykonuje je (być może prosząc w tym celu o pomoc z podstawowych funkcji mikrojądra) i wysyła wynik z powrotem do aplikacji. Podczas wykonywania żądania środowisko aplikacji z kolei musi uzyskać dostęp do podstawowych mechanizmów systemu operacyjnego zaimplementowanych przez mikrojądro i inne serwery systemu operacyjnego.

Takie podejście do projektowania środowisk wieloaplikacyjnych ma wszystkie zalety i wady architektury mikrojądra, a w szczególności:

  • bardzo łatwo jest dodawać i wykluczać środowiska aplikacji, co jest konsekwencją dobrej rozszerzalności systemów operacyjnych z mikrojądrem;
  • jeśli jedno ze środowisk aplikacyjnych ulegnie awarii, pozostałe pozostają sprawne, co przyczynia się do niezawodności i stabilności systemu jako całości;
  • niska wydajność systemów operacyjnych z mikrojądrem wpływa na szybkość narzędzi aplikacji, a co za tym idzie na szybkość aplikacji.

W rezultacie należy zauważyć, że tworzenie w ramach jednego systemu operacyjnego kilku narzędzi aplikacyjnych do wykonywania aplikacji z różnych systemów operacyjnych to sposób, który pozwala mieć jedną wersję programu i przenosić ją między różnymi systemami operacyjnymi. Wiele środowisk aplikacji zapewnia binarną zgodność danego systemu operacyjnego z aplikacjami napisanymi dla innych systemów operacyjnych.

1.9. Maszyny wirtualne jako nowoczesne podejście do wdrażania środowisk wieloaplikacyjnych

Koncepcja „monitorowania maszyny wirtualnej” (VMM) powstała pod koniec lat 60. jako oprogramowanie poziom abstrakcji, który podzielił platformę sprzętową na kilka maszyn wirtualnych. Każda z tych maszyn wirtualnych (VM) była tak podobna do podstawowej maszyny fizycznej, że istniejąca oprogramowanie można na nim wykonać bez zmian. W tamtych czasach ogólne zadania obliczeniowe były wykonywane na drogich komputerach mainframe (takich jak IBM /360), a użytkownicy wysoko oceniali zdolność VMM do przydzielania ograniczonych zasobów między kilka aplikacji.

W latach 80. i 90. koszty sprzętu komputerowego znacznie i skutecznie spadły wielozadaniowy system operacyjny, co zmniejszyło wartość VMM w oczach użytkowników. Komputery mainframe ustąpiły miejsca minikomputerom, a potem komputerom PC i zniknęła potrzeba VMM. W rezultacie architektura komputerowa po prostu zniknęła sprzęt komputerowy za ich skuteczną realizację. Pod koniec lat 80. w nauce i produkcji VMM postrzegano je jedynie jako ciekawostkę historyczną.

Dziś MVM powraca w centrum uwagi. Intel, AMD, Sun Microsystems i IBM opracowują strategie wirtualizacji, a laboratoria i uniwersytety opracowują podejścia oparte na maszynach wirtualnych w celu rozwiązania problemów związanych z mobilnością, bezpieczeństwem i zarządzaniem. Co się stało między rezygnacją MVM a ich odrodzeniem?

W latach 90. naukowcy ze Stanford University zaczęli badać możliwość wykorzystania maszyn wirtualnych do przezwyciężenia ograniczeń sprzętu i systemów operacyjnych. Problemy pojawiły się z komputerami z przetwarzaniem masowo równoległym (Massively Parallel Processing, MPP), które były trudne do zaprogramowania i nie mogły obsługiwać istniejących systemów operacyjnych. Naukowcy odkryli, że maszyny wirtualne mogą upodobnić tę nieporęczną architekturę do istniejących platform, aby wykorzystać gotowe systemy operacyjne. Z tego projektu pochodzili ludzie i pomysły, które stały się kopalnią złota firmy VMware (www.vmware.com), pierwszego dostawcy VMM dla komputerów głównego nurtu.

Co dziwne, rozwój nowoczesnych systemów operacyjnych i spadające koszty sprzętu doprowadziły do ​​problemów, które naukowcy mieli nadzieję rozwiązać za pomocą VMM. Tani sprzęt przyczynił się do szybkiego rozpowszechnienia komputerów, ale często były one niedostatecznie wykorzystywane, wymagając dodatkowej przestrzeni i wysiłku w utrzymaniu. I konsekwencje wzrostu funkcjonalność Systemy operacyjne stały się ich niestabilnością i podatnością.

Aby zmniejszyć wpływ awarii systemu i chronić przed włamaniami, administratorzy systemu powrócił do jednozadaniowości model obliczeniowy(przy jednej aplikacji na jednej maszynie). Spowodowało to dodatkowe koszty ze względu na zwiększone wymagania sprzętowe. Przenoszenie aplikacji z różnych maszyn fizycznych na maszyny wirtualne i konsolidacja tych maszyn wirtualnych na kilku platformach fizycznych poprawiło wykorzystanie sprzętu, zmniejszyło koszty zarządzania i zmniejszyło powierzchnię. W ten sposób zdolność VMM do multipleksowania sprzętu — tym razem w imię konsolidacji serwerów i obliczeń użytkowych — przywróciła je do życia.

Obecnie VMM stał się nie tyle narzędziem do organizowania wielozadaniowości, jak kiedyś pomyślano, ale rozwiązaniem problemów zapewnienia bezpieczeństwa, mobilności i niezawodności. Pod wieloma względami VMM daje programistom systemów operacyjnych możliwość rozwijania funkcjonalności, które nie są możliwe w dzisiejszych złożonych systemach operacyjnych. Funkcje, takie jak migracja i ochrona, są znacznie wygodniejsze do wdrożenia na poziomie obsługujących je VMM wstecznie kompatybilny przy wdrażaniu innowacyjnych rozwiązań systemów operacyjnych przy zachowaniu dotychczasowych osiągnięć.

Wirtualizacja to ewoluująca technologia. Ogólnie rzecz biorąc, wirtualizacja umożliwia oddzielenie oprogramowania od podstawowej infrastruktury sprzętowej. W rzeczywistości zrywa połączenie między pewnym zestawem programów a określonym komputerem. Monitor maszyny wirtualnej oddziela się oprogramowanie od sprzętu i tworzy warstwę pośrednią między oprogramowaniem obsługującym maszyny wirtualne a sprzętem. Ten poziom umożliwia VMM pełną kontrolę wykorzystania zasobów sprzętowych. systemy operacyjne gościa (GuestOS) które działają na maszynie wirtualnej.

VMM tworzy ujednolicony widok podstawowego sprzętu, dzięki czemu fizyczne maszyny od różnych dostawców z różnymi podsystemami we/wy wyglądają tak samo, a maszyna wirtualna działa na dowolnym dostępnym sprzęcie. Nie martwiąc się o poszczególne maszyny, z ich ścisłymi powiązaniami między sprzętem a oprogramowaniem, administratorzy mogą traktować sprzęt po prostu jako pulę zasobów do świadczenia dowolnej usługi na żądanie.

Dzięki pełna enkapsulacja stany oprogramowania na maszynie wirtualnej, monitor VMM może mapować maszynę wirtualną na dowolne dostępne zasoby sprzętowe, a nawet przenosić ją z jednej fizycznej maszyny na drugą. Zadanie równoważenia obciążenia w grupie maszyn staje się trywialne, a istnieją niezawodne sposoby radzenia sobie z awariami sprzętu i rozbudowy systemu. Jeśli musisz wyłączyć uszkodzony komputer lub przywrócić nowy do trybu online, VMM może odpowiednio rozmieścić maszyny wirtualne. Maszyna wirtualna jest łatwa do replikacji, co pozwala administratorom szybko udostępniać nowe usługi w razie potrzeby.

Enkapsulacja oznacza również, że administrator może w dowolnym momencie zawiesić lub wznowić działanie maszyny wirtualnej, a także zapisać Stan aktulany maszynę wirtualną lub przywrócić ją do poprzedniego stanu. Dzięki uniwersalnej funkcji cofania można łatwo poradzić sobie z awariami i błędami konfiguracji. Hermetyzacja jest podstawą uogólnionego modelu mobilności, ponieważ zawieszona maszyna wirtualna może być kopiowana przez sieć, przechowywana i transportowana na nośnikach wymiennych.

VMM pełni rolę pośrednika we wszystkich interakcjach między maszyną wirtualną a sprzętem bazowym, wspierając wykonywanie wielu maszyn wirtualnych na jednej platformie sprzętowej i zapewniając ich niezawodną izolację. VMM pozwala na łączenie grupy maszyn wirtualnych o niskich wymaganiach dotyczących zasobów na jednym komputerze, zmniejszając koszty sprzęt komputerowy oraz zapotrzebowanie na przestrzeń produkcyjną.

Całkowita izolacja jest również ważna dla niezawodności i bezpieczeństwa. Aplikacje, które kiedyś działały na jednej maszynie, mogą teraz być dystrybuowane na różne maszyny wirtualne. Jeśli jeden z nich spowoduje awarię systemu operacyjnego w wyniku błędu, inne aplikacje zostaną od niego odizolowane i będą nadal działać. Jeśli jedna z aplikacji jest zagrożona atakiem zewnętrznym, atak zostanie zlokalizowany w „zaatakowanej” maszynie wirtualnej. W ten sposób VMM jest narzędziem do restrukturyzacji systemu w celu poprawy jego stabilności i bezpieczeństwa, bez konieczności dodatkowego zajmowania przestrzeni i działań administracyjnych, które są niezbędne przy uruchamianiu aplikacji na oddzielnych komputerach fizycznych.

VMM musi powiązać interfejs sprzętowy z maszyną wirtualną, zachowując pełną kontrolę nad podstawową maszyną i procedurami interakcji z jej sprzętem. Aby osiągnąć ten cel, istnieją różne metody oparte na pewnych kompromisach technicznych. Przy poszukiwaniu takich kompromisów brane są pod uwagę główne wymagania dla VMM: kompatybilność, wydajność i prostota. Kompatybilność jest ważna, ponieważ główną zaletą VMM jest możliwość uruchamiania starszych aplikacji. Wydajność określa wielkość narzutu na wirtualizację — programy na maszynie wirtualnej muszą być wykonywane z taką samą szybkością, jak na maszynie rzeczywistej. Prostota jest konieczna, ponieważ awaria VMM spowoduje awarię wszystkich maszyn wirtualnych działających na komputerze. W szczególności niezawodna izolacja wymaga, aby VMM był wolny od błędów, które atakujący mogą wykorzystać do zniszczenia systemu.

Zamiast przepisywania złożonego kodu systemu operacyjnego gościa, możesz wprowadzić pewne zmiany w systemie operacyjnym hosta, zmieniając niektóre z najbardziej „zakłócających” części jądra. Takie podejście nazywa się parawirtualizacją. Oczywiste jest, że w tym przypadku tylko autor może dostosować jądro systemu operacyjnego i np. Microsoft nie wykazuje chęci dostosowania popularnego jądra Windows 2000 do realiów konkretnych maszyn wirtualnych.

W przypadku parawirtualizacji programista VMM na nowo definiuje interfejs maszyny wirtualnej, zastępując podzbiór oryginalnego zestawu instrukcji, który nie nadaje się do wirtualizacji, wygodniejszymi i wydajniejszymi odpowiednikami. Należy pamiętać, że chociaż system operacyjny musi zostać przeniesiony, aby działał na takich maszynach wirtualnych, większość popularnych aplikacji może działać bez zmian.

Największą wadą parawirtualizacji jest niekompatybilność. Każdy system operacyjny, zaprojektowany do działania pod kontrolą parawirtualizowanego monitora VMM, musi być przeniesiony do tej architektury, dla której konieczne jest negocjowanie współpracy z dostawcami systemów operacyjnych. Ponadto nie można używać starszych systemów operacyjnych, a istniejących maszyn nie można łatwo zastąpić wirtualnymi.

Aby osiągnąć wysoką wydajność i kompatybilność w wirtualizacji x86, firma VMware opracowała nową metodę wirtualizacji, która łączy tradycyjne bezpośrednie wykonywanie z szybką translacją kodu binarnego w locie. W większości nowoczesnych systemów operacyjnych tryby działania procesora podczas wykonywania zwykłych programów użytkowych są łatwo zwirtualizowane i dlatego można je wirtualizować poprzez bezpośrednie wykonanie. Tryby uprzywilejowane nieodpowiednie do wirtualizacji mogą być wykonywane przez translator kodu binarnego, korygując „niewygodne” polecenia x86. Rezultatem jest wysoka wydajność maszyna wirtualna, który jest w pełni kompatybilny ze sprzętem i zachowuje pełną kompatybilność oprogramowania.

Przekonwertowany kod jest bardzo podobny do wyników parawirtualizacji. Zwykłe instrukcje są wykonywane bez zmian, podczas gdy instrukcje wymagające specjalnego przetwarzania (takie jak POPF i instrukcje odczytu rejestru segmentu kodu) są zastępowane przez translator sekwencjami instrukcji, które są podobne do tych wymaganych do wykonania na parawirtualizowanym maszyna wirtualna. Jest jednak ważna różnica: zamiast zmieniać źródło system operacyjny lub aplikacje, translator binarny zmienia kod, gdy jest wykonywany po raz pierwszy.

Chociaż z tłumaczeniem kodu binarnego wiążą się pewne dodatkowe koszty, są one znikome przy normalnych obciążeniach. Tłumacz przetwarza tylko część kodu, a szybkość wykonania programu staje się porównywalna z szybkością wykonania bezpośredniego - gdy tylko pamięć podręczna się zapełni.

Stosowanie środowiska oprogramowania aplikacyjnego upraszcza uruchamianie aplikacji napisanych dla jednego systemu operacyjnego na innym . Zasadniczo środowisko aplikacji powinno zawierać funkcje interfejsu żądania programu, a także sposoby organizowania bezkonfliktowego współistnienia w tym samym systemie operacyjnym kilku sposobów zarządzania zasobami komputera.

Środowisko aplikacji może być zaimplementowane jako zwykła aplikacja, a następnie działa na poziomie użytkownika.

Ryż. 2.8. Środowiska aplikacji, które tłumaczą wywołania systemowe

W innej implementacji wielu środowisk aplikacji system operacyjny ma wiele równorzędnych interfejsów programowania aplikacji. Na ryc. Przykład 2.9, system operacyjny obsługuje aplikacje napisane dla OS1, OS2 i OS3. W tym celu aplikacyjne interfejsy programistyczne wszystkich tych systemów operacyjnych są umieszczone bezpośrednio w przestrzeni jądra systemu: API OS1, API OS2 i API OS3.

Funkcje każdego interfejsu API są implementowane przez jądro, biorąc pod uwagę specyfikę odpowiedniego systemu operacyjnego, nawet jeśli mają podobny cel. Aby jądro mogło wybrać żądaną implementację wywołania systemowego, każdy proces musi przekazać do jądra zestaw cech identyfikujących.

Ryż. 2.9. Wdrażanie interoperacyjności w oparciu o wiele równorzędnych interfejsów API

wnioski

· Całe oprogramowanie systemów komputerowych dzieli się na aplikacyjne (do rozwiązywania problemów użytkownika) i systemowe (do obsługi sprzętu komputerowego).

Najprostsza struktura systemu operacyjnego polega na podzieleniu wszystkich komponentów systemu operacyjnego na moduły, które wykonują główne funkcje systemu operacyjnego (jądro) i moduły, które wykonują funkcje pomocnicze systemu operacyjnego. Moduły Auxiliary OS tworzone są albo w formie aplikacji (narzędzia i programy do przetwarzania systemu), albo w formie bibliotek procedur. Moduły pomocnicze są ładowane do pamięci RAM tylko na czas ich funkcji, to znaczy są przechodnie. Moduły jądra znajdują się w pamięć o dostępie swobodnym, to znaczy są rezydentami.

· W przypadku obsługi sprzętowej trybów o różnych poziomach uprawnień stabilność systemu operacyjnego można zwiększyć, wykonując funkcje jądra w trybie uprzywilejowanym, a dodatkowe moduły i aplikacje systemu operacyjnego w trybie użytkownika. Umożliwia to ochronę kodów i danych systemu operacyjnego i aplikacji przed nieautoryzowanym dostępem. System operacyjny może pełnić rolę arbitra w sporach dotyczących aplikacji o zasoby.

Każdy system operacyjny współdziała ze sprzętem komputera w celu rozwiązania jego problemów, a mianowicie: obsługa trybu uprzywilejowanego i translacji adresów, środki do przełączania procesów i ochrony obszarów pamięci, system przerwań i zegar systemowy. To sprawia, że ​​system operacyjny jest zależny, powiązany z określoną platformą sprzętową.



· Architektura mikrojądra jest alternatywą dla klasycznego sposobu budowania systemu operacyjnego, zgodnie z którą wszystkie główne funkcje systemu operacyjnego składające się na wielowarstwowe jądro są wykonywane w trybie uprzywilejowanym. W systemach operacyjnych z mikrojądrem tylko bardzo mała część systemu operacyjnego pozostaje w trybie uprzywilejowanym. , nazywane mikrojądrem.Wszystkie inne funkcje jądra wysokiego poziomu są pakowane jako aplikacje trybu użytkownika.

· Środowisko oprogramowania aplikacji - zestaw narzędzi systemu operacyjnego zaprojektowanych do organizowania wykonywania aplikacji stworzonych dla jednego systemu operacyjnego w drugim. Każdy system operacyjny tworzy co najmniej jedno środowisko programowania aplikacji. Problem polega na zapewnieniu zgodności kilku środowisk oprogramowania w ramach tego samego systemu operacyjnego.

Alternatywa emulacji - wiele środowisk aplikacji, który zawiera zestaw funkcji API. Naśladują one wywołanie funkcji bibliotecznych środowiska aplikacji, ale w rzeczywistości nazywają swoje biblioteki wewnętrzne. Nazywa się to tłumaczenie biblioteki. To jest czysto oprogramowanie.

Aby program napisany pod jednym systemem operacyjnym działał w innym systemie operacyjnym, konieczne jest zapewnienie bezkonfliktowego współdziałania metod sterowania procesem w różnych systemach operacyjnych.

Sposoby wdrażania środowisk oprogramowania aplikacji

W zależności od architektury:

1. Środowisko oprogramowania aplikacyjnego w postaci aplikacji (górna warstwa rdzenia natywnego systemu operacyjnego).

Tryb pracy użytkownika, tłumaczenie wywołań systemowych (wywołań API) na natywne wywołania systemu operacyjnego. Odpowiada klasycznemu wielowarstwowemu systemowi operacyjnemu (Unix, Windows).

2. Obecność kilku środowisk aplikacji, które działają jednakowo. Każdy w postaci osobnej warstwy jądra.

Uprzywilejowany tryb pracy. Interfejs API wywołuje funkcje podstawowej (uprzywilejowanej) warstwy systemu operacyjnego. Zadanie rozpoznania i dostosowania połączenia spada na system. Wymaga dużej ilości surowców. Zestaw cech identyfikujących jest przekazywany do jądra w celu rozpoznania.

3. Zasada mikrojądrowa.

Każde środowisko aplikacji jest zaprojektowane jako oddzielny serwer trybu użytkownika. Aplikacje, korzystając z API, wykonują wywołania systemowe do odpowiedniego środowiska aplikacji za pośrednictwem mikrojądra. Środowisko aplikacji przetwarza żądanie i zwraca wynik przez mikrojądro. Może używać funkcji mikrojądra. Możliwy jest wielokrotny dostęp do innych zasobów (podczas działania mikrojądra).

Interfejsy systemu operacyjnego

Interfejs systemu operacyjnego- to Aplikacja systemowa programowanie. Regulowane normami (POSIX, ISO).

1. Interfejs użytkownika - jest realizowany przy użyciu specjalnych modułów oprogramowania, które tłumaczą żądania użytkownika w specjalnym języku poleceń na żądania kierowane do systemu operacyjnego.

Zestaw takich modułów nazywa się interpretator. Wykonuje leksykalne i parsowanie i albo wykonuje samo polecenie, albo przekazuje je do API.

2. API- ma na celu udostępnienie aplikacjom zasobów systemu operacyjnego i realizację innych funkcji. API opisuje zestaw funkcji, procedur, które należą do jądra i dodatków do systemu operacyjnego. Interfejs API wykorzystuje programy systemowe zarówno w systemie operacyjnym, jak i poza nim, korzystając z aplikacji za pośrednictwem środowiska programistycznego.

Sednem dostarczania zasobów systemu operacyjnego jest ostatecznie przerwanie oprogramowania. Ich realizacja w zależności od systemu (wektorowe, tabelaryczne). Istnieje kilka opcji implementacji API na poziomie systemu operacyjnego (najszybszy, najniższy), na poziomie programowanie systemu(bardziej abstrakcyjne, mniej szybkie) oraz na poziomie zewnętrznej biblioteki procedur i funkcji (mały zestaw).

Interfejsy systemu operacyjnego Linux:

oprogramowanie (bez pośredników - rzeczywista realizacja wywołań systemowych);

· wiersz poleceń(pośrednik - powłoka interpretera Shell, która przekierowuje wywołanie);

Graficzny (pośrednicy - Shell + powłoka graficzna).

System plików

System plików jest częścią systemu operacyjnego mającą na celu zapewnienie użytkownikom Przyjazny dla użytkownika interfejs praca z plikami i zapewnienie korzystania z plików zapisanych na nośnikach zewnętrznych (dysk twardy + RAM) przez kilku użytkowników i procesy.

Według składu FS:

całość wszystkich plików na dysku na wszystkich nośnikach,

zestawy struktur danych wykorzystywanych do zarządzania plikami, takich jak katalogi plików, deskryptory plików, tablice alokacji wolnej i zajętej przestrzeni dyskowej,

kompleks systemowych narzędzia programowe realizujące zarządzanie plikami, w szczególności: tworzenie, niszczenie, odczytywanie, zapisywanie, nazywanie, wyszukiwanie i inne operacje na plikach.

Jednym z atrybutów plików są nazwy plików, sposób identyfikacji pliku przez użytkownika. W systemach, w których dozwolonych jest wiele nazw, plikowi przypisywany jest i-węzeł używany przez jądro systemu operacyjnego. Nazwy w różnych systemach operacyjnych są różnie ustawiane.

Podobał Ci się artykuł? Podziel się z przyjaciółmi!
Czy ten artykuł był pomocny?
tak
Nie
Dziekuję za odpowiedź!
Coś poszło nie tak i Twój głos nie został policzony.
Dziękuję Ci. Twoja wiadomość została wysłana
Znalazłeś błąd w tekście?
Wybierz, kliknij Ctrl+Enter a my to naprawimy!