Ćwiczenie 2 3. Tryb chroniony

Wielkość: px
Rozpocząć pokaz od strony:

Download "Ćwiczenie 2 3. Tryb chroniony"

Transkrypt

1 Tryb chroniony Cel: Zapoznanie się z organizacją funkcjonowania systemu komputerowego w trybie chronionym procesora, a takŝe z zasadami programowania 32-bitowego. Zadanie: Napisać program, który będzie przełączać procesor w tryb chroniony, następnie wyświetlać na ekranie napis poprzez bezpośredni zapis do segmentu obejmującego pamięć obrazu i powracać do trybu rzeczywistego. W trybie chronionym program ma korzystać z 32-bitowych segmentów. 1. Tryb rzeczywisty a tryb chroniony Procesory 8086 i 8088 firmy Intel, od których to rozpoczęła się era dynamicznego rozwoju komputerów osobistych, zostały zaprojektowane i skonstruowane w ten sposób, iŝ realizacja podejmowanych przez nie operacji odbywała się w tzw. trybie adresowania rzeczywistego (ang. Real Address Mode), nazywanym równieŝ skrótowo trybem rzeczywistym (ang. Real Mode). Tryb ten zapewniał podstawowe mechanizmy komunikowania się z pamięcią operacyjną i układami wejścia-wyjścia, umoŝliwiając wykonywanie programu uŝytkownika pod kontrolą systemu operacyjnego. Niestety, nie przewidywał on Ŝadnej wspomaganej sprzętowo moŝliwości ochrony zasobów, nie dawał teŝ Ŝadnego sprzętowego wsparcia pozwalającego na równoczesne działanie wielu programów. Intensywny rozrost obszaru zastosowań komputerów osobistych oraz wykorzystanie ich potencjału w coraz to nowych dziedzinach wkrótce unaoczniły, jak powaŝny charakter miały oba te ograniczenia. Po pierwsze, moŝliwość wykonywania naraz tylko jednego programu okazała się zdecydowanie niewystarczająca. Wobec tego podjęto próby programowego ominięcia tego ograniczenia. I tak dla przykładu, w systemie operacyjnym MS-DOS, który funkcjonował w oparciu o tryb rzeczywisty, powstała koncepcja tzw. programów rezydentnych. Cechowały się one tym, iŝ zwykle po uruchomieniu przechodziły w stan uśpienia, ale w pewnych określonych warunkach ich wykonywanie mogło znów zostać podjęte, i to niezaleŝnie od tego, czy w tym czasie pracował juŝ inny uruchomiony program, czy nie. JednakŜe programy takie charakteryzowały się licznymi wadami wypływającymi z samej ich idei, wymagały nie tylko stosowania specyficznej konstrukcji spełniającej szereg dodatkowych ograniczeń, ale równieŝ napisania sporo dodatkowego kodu w celu zabezpieczenia przed załamaniem, co w efekcie sprawiało, Ŝe były one bardzo niewygodne do tworzenia. Po drugie, w rezultacie braku jakichkolwiek sprzętowych mechanizmów ochrony zasobów dowolny działający program miał dostęp do wszystkich tych zasobów, mógł więc sprawować całkowity nadzór nad systemem komputerowym, nawet jeśli nie posiadał do tego naleŝytych uprawnień. Wykorzystując zatem brak zabezpieczeń, mógł dla przykładu bez ograniczeń ingerować w dane systemu operacyjnego lub uśpionych programów rezydentnych, a w krańcowej sytuacji doprowadzić nawet do załamania się całego systemu. Rosnąca powszechność stosowania komputerów osobistych wymusiła wprowadzenie koniecznych zmian. Dzięki temu współczesne, nowoczesne systemy operacyjne charakteryzują się zarówno wielodostępnością, czyli umoŝliwiają pracę wielu uŝytkownikom Instytut Informatyki, PŁ str. 1

2 jednocześnie, jak i wielozadaniowością, a więc pozwalają na jednoczesne bezpieczne wykonywanie się wielu programów. Wymaga to jednak zastosowania odpowiedniego podejścia w zakresie zarządzania jednocześnie działającymi programami, jak i zapewnienia odpowiedniego poziomu ochrony zasobów, tak aby Ŝaden z programów nie mógł zakłócać pracy innego, czy nawet samego systemu operacyjnego, a takŝe by niemoŝliwe było doprowadzenie przezeń do załamania systemu. W efekcie wymusiło to wprowadzenie po pierwsze mechanizmów gwarantujących istnienie naleŝytej kontroli działania poszczególnych programów, a po drugie większego odseparowania wszystkich uruchomionych programów od siebie. Do zrealizowania tego celu konieczne okazało się zdefiniowanie nowego pojęcia zadania. Zadanie, zwane takŝe procesem, jest to odrębny program będący w trakcie wykonywania, który korzysta ze wspólnych z innymi działającymi programami zasobów systemu, lecz wykonywany jest od tych programów zupełnie niezaleŝnie, lub teŝ jego powiązania z tymi programami są ściśle kontrolowane. Układy sprzętowe wspomagające realizację wielozadaniowości oraz ochrony zasobów pojawiły się w następcy procesorów 8086 i 8088, a mianowicie w procesorze 80286, oznaczanym skrótowo symbolem 286. Procesor ten mógł działać w dwóch róŝnych trybach: znanym ze swoich poprzedników trybie adresowania rzeczywistego, oraz w drugim, nowym tzw. trybie adresowania wirtualnego z ochroną (ang. Protected Virtual Address Mode), zwanym takŝe w skrócie trybem chronionym (ang. Protected Mode). Pierwszy z nich był w pełni zgodny z pierwotnym trybem pracy procesorów 8086 i 8088, i stanowił jedynie jego niewielkie rozszerzenie. Zastosowanie zmodyfikowanej architektury wewnątrzprocesorowej oraz lepszych technologii wytwarzania sprawiło, iŝ jednostki 286 działały w nim jako szybsze wersje swoich poprzedników. Drugi z tych trybów stanowił jakościowo zupełnie inne rozwiązanie. Wprowadzał on sprzętowe mechanizmy ochrony zasobów, jak równieŝ sprzętowe wsparcie dla wielozadaniowości, a takŝe pamięć wirtualną opartą o segmentację. W następcy procesora 286, mianowicie procesorze 80386, oznaczanym skrótowo symbolem 386, dokonano w porównaniu z poprzednikiem wielu zmian, zarówno w zakresie architektury samej jednostki, jak i jej moŝliwości. Modyfikacje te objęły takŝe tryb chroniony, którego sprzętowe mechanizmy uległy dalszej znaczącej rozbudowie, a ponadto wzbogacone zostały jego moŝliwości w zakresie zarządzania pamięcią. Wprowadzono mechanizm stronicowania, o który oparte zostało działanie pamięci wirtualnej, jak i sprzęg z bardzo szybkimi układami pamięci podręcznej, montowanej poza procesorem. Procesor 386 został wyposaŝony w 32-bitowe rejestry oraz 32-bitowe magistrale stając się pierwszym przedstawicielem rodziny 32-bitowych procesorów firmy Intel. Rodzina ta, określana wspólną nazwą IA-32 (ang. Intel Architecture-32), obejmuje, obok owego procesora 386, takŝe późniejsze jednostki 486 oraz kolejne wersje procesorów Pentium. Zastosowana w nich architektura pozwala na programowanie 32-bitowe, a wiec operowanie 32-bitowymi danymi i 32-bitowymi przesunięciami. Od czasów procesora 386 modyfikacje w zakresie zasad funkcjonowania trybu chronionego jak i układów sprzętowych stanowiących jego podstawę, a takŝe w zakresie programowania 32-bitowego, w kolejnych procesorach z rodziny IA-32 są nieznaczne. 2. Budowa procesora Procesor 386 zawiera następujące rejestry dostępne dla programisty, pogrupowane na poniŝsze kategorie: 1. Rejestry uŝytkowe (ang. User Registers), które obejmują: 8 rejestrów ogólnego przeznaczenia (ang. General-Purpose Registers), 6 rejestrów segmentowych (ang. Segment Registers), Instytut Informatyki, PŁ str. 2

3 2 rejestry stanu (ang. Status Registers). 2. Rejestry systemowe (ang. System Registers), które obejmują: 3 rejestry sterujące (ang. Control Registers), 6 rejestrów uruchomieniowych (ang. Debug Registers), 2 rejestry testowe (ang. Test Registers), 4 rejestry trybu chronionego (ang. Protected Mode Registers). REJESTRY OGÓLNEGO PRZEZNACZENIA Procesor 386 posiada osiem 32-bitowych rejestrów ogólnego przeznaczenia. Są to rejestry: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. KaŜdy z nich ma wyodrębnioną młodszą 16-bitową część, do której moŝna się odwoływać, uŝywając nazwy odpowiedniego 16-bitowego rejestru występującego we wcześniejszych procesorach, np. rejestr EAX zawiera na swoich 16 najmłodszych bitach rejestr AX, EBX BX itd. Z kolei owa młodsza 16-bitowa część dzieli się dalej na dwa 8-bitowe rejestry, starszy i młodszy, które równieŝ posiadają swoje nazwy, np. w rejestrze AX są to odpowiednio AH i AL, w rejestrze BX BH i BL itd. Przeznaczenie poszczególnych rejestrów 32-bitowych jest zasadniczo takie same jak ich 16-bitowych odpowiedników z wcześniejszych procesorów. REJESTRY SEGMENTOWE Procesor 386 posiada sześć 16-bitowych rejestrów segmentowych. Pierwszy z nich, rejestr CS, słuŝy do wskazywania na aktualnie przetwarzany segment kodu. Rejestry DS, ES, FS i GS słuŝą do wskazywania na segmenty danych. Spośród nich rejestr DS stosowany jest przez większość instrukcji dostępu do danych jako rejestr domyślny, toteŝ uŝycie w konkretnym rozkazie innego wymaga jego jawnego określenia, tzw. prefiksowania. Odwoływanie się do pamięci przy wykorzystaniu innego rejestru segmentowego niŝ domyślny pociąga za sobą wydłuŝenie czasu obliczenia adresu, wobec tego rejestr DS powinien wskazywać na ten segment danych, do którego występuje najwięcej odwołań. Ostatni z rejestrów segmentowych, rejestr SS, słuŝy do wskazywania na segment stosu. REJESTRY STANU Do rejestrów stanu zaliczane są: wskaźnik instrukcji oraz rejestr znaczników. Wskaźnik instrukcji EIP jest rejestrem 32-bitowym, a jego młodsza 16-bitowa część to rejestr IP. Podobnie rejestr znaczników EFLAGS jest 32-bitowy, a na swoich najmłodszych 16 bitach zawiera rejestr FLAGS. REJESTRY STERUJĄCE Procesor 386 posiada trzy 32-bitowe rejestry sterujące, oznaczane jako CR0, CR2, CR3. SłuŜą one do sterowania trybem pracy procesora i trybem pracy bloku stronicowania. REJESTRY URUCHOMIENIOWE Procesor 386 posiada sześć 32-bitowych rejestrów uruchomieniowych, o symbolach DR0, DR1, DR2, DR3, DR6, DR7. Pozwalają one na sterowanie pułapkami sprzętowymi i pracą krokową, co umoŝliwia śledzenie wykonywania się programów w trybie chronionym. Tryb ten wymaga bowiem stosowania specjalnych debuggerów, a rejestry te stanowią sprzętowe wsparcie dla ich funkcjonowania, bez którego nie mogłyby one działać. REJESTRY TESTOWE Procesor 386 posiada dwa 32-bitowe rejestry testowe, oznaczane TR6 i TR7. UŜywa ich mechanizm sterujący funkcjonowaniem stronicowania, a takŝe wykorzystywane są w czasie autotestowania procesora. REJESTRY TRYBU CHRONIONEGO Procesor 386 posiada cztery rejestry trybu chronionego. Dwa z nich, GDTR i IDTR, są 32-bitowe, podczas gdy pozostałe dwa LDTR i TR 16-bitowe. Rejestry te pełnią zasadniczą rolę w funkcjonowaniu mechanizmów ochronnych trybu chronionego. Instytut Informatyki, PŁ str. 3

