Ang pag-unawa sa kung paano namamahala at nag-iimbak ng data ang mga computer ay napakahalaga para sa parehong mga user at developer. Sinasaklaw ng araling ito ang mga pangunahing konsepto ng pamamahala at pag-iimbak ng memorya, na sinusuri kung paano ginagamit ng software ang mga mapagkukunang ito.
Sa kaibuturan nito, ang memorya ng computer ay kung saan pansamantalang iniimbak ang data para sa mabilis na pag-access ng processor. Ang mga pangunahing uri ng memorya sa isang computer ay Random Access Memory (RAM) at Read-Only Memory (ROM).
Ang RAM ay pabagu-bago, ibig sabihin ay nagpapanatili lamang ito ng data habang pinapagana. Ang ROM, sa kabilang banda, ay hindi pabagu-bago, nag-iimbak ng mahahalagang data tulad ng firmware ng system na hindi madalas na nagbabago.
Ang pamamahala ng memorya ay ang proseso ng pagkontrol at pag-coordinate ng memorya ng computer, pagtatalaga ng mga bahagi na tinatawag na mga bloke sa iba't ibang tumatakbong mga programa upang ma-optimize ang pangkalahatang pagganap.
Mayroong ilang mga paraan na maaaring maglaan ng memorya ang operating system sa mga program:
Ang dynamic na alokasyon ay maaaring hatiin pa sa stack allocation at heap allocation. Mabilis ang stack allocation ngunit limitado ang laki, habang ang heap allocation ay mas flexible ngunit nangangailangan ng manual na pamamahala sa mga wika tulad ng C at C++.
Ang virtual memory ay isang pamamaraan na nagpapahintulot sa pagpapatupad ng mga proseso na maaaring hindi ganap sa RAM. Pinapalawak nito ang magagamit na memorya sa pamamagitan ng paggamit ng isang bahagi ng hard disk bilang pansamantalang imbakan, o magpalit ng espasyo.
Hinahati ng operating system ang virtual memory sa mga pahina, na ang bawat isa ay maaaring malayang dalhin sa RAM kung kinakailangan. Ang formula para sa pagkalkula ng laki ng virtual memory ay \( \textrm{Virtual Memory} = \textrm{laki ng RAM} + \textrm{Magpalit ng Space} \) .
Sa mga programming language tulad ng Java at Python, ang pamamahala ng memorya ay kadalasang awtomatiko sa pamamagitan ng prosesong tinatawag na pagkolekta ng basura. Awtomatikong kinukuha ng prosesong ito ang memorya na inilaan sa mga bagay na hindi na ginagamit ng programa.
Higit pa sa pansamantalang pag-iimbak ng data sa RAM, kinakailangan ang permanenteng imbakan ng data para sa mga application, file, at mismong operating system. Mayroong dalawang pangunahing uri ng mga storage device:
Ginagamit ang mga file system upang pamahalaan at ayusin ang data na nakaimbak sa mga device na ito. Kasama sa mga karaniwang file system ang FAT32, NTFS para sa Windows, at EXT4 para sa Linux.
Ang data sa isang file system ay nakaayos sa isang hierarchical na istraktura, na nagsisimula sa isang root directory. Ang bawat file o direktoryo ay maaaring magkaroon ng mga katangian tulad ng pangalan, laki, at mga pahintulot.
Ang RAID (Redundant Array of Independent Disks) ay isang teknolohiya na gumagamit ng maramihang storage device bilang iisang storage unit, na nagbibigay ng data redundancy at pinahusay na performance. Mayroong ilang mga antas ng RAID, bawat isa ay nag-aalok ng iba't ibang balanse ng pagganap at kalabisan.
Ang cloud storage ay nagpapahintulot sa mga user na mag-imbak ng data sa mga malalayong server na na-access sa pamamagitan ng internet. Nag-aalok ito ng scalability, redundancy ng data, at kaginhawaan ng pag-access mula sa kahit saan na may koneksyon sa internet.
Ang mahusay na pamamahala ng memorya at wastong mga solusyon sa imbakan ay kritikal para sa maayos na operasyon ng mga computer system. Mula sa pansamantalang pag-iimbak ng data sa RAM hanggang sa pangmatagalang pag-iimbak ng data sa mga SSD at mga serbisyo sa cloud, ang pag-unawa sa mga konseptong ito ay mahalaga para sa pag-navigate sa digital world.