Bellek Yönetimi Hakkkında Bir Kaç Soru?

Başlatan yamak, 25 Temmuz 2013, 01:29:16

yamak

1->MMU'nun tam olarak görevi sanal bellek ile fiziksel bellek arasında dönüşüm yapmak mı?Mesela ben benim bir programım var bu program için bir sanal bellek oluşturuluyo ve ben de programda ADC den veriler okuyorum ve aslında burada okuduğum veriler gerçekte ADC register ının adresi değil ve bu noktada MMU devreye giriyo bu sanal adresi fiziksel adrese mi çeviriyo.Doğru mu biliyorum?

2->MMU'lu sistemlerde MMU her zaman kullanılır mı?Yani mmu'ya ihityaç duyulmama durumu var mı?Tabi işin için bir işletim sisteminin var olduğu durumlardan bahsediyorum.

3-> Mesela BeagleBone üzerinden konuşursam kart üzerinde harici olarak 256 mb lık ram var.Bu ram de artık işlemcinin belleğinin bir uzantısı mı oluyo.Yani fiziksel bellekten kastedilen şey bu harici Ram'i de kapsıyo mu?Yoksa sanal bellek bu ram üzerinde mi oluşturuluyo.

Biraz karışık anlattım gibi geldi bana ama kusuruma bakmayın...

yldzelektronik

Sanal bellek bildiğim kadarıyla programların bellekte aynı alanı kullandıklarında oluşan çakışmaları ortadan kaldırılmak için var.Yani iki farklı program çalışıyor ve ikisi de aynı adresi kullanmak isterse çakışma olacak ve bu durumda sistem kilitlenecek.Bunun önüne geçmek için var diye biliyorum.Yanlış biliyorsam düzeltin lütfen.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

z

#2
Kullanmadim ve detaylarini bilmiyorum. MMU unitesini dusununce asagidaki sorunu cozmesi gerekiyor.

Bizler MCU da tek program kosturan projeler gelistiriyoruz.

Ornegin asagidaki gibi cok basit bir dongu programini dusunun

Label:  Goto Label

Bu programi derleyince derleyici Labeli atiyorum 0 adresi olarak tespit edildiyse

Goto 0 gibi bir kod uretilir.


Peki biz islemciye isletim sistemi gibi bir sey yazsaydik bunun da uzerinde iki program kostursaydik ne olurdu.

1. Program

Label Goto Label

2. Program

Label Goto Label

Derleyici bu programlari ayri ayri derlediginde

Label Adresleri gene sifir olarak tespit edilecektir.

Bu programlar roma yada rama atildiginda

adresleri farkli olmalidir. Aksi halde ustu uste ezilirler.

1. Program 0 adresine, 2. program da  100 adresine kopyalanmis olsun. (Buna isletim sistemi karar verecek)

1. program

0 Goto 0

2. program

100 goto 0 olur.

Burada 2. program 100 goto 100 olmaliydi. Ancak derleyici Label adresini 0 hesaplamisti.

Iste burda MMU bu soruna cozum getirir.

MMU unitesi bir butun olan rami parcali kullanmaya izin verir ve tanimlanan ram araligi 0 adresinden baslamis gibi davrandirir.

Boylece programi sanki tek islemci icin yazmisiz gibi adresleme hatasi olusmaz. Programi ramda hangi bolgeye tasirsaniz tasiyin dogru olarak calisacaktir.

CPU 0 adresine git dediginde aslinda romda 100 adresine gidirilir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

yxsdf

Aslında her program (process) kendini cpu nun ilk göz ağırısı sanar, tüm adreslerin onun olduğunu düşünür halbuki bilmiyordurki MMU arkasından ne işler çeviriyor :)

MMU hangi programa hangi fiziksel adresin atandığını hatırlamak için Translation lookaside buffer denilen bir tablo kullanır.
www.yxsdf.com © 2014

yamak

Yani bu olayların hepsi ram üzerinde gerçekleşiyo.Peki burdaki ram den kastedilen şey sadece mcu nun kendi ram'i mi yoksa harici olarak bağlanan ramler de buna dahil mi?

yldzelektronik

Alıntı yapılan: yamak - 25 Temmuz 2013, 13:36:17
Yani bu olayların hepsi ram üzerinde gerçekleşiyo.Peki burdaki ram den kastedilen şey sadece mcu nun kendi ram'i mi yoksa harici olarak bağlanan ramler de buna dahil mi?

MMU olan sistemler ucu mu yoksa upu (micro processor unit)  mu?upu içerisinde ram var mı?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

yamak

Alıntı yapılan: yldzelektronik - 25 Temmuz 2013, 13:50:13
MMU olan sistemler ucu mu yoksa upu (micro processor unit)  mu?upu içerisinde ram var mı?
Hocam ne demek istediğinizi anlamadım

yldzelektronik