4 3. Organizacja pamięci operacyjnej Odwołując się do pamięci, procesor umieszcza na swoich wyprowadzeniach adresowych, połączonych z zewnętrzną szyną adresową, adres odpowiedniej komórki. Jest to tzw. adres fizyczny, jako Ŝe określa on faktyczne połoŝenie tej komórki w pamięci. Zewnętrzna szyna adresowa w procesorze 8086 zawierała 20 linii, dzięki czemu był on zdolny do zaadresowania 1 MB pamięci. Zewnętrzna szyna adresowa procesora 286 zawierała juŝ 24 linie, zaś procesora linie. Wynika zatem z tego, iŝ procesory 286 były w stanie zaadresować 16 MB pamięci, natomiast procesory 386 aŝ 4 GB. Niestety, w trybie rzeczywistym, ani w pierwszym, ani w drugim przypadku niemoŝliwe jest wykorzystanie całego tego potencjalnie dostępnego obszaru. W tym trybie bowiem mechanizm adresowania musi pozostać zgodny ze swoim odpowiednikiem z procesora 8086, a zatem ogranicza się jedynie do 1 MB pamięci. Z kolei tryb chroniony nie podlega juŝ takim ograniczeniom i cała dostępna pamięć moŝe być bez przeszkód wykorzystywana. Zastosowana w procesorze 8086 i wszystkich jego następcach organizacja pamięci logicznej nazywana jest segmentacją. Oznacza to, Ŝe dostęp do konkretnej komórki w pamięci odbywa się poprzez odwołanie do odpowiedniego segmentu, stanowiącego pewien wyodrębniony i skończony obszar pamięci, i podanie przesunięcia w tym segmencie, a więc odległości tejŝe komórki pamięci od początku segmentu. Tak wyspecyfikowany adres logiczny zostaje następnie przetłumaczony przez procesor w procesie zwanym translacją na adres fizyczny. W trybie rzeczywistym segment charakteryzowany jest przez dwie wielkości: adres swojego początku oraz swój rozmiar, czyli długość. Jeśli chodzi o pierwszą z tych cech, musi ona spełniać jedną podstawową regułę, a mianowicie początek segmentu nie moŝe znajdować się w dowolnym miejscu pamięci, lecz musi leŝeć na granicy tzw. paragrafu, którego odpowiadający mu 16-bitowy numer paragrafu jest zapamiętywany w rejestrze segmentowym. Z kolei długość segmentu, a więc druga cecha go opisująca, moŝe stanowić wartość nie przekraczającą Wynika z tego, Ŝe maksymalne przemieszczenie w obrębie segmentu o największym dostępnym rozmiarze równieŝ moŝe zostać zapisane jako liczba 16-bitowa. Adres fizyczny uzyskuje się mnoŝąc numer paragrafu znajdujący się w rejestrze segmentowym przez 16 (efektywnie: przesuwając go o 4 miejsca w lewo) i dodając do otrzymanego iloczynu przesunięcie. NaleŜy przy tym podkreślić, Ŝe tryb rzeczywisty nie zapewnia Ŝadnej ochrony pamięci, toteŝ nie przeprowadza się jakiejkolwiek kontroli uzyskanej w wyniku translacji wartości. Jeśli długość segmentu jest krótsza niŝ podane przesunięcie, adres fizyczny, mimo Ŝe w istocie leŝący juŝ poza danym segmentem, zostanie zgodnie z powyŝszą procedurą wyznaczony, a dostęp do pamięci zrealizowany. W trybie chronionym równieŝ obowiązuje segmentacja, toteŝ aby odwołać się do określonej komórki w pamięci, trzeba znać, analogicznie jak w trybie rzeczywistym, adres początku segmentu, w którym się ona mieści, oraz przemieszczenie w obrębie tegoŝ segmentu, pod którym faktycznie się ona znajduje. Wprowadzenie po raz pierwszy w procesorze 386 mechanizmu stronicowania sprawiło, Ŝe adres powstający w wyniku złoŝenia adresu segmentu i przemieszczenia niekoniecznie musi stanowić adres fizyczny. Wobec tego, dla odróŝnienia, został on nazwany adresem liniowym. Z kolei adres fizyczny moŝe zostać wyznaczony dopiero po określeniu owego adresu liniowego. Ten etap translacji dokonywany jest przez specjalne mechanizmy sprzętowe odpowiedzialne za realizację stronicowania. W przypadku jednak, gdy mechanizm stronicowania jest wyłączony, adres fizyczny jest taki sam jak liniowy i Ŝadna dodatkowa konwersja nie zachodzi. NaleŜy przy tym zaznaczyć, Ŝe w procesorze 386, jako Ŝe dysponuje on 32 liniami adresowymi, oba adresy liniowy i fizyczny są 32-bitowe. Instytut Informatyki, PŁ str. 4

5 4. Mechanizmy ochrony zasobów w systemach wielozadaniowych W systemach wielozadaniowych w celu ochrony zasobów powszechnie wykorzystywane są dwa podstawowe mechanizmy: separacja zadań, poziomy uprzywilejowania. SEPARACJA ZADAŃ Zanim jakikolwiek program zacznie się wykonywać, musi najpierw zostać umieszczony w pamięci. Zasadniczą kwestią staje się zatem separacja przydzielonych obszarów pamięci poszczególnym zadaniom tak, aby nie mogły one nawzajem zakłócać swojej pracy. Separacja taka jest łatwa do zrealizowania za pomocą tzw. koncepcji rejestru bazowego i granicznego. Rejestr bazowy zawiera najniŝszy adres obszaru pamięci dostępnego dla danego zadania, zaś rejestr graniczny adres najwyŝszy. Zadanie ma prawo odwoływać się jedynie do owego przydzielonego mu obszaru pamięci, a więc o adresach z przedziału pomiędzy wartościami umieszczonymi w obu tych rejestrach. W momencie, gdy wymagany jest dostęp do konkretnej komórki pamięci, jej adres podlega najpierw sprzętowej kontroli, polegającej na porównaniu go z wartościami z owych rejestrów. JeŜeli adres ten jest mniejszy od adresu znajdującego się w rejestrze bazowym bądź większy od tego z rejestru granicznego, dostęp nie jest realizowany, a w zamian zgłaszany jest wyjątek informujący o próbie niedozwolonego dostępu do pamięci. Pewną odmianą przy tej koncepcji jest sytuacja, w której w rejestrze granicznym przechowuje się nie tyle najwyŝszy adres dostępny dla zadania, ale maksymalne przesunięcie względem adresu najmniejszego przechowywanego w rejestrze bazowym. W przypadku korzystania z segmentacji koncepcję rejestru bazowego i granicznego stosuje się nie tyle do całych programów naraz, ale osobno do poszczególnych ich segmentów. KaŜdy segment znajdujący się w programie posiada więc adres swojego początku, czyli adres bazowy, a takŝe swój rozmiar, określany przez programistę, który stanowi podstawę do wyznaczenia granicy segmentu. Opisy wszystkich segmentów uŝywanych przez program trzymane są razem w specjalnej tablicy zwanej tablicą deskryptorów segmentów. POZIOMY UPRZYWILEJOWANIA Drugi mechanizm ochrony, stosowany równolegle obok separacji obszarów pamięci przydzielonych poszczególnym zadaniom, wiąŝe się z tym, iŝ wykonywanie niektórych operacji zarezerwowane jest wyłącznie dla systemu operacyjnego, zaś zwykłe programy uŝytkowników nie powinny mieć moŝliwości ich zrealizowania. Pociąga to za sobą konieczność rozróŝnienia przynajmniej dwóch oddzielnych trybów wykonywania rozkazów: trybu uprzywilejowanego, nazywanego takŝe trybem systemu, w którym pracuje jedynie system operacyjny, mający uprawnienia do wykonania dowolnej instrukcji, oraz trybu uŝytkownika, gdzie wykonanie pewnych instrukcji, zwanych instrukcjami uprzywilejowanymi, pozostaje niedostępne. Do instrukcji uprzywilejowanych naleŝą rozkazy zmieniające zawartość niektórych rejestrów procesora stanowiących podstawę mechanizmu ochrony, jak równieŝ zmieniające poziom ochrony bądź dokonujących pewnych operacji wejścia-wyjścia. Wykrycie przez procesor próby zrealizowania przez program uŝytkownika instrukcji uprzywilejowanej powoduje, analogicznie jak poprzednio, natychmiastowe zgłoszenie odpowiedniego wyjątku. 5. Deskryptory segmentów W przeciwieństwie do trybu rzeczywistego, gdzie segment charakteryzowany był jedynie poprzez adres swojego początku oraz swój rozmiar, który to jednak na etapie wykonywania programu nie był w ogóle brany pod uwagę, w trybie chronionym charakterystyka segmentu jest znacznie szersza i obejmuje, oprócz dwóch powyŝszych, szereg dodatkowych istotnych właściwości. Dopiero wszystkie te informacje wspólnie tworzą Instytut Informatyki, PŁ str. 5

6 kompletny opis segmentu. Opis ten przechowywany jest w specjalnej strukturze zwanej deskryptorem segmentu, która to struktura zawiera następujące dane: adres bazowy segmentu, rozmiar segmentu, atrybuty określające szereg istotnych cech segmentu, w tym między innymi prawa dostępu do segmentu, takie jak na przykład moŝliwość zapisu lub odczytu komórek pamięci w jego obrębie. RozróŜnia się następujące rodzaje deskryptorów segmentów: deskryptory segmentów pamięci, deskryptory systemowe. DESKRYPTORY SEGMENTÓW PAMIĘCI Deskryptory te opisują segmenty znajdujące się w programach uŝytkownika. WyróŜnione zostały dwa typy takich deskryptorów: 1. deskryptor segmentu danych, 2. deskryptor segmentu kodu. Segment stosu stanowi specyficzny segment danych, zatem deskryptor go opisujący naleŝy do kategorii deskryptorów segmentów danych. DESKRYPTORY SYSTEMOWE Deskryptory te mają szczególne zastosowanie z punktu widzenia systemu. WyróŜnione zostały ich następujące typy: 1. deskryptor segmentu zajmowanego przez lokalną tablicę deskryptorów, 2. deskryptor segmentu stanu zadania, 3. deskryptor furtki wywołania, 4. deskryptor furtki przerwania, 5. deskryptor furtki potrzasku, 6. deskryptor furtki zadania. Deskryptory te nie będą omawiane. Schemat deskryptora segmentu pamięci dla procesora 386 zawiera ryc Adres bazowy G D/B 0 AVL Wielkość P DPL S Typ A Adres bazowy Adres bazowy Wielkość Ryc. 1. Format deskryptora segmentu dla procesora 386. Znaczenie poszczególnych pól zawartych w deskryptorze segmentu jest następujące: ADRES BAZOWY (ANG. BASE ADDRESS) Adres bazowy segmentu stanowi 32-bitową wartość określającą adres początku segmentu. PoniewaŜ wartość ta zapisywana jest na 32 bitach, oznacza to, iŝ adres początku segmentu musi on być pamiętany inaczej niŝ w trybie rzeczywistym. I tak jest w istocie, jako Ŝe o ile w trybie rzeczywistym przechowywany był on w postaci 16-bitowego numeru paragrafu, od którego rozpoczynał się dany segment, o tyle tu, w trybie chronionym, przyjmuje formę pełnego 32-bitowego adresu liniowego. Niesie to dwie powaŝne konsekwencje. Po pierwsze, początek segmentu nie musi juŝ leŝeć dokładnie na granicy paragrafu, lecz moŝe znajdować się w dowolnym miejscu w pamięci. Po drugie zaś, wyznaczenie adresu fizycznego konkretnej komórki pamięci, do której nastąpiło odwołanie, odbywa się nieco inaczej. W przypadku procesora 386, o ile wyłączony został mechanizm stronicowania, dokonuje się tego jedynie poprzez dodanie Ŝądanego przemieszczenia do owego adresu bazowego pamiętanego w sposób bezpośredni, zatem juŝ bez wymnaŝania czegokolwiek przez 16. Zanim jednak do tego dojdzie, najpierw przeprowadzone zostaje sprawdzenie, Instytut Informatyki, PŁ str. 6

