mikroişlemcilerin farklı Çalışma modları (intel İşlemcilerinde korumalı mod)

60
Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod) 1 Mikroişlemciler ve Mikrobilgisayarlar

Upload: elisa

Post on 15-Jan-2016

49 views

Category:

Documents


0 download

DESCRIPTION

Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod). Intel İşlemcilerin Tarihsel Gelişimleri. İlk kişisel bilgisayarlar ve DOS işletim sistemi 8086’lar zamanında tasarlandığı için Intel sonraki modellerinde geriye doğru uyumu sürekli olarak korumuştur. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemcilerin Farklı Çalışma Modları

(Intel İşlemcilerinde Korumalı Mod)

1Mikroişlemciler ve Mikrobilgisayarlar

Page 2: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Intel İşlemcilerin Tarihsel Gelişimleri

Mikroişlemciler ve Mikrobilgisayarlar 2

Yıl Mikroişlemci Fiziksel Bellek Alanı Yazmaç Uzunluğu1974 8080 64K 8

1977 8085 64K 8

1978 8086 1 MB 16

1979 8088 1 MB 16

1980 8096 8K (İçsel) 16

1981 80186 1 MB 16

1981 80188 1 MB 16

1982 80286 16 MB 16

1985 80386 DX 4 GB 32

1987 80386 SL 32 MB 32

1988 80386SX 16 MB 32

1989 80486DX 4GB 32

1991 80486SX 4 GB 32

1994 Pentium 4 GB 32

Page 3: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 3

İlk kişisel bilgisayarlar ve DOS işletim sistemi 8086’lar zamanında tasarlandığı için Intel sonraki modellerinde geriye doğru uyumu sürekli olarak korumuştur.

Intel sonraki modellerinde geriye doğru uyumu koruyabilmek için işlemciyi çeşitli çalışma modlarına ayırmıştır.

32 bitlik bir Pentium işlemci istendiği taktirde gerçek modda (real mode) çalıştırılabilir. Bu durumda işlemci bir 8086 gibi çalışmış olacaktır.

Veya korumalı modda (protected mode) çalıştırılarak işlemcinin bütün özelliklerinin aktif hale gelmesi sağlanabilir.

İşlemcinin hangi modda kullanılacağı işletim sistemine bağlıdır.

Page 4: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

286,386,486 ve Pentium İşlemcilerin Çalışma Modları

Mikroişlemciler ve Mikrobilgisayarlar 4

3 ayrı çalışma modu sökonusudur.

Korumalı Mod (Protected Mode) Sanal x86 Mod

(286’larda mevcut değil)

Gerçek Mod(Real Mode)

Page 5: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 5

Gerçek modda işlemci küçük farklılıklar dışında 8086 gibi çalışır.

Korumalı mod, programlar arasında bellek ayrımının sağlandığı, 32 bit çok işlemli çalışmaların mümkün olduğu, sayfalama ve sanal bellek işlemlerinin gerçekleştirilebildiği işlemcinin en geniş çalışma modudur.

