Saya bertanya-tanya tentang bagaimana sistem operasi membiarkan proses anak tahu berapa banyak memori yang tersedia.
Katakanlah seluruh komputer memiliki memori RAM 1GB. Operasi berjalan dan menggunakan 100MB (Saya tidak tahu berapa banyak sebenarnya sistem operasi menggunakan). Jadi masih tersisa 900MB.
Kemudian Anda menjalankan 10 program. Setiap program menciptakan 10 proses anak. Pertanyaannya adalah, apa yang dilihat oleh proses orangtua dan anak ini sebagai total memori yang tersedia bagi mereka.
Sebagai bagian kedua dari pertanyaan untuk membuatnya sedikit lebih kompleks, katakan bahwa aplikasi telah berjalan untuk sementara waktu dan sekarang ada 500MB tersedia di komputer (katakanlah sistem operasi menggunakan 100MB lebih banyak, dan aplikasi menggunakan 300MB lebih, untuk mencapai level 500MB tersisa). Pertanyaannya sekarang adalah apa yang dilihat oleh proses orangtua dan anak ini sebagai memori yang tersedia pada saat ini. Jika sama dengan sebelumnya, atau berbeda, dan bagaimana perbedaannya.
Alasan untuk pertanyaan ini adalah karena saya telah membaca tentang Memori Virtual yang menyatakan:
memori virtual [adalah] teknik yang menyediakan "abstraksi ideal dari sumber daya penyimpanan yang sebenarnya tersedia pada mesin yang diberikan" yang "menciptakan ilusi bagi pengguna memori (utama) yang sangat besar."
Jadi pada dasarnya, sepertinya setiap proses dalam kasus (1) akan diberitahu "Anda memiliki memori yang tersedia 1GB", atau "Anda memiliki memori yang tersedia 900MB". Saya tidak yakin apa yang sebenarnya akan dikatakan, jika dikatakan total pada seluruh komputer, atau total - penggunaan sistem operasi.
Kemudian untuk kasus (2), itu akan berbunyi "1GB tersedia", "900MB tersedia", "600MB tersedia", atau "500MB tersedia". Situasi yang sama, saya tidak yakin apa yang akan dikatakan.
Bisa juga berbeda dari nilai-nilai itu. Sistem operasi entah bagaimana dapat memperkirakan memori yang tersedia untuk masing-masing proses 100 anak, membaginya secara merata mungkin. Jadi jika ada 500MB tersisa di komputer, itu berarti setiap proses akan diberitahu "Anda memiliki 500/100 == 5MB ruang yang tersedia". Tetapi kemudian jika ini masalahnya, jika satu proses menghabiskan 5MB, dan masih ada 495MB yang tersisa, bertanya-tanya apakah akan diizinkan untuk mulai menggunakan ini, dan diberi tahu nomor baru dari apa yang tersedia. Inilah mengapa saya tidak berpikir ini adalah bagaimana biasanya dilakukan, dan sepertinya OS akan memberi tahu apa yang mungkin tersedia di komputer secara keseluruhan (jadi 1GB).
Juga, alasan mengapa saya pikir itu akan selalu mengatakan "1GB" adalah karena saya tidak yakin apakah ada cara untuk menentukan berapa banyak memori yang digunakan oleh proses tunggal (atau jika sistem operasi tahu berapa banyak memori yang digunakan). Jika OS tidak tahu berapa banyak itu sendiri menggunakan, maka tampaknya seperti itu akan melaporkan 900MB.
Bagian lain dari kebingungan adalah bahwa, jika penggunaan memori terus berubah, dan OS memberi tahu setiap proses berapa total memori - memori yang digunakan, maka Anda harus terus-menerus memeriksa berapa banyak memori yang tersedia jika Anda mencoba mengakses lebih banyak memori. Artinya, Anda tidak bisa men-cache penggunaan memori saat program dimulai. Bisa jadi program, duduk diam selama beberapa jam, dimulai dengan 100MB memori "di komputer", tetapi kemudian setelah itu sementara memeriksa lagi untuk menemukan "oh tunggu, hanya ada 5MB tersedia". Untuk beberapa alasan yang kelihatannya seperti perilaku yang tidak diinginkan, tapi saya tidak yakin.
Setiap bantuan untuk memahami secara umum bagaimana suatu OS memberi tahu anak memproses berapa banyak memori yang tersedia di berbagai titik waktu akan sangat membantu. Terima kasih.