7 czy owe przemieszczenie nie wykracza poza dopuszczalną wielkość segmentu. JeŜeli okazałoby się, Ŝe tak wówczas realizacja dostępu nie nastąpi, natomiast procesor generuje wyjątek GP (ang. General Protection Fault ogólne naruszenie mechanizmu ochrony). ZAKRES (ANG. LIMIT) Zakres jest jednym z dwóch pól, które determinują rozmiar segmentu. Przechowuje on 20-bitową wartość określającą górną granicę wielkości przesunięcia w ramach segmentu. ZIARNISTOŚĆ (ANG. GRANULARITY) G Ziarnistość jest drugim z pól, które determinują rozmiar segmentu, pozwala ona bowiem na poprawną interpretację zapamiętanej jako zakres wielkości. Jej zadaniem jest przekazanie informacji, w jakich jednostkach wyraŝona jest ta wielkość. Wartość 0 oznacza, iŝ jednostką długości jest 1 bajt. Maksymalny rozmiar segmentu w takim przypadku wynosić moŝe 1 MB. Wartość 1 oznacza, iŝ jednostką długości są 4 KB. Maksymalny rozmiar segmentu jest wówczas równy 4 GB. Wyznaczenie rzeczywistego rozmiaru segmentu musi zatem odbywać się w oparciu zarówno o zakres, jak i o ziarnistość. Przykładowo, jeŝeli w polu zakres zapisana zostanie wartość 1023, rozmiar segmentu wynosi 1 KB, jeŝeli G=0, albo 4 MB, jeŝeli G=1. NaleŜy przy tym zauwaŝyć, Ŝe skoro pole zakres wyraŝa nie tyle rozmiar segmentu, ile górną granicę wielkości przesunięcia w jego obrębie, więc dla zakresu równego 0 i G=0 rozmiar segmentu wynosi nie 0, lecz 1 bajt (górna granica 0, ilość danych, jaką moŝna tam przechować 1 bajt, stąd maksymalne przesunięcie 0h i rozmiar segmentu 1 bajt), natomiast dla G=1 rozmiar ten wynosi 4096 bajtów (górna granica 0, ilość danych, jaką moŝna tam przechować 4 KB, stąd maksymalne przesunięcie 0FFFh i rozmiar segmentu 4096 bajtów). DŁUGOŚĆ SŁOWA (ANG. DEFAULT OPERATION SIZE) D/B Pole D/B określa, czy segment ma charakter 16-bitowy czy teŝ 32-bitowy. Wartość 0 oznacza segment 16-bitowy, a wartość 1 segment 32-bitowy. Przekłada się to bezpośrednio na interpretowanie przesunięć przy odwoływaniu się do tego segmentu: w pierwszym przypadku przesunięcia są wartościami 16-bitowymi, zaś w drugim 32-bitowymi. RODZAJ DESKRYPTORA (ANG. DESCRIPTOR TYPE) S Rodzaj deskryptora stwierdza, czy jest to deskryptor pamięci, czy systemowy. Wartość 0 oznacza segment systemowy, a wartość 1 segment pamięci. TYP (ANG. TYPE) W przypadku deskryptora segmentu pamięci, opisywany przezeń segment, jak zostało to juŝ wcześniej wspomniane, moŝe być albo segmentem kodu, albo segmentem danych. Pole typ słuŝy do wyznaczenia, który z powyŝszych wariantów zachodzi, jak i równieŝ do określenia pewnych praw związanych z dostępem do segmentu. Wartości tego pola przedstawione zostały w poniŝszej tabeli: Wartość Znaczenie 0 segment danych, tylko odczytywanie 1 segment danych, odczytywanie i zapisywanie 2 segment danych rozszerzalny w dół, tylko odczytywanie 3 segment danych rozszerzalny w dół, odczytywanie i zapisywanie 4 segment kodu, tylko wykonywanie 5 segment kodu, wykonywanie i odczytywanie 6 zgodny segment kodu, tylko wykonywanie 7 zgodny segment kodu, wykonywanie i odczytywanie Segmenty kodu przechowują instrukcje realizowane przez program, muszą zatem mieć nadane prawo pozwalające na ich wykonywanie. JeŜeli z segmentów tych mają być oprócz Instytut Informatyki, PŁ str. 7

8 tego odczytywane umieszczone tam dodatkowo dane, musi ponadto zostać nadane zezwolenie na odczyt. Nie ma jednak typu, który pozwalałby na przyznanie prawa zapisu do takich segmentów, a więc dane takie nie mogą być modyfikowane w trakcie pracy programu. Segmenty danych mogą być albo zwykłe, albo rozszerzalne w dół. RozróŜnienie to ma istotne znaczenie, gdy zachodzi konieczność powiększenia takiego segmentu. Przy zwykłym segmencie danych w takiej sytuacji wystarczy odpowiednio zwiększyć wartość pola zakres. Inaczej jednak sprawa wygląda w przypadku stosów programów, równieŝ będących segmentami danych, tyle Ŝe dosyć specyficznymi. OtóŜ dane umieszczane są w takim segmencie w miejscu wskazywanym przez wierzchołek stosu, a wartość tego wierzchołka po kaŝdym zapisie nowej danej ulega dekrementacji. MoŜna zatem powiedzieć, Ŝe stos rośnie w kierunku malejących adresów. Powiększając segment stosu naleŝałoby zatem nie tyle przydzielić mu dodatkową przestrzeń za jego końcem, ale raczej przed jego początkiem. Wymagałoby to jednak zmiany dwóch właściwości segmentu, mianowicie zakresu oraz adresu bazowego, a takŝe jednoczesnego zmodyfikowania wartości wierzchołka stosu. Aby tego uniknąć, wprowadzony został specjalny typ segmentu danych, jakim jest właśnie segment rozszerzalny w dół. Typ ten charakteryzuje się odwrotną interpretacją pola zakres. OtóŜ w zwykłym segmencie wartość tego pola oznacza górną granicę wielkości przesunięcia w ramach segmentu, natomiast w odniesieniu do segmentu rozszerzalnego w dół granicę dolną. W tym ostatnim przypadku wszystkie przemieszczenia mniejsze lub równe wyznaczonemu na podstawie tejŝe granicy przemieszczeniu traktowane są jako spoza segmentu, natomiast większe jako leŝące w jego obrębie. W tej sytuacji rozszerzenie takiego segmentu sprowadza się jedynie do zmniejszenia wartości pola zakres. Zgodne segmenty kodu wiąŝą się z poziomami ochrony i zostaną omówione w dalszej części. POZIOM OCHRONY (ANG. DESCRIPTOR PRIVILEGE LEVEL) DPL Poziom ochrony segmentu wiąŝe się z poziomami ochrony i zostanie omówiony w dalszej części. SEGMENT OBECNY (ANG. PRESENT) P Pole to wykorzystywane jest przez mechanizm pamięci wirtualnej i nie będzie omawiane. SEGMENT UśYTY (ANG. ACCESSED) A Pole to wykorzystywane przez mechanizm pamięci wirtualnej i nie będzie omawiane. POLE DOSTĘPNE DLA PROGRAMU (ANG. AVAILABLE TO SOFTWARE) AVL Pole to nie jest uŝywane przez procesor. Zostało utworzone z myślą o wykorzystaniu przez system operacyjny. W celu zobrazowania postaci konkretnego deskryptora, posłuŝyć się moŝna następującym przykładem: Descriptor DW 0F9Fh, 8000h, 920Bh, 0000h Deskryptor ten opisuje segment, który obejmuje swym obszarem całą pamięć obrazu w trybie 03h karty grafiki, a więc w trybie tekstowym o 80 kolumnach i 25 wierszach. Wyświetlany obraz zapisywany jest w tej pamięci w ten sposób, iŝ następującym po sobie pozycjom na ekranie, zaczynając od lewego górnego naroŝnika i przebiegając kolejno wzdłuŝ wszystkich wierszy, przyporządkowane są dwa bajty: pierwszy przechowuje kod ASCII wyświetlanego w danym miejscu znaku, a drugi jego atrybuty, takie jak kolor czcionki czy tła. Pamięć ta ma zatem charakter dwuwymiarowej tablicy, a jej rozmiar określić moŝna wymnaŝając 80 kolumn przez 25 wierszy i przez 2 bajty, co daje razem 4000 bajtów. Dodatkowo, początek tej pamięci umiejscowiony jest pod ściśle określonym adresem, a mianowicie rozpoczyna się ona od paragrafu o numerze 0B800h. Instytut Informatyki, PŁ str. 8

9 W przedstawionym powyŝej deskryptorze adres bazowy segmentu (zapisany na bitach i 56 63) po scaleniu do właściwej postaci 32-bitowej przyjmuje wartość 000B8000h, która to dokładnie odpowiada początkowi wspomnianego paragrafu. Ziarnistość ustawiona na 0 (bit 55 G=0) oznacza, Ŝe zakres wyraŝony jest w bajtach, natomiast sam zakres (bity 0 15 oraz 48 51) zapisany jako liczba 20-bitowa wynosi 00F9Fh. Po przeliczeniu daje to więc maksymalne przesunięcie w ramach segmentu wynoszące 0F9Fh i rozmiar segmentu równy dokładnie 4000 bajtów. Rozpisanie wartości 92h (bity 40 47) dostarcza informacji o tym, Ŝe segment jest obecny w pamięci (bit 47 P=1), ma najwyŝszy poziom ochrony (bity 45 i 46 DPL=0), stanowi segment pamięci (bit 44 S=1) oraz przechowuje dane, które moŝna zarówno odczytywać, jak i zapisywać (bity Typ=1). Wiadomo ponadto, iŝ segment ten jest 16-bitowy (bit 54 D/B=0). Pola A (bit 40) i AVL (bit 52) pozostają wyzerowane. 6. Rodzaje tablic deskryptorów Deskryptory segmentów przechowywane są razem w tzw. tablicy deskryptorów. Istnieją trzy rodzaje takich tablic: Globalna tablica deskryptorów (ang. Global Descriptor Table), oznaczana w skrócie GDT zawiera deskryptory segmentów, w których mieszczą się głównie dane i kod systemu operacyjnego, ale takŝe pewne ogólnie dostępne zasoby, jak na przykład pamięć obrazu. Lokalna tablica deskryptorów (ang. Local Descriptor Table), oznaczana w skrócie LDT zawiera deskryptory segmentów naleŝących do określonego zadania. KaŜdy z programów posiada zatem swoją własną lokalną tablicę deskryptorów, opisującą segmenty, z których się składa. Tablica deskryptorów przerwań (ang. Interrupt Descriptor Table), oznaczana w skrócie IDT zawiera deskryptory furtek przechowujących odwołania do tych wszystkich segmentów, gdzie umieszczone są procedury obsługi przerwań. Program uŝytkownika moŝe korzystać zarówno z segmentów opisanych w swojej LDT, jak i w GDT. 7. Selektory Komunikowanie się z pamięcią wymaga kaŝdorazowego wyspecyfikowania fizycznego adresu konkretnej jej komórki, do której ma być zrealizowany dostęp. Adres ten wyznaczany jest na podstawie adresu początku segmentu oraz przemieszczenia. O ile jednak w trybie rzeczywistym adres początku segmentu, w postaci numeru paragrafu, przechowywany jest w odpowiednim rejestrze segmentowym, o tyle w trybie chronionym wygląda to juŝ inaczej, jako Ŝe rejestr taki pełni w nim odmienną rolę. Zamiast numeru paragrafu znajduje się tam tzw. selektor segmentu. Selektor ten stanowi odwołanie do odpowiedniego deskryptora segmentu w wybranej tablicy deskryptorów, który to dopiero deskryptor zawiera wszystkie niezbędne informacje na temat lokalizacji tegoŝ segmentu. Schemat selektora segmentu zawiera ryc Numer deskryptora TI RPL 0 Ryc. 2. Format selektora segmentu. Znaczenie poszczególnych pól selektora segmentu jest następujące: NUMER DESKRYPTORA (ANG. INDEX) Numer deskryptora zawiera indeks deskryptora w wybranej tablicy, przy czym dozwolone jest odwoływanie się tylko do tablicy GDT albo LDT. W kaŝdej z nich deskryptory ponumerowane są zgodnie z kolejnością, w jakiej występują. Tablice te zawierać mogą Instytut Informatyki, PŁ str. 9