Sanal 86 modu, korumalı mod programları ile gerçek mod programları arasında görevlerarası geçiş yapılabilmesi amacıya tasarlanmıştır. Diğer bir deyişle sanal 86 mod, korumalı modun çeşitli özelliklerinin kullanılabildiği gerçek mod denilebilecek bir ara moddur. (80286’da mevcut değildir.

Page 6: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Genel Olarak Korumalı Mod(Overview of Protected Mode)

Mikroişlemciler ve Mikrobilgisayarlar 6

Çokişlemli(multiprocessing) işletim sistemlerinde birden fazla program aynı anda bellekte bulunur.

İşletim sistemi

Program1

Program2

Program3

……

..

Page 7: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 7

Eğer sistem üzerinde bir koruma mekanizması mevcut değilse, belleğin herhangi bir bölgesine erişebilir. Böyle bir durumda ise bir program, başka bir programın müdahalesi yüzünden bozulacaktır.

Örn: Aşağıda Prog1 isterse İşletim Sisteminin, Program2 veya 3’ün bellek alanına izinsiz olarak erişebilir.

İşletim sistemi

Program1

Program2

Program3

……

..

Örn: DOS işletim sisteminde durum bu şekildedir. Programcı yanlış bir bölgeye veri aktararak o anda bellekte bulunana başka bir programı bozabilir.

Page 8: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 8

Programların güvenliğini ve bütünlüğünü sağlamaya yönelik işlemcinin sağladığı tüm olanaklara koruma mekanizması denir.

Korumalı sistemlerde farklı programlar belirli önceliklerle güvenli bir biçimde aynı bellek alanı içerisinde çalışırlar.

Koruma mekanizması, etkin bir şekilde işlemci tarafından sağlanır.

Bu tür işlemcilerin bütün veri aktarma komutları, aktarma işleminin programın kendi bellek alanı içerisinde yapılıp yapılmadığını kontrol ederek çalışırlar. Örn:

MOV word ptr [SI], AX

Koruma mekanizması, yalnızca bir programın kendi sınırlarını aşarak başka bir bölgeye erişiminin engellenmesi işlemlerini içermez. Bunun dışında pek çok işlemi içermektedir.

Page 9: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Öncelik Derecelendirmesi (Privilege Level)

Mikroişlemciler ve Mikrobilgisayarlar 9

Korumalı modda her programın bir önceliği vardır. Genel olarak yüksek öncelikli programların düşük öncelikli programlara erişmesi serbest bırakılmıştır, ancak düşük öncelikli programların yüksek öncelikli programlara erişmesi yasaklanmıştır.

Intel işlemcilerinde toplam 4 öncelik derecesi vardır (0,1,2,3). 0 numaralı öncelik en yüksek önceliktir ve diğer önceliklere sahip alanlara erişebilir.

Sanal Bellek Kullanımı (Virtual Memory)Sanal bellek fiziksel belleğin yetmediği durumlarda programların belli kısımlarının diskte saklanarak yer değişmeli olarak çalışabilmesi durumudur.

Sayfalama (Paging)Sayfalama bellek kullanım oranını yükselten bir bellek yönetim tekniğidir.

Sanal bellek kullanımına destek vermektedir.

Intel işlemcilerde sayfalar 4K uzunluğundadır. Programlar sayfalara rastgele yerleştirilebilirler.

Page 10: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 10

8086 İşlemcisinin Kaydedicileri

Page 11: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 11

Genel Amaçlı Kaydediciler (AX,BX,CX,DX):

• Accumulator(AH,AL,AX):Matematiksel hesaplamalarda kullanılan temel saklayıcıdır.

• Base (BH,BL,BX) : Hafıza bölgelerini işaret eder.

• Count (CL,CH,CX) : Döngülerde sayaç olarak kullanılır.

• Data (DL,DH,DX) : Hesaplamalarda verilerin tutulduğu saklayıcıdır.

Segment Kaydedicileri (CS,SS,DS,ES): Segment saklayıcıları diğer saklayıcılarla beraber hafıza adresleri üretmede kullanılırlar.

• Code Segmet (CS): Komutların bulunduğu hafıza bölgesini gösterir. Bu saklayıcı program kodunun taban adresini belirler.

• Data Segment (DS): Verilerin bulunduğu hafıza bölgesini işaret eder. DS, bu bölgenin taban adresini belirtir.

• Stack Segment (SS) :Hafızadaki yığın bölgesini işaret eder.

• Extra Segment (ES,FS,GS) : Ek olarak kullanılan hafıza segmentleridir. 80386 ve sonraki işlemcilerde bulunur.

Page 12: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 12

Index Kaydedicileri:

• Source Index (SI) ve Destination Index (DI) : Bu iki kaydedici sırasıyla kaynak-hedef kaydedicileridir. Dizilerin başlangıç adreslerini gösterirler. Dizi ve benzeri data türleri üzerinde işlem yaparken kullanılırlar.

Gösterici Kaydedicileri:

• Stack Pointer (SP): Yığın olarak isimlendirilen özel bir hafıza bölesini işaret eder. LIFO prensibine göre çalışır.

• Base Pointer (BP): Yine yığın bölgesinin adreslenmesinde kullanılır.

• Intruction Pointer (IP): Bir sonra işlenecek olan komutun bellek adresine işaret eder.

Bayrak Kaydedicisi (Flag):

• Flag Register (Flag): Her işlemden sonra bu kaydedicinin içeriği değişir. CPU dallanma işlemlerinde bu kaydedicideki lojik değerleri kullanarak karar verir.

Page 13: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 13

386,486 ve Pentium İşlemcilerinin Kaydedicileri

Page 14: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 14

32 bit Intel kaydedicilerini 5 grup altında incelemek mümkündür:

Genel Amaçlı Kaydediciler (General Purpose Registers)

Segment Kaydedicileri (Segment Registers)

Koruma Kaydedicileri (Protection Registers)

Kontrol Kaydedicileri (Control Registers)

Debug ve Test Amaçlı Kaydediciler (Debug and Test Registers)

Page 15: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 15

Genel Amaçlı Kaydediciler (EAX,EBX,ECX,EDX,ESI,EDI,EBP, ESP): (General Purpose Registers)

Bu kaydediciler, 16 bit 8086 ve 80286 işlemcisiyle uyumu koruyabilmek için 4 parça halinde tasarlanmışlardır. E kelimesi Extended (Uzatılmış) anlamındadır. Her biri 32 bittir.

I)

