Asembler x86/Zaawansowana architektura: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Doles (dyskusja | edycje)
Doles (dyskusja | edycje)
mNie podano opisu zmian
Linia 25:
[[Grafika:Deskryptory.PNG|640px]]
 
*<font color ="green">Base</font> - tutaj znajduje się adres liniowy pierwszego bajtu danego segmentu.
*<font color ="green">G </font>- (ang. Granularity flag) jeśli ta flaga jest ustawiona na 0 (wyczyszczona), wówczas wielkość semgnetu jest podawana w pojedyńczych bajtach, np 78 B albo 256 B. W przeciwnym wypadku rozmiar wyraża się w wielokrotności 4096 bajtów (4 KB).
*<font color ="green">Limit</font> - Przetrzymuje offset (przesunięcie) ostatniej komórki pamięci danego segmentu. Ta flaga ma związek z flagą G. Gdy G = 0 wówczas wielkość segmentu może wynosić od 1 bajta do 1 MB (czyli maksimum pamięci jaki mógł mieć procesor w trybie rzeczywistym) gdy G = 1 wówczas segment może mieć wielkość od 4 KB (rozmiar strony - o tym nieco później) aż do 4 GB.
*<font color ="green">S</font> - (ang. system flag) jeśli ta flaga jest wyzerowana dany segment jest tzw '''segmentem systemowym''', który przechowuje bardzo ważne struktury danych systemowych jak np położenie LDT. Jeśli S = 1 wówczas dany segment jest zwykłym segmentem kodu albo danych. Zwróc uwagę na nieco nietypowe ustawienie flag. Do tej pory jeśli dana flaga jest ustawiona na 1 wówczas spełnia swoją funkcję. W fladze S jest odwrotnie, tylko jeśli jest wyczyszczona zaczyna spełniać swoją rolę.
*<font color ="green">Type</font> - ta flaga determinuje typ segmentu. Może oznaczać, że dany segment (również deskryptor segmentu) jest albo Deskrytporem Segmentu Kodu (ang. Code Segment Descriptor - CSD) albo Deskrytporem Segmentu Danych (ang. Data Segment Descriptor - DSD) albo Deskrytporem Segmentu Stanu Zadania (ang. Task State Segment Descriptor - TSSD).
*<font color ="green">DPL</font> - (ang. Descriptor Privilege Level) służy do ograniczenia dostępu do danego segmentu. DPL reprezentuje '''minimalny''' stan uprzywilejowania CPU wymagany do użycia tego segmentu. Dla przykładu jeśli pole DPL danego segmentu ma wartość 0 wówczas jest adresowalne tylko dla programu z CPL rónym 0 ( czyli działającego w trybie jądra). Jeśli DPL wynosi 3 wówczas rejestr jest dostpęny dla każdej wartości CPL (zarówno w trybie użytkownika jak i jądra).
*<font color ="green">P </font>- (ang. Semgnet-Present Flag) jeśli ta flaga jest równa 0 to dany segment nie jest w ogóle w pamięci operacyjnej, czyli jest odłożony na dysku twardym w postaci pliky wymiany ( za ten mechanizm odpowiada pamięć wirtualna).
*<font color ="green">D</font> lub <font color ="green">B</font> - flaga nazywana D lub w zależności od tego czy dany segment jest segmentem kodu czy danych. Znaczenie tego pola zależy ściśle od kontekstu w jakim został użyty.
 
{{TODO|Tutaj muszę sprawdzić w manualach Intela co jest napisane o tym polu bo nie mam zielonego pojęcia co ono oznaczało.}}
*<font color ="green">AVL</font> - pole które może używać dany system operacyjny ale nie musi tego robić, przykładowo Linuks ignoruje te pole.
 
{{TODO|Tak samo jak z poprzednim}}
Linia 62:
 
*Flaga Użytkownika/Nadzorcy- (ang.User/Supervisor flag) zawiera uprawnienia dla strony lub całej Tablicy Stron. Również jest fragmentem sprzętowej ochrony mechanizmu stronicowania.
*FlagiPCDFlagi PCD i PWT - wykorzystywane są w celu kontroli przemieszczenia strony lub całej Tablicy Stron do pamięci cache.
*Flaga Rozmiaru Strony - (ang. Page Size Flag) dotyczy tylko Katalogu Stron. Jeśli jest ustawiona, to poszczególne wejścia z Katalogu Stron dotyczą ramek stron o rozmiarze 2 MB, w przeciwnym wypadku 4 MB.
*GlobalFlaga FlagGlobalna -(ang. Global Flag) dotyczy wyłącznie Tablicy Stron. Została ona wprowadzona w procesorach Petiun Pro przy mechanizmie pamięci cache.