10 maksymalnie po 8192 deskryptory, które indeksowane są od 0 do Numer deskryptora odpowiada więc indeksowi tablicy, pod którym mieści się Ŝądany deskryptor. WYRÓśNIK TABLICY (ANG. TABLE INDICATOR) TI Pole TI mówi, w jakiej tablicy poszukiwać naleŝy Ŝądanego deskryptora: wartość 0 w tym miejscu oznacza, Ŝe deskryptor znajduje się w GDT, zaś wartość 1 wskazuje na LDT. POZIOM OCHRONY ZADANIA (KODU) śądającego DOSTĘPU (ANG. REQUESTOR S PRIVILEGE LEVEL) RPL Pole to wiąŝe się z poziomami ochrony, jednak jego wykorzystanie jest specyficzne i nie będzie omawiane. Przykładowo, selektor moŝe przyjmować następującą postać: Selector DW 08h PowyŜszy selektor odwołuje się do tablicy GDT (bit 2 TI=0), w której odpowiadający mu deskryptor znajduje się pod indeksem 1 (bity 3 15), czyli tak naprawdę jest drugim deskryptorem w tej tablicy, poniewaŝ pierwszy ma przyporządkowany indeks 0. Ponadto selektor ten dostarcza informacji, iŝ program Ŝądający dostępu do wskazywanego segmentu działa na najwyŝszym poziomie uprzywilejowania (bity 0 1 RPL=0). Selektor, w którym numer deskryptora jest równy 0 oraz TI=0, ma znaczenie specjalne. Jest to tzw. selektor zerowy. Powinien być on umieszczany w tych rejestrach segmentowych, których zawartość jest nieistotna, czyli które aktualnie nie odwołują się do Ŝadnego konkretnego deskryptora. Dokładnie rzecz ujmując, selektorowi temu odpowiada deskryptor znajdujący się w tablicy GDT pod indeksem 0, jednakŝe deskryptor ten nigdy nie jest uŝywany. Próba dostępu do pamięci przy uŝyciu rejestru segmentowego załadowanego takim selektorem spowoduje wygenerowanie przez procesor wspomnianego juŝ wcześniej wyjątku GP. Jedyny rejestr segmentowy, w którym selektor zerowy nie moŝe zostać umieszczony, to rejestr SS. Procesor nie zezwoli na taka operację, równieŝ zgłaszając wyjątek GP. Jakakolwiek odwołanie się do zawartości dowolnego segmentu, zanim zostanie zrealizowane, wymusza najpierw na sprzętowych mechanizmach ochrony przeprowadzenie kompletnej kontroli jego legalności, a więc sprawdzenie, czy na przykład mieści się ono w obrębie wskazanego segmentu, czy nie narusza praw dostępu do niego, choćby chcąc dokonać zapisu w segmencie przeznaczonym tylko do odczytu itp. Aby za kaŝdym razem nie trzeba było odczytywać deskryptora owego segmentu z pamięci, co niepotrzebnie wydłuŝałoby czas dostępu, procesor zaopatrzony został w specjalne rejestry deskryptorów stowarzyszone z odpowiednimi rejestrami segmentowymi. Załadowanie selektora do rejestru segmentowego powoduje automatyczne załadowanie wskazywanego przezeń deskryptora do właściwego rejestru deskryptora. Owe rejestry deskryptorów mają jednak ukryty charakter, a więc są niewidoczne i niedostępne dla programisty. Schemat powiązania rejestrów segmentowych i skojarzonych z nimi ukrytych rejestrów deskryptorów zawiera ryc. 3. Rejestry segmentowe (widoczne) Rejestry deskryptorów (ukryte) CS Adres bazowy Zakres Atrybuty DS Adres bazowy Zakres Atrybuty ES Adres bazowy Zakres Atrybuty FS Adres bazowy Zakres Atrybuty GS Adres bazowy Zakres Atrybuty SS Adres bazowy Zakres Atrybuty Ryc. 3. Powiązanie rejestrów segmentowych z odpowiadającymi im ukrytymi rejestrami deskryptorów. Zanim dany selektor zostanie faktycznie umieszczony w rejestrze segmentowym, wpierw poddawany jest on niezbędnym testom, których zadaniem jest wykrycie jakiejkolwiek próby naruszenia zasad ochrony. Warunków do spełnienia jest tu kilka. Przede wszystkim wartość selektora musi być wartością poprawną, ma więc wskazywać na rzeczywiście istniejący deskryptor segmentu, bądź stanowić selektor zerowy. Samo zadanie z kolei musi Instytut Informatyki, PŁ str. 10

11 znajdować się na odpowiednim poziomie uprzywilejowania, tak aby nie naruszyć poziomu ochrony tego segmentu, który to poziom zapisany jest w jego deskryptorze. Ponadto zawarte tamŝe atrybuty owego segmentu spełniać muszą pewne załoŝenia. Mianowicie dla rejestrów segmentowych danych (DS, CS, ES, FS i GS) segment musi mieć zezwolenie do odczytu. Dla rejestru segmentowego stosu (SS) musi mieć on zezwolenie zarówno do odczytu jak i do zapisu, przy czym moŝe, choć nie musi, być segmentem rozszerzalnym w dół. Dla rejestru segmentowego kodu (CS) musi mieć atrybut wykonywalności. Dopiero przejście całej tej procedury i stwierdzenie, Ŝe Ŝaden z tych warunków nie uległ naruszeniu, pozwala na wpisanie selektora do rejestru segmentowego i automatycznie powoduje takŝe umieszczenie odpowiadającego mu deskryptora w stowarzyszonym rejestrze ukrytym. Jakiekolwiek naruszenie zasad ochrony z kolei doprowadzi do wygenerowania przez procesor wyjątku GP. W razie potrzeby, by uchronić się przed zajściem tej ostatniej sytuacji, moŝna samodzielnie zweryfikować poprawność selektora i nadane mu prawa. SłuŜą do tego trzy instrukcje. Pierwsza z nich, instrukcja LAR, sprawdza poprawność podanego selektora i, jeŝeli jest prawidłowy, zwraca atrybuty wskazywanego przezeń segmentu. Druga, rozkaz VERW, kontroluje, czy selektor jest poprawny i czy odpowiadający mu segment ma prawo do zapisu, natomiast trzecia, VERR, na podobnej zasadzie weryfikuje, czy segment ma prawo do odczytu. Po umieszczeniu selektora w rejestrze segmentowym moŝna juŝ odwołać się do konkretnej komórki pamięci w danym segmencie. I tu równieŝ przed przeprowadzeniem kaŝdej tego typu operacji włączają się mechanizmy ochrony, które sprawdzają legalność podjętego działania, zaś w przypadku stwierdzenia nieprawidłowości spowodują wygenerowanie wyjątku GP. Pojawi się on na przykład przy próbie zapisu do segmentu, który nie ma nadanego prawa do zapisu, albo przy próbie odczytu bądź zapisu danych poza granicą segmentu. Tej ostatniej sytuacji moŝna zapobiec, uprzednio sprawdzając długość segmentu za pomocą rozkazu LSL. 8. Poziomy ochrony Zapewnienie bezpiecznego funkcjonowania systemu komputerowego wymaga, oprócz zastosowania odpowiedniej separacji zadań za pomocą ochrony zajmowanej przez nie pamięci, takŝe uniemoŝliwienia wykonywania pewnych newralgicznych z punktu widzenia owego bezpieczeństwa operacji przez programy do tego nieuprawnione. Pociąga to za sobą konieczność wyodrębnienia róŝnych poziomów uprzywilejowania, które determinować będą dostępność realizacji tego typu operacji. W trybie chronionym istnieją cztery takie poziomy. Trzy najbardziej uprzywilejowane z reguły przeznaczone są dla systemu operacyjnego, zaś dopiero na czwartym, najniŝszym, działają programy uŝytkownika. Ale takŝe w ramach poziomów przypisanych systemowi operacyjnemu obowiązuje ściśle określona hierarchia. Poziom najwyŝszy przeznaczony jest dla jądra systemu operacyjnego, poziomy drugi i trzeci wykorzystywane są zaś przez usługi systemowe, sterowniki urządzeń itp. Poziom trzeci moŝe równieŝ zostać udostępniony dla programów uŝytkowych wymagających szczególnej ochrony, takich jak na przykład systemy zarządzania bazami danych. Zastosowanie róŝnych poziomów uprzywilejowania wymaga, aby w kaŝdym programie wszystkie segmenty, bez względu na to, czy zawierają kod, dane, czy teŝ są segmentami stosu, miały określony właściwy sobie poziom ochrony. Informacja ta jest zapisywana w polu DPL deskryptora segmentu. NajwyŜszemu, czyli najbardziej uprzywilejowanemu poziomowi, odpowiada wartość 0 tego pola, zaś poziomowi najniŝszemu, a więc najmniej uprzywilejowanemu wartość 3. W systemie kaŝdy z programów wykonuje się na ściśle wyznaczonym poziomie ochrony. PoniewaŜ jednak naraz moŝe być uruchomionych wiele zadań, konieczne staje się zdefiniowanie tzw. bieŝącego poziomu ochrony. OtóŜ bieŝący poziom ochrony (ang. Current Instytut Informatyki, PŁ str. 11

12 Privilege Level), oznaczany w skrócie CPL, jest to ten poziom uprzywilejowania, jaki ma zadanie, któremu aktualnie przydzielony został czas procesora, a precyzyjniej aktualnie przetwarzany segment kodu tego zadania. CPL pamiętany jest na dwóch najmłodszych bitach rejestru CS, czyli w polu RPL znajdującego się tam selektora. Poziom ochrony zadania determinuje moŝliwości wykonania przez to zadanie instrukcji uprzywilejowanych, które niewłaściwie uŝyte mogą wszak zagrozić bezpiecznemu funkcjonowaniu systemu. NaleŜą do nich między innymi rozkazy modyfikujące pewne kluczowe struktury systemowe, na przykład tablice deskryptorów. Tylko zadania na najwyŝszym poziomie uprzywilejowania mają prawo wykonywać takie instrukcje. Poziom ochrony zadania wyznacza takŝe moŝliwości dostępu przez to zadanie do innych segmentów, tak kodu jak i danych. Oba te przypadki rządzą się jednak odmiennymi prawami. Przy dostępie do danych dopuszczalne jest odwołanie się do segmentu będącego na tym samym lub niŝszym poziomie ochrony w stosunku do CPL. Wynika to z przyjętej zasady, Ŝe nie moŝna zezwolić zadaniu działającemu na określonym poziomie uprzywilejowania na odczytywanie bądź modyfikowanie danych bardziej chronionych. JeŜeli stwierdzona zostanie próba naruszenia tej reguły, procesor wygeneruje wyjątek GP. Z drugiej strony, dostęp do danych będących na takim samym poziomie ochrony lub chronionych słabiej odbywać się moŝe bez przeszkód. Z kolei w przypadku, gdy dostęp ma mieć miejsce do innego segmentu kodu, co moŝe zostać zrealizowane poprzez wykonanie skoku do tego segmentu lub przez wywołanie procedury tam się znajdującej, operacja taka dozwolona jest wtedy, gdy poziom ochrony segmentu docelowego jest równy CPL. W przeciwnym razie nastąpi wygenerowanie wyjątku GP. Istnieje jednak odstępstwo od tej reguły. W określonych sytuacjach moŝliwa jest realizacja dostępu do segmentu kodu takŝe wówczas, kiedy segment ten ma wyŝszy niŝ CPL poziom ochrony. Ma to miejsce na przykład wtedy, gdy program wywołuje którąś z funkcji udostępnianych aplikacjom przez system operacyjny. A zatem, moŝna uznać, iŝ program ma prawo odwołać się do segmentu kodu znajdującego się na tym samym poziomie ochrony bądź jeśli spełnione są określone warunki na poziomie wyŝszym. Nie ma jednak prawa odwoływać się do segmentu znajdującego się na poziomie niŝszym. Uzasadnione jest to faktem, Ŝe realizacja zadania działającego na określonym poziomie uprzywilejowania nie moŝe opierać się na wykorzystaniu procedur niejako mniej godnych zaufania. Dostęp do segmentu kodu na wyŝszym poziomie ochrony jest moŝliwy tylko w dwóch sytuacjach. Pierwsza z nich zachodzi wówczas, gdy segment docelowy jest segmentem wykonywalnym o typie zgodnym. W przeciwieństwie do tych segmentów, które nie są oznaczone jako zgodne, segment zgodny umoŝliwia wejście doń nie tylko z segmentu o takim samym poziomie ochrony, ale takŝe o poziomie niŝszym. Tylko w przypadku próby dostępu z segmentu znajdującego się na wyŝszym poziomie uprzywilejowania nastąpi wówczas wygenerowanie wyjątku GP. Co więcej, przejście do owego segmentu o wyŝszym poziomie ochrony nie powoduje zmiany CPL. MoŜna więc powiedzieć, Ŝe segment zgodny ma taki sam bieŝący poziom ochrony, który miał podprogram wywołujący. Drugi przypadek natomiast wymaga zastosowania specjalnego mechanizmu, jakim jest skorzystanie z tzw. furtki wywołania, który to mechanizm jednak nie będzie omawiany. 9. Budowa tablic deskryptorów Jak zostało to juŝ wspomniane wcześniej, deskryptory segmentów trzymane są razem w specjalnych tablicach, zwanych tablicami deskryptorów. WyróŜnia się trzy rodzaje takich tablic: globalną tablicę deskryptorów (GDT), lokalną tablicę deskryptorów (LDT) oraz tablicę deskryptorów przerwań (IDT). O ile jednak w systemie istnieje tylko jedna tablica GDT i jedna tablica IDT, o tyle kaŝde zadanie dysponuje własną tablicą LDT. Instytut Informatyki, PŁ str. 12