Page 16: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 16

Segment Kaydedicileri (CS,SS,DS,ES,FS,GS): (Segment Registers)

Segment kaydedicilerinin işlevi gerçek mod ile sanal 86 modda aynıdır. Bu modlarda segment kaydedicileri fiziksel bellekte 64K’lık segment bölgesinin başlangıcını gösterirler.

Mikroişlemci segment kaydedicisindeki bilgiyi 16 ile çarpar ve bu değeri bir offset bilgisi ile toplayarak doğrusal bir adres elde eder.

II)

Page 17: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 17

Taban Adres LimitErişim Hakkı

Pentium işlemcilerde her segment kaydedicisinin bir de programcıya kapalı olan tampon kısmı vardır. Bu kısım betimleyici bilgilerinin tutulduğu tampon bir kaydedicidir. 8 byte uzunluğundadır.

Betimleyici otomatik olarak betimleyici tablosundan çekilerek ilgili tampon kaydedicisine yerleştirilir.

Page 18: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 18

Koruma Kaydedicileri: (Protection Registers)

Koruma ile ilgili olarak 4 temel kaydedici söz konusudur. Bunlar GDTR, IDTR, LDTR, ve TR’dir.

III)

Taban Adres(32 bit) Limit(16 bit)

GDTR

IDTR

GDTR

IDTR

Taban Adres LimitErişim Hakkı

Page 19: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 19

GDTR (Global Descriptor Table Register) (48 bit)

Global betimleyici tablosunun başlangıç adresini tutar.

IDTR (Interrupt Descriptor Table Register) (48 bit)

Kesme betimleyici tablosunun başlangıç adresini tutar. Korumalı modda kesme işlemleri kesme betimleyici tablo yoluyla yönlendirilmektedir.

LDTR (Local Descriptor Table Register) (16 bit)

Yerel betimleyici tablosunun başlangıç adresinin ve limit bilgisinin yazılı olduğu betimleyiciye ilişkin bir seçici (selector) belirtir. Gereken değer bu seçicinin gösterdiği yerden çekilir.

GDTR ve IDTR kaydedicileri 48 bit uzunluğundadır.

TR (Task Register)

O anda çalışmakta olan programa ilişkin görev durum segment betimleyicinin seçici bilgisini tutar. 16 bittir.

Page 20: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 20

Kontrol Kaydedicileri (Control Registers)IV)Konrtol yazmaçları korumalı moda geçiş, sayfalama, matematik işlemci, içsel tampon(cache) yönetimi gibi önemli işlemlerin düzenlenmesi amacıyla kullanılır.

32 bit uzunluğundadır.

386,486 işlemcilerinde CR0, CR1, CR2, CR3 bulunmaktadır.Pentiumlarda ise CR4 eklenmiştir.

Page 21: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 21

CR0 Kaydedicisi (32 bit)

Bu kaydedici, işlemcinin en önemli işlevlerinin düzenlenmesi amacıyla kullanılırı. (Örn: Sayfalamanın etkin olup olmaması, cache belleğin etkin olup olmaması, matematik işlemcinin emulasyonun olup olmaması gibi)

Korumalı moda geçiş PE bitinin 1 yapılmasıyla sağlanır. Fakat bu, tek başına yeterli olmayıp birtakım ön hazırlıkların da yapılması gerekmektedir.

PEMPEMTSETNEWPResv.AMNWCDPG ReservedReserved

Paging

Cache Disable

NoWrite

Alignment Mask

Write Protect

Numeric Exception

ExtensionType

Task Switch

Emulate Math Proc.

Monitor Coprocessor

Protected Enable

012345161718293031

Page 22: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 22

CR1 Kaydedicisi (32 bit)

Intel bu kaydediciyi ileri modellerinde kullanmak üzere ayırmıştır. Bu kaydediciden bir okuma yapıldığında 0 değeri elde edilir.

CR2 Kaydedicisi (32 bit)

Bir sayfalama hatası (page fault) oluştuğunda sayfalama hatasını oluşturan doğrusal adres bu kaydedici içerisinde tutulur. 286’larda tanımlı değildir.

