Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


... konulu sunumlar: "Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod) 1Mikroişlemciler ve Mikrobilgisayarlar."— Sunum transkripti:

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

2 Intel İşlemcilerin Tarihsel Gelişimleri Mikroişlemciler ve Mikrobilgisayarlar2 YılMikroişlemciFiziksel Bellek AlanıYazmaç Uzunluğu K K MB MB K (İçsel) MB MB MB DX4 GB SL32 MB SX16 MB DX4GB SX4 GB Pentium4 GB32

3 Mikroişlemciler ve Mikrobilgisayarlar3 İ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.

4 286,386,486 ve Pentium İşlemcilerin Çalışma Modları Mikroişlemciler ve Mikrobilgisayarlar4 3 ayrı çalışma modu sökonusudur. Korumalı Mod (Protected Mode) Sanal x86 Mod (286’larda mevcut değil) Gerçek Mod (Real Mode)

5 Mikroişlemciler ve Mikrobilgisayarlar5 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.

6 Genel Olarak Korumalı Mod (Overview of Protected Mode) Mikroişlemciler ve Mikrobilgisayarlar6 Çokişlemli(multiprocessing) işletim sistemlerinde birden fazla program aynı anda bellekte bulunur. İşletim sistemi Program1 Program2 Program3 ……..

7 Mikroişlemciler ve Mikrobilgisayarlar7 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.

8 Mikroişlemciler ve Mikrobilgisayarlar8 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.

9 Öncelik Derecelendirmesi (Privilege Level) Mikroişlemciler ve Mikrobilgisayarlar9 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.

10 Mikroişlemciler ve Mikrobilgisayarlar İşlemcisinin Kaydedicileri

11 Mikroişlemciler ve Mikrobilgisayarlar11 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 ve sonraki işlemcilerde bulunur.

12 Mikroişlemciler ve Mikrobilgisayarlar12 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.

13 Mikroişlemciler ve Mikrobilgisayarlar13 386,486 ve Pentium İşlemcilerinin Kaydedicileri

14 Mikroişlemciler ve Mikrobilgisayarlar14 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)

15 Mikroişlemciler ve Mikrobilgisayarlar15 Genel Amaçlı Kaydediciler (EAX,EBX,ECX,EDX,ESI,EDI,EBP, ESP): (General Purpose Registers) Bu kaydediciler, 16 bit 8086 ve 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)

16 Mikroişlemciler ve Mikrobilgisayarlar16 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)

17 Mikroişlemciler ve Mikrobilgisayarlar17 Taban AdresLimit Eriş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.

18 Mikroişlemciler ve Mikrobilgisayarlar18 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 AdresLimit Erişim Hakkı

19 Mikroişlemciler ve Mikrobilgisayarlar19 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.

20 Mikroişlemciler ve Mikrobilgisayarlar20 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.

21 Mikroişlemciler ve Mikrobilgisayarlar21 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. PE MP EM TS ETNEWPResv. AM NWCDPG Reserved Paging Cache Disable No Write Alignment Mask Write Protect Numeric Exception Extension Type Task Switch Emulate Math Proc. Monitor Coprocessor Protected Enable

22 Mikroişlemciler ve Mikrobilgisayarlar22 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

23 Mikroişlemciler ve Mikrobilgisayarlar23 CR3 Kaydedicisi (32 bit) 0 31 Dizin Tablosunun Fiziksel Adresi Reserved PWTPCT CR3 kaydedicisi Intel mimarisinde korumalı modda fiziksel adresi tutan tek kaydedicidir ’larda CR3 kaydedicisi yoktur.

24 Mikroişlemciler ve Mikrobilgisayarlar24 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. VMEPVITSDDEPSE0MCEReserved Virtual 86 Mode Extension Time Stamp Disable Debug Extension Page Size Extension Machine Check Enable

25 Mikroişlemciler ve Mikrobilgisayarlar25 EFLAGS Kaydedicisi (32 bit) Bayraklar, CPU’nun çalışmasını belirlediği gibi, çalışması sırasındaki durumları da yansıtır mikroişlemcilerinde bayrak saklayıcısı 16 bit olup, – Pentium serisi işlemcilerde 32 bittir (Extended Flags).