13 PoniewaŜ wszystkie te tablice znajdują się w pamięci operacyjnej, siłą rzeczy muszą one równieŝ zostać umieszczone w pewnych segmentach, a te z kolei muszą posiadać odpowiednie opisy. W zaleŝności od rodzaju tablicy opisy te wyglądają nieco inaczej i przechowywane są w innych miejscach. TABLICA GDT Tablica GDT moŝe zawierać do 8192 deskryptorów. Jako Ŝe pojedynczy deskryptor zapisywany jest na 8 bajtach, oznacza to, Ŝe jej długość nie moŝe przekraczać 64 KB. Segment, w którym się ona znajduje, opisywany jest za pomocą tzw. pseudodeskryptora segmentu, tym róŝniącego się od pełnego deskryptora, Ŝe nie zawiera on Ŝadnych informacji na temat atrybutów, lecz jedynie 32-bitowy adres bazowy i 16-bitowy zakres, wyraŝający rozmiar tego segmentu w bajtach. Aby umoŝliwić efektywne odwoływanie się do tej tablicy, pseudodeskryptor ów trzymany jest w specjalnym rejestrze procesora GDTR (ang. Global Descriptor Table Register). Cechą charakterystyczną tablicy GDT jest to, Ŝe jej pierwszy deskryptor, znajdujący się pod indeksem 0, nie jest nigdy przez system uŝywany. TABLICA LDT Tablica LDT podlega takiemu samemu ograniczeniu jak tablica GDT: moŝe ona zawierać do 8192 deskryptorów, numerowanych od indeksu 0, a zatem jej rozmiar takŝe nie moŝe przekraczać 64 KB. Tablica ta umieszczana jest w odrębnym segmencie, który jednakowoŝ musi posiadać swój pełny deskryptor, do tego znajdujący się obowiązkowo w GDT. Deskryptor ten ma specjalne znaczenie, toteŝ naleŝy do grupy deskryptorów systemowych. Aby jednak przy kaŝdym odwołaniu do tablicy LDT nie zachodziła konieczność odczytywania go z pamięci w celu zlokalizowania tejŝe tablicy, procesor wyposaŝony został w specjalny rejestr LDTR (ang. Local Descriptor Table Register), funkcjonujący na podobnej zasadzie jak rejestry segmentowe, a więc posiadający stowarzyszony ukryty rejestr deskryptora. W samym rejestrze LDTR przechowany jest jedynie selektor, który wskazuje na ten deskryptor w tablicy GDT, który z kolei opisuje segment, gdzie znajduje się tablica LDT. Załadowanie rejestru LDTR tym selektorem powoduje automatyczne umieszczenie wskazywanego przezeń deskryptora w owym ukrytym rejestrze. KaŜde z zadań posiada swoją własną LDT, co oznacza, Ŝe w momencie przełączania zadania wartość rejestru LDTR musi ulec odpowiedniej zmianie. TABLICA IDT Tablica IDT, w przeciwieństwie do dwóch poprzednich, wykorzystywana jest przez procesor 386 zarówno w trybie chronionym, jak i rzeczywistym. W trybie rzeczywistym, wbrew nazwie, przechowuje ona nie deskryptory, lecz wektory, zawierające dalekie adresy procedur obsługi przerwań, stanowiąc tym samym tablicę wektorów przerwań. W tym przypadku tablica ta moŝe mieć maksymalny rozmiar równy 1 KB. W trybie chronionym umieszczone są w niej deskryptory furtek, zaś maksymalny rozmiar moŝe wynosić 2 KB. W obu trybach tablica ta znajduje się w osobnym segmencie, który moŝe być zlokalizowany w dowolnym miejscu pamięci. Segment ten, podobnie jak to miało miejsce przy tablicy GDT, opisywany jest za pomocą pseudodeskryptora, zawierającego 32-bitowy adres bazowy oraz 16-bitowy zakres wyraŝony w bajtach, aczkolwiek sens ma tylko umieszczenie tam wartości nie przekraczającej 11 bitów, jako Ŝe zgodnie z tym, co zostało powiedziane wyŝej tablica ta nie moŝe być dłuŝsza niŝ 2 KB. W przeciwieństwie jednak do tablicy GDT, jej pierwszy element, znajdujący się pod indeksem 0, moŝe stanowić normalnie uŝywany deskryptor. Analogicznie jak poprzednio, w celu przyspieszenia odwoływania się do tej tablicy, jej pseudodeskryptor przechowywany jest w specjalnym rejestrze procesora IDTR (ang. Interrupt Descriptor Table Register). Instytut Informatyki, PŁ str. 13

14 Aby zapewnić zgodność z procesorami 8086, w trybie rzeczywistym rejestr IDTR zawiera normalnie adres bazowy równy 0, zaś zakres przyjmuje wartość 3FFh. W tej sytuacji tablica wektorów przerwań mieści się na początku przestrzeni adresowej i ma długość 1 KB, czyli wygląda dokładnie tak, jak ma to miejsce w przypadku procesora 8086, który rejestru IDTR wszak nie posiada. Co prawda w procesorze 386 podczas pracy w trybie rzeczywistym dozwolone jest, poprzez odpowiednią modyfikację zawartości rejestru IDTR, przemieszenie tej tablicy w inne miejsce pamięci bądź zmienienie jej długości, lecz ze wspomnianego wyŝej względu się tego nie praktykuje. Pobieranie informacji na temat połoŝenia wszystkich trzech rodzajów tablic, jak i zmiana tego połoŝenia, moŝliwa jest przy uŝyciu specjalnych instrukcji, które jednakŝe w trybie chronionym naleŝą do instrukcji uprzywilejowanych, a zatem mogą być wykonane jedynie przez programy operujące na najwyŝszym poziomie uprzywilejowania. Do pobrania danych opisujących tablicę GDT, a więc jej adresu bazowego i długości, słuŝy rozkaz SGDT. Z kolei zmiana połoŝenia bądź rozmiaru tej tablicy musi zostać niezwłocznie zgłoszona procesorowi, czego dokonuje się za pomocą rozkazu LGTD. Obie instrukcje mają ten sam argument, a mianowicie wskaźnik na 6-bajtowy obszar pamięci, którego pierwsze dwa bajty zawierają długość tablicy, a pozostałe cztery jej adres bazowy, przy czym w pierwszym przypadku instrukcja umieszcza tam odpowiednie dane, zaś w drugim stamtąd pobiera. Analogicznie realizowane jest pobieranie bądź modyfikowanie informacji o połoŝeniu i wielkości tablicy IDT. SłuŜą do tego odpowiednio rozkazy SIDT i LIDT, o takim samym jak powyŝej argumencie. Ustalenie i zapisanie połoŝenia bieŝącej tablicy LDT odbywa się za pomocą instrukcji SLDT i LLDT. Argumentem obu z nich jest selektor odpowiedniego deskryptora znajdującego się w tablicy GDT. Wszystkie powyŝsze rozkazy mogą równieŝ zostać uŝyte w trybie rzeczywistym. Dzięki temu moŝliwe jest na przykład wcześniejsze uprzednie przygotowanie tablic GDT oraz IDT przed dokonaniem przełączenia do trybu chronionego. 10. Przejście do trybu chronionego Podanie sygnału na wejście RESET procesora 386 powoduje jego wyzerowanie i inicjalizację, która to wprowadza go w tryb adresowania rzeczywistego. W jej trakcie do rejestru IDTR załadowany zostaje pseudodeskryptor o adresie bazowym mającym wartość 0 oraz o zakresie równym 3FFh. Dzięki temu następuje takie ustalenie lokalizacji i rozmiaru tablicy wektorów przerwań, aby zachodziła pełna zgodność z procesorem Tablica wektorów przerwań mieści się zatem na początku pamięci operacyjnej i zawiera miejsce na 256 wektorów. MoŜna więc w pewnym sensie powiedzieć, Ŝe po inicjalizacji procesor 386 działa jako szybszy odpowiednik jednostki Po zakończeniu tego etapu następuje skok do programu znajdującego się w pamięci EPROM, który zawiera kod inicjalizacji systemu komputerowego. Program ten, po wykonaniu odpowiednich testów, przystępuje do wczytania z dysku systemu operacyjnego. Przejście do trybu chronionego wiąŝe się ze zmianą odpowiedniego bitu w jednym z rejestrów sterujących procesora. Aby przejść do trybu chronionego, naleŝy ustawić flagę PE (ang. Protected Mode Enable), czyli najmniej znaczący bit rejestru CR0. PoniewaŜ nie istnieje instrukcja procesora bezpośrednio zmieniająca wartość tego bitu, operację tę trzeba wykonać trzyetapowo: najpierw naleŝy pobrać zawartość całego rejestru CR0 do jakiegoś 32-bitowego rejestru ogólnego przeznaczenia (np. EAX) za pomocą rozkazu MOV, następnie ustawić ten bit uŝywając instrukcji OR i na koniec tę zmodyfikowaną wartość zapisać ponownie rozkazem MOV do rejestru CR0. Instytut Informatyki, PŁ str. 14