031

Sayfa Hatasına Yol Açan Adres

Page 23: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 23

CR3 Kaydedicisi (32 bit)

031

Dizin Tablosunun Fiziksel Adresi

341112

Reserved ReservedPWTPCT

CR3 kaydedicisi Intel mimarisinde korumalı modda fiziksel adresi tutan tek kaydedicidir.

80286’larda CR3 kaydedicisi yoktur.

Page 24: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 24

CR4 Kaydedicisi (32 bit)

Pentium işlemcilerle birlikte tanımlanmıştır. Önceki işlemcilerde yoktur. Ancak Pentiumlardan sonra üretilen bazı 486’larda bu kaydedici bulunabilmektedir.

VMEPVITSDDEPSE0MCEReserved1 02345631

Virtual 86 Mode

Extension

Time Stamp Disable

Debug Extension

Page Size Extension

Machine Check Enable

Page 25: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 25

EFLAGS Kaydedicisi (32 bit)

Bayraklar, CPU’nun çalışmasını belirlediği gibi, çalışması sırasındaki durumları da yansıtır. 8086-80286 mikroişlemcilerinde bayrak saklayıcısı 16 bit olup, 80386 – Pentium serisi işlemcilerde 32 bittir (Extended Flags).

Page 26: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 26

• C(Carry) : Toplamadan sonraki eldeyi (Carry) ve çıkarmadan sonraki ödüncü (borrow) belirtmek için kullanılır.

• P (Parity) : Tek eşlik lojik “0” ; çift eşlik lojik “1” ile ifade edilir.

• A (Auxiliary Carry) : Yapılan aritmetiksel işlem sonucunda, 3. ve 4. bitler arasında olan carry ve borrow durumunu belirtmek için kullanılır.

• Z (Zero) : Aritmetik veya lojik işlemin sonucunun 0 olduğunu belirtir.

• S (Sign) : Toplama veya çıkarma işleminden sonra sonucun aritmetik işaretini belirtir.

O D I T S Z A P C015

Page 27: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 27

• T (Trap): Bu bayrak 1 ise, tüm devre hata takip (debugging)

durumuna girer.

• I (Interrupt) : INTR girişini kontrol eder. I=1 ise INTR aktif durumdadır. I=0 ise INTR pasif durumdadır. Bu durumda iken gelen kesmelere cevap verilmez.

• D (Direction) : String işlemleri yapılırken, DI ve SI saklayıcılarının arttırılması veya azaltılmasını düzenler. D=1 azaltılır, D=0 ise arttırılır.

• O (Overflow) : İşaretli sayıların toplanıp çıkarılmasından sonra taşma olup olmadığını bildirir.

O D I T S Z A P C015

Page 28: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 28

Debug ve Test Kaydedicileri (Debug and Test Registers)V)

386, 486 ve Pentium işlemcilerde 32 bit uzunluğunda 8 debug kaydedicisi vardır(DR0,DR1,……….,DR7)

Page 29: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 29

KORUMALI MOD (PROTECTED MODE)

Page 30: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 30

Gerçek mod çalışmasıması 8086 işlemcisi incelenirken söz edilmişti. Buna göre:

Segment kaydedicisindeki bilgi 16 ile çarpılmakta ve ardından çarpılan segment bilgisi bir offset değeri ile toplanmaktaydı.

Segment(64K)

0000

+

16-bit register

16-bit register

20-bit memory address

00000

FFFFFSegment saklayıcısının değerine 0h eklenir.

Intel 80x86 hafıza adresi üretimi 1M bellek alanı

Offset

Segmentaddress

OffsetAddr1

Addr1 + 0FFFF

Page 31: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 31

Segment adresleri segment registerlerinde (CS,DS,ES,SS); ofset adresleri ise pointer registerlerden birisinde tutulur. Örn:

3 4 8 A 0

4 2 1 4

8 A B 43

CS

IP +Instruction address

5 0 0 0 0

F F E 0

F F E 05

SS

SP +Stack address

1 2 3 4 0

0 0 2 2

2 3 6 21

DS

DI +Data address

8088/8086 tarafından yürütülecek bir sonraki komutun adresi, CS:IP ikilisi yardımıyla edle edilir.

8088/8086 tarafından hafızadaki verinin adresi, DS: DI (veya SI,BX) ikilisi yardımıyla edle edilir.

Page 32: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 32

Korumalı modda, fiziksel adres bir dizi dönüşüm sonucunda elde edilmektedir.

