Soalan oleh Izzad:

saya ingin mengetahui tentang pengurusan ingatan(memory)dalam os saya 
harap rakan yang lain akan membantu saya untuk memahami dengan lebih 
lanjut.

---

Jawapan:

Memory management bermaksud memulangkan kesemua memory (RAM) yang 
kita pinjam dari komputer dengan bersih dan sempurna. 

Sepanjang larian program yang kita tulis, mungkin kita ada melakukan 
apa yang dipanggil sebagai 'dynamic allocation'. Dalam konteks C++, 
ini bermaksud: 

CMyClass *pMyObj; 
pMyObj = new CMyClass; 

Arahan 'new' ini bermaksud "hai komputer, kasik pinjam 20 byte kejap, 
aku nak letak objek aku." 

Hanya setelah kita membuat allocation ini barulah kita boleh 
menggunakan objek yang kita cipta itu. Jika komputer kita mempunyai 
cukup memory, maka ia akan berikan kita pinjam sebanyak mana yang 
kita minta itu. 

Bilangan byte yang kita minta tidaklah semestinya 10 byte -- 
tukangtaip hanya gunakan nombor itu sebagai contoh saja. Bilangan 
byte sebenar akan dikira oleh komputer secara automatik berdasarkan 
jumlah data dan fungsi yang terkandung di dalam class kita itu. 

Jadi kita pun buatlah operasi-operasi terhadap objek yang telah kita 
cipta: 

pMyObj->Run(); 
pMyObj->PrintResults(); 

Setelah kita sudah habis gunakan objek, maka apa perlu kita buat? 
Ingat bahawa kita telah meminjam memory dari komputer, jadi etikanya 
bila kita pinjam barang orang, kita kenalah pulangkan balik ye tak? 

Untuk memulangkan balik memory yang kita pinjam itu, kita gunakan 
arahan delete seperti ini: 

delete pMyObj; 

Keseluruhan arahan itu kelihatan begini: 

CMyClass *pMyObj = new CMyClass; 
pMyObj->Run(); 
pMyObj->PrintResults(); 
delete pMyObj; 

Apa akan terjadi kalau kita terlupa buat allocation di atas? Program 
kita akan crash. 

Sebaliknya, apa yang akan terjadi jika kita terlupa untuk pulangkan 
balik memory (arahan delete)? Program kita tidak akan crash. Dia diam 
saja, dan berjalan seperti biasa seolah tiada apa yang berlaku. 
Sebenarnya dalam praktis pemprograman, keadaan ini adalah lebih 
membahayakan dari program yang crash? Kerana apa? Kerana walaupun 
komputer tu senyum saja, tapi sebenarnya dia senyum dalam kesakitan. 
Dalam perkataan teknikal ia dipanggil 'undetected error'. 

Hasilnya, akan terjadilah memory leak di mana bilangan RAM kita 
kelihatan semakin berkurangan. Jika keadaan ini berlaku berlarutan, 
komputer kita akan terus kehilangan RAM dan akhir sekali komputer itu 
sendiri akan crash. 

Maka adalah penting bahawa memory management dilakukan dengan 
sempurna. Contoh yang tukangtaip berikan adalah contoh mudah; memory 
management menjadi lebih rumit bila kita menggunaka struktur-struktur 
data yang lebih kompleks, contohnya [dynamic] array, linked lists, 
graphs dan trees. 

Sesetengah bahasa pemprograman mempunyai memory management yang 
automatik; seperti Java dan C. Jadi anda tak perlu bimbang tentang 
perkara ini. Namun jika anda memprogram menggunakan Pascal, C, C++, 
ia harus diutamakan pada peringkat awal coding lagi agar program anda 
tidak merosakkan sistem. 

-Tukangtaip-

http://www.hazman.com 

    Source: geocities.com/tukangtaip