15 Zachowanie zgodności z procesorem 286 przy przechodzeniu między trybami rzeczywistym a chronionym i z powrotem pociągnęło za sobą pewne istotne konsekwencje. OtóŜ o ile procesor 386 pozwala w sposób programowy wrócić do trybu rzeczywistego, o tyle w jego poprzedniku włączenie trybu chronionego uniemoŝliwiało powrót do trybu rzeczywistego inaczej niŝ przez podanie procesorowi sygnału na wejście RESET. Ponadto, w procesorze 286 nie istniał 32-bitowy rejestr CR0 w zamian znajdował się tam 16-bitowy rejestr MSW (ang. Machine Status Word), w którym to umieszczona była flaga PE. Do operowania na rejestrze MSW uŝywało się rozkazu SMSW w celu pobrania jego zawartości do jakiegoś 16-bitowego rejestru ogólnego przeznaczenia, oraz LMSW do przepisania jej z owego 16-bitowego rejestru do rejestru MSW. A zatem, o ile moŝna było rozkazem LMSW wpisać do tego rejestru nową wartość z ustawionym bitem PE, by przejść z trybu rzeczywistego do chronionego, o tyle nie moŝna było tym rozkazem w trybie chronionym załadować wartości przywracającej tryb rzeczywisty. W procesorze 386 rejestr MSW został włączony do rejestru CR0 jako jego mniej znacząca połowa. Wobec tego tu równieŝ wolno korzystać z rozkazów SMSW i LMSW. JednakŜe wspomniana zgodność z procesorem 286 utrzymuje powyŝsze ograniczenie w mocy: za pomocą rozkazu LMSW moŝna wprowadzić do rejestru MSW wartość włączającą tryb chroniony, natomiast nie moŝna odtworzyć trybu rzeczywistego, mimo iŝ procesor 386 na to pozwala. W tej sytuacji w przypadku tego procesora zamiast korzystać z rozkazów SMSW i LMSW operujących na rejestrze MSW, naleŝy uŝyć rozkazów MOV do operowania na całym rejestrze CR0, co umoŝliwi zarówno ustawienie jak i skasowanie flagi PE. Zanim jednak ustawi się tę flagę wprowadzając tym samym procesor w tryb chroniony, naleŝy wcześniej, jeszcze w trybie rzeczywistym, odpowiednio zainicjować tablice GDT i IDT oraz załadować rejestry GDTR i IDTR. Dopiero potem moŝna zmienić wartość bitu PE. NaleŜy jednak zwrócić uwagę, Ŝe zmiana tej wartości i załadowanie rejestru IDTR są to dwie róŝne instrukcje, które nie mogą być wszakŝe wykonane jednocześnie. Oznacza to, iŝ po wpisaniu do rejestru IDTR pseudoeskryptora tablicy przerwań trybu chronionego system jeszcze przez chwilę pozostanie w trybie rzeczywistym. Pojawienie się w tym momencie przerwania spowoduje błąd, gdyŝ procesor nie będzie miał juŝ dostępu do tablicy wektorów przerwań trybu rzeczywistego, jako Ŝe jak zostało to wspomniane wcześniej do lokalizacji tej tablicy takŝe i w tym trybie wykorzystywany jest rejestr IDTR, teraz załadowany wszak wartościami przystosowanymi do trybu chronionego. Dlatego zmianę zawartości rejestru IDTR oraz przełączenie trybu naleŝy dokonywać obowiązkowo przy zablokowanych przerwaniach. Ten fragment kodu musi być ponadto napisany wyjątkowo starannie, aby nie doszło takŝe do wygenerowania Ŝadnego wyjątku. Samo ustawienie flagi PE nie oznacza jeszcze końca inicjalizacji trybu chronionego. W trybie tym bowiem rejestry segmentowe zawierają selektory odpowiednich segmentów, podczas gdy bezpośrednio po przełączeniu jest w nich nadal to, co znajdowało się tam w trybie rzeczywistym, czyli numery początkowych paragrafów tychŝe segmentów. Wobec tego w pierwszej kolejności po zmianie bitu PE naleŝy zaktualizować zawartości rejestrów segmentowych. W przypadku rejestru CS ma to takŝe dodatkowe znaczenie. OtóŜ procesor wykonując program wczytuje na zapas rozkazy i je wstępnie dekoduje umieszczając w specjalnej kolejce, a dopiero z tej kolejki pobiera do realizacji. Przed włączeniem trybu chronionego część instrukcji która tak naprawdę miała się wykonać juŝ w tym trybie została wczytana i zinterpretowana jeszcze w trybie rzeczywistym. Instrukcje te naleŝy więc wczytać ponownie i zdekodować zgodnie z nowym obowiązującym trybem, co ma szczególne znaczenie przy włączonym stronicowaniu, gdzie adresy liniowe i fizyczne nie muszą być zgodne. Wyczyszczenie kolejki rozkazów i załadowanie rejestru CS odpowiednim selektorem moŝna wykonać naraz za pomocą rozkazu dalekiego skoku do następnej instrukcji. Niestety, niektóre asemblery (np. Turbo Assembler) przy natrafieniu na tego typu Instytut Informatyki, PŁ str. 15

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1 Tryb chroniony cz. 1 Moduł zarządzania pamięcią w trybie chronionym (z ang. PM - Protected Mode) procesorów IA-32 udostępnia: - segmentację, - stronicowanie. Segmentacja mechanizm umożliwiający odizolowanie

Bardziej szczegółowo

Mikroinformatyka. Wielozadaniowość

Mikroinformatyka. Wielozadaniowość Mikroinformatyka Wielozadaniowość Zadanie Tryb chroniony przynajmniej jedno zadanie (task). Segment stanu zadania TSS (Task State Segment). Przestrzeń zadania (Execution Space). - segment kodu, - segment

Bardziej szczegółowo

Mikroinformatyka. Tryb wirtualny

Mikroinformatyka. Tryb wirtualny Mikroinformatyka Tryb wirtualny Tryb wirtualny z ochroną Wprowadzony w 80286. Rozbudowany w 80386. - 4 GB pamięci fizycznej, - 64 TB przestrzeni wirtualnej, - pamięć podzielona na segmenty o rozmiarze

Bardziej szczegółowo

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit. Architektura 8086 8086 posiada 4 rejestry ogólnego użytku AX, BX, CX, DX, 2 rejestry indeksowe SI, DI, 3 rejestry wskaźnikowe SP, BP, IP, 4 rejestry segmentowe CS, DS, SS i ES oraz rejestr flag FLAG AH

Bardziej szczegółowo

Mikroinformatyka. Mechanizmy ochrony pamięci

Mikroinformatyka. Mechanizmy ochrony pamięci Mikroinformatyka Mechanizmy ochrony pamięci Mechanizmy ochrony pamięci Ochrona na poziomie segmentów: - limit - typ segmentu - selektor zerowy - poziom uprzywilejowania Ochrona na poziomie stronicowania:

Bardziej szczegółowo

Sprzętowe wspomaganie pamięci wirtualnej

Sprzętowe wspomaganie pamięci wirtualnej Sprzętowe wspomaganie pamięci wirtualnej Stanisław Skonieczny 6 grudnia 2002 Spis treści 1 Intel 2 1.1 Tryby pracy procesora............................... 2 1.2 Adresowanie liniowe................................

Bardziej szczegółowo

Zarządzanie pamięcią w systemie operacyjnym

Zarządzanie pamięcią w systemie operacyjnym Zarządzanie pamięcią w systemie operacyjnym Cele: przydział zasobów pamięciowych wykonywanym programom, zapewnienie bezpieczeństwa wykonywanych procesów (ochrona pamięci), efektywne wykorzystanie dostępnej

Bardziej szczegółowo

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika Rejestry procesora Procesor podczas wykonywania instrukcji posługuje się w dużej części pamięcią RAM. Pobiera z niej kolejne instrukcje do wykonania i dane, jeżeli instrukcja operuje na jakiś zmiennych.

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 4: Architektura i zarządzanie pamięcią IA-32 Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Tryby pracy Rejestry

Bardziej szczegółowo

J. Ułasiewicz Komputerowe systemy sterowania 1. 1 Architektura PC Ogólna struktura systemu jednoprocesorowego

J. Ułasiewicz Komputerowe systemy sterowania 1. 1 Architektura PC Ogólna struktura systemu jednoprocesorowego J. Ułasiewicz Komputerowe systemy sterowania 1 1 Architektura PC 1.1. Ogólna struktura systemu jednoprocesorowego Już systemy jednoprocesorowe mogą być środowiskiem, w którym wykonywane jest wiele programów

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 5 Jednostka Centralna Zadania realizowane przez procesor Pobieranie rozkazów Interpretowanie rozkazów Pobieranie danych Przetwarzanie danych Zapisanie danych Główne zespoły

Bardziej szczegółowo

Schematy zarzadzania pamięcia

Schematy zarzadzania pamięcia Schematy zarzadzania pamięcia Segmentacja podział obszaru pamięci procesu na logiczne jednostki segmenty o dowolnej długości. Postać adresu logicznego: [nr segmentu, przesunięcie]. Zwykle przechowywana

Bardziej szczegółowo

Organizacja typowego mikroprocesora

Organizacja typowego mikroprocesora Organizacja typowego mikroprocesora 1 Architektura procesora 8086 2 Architektura współczesnego procesora 3 Schemat blokowy procesora AVR Mega o architekturze harwardzkiej Wszystkie mikroprocesory zawierają

Bardziej szczegółowo

Wybrane zagadnienia elektroniki współczesnej

Wybrane zagadnienia elektroniki współczesnej Wybrane zagadnienia elektroniki współczesnej y pracy, Marika Kuczyńska Fizyka Techniczna IV rok 20-03-2013, AGH prezentacji y pracy 1 2 y pracy 3 4 5 6 Jednostka wykonawcza, instrukcje (Marika) Rodzina

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 2. Pamięć rzeczywista 3. Pamięć wirtualna

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc Rok akademicki

Bardziej szczegółowo

Budowa systemów komputerowych

Budowa systemów komputerowych Budowa systemów komputerowych Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski k.patan@issi.uz.zgora.pl Współczesny system komputerowy System komputerowy składa