Bu modda, segment kaydedicilerinde bulunana bilgilere seçici (selector) denir. Diğer bir deyişle korumalı modda, segemet kavramının yerini selektor kavramı almaktadır.

Selektör doğrudan fiziksel bellekte bir yer göstermez, betimleyici tablo (descriptor table) denen bir bölgede index belirtir.

Gerçek segment değeri bu tablodan çekilmektedir.

Page 33: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 33

Bir selektör 3 parçadan oluşur.

Index TI RPL015

RPL (Requested Privilege Level) : Selektörün öncelik derecesini gösterir.

2

Selektörler, daha önce de bahsedildiği gibi betimleyici tablo denen bir tabloda bir index göstermektedir. Betimleyici tablolar kendi aralarında 3’e ayrılır: Global Betimleyici Tablo (Global Descriptor Table) Yerel Betimleyici Tablo (Local Descriptor Table) Kesme Betimleyici Tablo (Interrupt Descriptor Table)

TI (Table Indıcator) : Tablo göstericisidir.

TI=0 ise index global betimleyici tabloya ilişkindir.TI=1 ise index yerel betimleyici tabloya ilişkindir.

Index: Selektörün index bilgisini göstermektedir.213=8192 olup index bölgesi tablo içerisindeki 8192 betimleyiciden birini seçer.

13 bit

Page 34: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 34

Index TI RPL015

13 bit

2

0

1

2

3

8192

.

.

.

.

.

.

0

1

2

3

8192

.

.

.

.

.

.

TI=1 iseTI=0 ise

Yerel Betmleyici Tablo Global Betimleyici Tablo

GDTLDT

Page 35: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar

35

Örn: 211Ah biçiminde bir selektör bilgisi bulunmaktadır. Bu selektörü incelediğimizde

0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0015

RPLTIIndex = 423h = 1059

2 1 1 A

0

1

2

3

8192

.

.

.

.

.

.

GDT1059

Page 36: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 36

Korumalı modda, adres bilgileri 16 bit selektör ile offsetten oluşmaktadır. Selektör ve offsetten oluşan adrese sanal adres (virtual address) denir.

Sanal Adres (Virtual Address) [Selector : Offset]

Korumalı modun sayfalama özelliği etkin durumdaysa sanal adres önce doğrusal adrese, daha sonra ise fiziksel adrese çevrilir. Eğer sayfalama özelliği pasif ise, doğrusal ve fiziksel adresler aynıdırlar.

Sayfalama Aktif:

Sanal Adres Doğrusal Adres Fiziksel Adres

Sayfalama Pasif:

Sanal Adres Fiziksel AdresSanal Adres =

Page 37: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Betimleyici Tablolar ve Betimleyici Tablo Kaydecileri

Mikroişlemciler ve Mikrobilgisayarlar 37

0

1

2

3......

0

1

2

3......

Yerel Betmleyici Tablo Global Betimleyici Tablo

GDTLDT

0

1

2

3

.

.

.

.

.

.

Kesme Betimleyici Tablo

IDT

Betimleyici tablolar her biri 8 byte uzunluğunda olan betimleyicilerden oluşmaktadır. Selektör betimleyici tablo içerisinde bir betimleyiciyi gösterir.

Betimleyici tablo kaydedicileri daha önce koruyucu kaydediciler kısmında gösterildiği gibi, betimleyici tabloların bellekte nerede bulundukları ve ne kadar uzunlukta olduğunu gösterir.

A) B) C)

Page 38: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 38

Taban Adres(32 bit) Limit(16 bit)

GDTR

GDTR (48 bit)

Global Descriptor

Table

Tablo Uzunluğu

Tablonun uzunluğu limit kısmında bulunan sayının 1 fazlasıdır.

A)

Page 39: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 39

Örn: GDTR kaydedicisinin limit kısmı 0FFF ve taban kısmı 0001F000h’dır. Buna göre GDT tablosunun başlangıç adresi, bitiş adresi ve uzunluğu nedir? Bu tablo kaç adet betimleyici içermektedir?

Başlangıç adresi : 0001F000h dır.

Uzunluğu: 0FFF + 1 = 1000h 4096 byte

Bitiş adres: 0001F000 + 0FFF = 1FFFF

Bir betimleyicinin uzunluğu 8 byte olup, bu GDT içerisinde 4096/8 = 512 tane betimleyici saklanabilmektedir.

Global Descriptor

Table 4K

0001FFFF

0001F000

Page 40: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 40

Örn: GDTR kaydedicisinin limit kısmı 16 olduğuna göre GDT’in uzunluğu en fazla ne kadar olabilir? Böyle bir durumda tabloda kaç adet betimleyici olur?

