Burada yanıtı etkileyen birkaç katman var.
Modern bir sanal bellek işletim sistemi varsayarsanız, ayırdığınız sayfalardaki başka işlem verilerinin kalıntılarını göremezsiniz.
Bir işlem ilk kez yüklendiğinde, sayfa tablosu yüklenir ve potansiyel olarak gerçek bellek çerçeveleri bu sayfalara tahsis edilir. En azından, sayfa tablosu veya tamamlayıcı tablosu, işlemin atayabileceği tüm belleğin bir haritasını içerecektir. Bu aynı zamanda yukarıda belirtilen başlangıçtaki işlem molasının başladığı yerdir.
Malloc (), sürece izin veriliyorsa, işlemin değişmesine neden olurken, isteği karşılamak için işlemler sayfasına (tamamlayıcı sayfa) tabloya daha fazla sayfa eklemek, bir işlemin "başka bir tane alabileceği" işlem verilerini alt gerçek bellek katmanı.
Bu senaryoların her ikisinde de, talep çağrısı veya tembel tahsisi kullanan modern bir işletim sistemi henüz fiziksel bellek (çerçeveler) tahsis etmemektedir. İşletim sistemi, sadece bu işlem için hangi sanal belleğin geçerli olduğu hakkında not alıyor. Gerçek bellek yalnızca gerektiğinde atanır.
Sanal sayfa gerçekleştiğinde ve bir işlemler sayfası tablosuna eşlendiğinde, fiziksel bellek veya çerçeveler bir işleme ayrılır. Bu, verilerin gösterilme potansiyelinin bulunduğu yerdir. Bu, sayfa hatası sırasında olur. Maruziyet, önceki bir işlem aynı kareyi kullanıyor olabilir ve mevcut fiziksel bellek talebine yer açmak için verileri terk edilmiş veya değiştirilmiş olabilir. İşletim sistemi, talep eden işlem verilerinin prosese devam etmeden önce uygun şekilde değiştirildiğinden veya çerçevenin temizlendiğinden (sıfırlandı) emin olmak için dikkatli olmalıdır. Bu aynı zamanda yukarıda “eski ama çözülmüş” bir problem olarak da belirtilmiştir.
Bu, diğer işlem belleğinin "serbest bırakılmış" olup olmadığının bir şekilde ilgisiz olmasını sağlar. Başka bir işlem "serbest bırakılmış" bellek, hala bu işleme atanan sayfalarda bulunur ve genellikle bellek azaldığında veya başka bir şekilde tahliye edildiklerinde takas edilecekleri için işlem bitene kadar genellikle eşleştirilmez. malloc () ve free (), (kullanıcı) düzeyinde işleme atanan sanal belleği yönetir.
Sorunuzda, işleminiz teoride, diğer tüm işlemleri hafızadan çıkarmak için daha fazla hafıza talep etmeye devam ediyor. Gerçekte, cevabı etkileyebilecek küresel ve yerel - çerçeve tahsis stratejileri vardır. İşletim sisteminin ve diğer tüm işlemlerin üstesinden gelmesine izin verilmeden önce işlemin kendi sayfalarını bellekten zorlaması olasıdır. Bu ilk sorunun ötesinde olsa da.
Bütün bunlar MS-DOS gibi bir sistemde tartışmalı. MS-DOS (ve diğer basit sistemler), sanal belleği kullanmaz (kendi başlarına) ve başka bir "işlem" verisinde kolayca dürtme ve prodüksiyon yapabilirsiniz.
Linux kaynak kodundan anlaşılması daha kolay olabilecek bazı iyi referanslar, iyi bir işletim sistemi ders kitabı, Silberscatz'ın İşletim Sistemleri Kavramları, Gavin ve Gange veya Andrew Tanenbaum'un İşletim Sistemleri Tasarımı olabilir. Ayrıca Berkeley'den Nachos ya da Stanford'dan Pintos gibi şeyler öğrenmek için inşa edilmiş küçük işletim sistemleridir ve içinde aynı fikirleri vardır.