Bardziej szczegółowo

WOJSKOWA AKADEMIA TECHNICZNA

WOJSKOWA AKADEMIA TECHNICZNA WOJSKOWA AKADEMIA TECHNICZNA SYSTEMY WBUDOWANE Prowadzący: Paweł Janicki Autor sprawozdania: Pol Grzegorz Grupa szkoleniowa: I7X3S1 Numer ćwiczenia: Data oddania: 14.06.2009r. 1. Treść zadania Dokonać

Bardziej szczegółowo

architektura komputerów w. 8 Zarządzanie pamięcią

architektura komputerów w. 8 Zarządzanie pamięcią architektura komputerów w. 8 Zarządzanie pamięcią Zarządzanie pamięcią Jednostka centralna dysponuje zwykle duża mocą obliczeniową. Sprawne wykorzystanie możliwości jednostki przetwarzającej wymaga obecności

Bardziej szczegółowo

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 2 / 22

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 2 / 22 ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH struktury procesorów ASK SP.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 Maszyny wirtualne 2 3 Literatura c Dr inż. Ignacy

Bardziej szczegółowo

Procesory rodziny x86. Dariusz Chaberski

Procesory rodziny x86. Dariusz Chaberski Procesory rodziny x86 Dariusz Chaberski 8086 produkowany od 1978 magistrala adresowa - 20 bitów (1 MB) magistrala danych - 16 bitów wielkość instrukcji - od 1 do 6 bajtów częstotliwośc pracy od 5 MHz (IBM

Bardziej szczegółowo

organizacja procesora 8086

organizacja procesora 8086 Systemy komputerowe Procesor 8086 - tendencji w organizacji procesora organizacja procesora 8086 " # $ " % strali " & ' ' ' ( )" % *"towego + ", -" danych. Magistrala adresowa jest 20.bitowa, co pozwala

Bardziej szczegółowo

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski Układ sterowania, magistrale i organizacja pamięci Dariusz Chaberski Jednostka centralna szyna sygnałow sterowania sygnały sterujące układ sterowania sygnały stanu wewnętrzna szyna danych układ wykonawczy

Bardziej szczegółowo

ARCHITEKTURA PROCESORA,

ARCHITEKTURA PROCESORA, ARCHITEKTURA PROCESORA, poza blokami funkcjonalnymi, to przede wszystkim: a. formaty rozkazów, b. lista rozkazów, c. rejestry dostępne programowo, d. sposoby adresowania pamięci, e. sposoby współpracy

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 4 Tryby adresowania i formaty Tryby adresowania Natychmiastowy Bezpośredni Pośredni Rejestrowy Rejestrowy pośredni Z przesunięciem stosowy Argument natychmiastowy Op Rozkaz

Bardziej szczegółowo

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania Architektura Systemów Komputerowych Jednostka ALU Przestrzeń adresowa Tryby adresowania 1 Jednostka arytmetyczno- logiczna ALU ALU ang: Arythmetic Logic Unit Argument A Argument B A B Ci Bit przeniesienia

Bardziej szczegółowo

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania

Bardziej szczegółowo

Mikroprocesor Operacje wejścia / wyjścia

Mikroprocesor Operacje wejścia / wyjścia Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych

Bardziej szczegółowo

Magistrala systemowa (System Bus)

Magistrala systemowa (System Bus) Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki systemowa (System Bus) Pamięć operacyjna ROM, RAM Jednostka centralna Układy we/wy In/Out Wstęp do Informatyki

Bardziej szczegółowo

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 007 Tryb rzeczywisty i chroniony procesora 2 SO i SK/WIN Wszystkie 32-bitowe procesory (386 i nowsze) mogą pracować w kilku trybach. Tryby pracy

Bardziej szczegółowo

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,

Bardziej szczegółowo

Adam Kotynia, Łukasz Kowalczyk

Adam Kotynia, Łukasz Kowalczyk Adam Kotynia, Łukasz Kowalczyk Dynamiczna alokacja pamięci Alokacja pamięci oraz dezalokacja pamięci jest to odpowiednio przydział i zwolnienie ciągłego obszaru pamięci. Po uruchomieniu, proces (program)

Bardziej szczegółowo

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ PRZYDZIAŁ PAMIĘCI OPERACYJNEJ dr inż. Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski k.patan@issi.uz.zgora.pl Wstęp Pamięć komputera wielka tablica słów (bajtów)

Bardziej szczegółowo

Materiały do wykładu. 7.Architekturax86. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

Materiały do wykładu. 7.Architekturax86. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski Materiały do wykładu 7.Architekturax86 Marcin Peczarski Instytut Informatyki Uniwersytet Warszawski 25maja2009 Narodziny 7.1 1978 Intel8086 architektura 16-bitowa 5 MHz, obudowa DIP40, 29000 tranzystorów

Bardziej szczegółowo

Logiczny model komputera i działanie procesora. Część 1.

Logiczny model komputera i działanie procesora. Część 1. Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe Programowanie niskopoziomowe ASSEMBLER Teodora Dimitrova-Grekow http://aragorn.pb.bialystok.pl/~teodora/ Program ogólny Rok akademicki 2011/12 Systemy liczbowe, budowa komputera, procesory X86, organizacja

Bardziej szczegółowo

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386 Budowa procesora 80386 Struktura wewnętrzna logiczna procesora 80386 Pierwszy prawdziwy procesor 32-bitowy. Zawiera wewnętrzne 32-bitowe rejestry (omówione zostaną w modułach następnych), pozwalające przetwarzać

Bardziej szczegółowo

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie

Bardziej szczegółowo

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4 Pamięć wirtualna Przygotował: Ryszard Kijaka Wykład 4 Wstęp główny podział to: PM- do pamięci masowych należą wszelkiego rodzaju pamięci na nośnikach magnetycznych, takie jak dyski twarde i elastyczne,

Bardziej szczegółowo

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania. Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania. Dlatego trzeba je zapisywać do pliku, a potem umieć je z tego

Bardziej szczegółowo

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej Struktura stanowiska laboratoryjnego Na rysunku 1.1 pokazano strukturę stanowiska laboratoryjnego Z80 z interfejsem częstościomierza- czasomierz PFL 21/22. Rys.1.1. Struktura stanowiska. Interfejs częstościomierza

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 8: Procedury Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Linkowanie z bibliotekami zewnętrznymi Operacje na stosie

Bardziej szczegółowo

Tryb rzeczywisty to tryb pracy mikroprocesorów z rodziny procesorów x86, w którym procesor pracuje tak jak procesor Intel 8086.

Tryb rzeczywisty to tryb pracy mikroprocesorów z rodziny procesorów x86, w którym procesor pracuje tak jak procesor Intel 8086. T: Tryb rzeczywisty i chroniony procesora. Tryb rzeczywisty to tryb pracy mikroprocesorów z rodziny procesorów x86, w którym procesor pracuje tak jak procesor Intel 8086. W trybie tym brak ochrony pamięci

Bardziej szczegółowo

Projekt ZSWS. Instrukcja uŝytkowania narzędzia SAP Business Explorer Analyzer. 1 Uruchamianie programu i raportu. Tytuł: Strona: 1 z 31

Projekt ZSWS. Instrukcja uŝytkowania narzędzia SAP Business Explorer Analyzer. 1 Uruchamianie programu i raportu. Tytuł: Strona: 1 z 31 Strona: 1 z 31 Explorer Analyzer 1 Uruchamianie programu i raportu PoniŜsze czynności uruchamiają program Bex Analyzer oraz wybrany raport z hurtowni danych. 1. uruchom z menu Start>Programy>Business Explorer>Analyzer

Bardziej szczegółowo

Instrukcja automatycznego tworzenia pozycji towarowych SAD na podstawie danych wczytywanych z plików zewnętrznych (XLS).

Instrukcja automatycznego tworzenia pozycji towarowych SAD na podstawie danych wczytywanych z plików zewnętrznych (XLS). Instrukcja automatycznego tworzenia pozycji towarowych SAD na podstawie danych wczytywanych z plików zewnętrznych (XLS). W programie FRAKTAL SAD++ istnieje moŝliwość automatycznego wczytywania danych z

Bardziej szczegółowo

5. Administracja kontami uŝytkowników

5. Administracja kontami uŝytkowników 5. Administracja kontami uŝytkowników Windows XP, w porównaniu do systemów Windows 9x, znacznie poprawia bezpieczeństwo oraz zwiększa moŝliwości konfiguracji uprawnień poszczególnych uŝytkowników. Natomiast

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 12 Wspomaganie systemu operacyjnego: pamięć wirtualna Partycjonowanie Pamięć jest dzielona, aby mogło korzystać z niej wiele procesów. Dla jednego procesu przydzielana jest

Bardziej szczegółowo

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych B.1. Dostęp do urządzeń komunikacyjnych Sterowniki urządzeń zewnętrznych widziane są przez procesor jako zestawy rejestrów

Bardziej szczegółowo

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Projektowanie urządzeń cyfrowych przy użyciu układów TTL polegało na opracowaniu algorytmu i odpowiednim doborze i zestawieniu układów realizujących różnorodne funkcje

Bardziej szczegółowo

Podstawowe informacje o obsłudze pliku z uprawnieniami licencja.txt

Podstawowe informacje o obsłudze pliku z uprawnieniami licencja.txt Podstawowe informacje o obsłudze pliku z uprawnieniami licencja.txt W artykule znajdują się odpowiedzi na najczęściej zadawane pytania związane z plikiem licencja.txt : 1. Jak zapisać plik licencja.txt

Bardziej szczegółowo

Programowanie w asemblerze Środowiska 64-bitowe

Programowanie w asemblerze Środowiska 64-bitowe Programowanie w asemblerze Środowiska 64-bitowe 24 listopada 2015 Nieco historii najnowszej Intel wraz z HP rozpoczynaja pracę nad procesorem 64-bitowym z wykorzystaniem technologii VLIW. Powstaje procesor

Bardziej szczegółowo

Adresowanie. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu.

Adresowanie. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu. Wada: rozmiar argumentu ograniczony do rozmiaru pola adresowego Adresowanie bezpośrednie jest najbardziej podstawowym

Bardziej szczegółowo

Zarządzanie zasobami pamięci

Zarządzanie zasobami pamięci Zarządzanie zasobami pamięci System operacyjny wykonuje programy umieszczone w pamięci operacyjnej. W pamięci operacyjnej przechowywany jest obecnie wykonywany program (proces) oraz niezbędne dane. Jeżeli

Bardziej szczegółowo

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla administratora systemu Warszawa 2007

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla administratora systemu Warszawa 2007 GEO-SYSTEM Sp. z o.o. 02-732 Warszawa, ul. Podbipięty 34 m. 7, tel./fax 847-35-80, 853-31-15 http:\\www.geo-system.com.pl e-mail:geo-system@geo-system.com.pl GEO-RCiWN Rejestr Cen i Wartości Nieruchomości

Bardziej szczegółowo

Wersja dokumentacji1.01. TeleToken API

Wersja dokumentacji1.01. TeleToken API Wersja dokumentacji1.01 TeleToken API Spis treści STATUS ZWRACANY PRZEZ FUNKCJE...1 OGÓLNE ZASADY...1 INTERPRETACJA STATUSU...1 FUNKCJE BIBLIOTEKI...3 TVTTAPI_INITIALIZE...3 TVTTAPI_RANDOMIZE...3 TVTTAPI_RAND...3

Bardziej szczegółowo

wersja dokumentacji 1.00 Opis programu TeleTokenEdit

wersja dokumentacji 1.00 Opis programu TeleTokenEdit wersja dokumentacji 1.00 Opis programu TeleTokenEdit Spis treści INFORMACJE WSTĘPNE...1 ROZPOCZĘCIE PRACY Z PROGRAMEM...1 FORMATOWANIE TELETOKENU...2 PROGRAMOWANIE TELETOKENU...4 ZAKŁADKI W PROGRAMIE...5

Bardziej szczegółowo

Struktura i działanie jednostki centralnej

Struktura i działanie jednostki centralnej Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala

Bardziej szczegółowo

Spis treści. 1 Moduł RFID (APA) 3

Spis treści. 1 Moduł RFID (APA) 3 Spis treści 1 Moduł RFID (APA) 3 1.1 Konfigurowanie Modułu RFID..................... 3 1.1.1 Lista elementów Modułu RFID................. 3 1.1.2 Konfiguracja Modułu RFID (APA)............... 4 1.1.2.1

Bardziej szczegółowo

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz] Procesor ma architekturę akumulatorową. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset or Rx, Ry, A add Rx load A, [Rz] push Rx sub Rx, #3, A load Rx, [A] Procesor ma architekturę rejestrową