Uzunluğu: FFFF + 1 = 10000h 65536 byte

Limit kısmında yazılabilecek en büyük değer FFFF olup,

Böyle bir durumda depolanabilecek betimleyici sayısı ise: 65536 / 8 = 8192’dir.

Dikkat edilirse bu selektör seçicisinde de 13 bitlik kısım (213 = 8192) bu kadarlık bir alanı adreslemek için kullanılmaktaydı.

Index TI RPL015 2

13 bit

SELECTOR

Page 41: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar

LDTR (16 bit)Bu kaydedici tablonun limit ve taban adreslerini içermez. Yerel betimleyici tablonun limit ve taban adreslerini global betimleyici tablonun içerisinde bir bir betimleyici şeklinde bulunur. Bu yüzden LTDR kendi başına bir selektör görevindedir.

Index TI RPL015

13 bit

2

0

1

2

3

.

.

.

.

.

.

GDT LDT0

1

2

3

.

.

.

.

.

.

Taban

Tablo Uzunluğu

B)

41

Page 42: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 42

Örn: LDTR kaydedicisinin içindeki değer 1F2Ah olsun. LDT tablosunun taban adresi ve uzunluğu GDT hangi betimleyicisinden çekilmektedir?

0 0 0 1 1 1 1 1 0 0 1 0 1 0 1 0015

RPLTIIndex = 3E5h = 997

1 F 2 A

0

1

2

3

.

.

.

.

.

.

GDT997

Page 43: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 43

IDTR (48 bit)C) Bu kaydedici kesme betimleyici tablonun başlangıç adresini ve uzunluğunu tutar. Kesme betimleyici tablo korumalı modun kesme vektörü gibi düşünülebilir.

Taban Adres(32 bit) Limit(16 bit)

IDTR

Interrupt Descriptor

Table

Tablo Uzunluğu

Page 44: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 44

Örn: IDTR kaydedicisinin limit kısmı en fazla ne uzunlukta olabilir ve bu tabloda en fazla kaç betimleyici olması mümkündür?

Tablonun en büyük uzunluğu FFFFh +1 = 10000h 65536 byte olup x86 ailesinde toplam kesme sayısı 256 olduğu için 256 x 8 = 2048 byte uzunlukta olması yeterlidir.

Örn: IDTR kaydedicisinin limit kısmı 03FFh ve taban kısmı 00001000h ise tablo uzunluğu nedir ve tablo içerisinde kaç adet betimleyici bulunmaktadır?

Başlangıç adresi : 00001000h dır.

Uzunluğu: 03FF + 1 = 400h 1024 byte

Bitiş adres: 00001000 + 03FF = 13FF

Bir betimleyicinin uzunluğu 8 byte olup, bu IDT içerisinde 1024/8 = 128 tane betimleyici saklanabilmektedir.

Page 45: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Betimleyiciler (Descriptors)

Mikroişlemciler ve Mikrobilgisayarlar 45

Betimleyicilerin türleri ne olursa olsun hepsi 8 byte uzunluğundadır. Betimleyiciler 2’ye ayrılırlar:

Betimleyiciler

Sisteme İlişkin Olmayan

Betimleyiciler

Sisteme İlişkin Betimleyiciler

Page 46: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Segment Betimleyicisi

Mikroişlemciler ve Mikrobilgisayarlar 46

031

3263

Segment Limit (15-0)Segment Base (15-0)

Base(23-16)

ATYPESP DPLLimit

(19-16)AVLODG

Base(31-24)

Segment betimleyicileri koruma mekanizması için gerekli olan segment bilgilerini tutarlar.

Bu yapı sayesinde 8086 işlemcileriyle olan uyumluluk korunmuştur. Bu yöntemle, 8086 işlemcisindeki segment yazmaçları atılmamış işlevleri değiştirilerek kullanılmıştır. Böyle bir yapı, işlemci içerinde özel bir saklayıcada saklanamayacak büyüktür.

Page 47: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 47

Hatırlanacağı üzere her bir segment kaydedicisinin 8 bytelık bir tampon kaydedicisi vardır.

Taban Adres LimitErişim Hakkı

Segment kaydedicilerine bir yükleme yapıldığında işlemci tablonun ilgili betimleyicisini bellekten okuyarak bu tampon kaydedicilerine yerleştirir. Böylece betimleyici tablosuna erişim sadece segment kaydedicilerine yükleme sırasında sadece 1 kez yapılmaktadır.