#7
Alıntı yapılan: yamak - 25 Temmuz 2013, 13:56:30
Hocam ne demek istediğinizi anlamadım

Yahu elli kere sildim tekrar yazdım nasıl ifade etsem kendimi diye :D

Alıntı yapılan: yamak

Yani bu olayların hepsi ram üzerinde gerçekleşiyo.Peki burdaki ram den kastedilen şey sadece mcu nun kendi ram'i mi yoksa harici olarak bağlanan ramler de buna dahil mi?


Ben buradan şöyle söylediğini anladım;

Mikrodenetleyici dediğimiz vatandaş mmu yapısını barındırır.O yüzden anlatılan ramin mcunun kendi rami mi bağlanan harici ram mi olduğunu anlamadın.Ki buradan mmunun mcularda da olduğu gibi bir intibaya kapıldım.Ancak ben mmu yu sadece mikroişlemcilerde var zannediyordum.Ayrıca eğer bu yapı sadece mikroişlemcilerde olursa burada sadece bir tek ramdan bahsedilebilir o da veri yoluna bağlanan harici ram.Çünkü mikroişlemci kendi içinde ram bulundurmaz.Ben yanlış mı biliyorum?

Mikroişlemci ve denetleyici arasındaki farklılıklara dair bir yazı; http://www.elektrikport.com/teknik-kutuphane/mikroislemci-ve-mikrodenetleyici-arasndaki-farklar-elektrikport-akademi/8139#ad-image-0
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

yamak

Hocam mesela AM3359 cortex-A8 cpu kullanan bi mcu olmuyo mu?Cortex-A8'de de MMU var.

yldzelektronik

#9
Siyah kutucuğa aldıklarım ilk gözüme çarpanlar.




Bir de hatırladığım kadarıyla arm a serisi coreları uygulama serisi olarak üretmiş.Yani bazı özel işler için.Onlar mculara uygun değil.Mcu için uygun olan core m serisi diye biliyorum.Daha önce kendi sayfasında benzeri bir şey okuduğumu hatırlıyorum ancak sayfanın şimdiki hali böyle belkide başka bir yerde okudum hatırlamıyorum;

http://www.arm.com/products/processors/index.php

Bu söylediklerim hatalı olabilir.Ben daha evvel okuduğum yazılardan hatırladıklarımı aktarıyorum.Doğruluğunu teyit edin lütfen.

Ekleme:

https://www.google.com.tr/search?q=memory+management+unit+tutorial&oq=memory+management+unit&aqs=chrome.3.69i57j69i60l2j0l2j69i60.16055j0&sourceid=chrome&ie=UTF-8
İlk sıradaki dökümanda bir şeyler var.

https://www.google.com.tr/search?q=memory+management+unit+tutorial&oq=memory+management+unit&aqs=chrome.3.69i57j69i60l2j0l2j69i60.16055j0&sourceid=chrome&ie=UTF-8#gs_rn=20&gs_ri=psy-ab&tok=te3CrMNIrOgb-jGroqX4jw&pq=memory%20management%20unit%20tutorial&cp=3&gs_id=c&xhr=t&q=mmu+nedir&es_nrs=true&pf=p&sclient=psy-ab&oq=mmu&gs_l=&pbx=1&bav=on.2,or.r_cp.r_qf.&bvm=bv.49784469,d.Yms&fp=38bc2140b79deff5&biw=1366&bih=683

İşletim sistemlerine giriş isimli dökümanda türkçe güzel şeyler var gibi.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

MC_Skywalker

MMU = Memory Mangment Unit
MPU = Memory Protection Unit

Cortex M = Microcontroller için
Cortex A = Aplication (uygulama) için OS vb koşturmak için
Cortex R =  Real Time işlemler için

yldzelektronik

Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

yamak

@yldzelektronik
Hocam MCU tabiri yanlış olmuş olabilir.Arm Cortex-A8 mimarili işlemci desem daha doğru olurdu.

emrahmrcn

Z nin anlattıklarına ek olara, MMU aynı zamanda yetkilendirmede yapar. Bazı RAM alanlarındaki kodların çalışması sırasında başka bir ram alanına erişmek istendiğinde MMU izni varsa erişir, yoksa da hata döndürür(Windows taki eski mavi ekranlar)
Bu niye gereklidir dersek, örneğin bir işletim sisteminde seriporta erişmeye çalışan bir programımız olsun. Bu program gelen verileri veya yollamak istediği verileri direkt seriportun adresinde değilde , işletim sistemine yazılımsal bir sinyal ile haber verir-yollar(Sistem Çağrıları) . İşletim sistemide bu işi düzenleyerek seriporta kendisi erişir ve üst katmandaki programa aracılık eder veri akışını yapar.
Benim yaradılışımda bir ayrıcalık varsa o da TÜRK olmamdır. M.K ATATÜRK