26 Mikroişlemciler ve Mikrobilgisayarlar26 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. ODITSZAPC 0 15

27 Mikroişlemciler ve Mikrobilgisayarlar27 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. ODITSZAPC 0 15

28 Mikroişlemciler ve Mikrobilgisayarlar28 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)

29 Mikroişlemciler ve Mikrobilgisayarlar29 KORUMALI MOD (PROTECTED MODE)

30 Mikroişlemciler ve Mikrobilgisayarlar30 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) bit register 20-bit memory address FFFFF Segment saklayıcısının değerine 0h eklenir. Intel 80x86 hafıza adresi üretimi 1M bellek alanı Offset Segment address Offset Addr1 Addr1 + 0FFFF

31 Mikroişlemciler ve Mikrobilgisayarlar31 Segment adresleri segment registerlerinde (CS,DS,ES,SS); ofset adresleri ise pointer registerlerden birisinde tutulur. Örn: 348A AB43 CS IP+ Instruction address FFE0 FFE05 SS SP+ Stack address 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.

32 Mikroişlemciler ve Mikrobilgisayarlar32 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.

33 Mikroişlemciler ve Mikrobilgisayarlar33 Bir selektör 3 parçadan oluşur. IndexTIRPL 0 15 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.2 13 =8192 olup index bölgesi tablo içerisindeki 8192 betimleyiciden birini seçer. 13 bit

34 Mikroişlemciler ve Mikrobilgisayarlar34 IndexTIRPL bit TI=1 ise TI=0 ise Yerel Betmleyici Tablo Global Betimleyici Tablo GDTLDT

35 Mikroişlemciler ve Mikrobilgisayarlar 35 Örn: 211Ah biçiminde bir selektör bilgisi bulunmaktadır. Bu selektörü incelediğimizde RPL TI Index = 423h = A GDT 1059

36 Mikroişlemciler ve Mikrobilgisayarlar36 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 AdresDoğrusal AdresFiziksel Adres Sayfalama Pasif: Sanal AdresFiziksel Adres Sanal Adres =

37 Betimleyici Tablolar ve Betimleyici Tablo Kaydecileri Mikroişlemciler ve Mikrobilgisayarlar Yerel Betmleyici Tablo Global Betimleyici Tablo GDTLDT 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)

38 Mikroişlemciler ve Mikrobilgisayarlar38 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)

39 Mikroişlemciler ve Mikrobilgisayarlar39 Ö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: 0001F FFF = 1FFFF Bir betimleyicinin uzunluğu 8 byte olup, bu GDT içerisinde 4096/8 = 512 tane betimleyici saklanabilmektedir. Global Descriptor Table 4K 0001FFFF 0001F000

40 Mikroişlemciler ve Mikrobilgisayarlar40 Ö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  byte Limit kısmında yazılabilecek en büyük değer FFFF olup, Böyle bir durumda depolanabilecek betimleyici sayısı ise: / 8 = 8192’dir. Dikkat edilirse bu selektör seçicisinde de 13 bitlik kısım (2 13 = 8192) bu kadarlık bir alanı adreslemek için kullanılmaktaydı. IndexTIRPL bit SELECTOR

41 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. IndexTIRPL bit GDT LDT Taban Tablo Uzunluğu B) 41

42 Mikroişlemciler ve Mikrobilgisayarlar42 Örn: LDTR kaydedicisinin içindeki değer 1F2Ah olsun. LDT tablosunun taban adresi ve uzunluğu GDT hangi betimleyicisinden çekilmektedir? RPL TI Index = 3E5h = 997 1F 2A GDT 997

43 Mikroişlemciler ve Mikrobilgisayarlar43 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

44 Mikroişlemciler ve Mikrobilgisayarlar44 Ö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  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ı h ise tablo uzunluğu nedir ve tablo içerisinde kaç adet betimleyici bulunmaktadır? Başlangıç adresi : h dır. Uzunluğu: 03FF + 1 = 400h  1024 byte Bitiş adres: FF = 13FF Bir betimleyicinin uzunluğu 8 byte olup, bu IDT içerisinde 1024/8 = 128 tane betimleyici saklanabilmektedir.