063

Page 48: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 48

Örn: MOV AX,1A13 MOV DS, AX komutları korumalı moda çalıştırılırsa işlemci nasıl davranır?

İşlem sonucunda DS 1A13 verisiyle yüklenecektir.

0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 1015

RPLTIIndex = 342h = 834

1 A 1 3

0

1

2

3

.

.

.

.

.

.

GDT834

Bu durumda tablonun 834. elemanından başlayarak 8 byte’lık bilgi tablodan alınarak DS’in tampon kısmına okunur.

Page 49: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 49

Betimleyici içerisindeki 20 bit, segmentin bellekteki uzunluğunu göstermektedir. Bu 30 bitlik kısım betimleyici içerinde ayrık olarak bulunur.

031

3263

Segment Limit (15-0)Segment Base (15-0)

Base(23-16)ATYPESP DPL

Limit (19-16)AVLODG

Base(31-24)

Segmentin limit kısmı koruma mekanizması için gereklidir. Programın kod ya da data olarak sınırların dışına çıkıp çıkmadığı bu limit değerine bakılarak kontrol edilir.

Korumalı modda çalışan bir işlemci için segment limiti ne kadardır ?

Segment Limiti

Page 50: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 50

Limit için 20 bitin kullanıldığı bir durumda segmentin büyüklüğü 220=1048576=1 MB olur.

Fakat korumalı modda segmentin boyutu bununla sınırlı olmayıp G(granularity) bitinin durumuna bağlı olarak 4 GB’a kadar çıkabilmesi mümkündür.

G=0 ise, segmentin uzunluğu limit kadar olabilir (1 MB).

G=1 ise, segmentin uzunluğu limit kısmında bulunan sayının 4096(4K) ile çarpımına eşittir. G=1 ise, en büyük segment uzunluğu 1 MB x 4096 = 4 GB olur.

Görüldüğü segmentin 1 MB sınırını aşabilmesi için G=1 olması gerekmektedir.

Page 51: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 51

Örn: Bir segment betimleyicisinin limit kısmı 001FF ve G bitinin değeri ise 1 ise segmentin uzunluğu ne kadardır?

Segment uzunluğu = 4096 x (001FF + 1 ) = 2097152 byte = 2 MB

Örn: Bir betimleyicinin yüksek anlamlı bytelarından düşük anlamlı bytelarına doğru olarak verilen hex karşılığı aşağıdadır. Buna göre betimleyicinin belirtmiş olduğu segmentin uzunluğu ne kadardır?

00 41 EF 01 00 00 FF F0 h

0000 0000 0100 00011110 1111

0 0 4 1 E F

0000

0

0001

1

0000

0

0000

0

0000

0

0000

0

1111

F

1111

F

1111

F

0000

0

GLimitLimit

0001 1111 1111 1111 0000+ 1 = 131057 byte (yaklaşık 128 K)

Page 52: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 52

İşlemci belleğe erişim gerektiren tüm komutlarını çalıştırmadan önce erişilecek bölgenin segment limitleri içerisinde kalıp kalmadığını betimleyicisine bakarak test eder.

Eğer erişilecek bölge segment limitlerinin dışında ise, bu durumu içsel bir kesme kullanarak sisteme programcısına bildirir. Bu tür içsel kesmelere korumalı modda istina (exception) denir.

Derleyiciler programcının belirledikleri segmentlerin uzunluklarını sayısal değerlere çevirerek object modül içerisine yazarlar.

Sembolik makine dili derleyicileri DATA ve CODE segmentlerin uzunluklarını içlerinde tanımlanan toplam veri ve kod miktarlarını hesaplayarak bulurlar.

Intel işlemcileri segment limitleri dışına yapılmak istenen geçersiz erişimleri 13 (0Dh) numaralı kesmeyi çağırarak sistem programcısına bildirirler. 13 nolu kesmenin çağrılmasına yol açan durumlara “Genel Koruma Hatası (General Protection Error)” denir. Bu gibi durumlarda işletim sistemi programın yürütümünü durdurur.

Page 53: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 53

031

3263

Segment Limit (15-0)Segment Base (15-0)

Base(23-16)

ATYPESP DPLLimit

(19-16)AVLODG

Base(31-24)

Segment betimleyicisi içerisindeki 32 bit, segmentin bellekteki başlangıcını gösteren taban adresidir. Bu da limit de olduğu gibi ayrık bir şekildedir.

32 bit ile 4 GB’lık bellek bire bir adreslenebilmektedir.