Bardziej szczegółowo

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling) Struktury systemów komputerowych Architektura systemu komputerowego Działanie systemu komputerowego Struktura we/wy Struktura pamięci Hierarchia pamięci Ochrona sprzętowa Architektura 2.1 2.2 Działanie

Bardziej szczegółowo

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną SOE Systemy Operacyjne Wykład 7 Zarządzanie pamięcią operacyjną dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Hierarchia pamięci czas dostępu Rejestry Pamięć podręczna koszt

Bardziej szczegółowo

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna Architektura komputerów. Literatura: 1. Piotr Metzger, Anatomia PC, wyd. IX, Helion 2004 2. Scott Mueller, Rozbudowa i naprawa PC, wyd. XVIII, Helion 2009 3. Tomasz Kowalski, Urządzenia techniki komputerowej,

Bardziej szczegółowo

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie: Wykład 3 3-1 Reprezentacja liczb całkowitych ze znakiem Do przedstawienia liczb całkowitych ze znakiem stosowane są następujące kody: - ZM (znak-moduł) - U1 (uzupełnienie do 1) - U2 (uzupełnienie do 2)

Bardziej szczegółowo

Podstawy obsługi aplikacji Generator Wniosków Płatniczych

Podstawy obsługi aplikacji Generator Wniosków Płatniczych Podstawy obsługi aplikacji Generator Wniosków Płatniczych 1. Instalacja programu Program naleŝy pobrać ze strony www.simik.gov.pl. Instalację naleŝy wykonań z konta posiadającego uprawnienia administratora

Bardziej szczegółowo

Od programu źródłowego do procesu

Od programu źródłowego do procesu Zarządzanie pamięcią Przed wykonaniem program musi być pobrany z dysku i załadowany do pamięci. Tam działa jako proces. Podczas wykonywania, proces pobiera rozkazy i dane z pamięci. Większość systemów

Bardziej szczegółowo

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu. Krótki artykuł opisujący trzy podstawowe konwencje wywoływania funkcji C++ (a jest ich więcej). Konwencje wywoływania funkcji nie są tematem, na który można się szeroko rozpisać, jednak należy znać i odróżniać

Bardziej szczegółowo

Architektura komputera typu PC z procesorem IA-32

Architektura komputera typu PC z procesorem IA-32 Jędrzej Ułasiewicz Komputerowe systemy sterowania 1 Architektura komputera typu PC z procesorem IA-32 1. Ogólna struktura systemu jednoprocesorowego...2 2. Ochrona pamięci...6 2.1. Segmentacja...7 2.2.

Bardziej szczegółowo

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną Dariusz Wawrzyniak Plan wykładu Pamięć jako zasób systemu komputerowego hierarchia pamięci przestrzeń owa Wsparcie dla zarządzania pamięcią na poziomie architektury komputera Podział i przydział pamięci

Bardziej szczegółowo

Zaawansowane Architektury Procesorów Część 1

Zaawansowane Architektury Procesorów Część 1 1. Rozwój architektury x86 Zaawansowane Architektury Procesorów Część 1 Intel 8086: Procesor w architekturze CISC. Posiadał tylko jeden tryb pracy tj. rzeczywisty, a więc wszystkie programy działały na

Bardziej szczegółowo

Mikroprocesory rodziny INTEL 80x86

Mikroprocesory rodziny INTEL 80x86 Mikroprocesory rodziny INTEL 80x86 Podstawowe wła ciwo ci procesora PENTIUM Rodzina procesorów INTEL 80x86 obejmuje mikroprocesory Intel 8086, 8088, 80286, 80386, 80486 oraz mikroprocesory PENTIUM. Wprowadzając

Bardziej szczegółowo

Ćwiczenie 3. Konwersja liczb binarnych

Ćwiczenie 3. Konwersja liczb binarnych 1 Laboratorium Architektury Komputerów Ćwiczenie 3 Konwersja liczb binarnych Komputery wykonują operacje przetwarzania danych na wartościach binarnych, podczas gdy współczesna cywilizacja posługuje się

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci,

Bardziej szczegółowo

Sprzęt i architektura komputerów

Sprzęt i architektura komputerów Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I

Bardziej szczegółowo

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci Zarządzanie pamięcią Przed wykonaniem program musi być pobrany z dysku i załadowany do pamięci. Tam działa jako proces. Podczas wykonywania, proces pobiera rozkazy i dane z pamięci. Większość systemów

Bardziej szczegółowo

Język FBD w systemie Concept

Język FBD w systemie Concept Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe

Bardziej szczegółowo

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku System plików 1. Pojęcie pliku 2. Typy i struktury plików 3. etody dostępu do plików 4. Katalogi 5. Budowa systemu plików Pojęcie pliku (ang( ang. file)! Plik jest abstrakcyjnym obrazem informacji gromadzonej

Bardziej szczegółowo

INSTRUKCJA INWENTARYZACJI

INSTRUKCJA INWENTARYZACJI INSTRUKCJA INWENTARYZACJI Inwentaryzacją nazywamy czynności zmierzające do sporządzenia szczegółowego spisu z natury stanów magazynowych towaru na określony dzień. Inwentaryzacja polega na ustaleniu za

Bardziej szczegółowo

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego (2) Definicja systemu operacyjnego (1) Miejsce,

Bardziej szczegółowo

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka PAMIĘCI Część 1 Przygotował: Ryszard Kijanka WSTĘP Pamięci półprzewodnikowe są jednym z kluczowych elementów systemów cyfrowych. Służą do przechowywania informacji w postaci cyfrowej. Liczba informacji,

Bardziej szczegółowo

Systemy operacyjne III

Systemy operacyjne III Systemy operacyjne III WYKŁAD Jan Kazimirski Pamięć wirtualna Stronicowanie Pamięć podzielona na niewielki bloki Bloki procesu to strony a bloki fizyczne to ramki System operacyjny przechowuje dla każdego

Bardziej szczegółowo

XV. Wskaźniki Odczytywanie adresu pamięci istniejących zmiennych Wskaźniki pierwsze spojrzenie.

XV. Wskaźniki Odczytywanie adresu pamięci istniejących zmiennych Wskaźniki pierwsze spojrzenie. XV. Wskaźniki 15.1. Odczytywanie adresu pamięci istniejących zmiennych Język C++ w bardzo łatwy sposób umoŝliwia nam pobieranie adresu pamięci wybranych zmiennych. Wskaźnik zajmuje zazwyczaj 4 bajty bez

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Procesor Intel 8086 model programisty. Arkadiusz Chrobot Procesor Intel 8086 model programisty Arkadiusz Chrobot 5 października 2008 Spis treści 1 Wstęp 2 2 Rejestry procesora 8086 2 3 Adresowanie pamięci 4 4 Ważne elementy języka Pascal 6 1 1 Wstęp Głównym

Bardziej szczegółowo

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego (2) Miejsce, rola i zadania systemu operacyjnego

Bardziej szczegółowo

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wprowadzenie Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego

Bardziej szczegółowo

Instrukcja programowania IRSC OPEN

Instrukcja programowania IRSC OPEN Instrukcja programowania IRSC OPEN Zennio IRSC OPEN (ZN1CL-IRSC) I. UWAGI WSTĘPNE Urządzenie IRSC OPEN umoŝliwia wykorzystanie w systemie KNX komend róŝnych pilotów zdalnego sterowania do obsługi urządzeń

Bardziej szczegółowo

Kodowanie informacji. Kody liczbowe

Kodowanie informacji. Kody liczbowe Wykład 2 2-1 Kodowanie informacji PoniewaŜ komputer jest urządzeniem zbudowanym z układów cyfrowych, informacja przetwarzana przez niego musi być reprezentowana przy pomocy dwóch stanów - wysokiego i niskiego,

Bardziej szczegółowo

Program do obsługi ubezpieczeń minifort

Program do obsługi ubezpieczeń minifort Program do obsługi ubezpieczeń minifort Dokumentacja uŝytkownika Administracja słowników - Agenci Kraków, grudzień 2008r. Redakcja wykazu Agentów ubezpieczeń majątkowych Dla prawidłowej pracy systemu naleŝy

Bardziej szczegółowo

Architektura komputerów. Asembler procesorów rodziny x86

Architektura komputerów. Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych

Bardziej szczegółowo

APLIKACJA COMMAND POSITIONING Z WYKORZYSTANIEM KOMUNIKACJI SIECIOWEJ Z PROTOKOŁEM USS W PRZETWORNICACH MDS/FDS 5000

APLIKACJA COMMAND POSITIONING Z WYKORZYSTANIEM KOMUNIKACJI SIECIOWEJ Z PROTOKOŁEM USS W PRZETWORNICACH MDS/FDS 5000 APLIKACJA COMMAND POSITIONING Z WYKORZYSTANIEM KOMUNIKACJI SIECIOWEJ Z PROTOKOŁEM USS W PRZETWORNICACH MDS/FDS 5000 1. Wstęp...3 2. Pierwsze uruchomienie....3 3. Wybór aplikacji i komunikacji...4 4. Sterowanie...6

Bardziej szczegółowo

2. Format danych i zaimplementowane funkcje MODBUS

2. Format danych i zaimplementowane funkcje MODBUS SIC184 Protokół MODBUS-RTU (v1.10) Spis treści 1. Informacje wstępne... 1 2. Format danych i zaimplementowane funkcje MODBUS... 1 3. Opis rejestrów i funkcji... 2 3.1 Odczyt stanu wejść/wyjść... 2 3.2

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Technologia informacyjna

Technologia informacyjna Technologia informacyjna Pracownia nr 9 (studia stacjonarne) - 05.12.2008 - Rok akademicki 2008/2009 2/16 Bazy danych - Plan zajęć Podstawowe pojęcia: baza danych, system zarządzania bazą danych tabela,

Bardziej szczegółowo

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86 Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86 Spis treści Wprowadzenie... 11 1. Architektura procesorów rodziny x86... 17 1.1. Model procesorów

Bardziej szczegółowo

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24 Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.

Bardziej szczegółowo

Spis treści. spis treści wygenerowany automatycznie

Spis treści. spis treści wygenerowany automatycznie Spis treści Rozdział 2.Wymagania edytorskie 2 2.1. Wymagania ogólne 2 2.2. Tytuły rozdziałów i podrozdziałów 2 2.3. Rysunki, tabele i wzory 3 2.3.1. Rysunki 3 2.3.2. Tabele 4 2.3.3. Wzory 4 2.4. Odsyłacze

Bardziej szczegółowo