45 Betimleyiciler (Descriptors) Mikroişlemciler ve Mikrobilgisayarlar45 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

46 Segment Betimleyicisi Mikroişlemciler ve Mikrobilgisayarlar Segment Limit (15-0)Segment Base (15-0) Base (23-16) ATYPE S P DPL Limit (19-16) AVL O D G 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.

47 Mikroişlemciler ve Mikrobilgisayarlar47 Hatırlanacağı üzere her bir segment kaydedicisinin 8 bytelık bir tampon kaydedicisi vardır. Taban AdresLimit Eriş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. 0 63

48 Mikroişlemciler ve Mikrobilgisayarlar48 Ö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 RPL TI Index = 342h = 834 1A GDT 834 Bu durumda tablonun 834. elemanından başlayarak 8 byte’lık bilgi tablodan alınarak DS’in tampon kısmına okunur.

49 Mikroişlemciler ve Mikrobilgisayarlar49 Betimleyici içerisindeki 20 bit, segmentin bellekteki uzunluğunu göstermektedir. Bu 30 bitlik kısım betimleyici içerinde ayrık olarak bulunur Segment Limit (15-0)Segment Base (15-0) Base (23-16) ATYPE S P DPL Limit (19-16) AVL O D G 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

50 Mikroişlemciler ve Mikrobilgisayarlar50 Limit için 20 bitin kullanıldığı bir durumda segmentin büyüklüğü 2 20 = =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.

51 Mikroişlemciler ve Mikrobilgisayarlar51 Ö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 ) = 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? EF FF F0 h E F F F F G Limit = byte (yaklaşık 128 K)

52 Mikroişlemciler ve Mikrobilgisayarlar52 İş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.

53 Mikroişlemciler ve Mikrobilgisayarlar Segment Limit (15-0)Segment Base (15-0) Base (23-16) ATYPE S P DPL Limit (19-16) AVL O D G 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ı

54 D Biti Mikroişlemciler ve Mikrobilgisayarlar Segment Limit (15-0)Segment Base (15-0) Base (23-16) ATYPE S P DPL Limit (19-16) AVL O D G 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ı, komutları gibi ele alınmaktadır. D=1 olduğunda segment kaydedicileri (CS veya DS) 32 bitliktir. Bu durumda makine komutları, 80386, ve Pentium gibi ele alınmaktadır. 54

55 Erişim Hakları Mikroişlemciler ve Mikrobilgisayarlar Segment Limit (15-0)Segment Base (15-0) Base (23-16) ATYPE S P DPL Limit (19-16) AVL O D G Base (31-24) 4740

56 Mikroişlemciler ve Mikrobilgisayarlar56 TYPE S P DPL 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.

57 Mikroişlemciler ve Mikrobilgisayarlar57 TYPE S P DPL 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.)

58 Mikroişlemciler ve Mikrobilgisayarlar58 TYPESisteme İlişkin Betimleyici Türü 0Ayrılmış (Reserved) 1Mevcut 16 bit görev durum segment betimleyicisi 2Yerel betimleyici tablo betimleyicisi (LDT) 3Meşgul 16 bit görev durum segment betimleyicisi 416 bit çağırma kapısı betimleyicisi 5Görev kapısı betimleyicisi 616 bit kesme kapısı betimleyicisi 716 bit tuzak kapısı betimleyicisi 8Ayrılmış (Reserved) 9Mevcut 32 bit x86 görev durum segment betimleyicisi AAyrılmış (Reserved) BMeşgul 32 bit x86 görev durum segment betimleyicisi C32 bit x86 çağırma kapısı betimleyicisi DAyrılmış (Reserved) E32 bit x86 kesme kapısı betimleyicisi F32 bit x86 tuzak kapısı betimleyicisi S=0 olması durumunda

59 Mikroişlemciler ve Mikrobilgisayarlar59 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. TYPE S P DPL Type alanı da kendi içinde alt alanlara bölünebilir. TYPE S P DPL E ED/C W/R E C R E 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.

60 Mikroişlemciler ve Mikrobilgisayarlar60 S biti (44) E biti (43) S=1 S=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ı


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

Benzer bir sunumlar


Google Reklamları