Bazı ARM işlemcileri için hobi işletim sistemi yazmayı düşünüyorum. ARM MPU ile birçok popüler tek kartlı bilgisayar var, bu yüzden bunlardan birini satın almak istedim (daha açık belgelere sahip bir tane seçerek). Gerçekten yeterli belleğe sahip kartlarda bile Bellek Yönetim Birimi ile MPU bulunmadığını öğrendiğimde şaşırdım.
Her zaman i386 + işlemcilerle çalıştığım ve başka hiçbir şey (bazı Microchip PIC'ler hariç) ile çalıştığım için, şimdi kafam karıştı ve yazılı işletim sistemlerine kıyasla işlevselliği sınırlı olmayan çalışan bir işletim sistemi yazıp yazamayacağından emin değilim MMU'lu MPU'lar için.
MMU'yu "değiştirmek" veya "taklit etmek" için birkaç çözüm düşünebilirim ve birkaç sorum var:
- 16 ve 32 bit modlarındaki Intel işlemcilerde, farklı görevler tarafından farklı bellek bloklarını kullanmak için segmentleri ve segment seçicileri kullanmanın bir yolu vardır. Bu, x86 açıkken bir görev anahtarı yaparken segment kayıtlarının içeriğini değiştirerek bellek alanını değiştirebileceğim anlamına gelir. ARM mimarisinde kullanılabilecek bellek segmentasyonu için genel kavramlar var mı?
- Yürütülebilir dosya yerine bağlantılı bir nesne dosyası yükleyerek, disk belleği yapıları kullanarak bellek eşleme gibi görevleri bellek parçaları üzerinde noktalamak için yer değiştirme (fix-up) veya bağımsız kodu konumlandırabilirsiniz. Bu yeterince etkili olur mu?
- ARM işlemcilerindeki Bellek Koruma Birimleri hakkında da bir şeyler okudum. Bunlar yardımcı olabilir mi?
MMU'suz sistemlerde görevleri yönetmenin "olağan" yolları var mı?