Segmentin bellekte nereden başlayacağına işletim sistemi karar verir.

Taban adresi fiziksel olmayıp doğrusal bir adrestir.

Segmentin Başlangıcı

Page 54: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

D Biti

Mikroişlemciler ve Mikrobilgisayarlar 54

031

3263

Segment Limit (15-0)Segment Base (15-0)

Base(23-16)

ATYPESP DPLLimit

(19-16)AVLODG

Base(31-24)

Kod ya da data segmentlerinin 16 ya da 32 bit olup olmadığını gösterir. Her iki segment için 4 farklı durum söz konusudur.

D=0 olduğunda segment kaydedicileri (CS veya DS) 16 bitliktir. Bu durumda makine komutları, 80286 komutları gibi ele alınmaktadır.

D=1 olduğunda segment kaydedicileri (CS veya DS) 32 bitliktir. Bu durumda makine komutları, 80386, 80486 ve Pentium gibi ele alınmaktadır.

54

Page 55: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Erişim Hakları

Mikroişlemciler ve Mikrobilgisayarlar 55

031

3263

Segment Limit (15-0)Segment Base (15-0)

Base(23-16)

ATYPESP DPLLimit

(19-16)AVLODG

Base(31-24)

47 40

Page 56: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 56

TYPESP DPL

4047

A

P (Present) : Eğer P=1 ise segment bellekte hazır bulunmaktadır. Diğer durumda (P=0) ise segment bellekte değildir. Intel işlemcileri bir segmente eriştiğinde bellekte olmadığını farkederse 11 nolu kesmeyi çağırır.

DPL bitleri segmentin önceliğini belirtir. Daha önce de belirtildiği 4 tane öncelik derecesi mevcuttur. 0 dereceli öncelik en yüksek değerlikli önceliktir.

Bir data segmete ancak kendisine eşit ya da kendisinden daha yüksek öncelikli programlar erişebilir. Yine benzer biçimde kod segment ancak kendisine eşit öncelikli segmentleri çağırabilir.

Page 57: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 57

TYPESP DPL

4047

A

İşemci, betimleyicilerin hangi türde olduğuna (sisteme ilişkin veya değil) S, Type ve A bitlerini dikkate alarak karar vermektedir.

S=0 ise betimleyici bir sisteme ilişkindir.S=1 ise betimleyici sisteme ilişkin değildir.

S=0 olması durumunda, betimleyicinin alt grubu A biti de TYPE kısmına katılarak tespit edilir. (Toplamda 4 bit olup 16 farklı tür ifade edilebilir.)

Page 58: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 58

TYPE Sisteme İlişkin Betimleyici Türü

0 Ayrılmış (Reserved)

1 Mevcut 16 bit 80286 görev durum segment betimleyicisi

2 Yerel betimleyici tablo betimleyicisi (LDT)

3 Meşgul 16 bit 80286 görev durum segment betimleyicisi

4 16 bit 80286 çağırma kapısı betimleyicisi

5 Görev kapısı betimleyicisi

6 16 bit 80286 kesme kapısı betimleyicisi

7 16 bit 80286 tuzak kapısı betimleyicisi

8 Ayrılmış (Reserved)

9 Mevcut 32 bit x86 görev durum segment betimleyicisi

A Ayrılmış (Reserved)

B Meşgul 32 bit x86 görev durum segment betimleyicisi

C 32 bit x86 çağırma kapısı betimleyicisi

D Ayrılmış (Reserved)

E 32 bit x86 kesme kapısı betimleyicisi

F 32 bit x86 tuzak kapısı betimleyicisi

S=0 olması durumunda

Page 59: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 59

S=1 olması durumunda segment sisteme ilişkin değildir. Bu durumda segment ya kod veya data ve/veya stack segmenttir. A biti dahil edilmez.

TYPESP DPL

47 41

Type alanı da kendi içinde alt alanlara bölünebilir.

TYPESP DPL

47 41

E ED/C W/R

E C RE ED W

E=0 ise Data/Stack Segment

Betimleyici

E=1 ise Kod Segment Betimleyici

Görüldüğü gibi E biti betimleyicinin kod mu yoksa data/stack betimleyicisi mi olduğunu gösterir.

Page 60: Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod)

Mikroişlemciler ve Mikrobilgisayarlar 60

S biti (44)

E biti (43)

S=1S=0

Sisteme ilişkin olan segment

betimleyicisi

E=1E=0

Data/Stack segment

betimleyicisi

Kod segment betimleyicisi

Sisteme ilişkin olmayan segment

betimleyicisi

Akış Şeması