1 / 83

Bölüm 7 : Ana Bellek

Bölüm 7 : Ana Bellek. Bellek Yönetimi. Background Swapping Contiguous Memory Allocation Paging Structure of the Page Table Segmentation Example: The Intel Pentium. Geçmiş Bilgiler. Program çalışmak için ( run ) diskten Belleğe getirilmeli ve bir işlem haline gelmelidir

shona
Download Presentation

Bölüm 7 : Ana Bellek

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bölüm 7: Ana Bellek

  2. Bellek Yönetimi • Background • Swapping • Contiguous Memory Allocation • Paging • Structure of the Page Table • Segmentation • Example: The Intel Pentium

  3. Geçmiş Bilgiler • Program çalışmak için (run) diskten Belleğe getirilmeli ve bir işlem haline gelmelidir • Main memory ve registers CPU nun doğrudan erişebildiği alanlardır. • Bellek birimi: a stream of addresses + read requests, or address + data and write requests • Registerlara CPU nun bir saat çevriminde ulaşması mümkündür. • Ana belleğe erişim ise birçok çevrim gerektirir • Cacheanabellekden hızlı CPU registerslarından yavaş erişim sağlar. • Bellek koruma işlemlerin doğru çalışmasını sağlamak için gereklidir

  4. Taban ve Limit Kaydediciler (Base and Limit Registers) • baseandlimitregisterlar işlemlerin mantıksal adres alanını tanımlar.

  5. Bellek Yönetimi

  6. Base and Limit Registerlar ile Donanım Adres Koruması

  7. Mantıksal Fiziksel Adres

  8. Adres Bağlama (Address Binding) • Program diskte sabit olarak tutulur, programın yürütülebilmesi için belleğe getirilmesi ve işlemin içine yerleştirilmesi gerekmektedir. • Program, bellek yönetimine göre disk ile bellek arasında taşınır • Normal durumda kuyruktan bir işlem seçilip belleğe yüklenir ve yürütülür. İşlem görevini yerine getirdikten sonra, bellekteki yerinin boşaldığı sisteme bildirilir. • Birçok sistem kullanıcı işlemlerini fiziksel belleğin herhangi bir yerine kabul edebilirler

  9. Program çalışırken, diske gönderilebilir ve tekrar bellekte başka bir alana erişebilir. (relocated) • Kodda yer alan bellek referanslarının fiziksel adrese dönüştürülmesi gerekmektedir.

  10. Kuşbakışı Bellek İşlemleri Sembolik İsimler Mantıksal Adres Binding/Bağlama Fiziksel Adres Relocation Allocation Paging Segmentation Fiziksel Bellek birçok işlem tarafından kullanılmaktadır

  11. compiler compiler object code object code static library linker dynamic library executable loader memory image Programlama Adımları C source test1.c, test2.c C source gcc –c test1.c; gcc –c test2.c test1.o, test2.o mylib, gcc –o test test.o test2.o –lmylib -lm test ./test test, math library, standard C libraries

  12. Programlama Adımları • Compiler • Kaynak kod object file haline getirilir • relocatable logical memory addresses üretir • Fiziksel Bellek adresi bilinlez • Linker • Birden fazla nesne dosyaları disk üzerinde tek bir program için linkler • Loader • Loader, bir işletim sisteminin bir yardımcı programdır. • Programı Fiziksel belleğe yükler • Mantıksal bellek adresini Fiziksel adrese çevirir

  13. Bellek Adresleri Oluşturma DİSKTE BELLEKTE 0 1000 Library routines Library routines Prog P ... foo() ... P: ... push ... jmp _foo ... foo: ... 0 P: ... push ... jmp 75 ... foo: ... 100 P: ... push ... jmp 175 ... foo: ... 1100 P: ... push ... jmp 1175 ... foo: ... 75 175 1175 Linking Loading Compilation

  14. Bellek Adresleri Oluşturma • Address representation • Source program: symbolic (such as count) • After compiling: re-locatable address • 14 bytes from the beginning of this module • After linkage editor, loader or run-time referring: absolute address • Physical memory address 2000 2000 0 int I;goto p1; p1 2250 250 Symbolic Address Re-locatable Address Absolute Address (Physical Memory)

  15. Adres Bağlama (Address Binding) • Kullanıcı programları yürütülmeden önce birçok aşamadan geçer. Bu aşamalarda adresler farklı yollarla belirlenmektedir. • Bir program hayatının farklı dönemlerinde farklı şekillerde temsil adreslerine sahiptir • (sembolik, mantıksal, fiziksel gibi) • Her adres bağlama bir adresi diğerine map eder. (dönüştürür)

  16. Adres Bağlama (Address Binding) • Komut ve verilerin bellek adreslerine bind işlemi üç farklı aşamada olmaktadır: • Yorumlama Zamanı, Compile time : İşlemin belleğin neresine yerleştirileceği biliniyorsa mutlak kod oluşturulana kadar geçen süre yorumlama zamanı olarak adlandırılır. Eğer işlemin bellekteki yeri değişirse, kodu tekrar yorumlamak gerekmektedir. • Yükleme Zamanı, Load time : Yorumlama süresince işlemin nereye yerleştirileceği bilinmiyorsa yorumlayıcı işlemin tekrar yerleştirilebilmesi için bir kod oluşturur. Bu durumda son binding işlemi yükleme zamanı sona erinceye kadar ertelenir. • Yürütme Zamanı, Execution time: : İşlem yürütülmesi sırasında, bir bellek bölgesinden, başka bir bellek bölgesine taşınabilir. Bu durumda binding , yürütüm zamanı doluncaya kadar ertelenir. • Need hardware support for address maps (e.g., base and limitregisters)

  17. Sembolik Adres Fiziksel Bellek Adresi(Physical Memory Addresses) Absolute Addresses(Physical Memory Addresses) PROGRAM 1024 1024 JUMP i JUMP 1424 JUMP 1424 i 1424 1424 LOAD j LOAD 2224 LOAD 2224 DATA j 2224 2224 Kaynak Kod Process Image (Part) Absolute Load Module Yorumlama Zamanında Binding, Link/Load Compile The CPU generates the absolute addresses

  18. SymbolicAddresses Absolute Addresses(Physical Memory Addresses) Relative (Relocatable) Addresses PROGRAM 1024 0 JUMP i JUMP 1424 JUMP 400 i 1424 400 LOAD j LOAD 2224 LOAD 1200 DATA j 2224 1200 Source Code Process Image (Part) Relative Load Module Yükleme Zamanında Binding Link/Load Compile

  19. Relative (Relocatable) Addresses 0 JUMP 400 400 LOAD 1200 1200 MAX Yürütüm Zamanı • Execution time: Binding delayed until run time • The process can be moved during its execution from one memory segment to another • The CPU generates the relative (virtual) addresses • Need hardware support for address maps (e.g., base and limit registers) • Most general-purpose OS use this method • Swapping, Paging, Segmentation =2000

  20. Mantıksal ve Fiziksel Adres • Mikroişlemci tarafından yaratılan adresler mantıksal adres olarak adlandırılır. • Bellek ünitelerinin gördüğü adreslere ise fiziksel adres denilmektedir. Program tarafından üretilen mantıksal adreslerin fiziksel adreslere çevrilmesi gerekmektedir. • Bellek yönetim ünitesi (memory-managementunit, MMU) sanal adresden fiziksel adrese dönüşümü yapan bir donanım aygıtıdır. • Adres işlemlerinde taban kayıt edicisi görevini yerine getiren “yerleştirme kayıt edicisi” kullanılmaktadır. Yerleştirme kayıt edicisindeki değer kullanıcı programları tarafından üretilen her adrese eklenir. • Logical address space is the set of all logical addresses generated by a program • Physical address space is the set of all physical addresses generated by a program

  21. Bellek Yönetim Ünitesi Memory-Management Unit (MMU) • Sanal adresden fiziksel adrese dönüşümü yapan bir donanım aygıtıdır. • Bu bölümde ele alınacak birçok metot bulunmaktadır. • Adres işlemlerinde taban kayıt edicisi görevini yerine getiren “relocation register, yerleştirme kayıt edicisi” kullanılmaktadır. relocation register dakideğer kullanıcı programları tarafından üretilen her adrese eklenir. Taban değeri 14.000 ve kullanıcı programları da 0 adresine konumlandıysa adres 0+14.000=14.000 olacaktır. • Böylece kullanıcı programı mantıksal adresle işlem yapar ve gerçek adresi hiç görememektedir.

  22. Relocation register ile Dinamik yerleştime 14000 to 14000+MAX Bellek Ünitesi tarafından görülen Cpu tarafından oluşturuldu 0 to MAX Mantıksaldan fiziksele map 24 Binding at execution time (when reference is made)

  23. Dinamik Yükleme • Dinamik yüklemede, bir rutin çağrılana kadar belleğe yüklenmez, tekrar yüklenebilecek durumda diskte tutulur. • Daha iyi bellek-alanı kullanımı; kullanılmayan rutin yüklenmeyecek • Işletim sisteminden özel destek gerekli değildirProgram tasarımı ile uygulanır

  24. Dinamik Linking • Statik linking – Yükleyici tarafından sistem kütüphaneleri ve program kodu birleştirilerek binary program oluşturulur. • Dynamic linking –linking işlemi yürütüm zamanına kadar ertelenir • Herlibrary rutinin referansında stub (Small piece of code) kullanılarak, library rutinin yüklenmesi sağlanır • İşletim sistemi rutinin işlemin bellek alanında olup olmadığını kontrol eder. • Eğer adresinde yoksa ekler. • Dinamik linking özellikle library ler için uygundur. • Sistem paylaşılan library olarak da bilinir.

  25. Takaslama(Swapping) • Bir işlemin yürütülmesi için bellekte yer alması gerekir. Fakat, anabellekte yeterli alan olmadığında, bir işlem geçici olarak yedekleme ünitelerine gönderilip, daha sonra tekrar belleğe getirilebilir. • Işlemlerin toplam fiziksel bellek alanı, fiziksel belleği aşabilir • Takaslama: Yer değiştirmede işlemlerin öncelik durumları esas alınarak planlama yapılabilir. • Eğer daha yüksek önceliğe sahip bir işlem sisteme gelirse bellek yöneticisi düşük önceliğe sahip işlemi yedekleme ünitesine gönderip, yeni gelen işlemin uygulanmasını sağlayabilmektedir. • Yüksek öncelikli işlem tamamlandığında gönderilen işlem tekrar belleğe yüklenerek yürütülmesi sağlanabilir. • .

  26. Takaslama(Swapping) • Yer değiştirme işleminin toplam süresi, yer değiştirme işlemin de kullanılan bellek alanı ile doğru orantılıdır. Yer değiştirmede kullanılan bellek alanı arttıkça, yer değiştirmenin süresi de artmaktadır. • Yer değiştirmenin değişik versiyonları Linux ,LUNIX, Windows gibi birçok sistemde kullanılmaktadır. • Takaslama devre dışı bırakılabilir • Eğer kullanılan bellek alanı belli bir eşik değerinin üzerinde ise başlatılabilir. • Bellek istekleri belli bir eşik değerinin altında kalırsa tekrar devre dışı kalır

  27. Takaslama

  28. Takaslama Zamanı • CPU da bir sonraki yürütülecek işlemler bellekte değil ise, hedef işlemin takaslama ile getirilmesi gerekir. • İçerik Değişimi için geçen zaman fazla olabilmektedir. • 100MB lık bir işlem 50MB/seclık transfer hızıyla sabir diske aktarıldığında: • Disk gecikmesi: 8 ms • Swap out zamanı: 2008 ms (2 saniye+8 ms) • Aynı büyüklükte bir işlemin swap in zamanı da buna eklendiğinde, • Toplam içerik değişimi için geçen zaman: 4016ms (> 4 seconds) • İşlemlerin gerçekte ne kadar bellek kullandıkları bilinirse takaslama azaltılabilir. • Sistem çağrıları ile bellek istekleri ve bellek bırakma olayı gerçekleştirilir. • System calls to inform OS of memory use via request memory and release memory

  29. Bellek Yönetim Yöntemleri • Tek ve Bitisken Bellek Yönetimi (Contiguous Allocation) • Değismez bölümlü bellek yönetimi • Değisken bölümlü bellek yönetimi • Sayfalı bellek yönetimi (Paging) • Kesimli bellek yönetimi (Segmantation)

  30. Tek ve Bitisken Bellek Yönetimi (Contiguous Allocation) • Ana bellek, isletim sisteminin yüklendiği kesim dısında tümüyle tek bir ise atanır. • Bundan dolayı, sadece tek is düzeni desteklenir. • Bellek yönetiminin en önemli görevi, isletim sisteminin, kullanıcı programı tarafından bozulmasını önlemektir. • İsletim sistemi, ana belleğin alt (adres) kesimine yüklenir. Limit register, isletim sistemine iliskin bellek alanının bittiği büyüklüğünü relocationregister ise kullanılabilecek en küçük fiziksel adresi içerir. • Bellek yönetim ünitesi (MMU) relocation kayıt edicisindeki değeri ekleyerek dinamik- mantıksal adresler oluşturur. • Kullanıcı programının isletimi boyunca, Limit registerçıkısları + relocationregister adresi , erisilen adreslerle sürekli karsılastırılır. • Eğer kullanıcı programı, isletim sisteminin bellek alanına erisirse, program sonlandırılır. • Bu denetim düzeneğine bellek koruma düzeneği denir.

  31. Limit ve Relocation Register

  32. Değismez Bölümlü(FixedSizedPartitions) Bellek Yönetimi İşletim sistemi a) kullanılan ve boş olan bölümlerin kaydını tutar.) IBM OS/360 da kullanıldı, artık kullanılmıyor OS OS OS process 5 process 5 process 5 process 9 process 8 process 2 process 2 process 2

  33. Değişken Bölümlü(VariablePartition) Bellek Yönetimi

  34. Değişken Bölümlü(Variable Partition) Bellek Yönetim

  35. Değişken Bölümlü(Variable Partition) Bellek Yönetimi

  36. Boş alan Seçimi • İşlemler belleğe yerleştikten sonra kalan boşlukların nasıl kullanılacağına karar verilmesi gerekmektedir. Bu boşluklara işlemlerin en uygun şekilde yerleştirilmesi gerekir. Bunun çeşitli yöntemleri mevcuttur: • Uygun ilk alanın ayrılması (First Fit): İlk bulunan yeterli büyüklükteki alan işlem için ayrılmaktadır. • En uygun alanın ayrılması (Best Fit): Bütün bellek alanı taranarak işlem için yeterli büyüklükteki en küçük alanın ayrılması sağlanır. Böylece ayrılan alanın büyük bir kısmının kullanılması sağlanır. • En kötü alanın ayrılması (Worst Fit): Bütün bellek alanı taranarak işlem için en büyük bellek boşluğunun kullanılması sağlanır. Bu durumda işlem için ayrılan bellek alanında kullanılmayan bellek alanı fazla olacaktır. • En uygun alan ve en uygun alanın kullanılması hız ve sistem işleyişi bakımından en kötü alanın ayrılmasına göre daha iyi sonuç vermektedir.

  37. Boş alan Seçimi • Örneğin, aşağıda verilmiş işlemleri ve gerektirdikleri bellek alanlarını inceleyelim

  38. Parçalanma (Fragmentation) • Dışardan Bölümlendirme (External Fragmentation)Bellekte işlemin ihtiyacını karşılayacak büyüklükte alan olduğu halde bu alanlar bir bütün halinde değilse dışardan bölümlendirme oluşmaktadır. • Dışardan bölümlendirme çoğu zaman problem olmaktadır. Boş bellekler parça parça olduğundan , boş bellekler verimli kullanılamamaktadır. • İçerden Bölümlendirme (Internal Fragmentation)– ayrılmış bellek alanı, ihtiyaç duyulan bellek alanından daha fazla olduğunda oluşmaktadır

  39. Parçalanma (Fragmentation) • Dışardan bölümlendirme problemini çözmek için “sıkıştırma” yapılmaktadır. • Sıkıştırma işlemi bütün boş alanları tek bir boş alan haline getirmektedir. Örneğin aşağıdaki bellek yapısına sahip bir sistemde 100K, 300K ve 260K’lık alanlar birleştirilerek toplam 600K’lık boş alan oluşturulmuştur. • Sıkıştırma yapılabilecek ise en kolay yol bütün işlemleri bir yönde kaydırıp, boş bellek alanlarını birleştirmektir • Yeniden yerleşim, dinamik ve yürütüm zamanında ise sıkıştırma yapılabilir.

  40. Sayfalı Bellek Yönetimi • Dışardan bölümlendirme işleminde boş alanlar bir bütün olmadığında, işlemi belleğe yerleştirmek oldukça güç olmaktadır. Bu problemi çözmek için sayfalandırma tekniği kullanılır. • Fiziksel bellek belirli bir büyüklükteki bloklara ayrılmıştır, bu bloklara çerçeve(frame) adı verilir. • Mantıksal bellek ise eşit büyüklükteki sayfa adı verilen bloklara ayrılmıştır. • Bir işlemin yapılması gerektiğinde onunla ilgili sayfa depolama ünitesinden belleğe yüklenir. • Depolama üniteleri de bellek çerçeveleri ile aynı büyüklüğe sahip bloklara ayrılmıştır. Sayfa büyüklüğü donanım tarafından tanımlanır, 512 bayt ile 16 MB arasında olabilmektedir. • Sayfalandırma yönteminin kullanımı bir sonraki sayfada gösterilmektedir. • Mikroişlemci tarafından üretilen her adres bir sayfa numarası ve sayfa ofsetine sahiptir. • Sayfa numarası indeks olarak sayfa tablosunda kullanılır. • Sayfa tablosu her sayfa için fiziksel bellekteki taban adresini içerir. • Taban adresi , sayfa ofseti ile birleştirilerek fiziksel bellek adresi bulunur.

  41. Adres Çevrimi • İşlemcinin oluşturduğu adresler iki kısımdan oluşmaktadır: • Burada p sayfa tablosundaki indeks, d ise sayfa içindeki yerleşimi(ofseti) temsil etmektedir. Sayfa Ofseti Sayfa Numarası p d

  42. Sayfalı Bellek Yönetimi Mantıksal Adres Fiziksel Adres

  43. Fiziksel ve Mantıksal Belleğin Sayfalama Modeli

  44. Sayfalama Örneği n=2 and m=4 32-byte memory and 4-byte pages

  45. Sayfalama Örneği

  46. Sayfalama Örneği

  47. Sayfalama Örneği

More Related