*

  • donanim yazmaclarina erisimi hafiza erisim kanallarindan halletme seklidir. mmu hangi alanin donanim yazmaclarina ait oldugunu bilir gerekli yerlere iletir.

    x86 sistemlerde bunun yerine out/in gibi ozel donanim erisim direktifleri kullanilir. risc tabanli sistemlerde yaygindir. commodore 64 ve amiga'da da mevcuttu kendileri.
  • ayni zamanda posix standardinda i$letim sisteminin bir dosyayi bir process'in address space'inin uzantisi gibi gosterebilme yetenegine de verilen isimdir. mesela hede.txt dosyasini mmap() veya mapviewoffile() gibi bir fonksiyonla map ettiniz sonra dosyanin 15. byte'ini 'a' mi yapacaksiniz

    p[14] = 'a';

    yok efendim dosyayi xor'la encrypt mi edeceksiniz

    for(i=0;i<flen;i++)p[i] ^= 76;

    dosya 2 gigabyte uzunlugunda olsa bile process'in address space'inin bir parcasi gibi gorundugunden ustunde ivir zivir i$lem yapmak kolayla$ir. hatta hic kasmadan bir dosyayi alip winsock'un send() 'ine parametre olarak yollayabilirsiniz. ozellikle read-only i$lemler icin son derece ideal bir yontem gibi durmaktadir.

    memory mapped i/o'nun en buyuk avantaji caching stratejileri, uygun buffer size nedir, allah var mi gibi sorularin yanitlariyla sizin yerine kernel'in ugra$masidir. bunun haricinde programinizin memory overhead'ini de aslinda hic memory harcamadigindan minimumda tutar. kernel tum buffer'lari kendi cache'inde barindirir ve diger process'lerin ihtiyaclarina gore bunlarin ebatlarini ayarlayabilir.

    ne guzel bi$eydir $u yeni jenerasyon i$letim sistemleri valla insanin oturup sacma sapan kodlar yazasi geliyor. dos'ta boyle miydi ya.
  • (bkz: mmap) (bkz: mmap2)
  • bu olay söyle hallediliyordu galiba: merkezi islem biriminin adresleyebildigi uzayin ((bkz: bellek uzayi)) bir kismi cevre birimler icin ayrilir. yani cevre birimler ile bilgisayarin bellegi ortak adres ve data yollarini (data bus ve address bus) kullanir. bu durumda merkezi islem birimi ister bir cevre birimle ister bellekle veri alisverisi yapmak icin ayni komutlari kullanir. bu bakimdan bir soyutlama ((bkz: abstraction)) saglanir. ama öte yandan bellek uzayinin bir kismi cevre birimlere ayrildigi icin kullanilamaz olur. bu sebeple memory mapped io'nun alternatifi olarak port-mapped i/o kullanilir.
  • gömülü sistemler kolay ve hızlı bir şekilde uygulama geliştirmek için seçilen bir mimaridir.
    bir altera fpga'ini alarak, quartus'taki nios'u alır etrafına istediğin tüm peripheral'ları memory mapped i/o olarak dizersiniz. böylece işlemcide kod yazarken, o adreslere i/o yapmak suretiyle rahatça kullanırsınız.
    hatta ve hatta kendi özel bloklarınızı, kullanılan bus standardına göre güzelce interface ederseniz, co-processor olarak convolution dahi yaparsınız.
    hazır işlemci ve bus olduktan sonra kendi özel bileşeniniz dışında hiçbir şeye karışmamak büyük lükstür.
  • cpu' nun çevresel aygıtlarla, bu aygıtlar bir memory hücresiymişçesine iletişime geçmesidir.
  • giris cikis cihazlarinin kimi ozelliklerinin hafizadaki bazi adreslere baglanarak kullanildigi giris-cikis* yontemi. biraz acayip oldu evet.

    c-64 boyle bir bilgisayardir mesela, hafizdaki cesitli adreslere bazi degerler girerek bir seyleri degistirebilirsiniz. $d020, $d021 gibi...

    surda da bisiler... https://en.wikipedia.org/wiki/memory-mapped_i/o
  • constant pointer'lar ile ulaşılır bu afacanlara. bir çok çevresel (peripheral) bu yol ile işlemci map'ine iliştirilir.
hesabın var mı? giriş yap