<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Virtual_Memory</id>
	<title>Virtual Memory - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Virtual_Memory"/>
	<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=Virtual_Memory&amp;action=history"/>
	<updated>2026-11-01T19:54:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.haidhi.my.id/wiki/index.php?title=Virtual_Memory&amp;diff=842&amp;oldid=prev</id>
		<title>SanzSkuy at 04:38, 24 August 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=Virtual_Memory&amp;diff=842&amp;oldid=prev"/>
		<updated>2026-08-24T04:38:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:38, 24 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l142&quot;&gt;Line 142:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 142:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Process]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Process]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Threads]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Threads]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[Files]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OS Manages Hardware]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OS Manages Hardware]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[System Call]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[System Call]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[CS:APP]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[CS:APP]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>SanzSkuy</name></author>
	</entry>
	<entry>
		<id>https://wiki.haidhi.my.id/wiki/index.php?title=Virtual_Memory&amp;diff=841&amp;oldid=prev</id>
		<title>SanzSkuy: Created page with &quot;== Ilusi yang dijual ==  &#039;&#039;&#039;Virtual memory&#039;&#039;&#039; adalah abstraksi yang memberi tiap process ilusi bahwa dia &#039;&#039;&#039;punya akses eksklusif ke main memory&#039;&#039;&#039;.  Tiap process melihat memory dengan &#039;&#039;&#039;tampilan yang seragam&#039;&#039;&#039;, dan tampilan itu disebut &#039;&#039;&#039;virtual address space&#039;&#039;&#039;. Seragam artinya: process apa pun, sekecil atau sebesar apa pun, melihat peta memory dengan struktur yang sama persis.  {{Catatan|Struktur pada Figure 1.13 adalah tata letak untuk process Linux. Sistem Unix l...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=Virtual_Memory&amp;diff=841&amp;oldid=prev"/>
		<updated>2026-08-24T04:26:59Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Ilusi yang dijual ==  &amp;#039;&amp;#039;&amp;#039;Virtual memory&amp;#039;&amp;#039;&amp;#039; adalah abstraksi yang memberi tiap process ilusi bahwa dia &amp;#039;&amp;#039;&amp;#039;punya akses eksklusif ke main memory&amp;#039;&amp;#039;&amp;#039;.  Tiap process melihat memory dengan &amp;#039;&amp;#039;&amp;#039;tampilan yang seragam&amp;#039;&amp;#039;&amp;#039;, dan tampilan itu disebut &amp;#039;&amp;#039;&amp;#039;virtual address space&amp;#039;&amp;#039;&amp;#039;. Seragam artinya: process apa pun, sekecil atau sebesar apa pun, melihat peta memory dengan struktur yang sama persis.  {{Catatan|Struktur pada Figure 1.13 adalah tata letak untuk process Linux. Sistem Unix l...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Ilusi yang dijual ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virtual memory&amp;#039;&amp;#039;&amp;#039; adalah abstraksi yang memberi tiap process ilusi bahwa dia &amp;#039;&amp;#039;&amp;#039;punya akses eksklusif ke main memory&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Tiap process melihat memory dengan &amp;#039;&amp;#039;&amp;#039;tampilan yang seragam&amp;#039;&amp;#039;&amp;#039;, dan tampilan itu disebut &amp;#039;&amp;#039;&amp;#039;virtual address space&amp;#039;&amp;#039;&amp;#039;. Seragam artinya: process apa pun, sekecil atau sebesar apa pun, melihat peta memory dengan struktur yang sama persis.&lt;br /&gt;
&lt;br /&gt;
{{Catatan|Struktur pada Figure 1.13 adalah tata letak untuk process Linux. Sistem Unix lain memakai layout yang mirip.}}&lt;br /&gt;
&lt;br /&gt;
== Tata letak ruang alamat ==&lt;br /&gt;
&lt;br /&gt;
Pembagian besarnya cuma dua:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Region paling atas&amp;#039;&amp;#039;&amp;#039; — disediakan untuk code dan data operating system, dan ini &amp;#039;&amp;#039;&amp;#039;sama untuk semua process&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Region bawah&amp;#039;&amp;#039;&amp;#039; — menampung code dan data yang didefinisikan oleh process milik user.&lt;br /&gt;
&lt;br /&gt;
{{Warning|title=Arah alamat|Pada Figure 1.13, &amp;#039;&amp;#039;&amp;#039;alamat bertambah dari bawah ke atas&amp;#039;&amp;#039;&amp;#039;. Angka 0 ada di dasar gambar. Jadi &amp;quot;stack di atas&amp;quot; berarti alamatnya tinggi, dan &amp;quot;heap di bawah&amp;quot; berarti alamatnya rendah. Salah baca arah ini bikin seluruh diagram jadi terbalik maknanya.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                              alamat tinggi&lt;br /&gt;
        +---------------------------------+&lt;br /&gt;
        | Kernel virtual memory           |   &amp;lt;- tidak terlihat oleh user code&lt;br /&gt;
        +---------------------------------+&lt;br /&gt;
        | User stack                      |&lt;br /&gt;
        | (dibuat saat run time)          |&lt;br /&gt;
        |              |                  |&lt;br /&gt;
        |              v   tumbuh turun   |&lt;br /&gt;
        +---------------------------------+&lt;br /&gt;
        |          (ruang kosong)         |&lt;br /&gt;
        +---------------------------------+&lt;br /&gt;
        | Memory-mapped region            |&lt;br /&gt;
        | untuk shared libraries          |   &amp;lt;- di sini fungsi printf berada&lt;br /&gt;
        +---------------------------------+&lt;br /&gt;
        |          (ruang kosong)         |&lt;br /&gt;
        |              ^   tumbuh naik    |&lt;br /&gt;
        +---------------------------------+&lt;br /&gt;
        | Run-time heap                   |&lt;br /&gt;
        | (dibuat oleh malloc)            |&lt;br /&gt;
        +---------------------------------+&lt;br /&gt;
        | Read/write data                 |  \&lt;br /&gt;
        +---------------------------------+   &amp;gt;  dimuat dari file&lt;br /&gt;
        | Read-only code and data         |  /   executable hello&lt;br /&gt;
        +---------------------------------+   &amp;lt;- program start&lt;br /&gt;
        |                                 |&lt;br /&gt;
        +---------------------------------+ 0&lt;br /&gt;
                                              alamat rendah&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Area-area penting ==&lt;br /&gt;
&lt;br /&gt;
Dibahas dari alamat terendah naik ke atas.&lt;br /&gt;
&lt;br /&gt;
=== Program code and data ===&lt;br /&gt;
&lt;br /&gt;
Code dimulai pada &amp;#039;&amp;#039;&amp;#039;alamat tetap yang sama untuk semua process&amp;#039;&amp;#039;&amp;#039;, diikuti lokasi data yang berkorespondensi dengan variabel global C.&lt;br /&gt;
&lt;br /&gt;
Yang khas dari area ini: isinya &amp;#039;&amp;#039;&amp;#039;diinisialisasi langsung dari isi file executable object&amp;#039;&amp;#039;&amp;#039; — dalam contoh kita, file &amp;lt;code&amp;gt;hello&amp;lt;/code&amp;gt;. Jadi area ini bukan dibangun saat runtime, tapi disalin dari file di disk.&lt;br /&gt;
&lt;br /&gt;
Ukurannya &amp;#039;&amp;#039;&amp;#039;tetap begitu process mulai jalan&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Dibahas lebih lanjut di &amp;#039;&amp;#039;&amp;#039;Bab 7&amp;#039;&amp;#039;&amp;#039; (linking dan loading).&lt;br /&gt;
&lt;br /&gt;
=== Heap ===&lt;br /&gt;
&lt;br /&gt;
Langsung menyusul area code dan data. Berbeda dari code dan data yang ukurannya tetap, heap &amp;#039;&amp;#039;&amp;#039;memuai dan menyusut secara dinamis saat run time&amp;#039;&amp;#039;&amp;#039; sebagai akibat pemanggilan rutin pustaka standar C seperti &amp;lt;code&amp;gt;malloc&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dibahas detail di &amp;#039;&amp;#039;&amp;#039;Bab 9&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Shared libraries ===&lt;br /&gt;
&lt;br /&gt;
Berada di &amp;#039;&amp;#039;&amp;#039;sekitar tengah&amp;#039;&amp;#039;&amp;#039; ruang alamat. Menampung code dan data untuk shared library seperti pustaka standar C dan pustaka matematika.&lt;br /&gt;
&lt;br /&gt;
Inilah tempat fungsi &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt; yang dipanggil &amp;lt;code&amp;gt;hello&amp;lt;/code&amp;gt; sebenarnya berada — bukan di dalam executable-nya sendiri.&lt;br /&gt;
&lt;br /&gt;
CS:APP sendiri menyebut konsep shared library ini &amp;#039;&amp;#039;&amp;#039;powerful tapi agak sulit&amp;#039;&amp;#039;&amp;#039;. Mekanismenya dibahas di &amp;#039;&amp;#039;&amp;#039;Bab 7&amp;#039;&amp;#039;&amp;#039; (dynamic linking).&lt;br /&gt;
&lt;br /&gt;
=== User stack ===&lt;br /&gt;
&lt;br /&gt;
Berada di &amp;#039;&amp;#039;&amp;#039;puncak ruang alamat user&amp;#039;&amp;#039;&amp;#039;. Dipakai &amp;#039;&amp;#039;&amp;#039;compiler untuk mengimplementasikan pemanggilan fungsi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Seperti heap, stack juga memuai dan menyusut secara dinamis selama program berjalan:&lt;br /&gt;
&lt;br /&gt;
* tiap kali kita &amp;#039;&amp;#039;&amp;#039;memanggil&amp;#039;&amp;#039;&amp;#039; fungsi → stack &amp;#039;&amp;#039;&amp;#039;tumbuh&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* tiap kali kita &amp;#039;&amp;#039;&amp;#039;return&amp;#039;&amp;#039;&amp;#039; dari fungsi → stack &amp;#039;&amp;#039;&amp;#039;menyusut&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Cara compiler memakai stack dibahas di &amp;#039;&amp;#039;&amp;#039;Bab 3&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Kernel virtual memory ===&lt;br /&gt;
&lt;br /&gt;
Region paling atas, disediakan untuk kernel. Aturannya tegas — program aplikasi &amp;#039;&amp;#039;&amp;#039;tidak diizinkan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* membaca isi area ini&lt;br /&gt;
* menulis ke area ini&lt;br /&gt;
* memanggil langsung fungsi yang didefinisikan di kode kernel&lt;br /&gt;
&lt;br /&gt;
Sebagai gantinya, aplikasi harus &amp;#039;&amp;#039;&amp;#039;meminta kernel&amp;#039;&amp;#039;&amp;#039; untuk melakukan operasi tersebut, yaitu lewat system call. Ini menyambung langsung ke pembahasan di [[Processes]].&lt;br /&gt;
&lt;br /&gt;
== Cara kerjanya ==&lt;br /&gt;
&lt;br /&gt;
Supaya virtual memory bisa bekerja, dibutuhkan &amp;#039;&amp;#039;&amp;#039;interaksi yang rumit antara hardware dan software operating system&amp;#039;&amp;#039;&amp;#039;, termasuk &amp;#039;&amp;#039;&amp;#039;penerjemahan alamat oleh hardware untuk setiap alamat yang dihasilkan processor&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Perhatikan kata &amp;#039;&amp;#039;&amp;#039;setiap&amp;#039;&amp;#039;&amp;#039;. Ini bukan operasi sesekali — tiap kali instruksi menyentuh memory, ada terjemahan alamat virtual ke alamat fisik yang terjadi di hardware.&lt;br /&gt;
&lt;br /&gt;
Ide dasarnya:&lt;br /&gt;
&lt;br /&gt;
# Simpan isi virtual memory sebuah process &amp;#039;&amp;#039;&amp;#039;di disk&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Gunakan &amp;#039;&amp;#039;&amp;#039;main memory sebagai cache untuk disk&amp;#039;&amp;#039;&amp;#039; itu.&lt;br /&gt;
&lt;br /&gt;
{{Catatan|title=Model mental yang terbalik|Poin kedua ini biasanya yang paling mengejutkan. Kita terbiasa berpikir RAM sebagai tempat penyimpanan utama dan disk sebagai cadangan. Virtual memory membalik posisinya: disk adalah tempat data sebenarnya berada, dan RAM cuma lapisan cache yang cepat di depannya. Sudut pandang ini yang bikin konsep page fault jadi masuk akal.}}&lt;br /&gt;
&lt;br /&gt;
Penjelasan lengkapnya, dan kenapa ini begitu penting untuk sistem modern, ada di &amp;#039;&amp;#039;&amp;#039;Bab 9&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Catatan untuk kerja systems ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;quot;Code dimulai pada alamat tetap yang sama&amp;quot; sudah tidak sepenuhnya berlaku.&amp;#039;&amp;#039;&amp;#039; Pernyataan itu benar untuk binary non-PIE. Linux modern mengompilasi binary sebagai PIE dan mengaktifkan &amp;#039;&amp;#039;&amp;#039;ASLR&amp;#039;&amp;#039;&amp;#039;, sehingga alamat basis code, heap, stack, dan shared library diacak tiap kali process dijalankan — sebagai pertahanan terhadap eksploitasi. Cek dengan menjalankan &amp;lt;code&amp;gt;cat /proc/self/maps&amp;lt;/code&amp;gt; dua kali dan bandingkan hasilnya. Untuk debugging bisa dimatikan sementara dengan &amp;lt;code&amp;gt;setarch -R&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Peta ini bisa dilihat langsung.&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;/proc/[pid]/maps&amp;lt;/code&amp;gt; menampilkan seluruh region beserta permission dan file pendukungnya. Ini cara tercepat memverifikasi bahwa Figure 1.13 memang benar-benar ada, bukan sekadar model.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Heap besar tidak selalu lewat heap.&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;malloc&amp;lt;/code&amp;gt; di glibc memakai &amp;lt;code&amp;gt;brk&amp;lt;/code&amp;gt; untuk alokasi kecil, tapi beralih ke &amp;lt;code&amp;gt;mmap&amp;lt;/code&amp;gt; untuk alokasi di atas ambang tertentu (&amp;lt;code&amp;gt;M_MMAP_THRESHOLD&amp;lt;/code&amp;gt;, default sekitar 128 KB). Jadi alokasi besar sebenarnya mendarat di region memory-mapped, bukan di run-time heap.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Stack punya batas keras.&amp;#039;&amp;#039;&amp;#039; Stack memang tumbuh otomatis, tapi hanya sampai &amp;lt;code&amp;gt;RLIMIT_STACK&amp;lt;/code&amp;gt; (umumnya 8 MB). Di bawahnya ada &amp;#039;&amp;#039;guard page&amp;#039;&amp;#039; — menyentuhnya memicu SIGSEGV. Inilah yang terjadi pada rekursi tanpa henti.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Alokasi tidak sama dengan memory fisik.&amp;#039;&amp;#039;&amp;#039; Linux melakukan &amp;#039;&amp;#039;overcommit&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;malloc&amp;lt;/code&amp;gt; yang sukses cuma berarti ruang alamat sudah dicadangkan, halaman fisiknya baru diberikan saat benar-benar disentuh (&amp;#039;&amp;#039;demand paging&amp;#039;&amp;#039;). Konsekuensinya, program bisa mati kena OOM killer di titik penulisan, bukan di titik alokasi.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Terjemahan setiap alamat itu mahal, makanya ada TLB.&amp;#039;&amp;#039;&amp;#039; Karena tiap akses memory butuh penerjemahan, hasil terjemahan di-cache di &amp;#039;&amp;#039;Translation Lookaside Buffer&amp;#039;&amp;#039;. TLB miss adalah biaya nyata di workload dengan pola akses acak, dan itulah alasan &amp;#039;&amp;#039;huge pages&amp;#039;&amp;#039; bisa memberi percepatan besar di aplikasi seperti database dan HPC.&lt;br /&gt;
&lt;br /&gt;
{{Tip|Kalau ingin melihat semua ini bekerja sekaligus: jalankan &amp;lt;code&amp;gt;perf stat -e dTLB-load-misses,page-faults ./program&amp;lt;/code&amp;gt;. Dua angka itu adalah harga langsung dari abstraksi virtual memory.}}&lt;br /&gt;
&lt;br /&gt;
== Istilah kunci ==&lt;br /&gt;
&lt;br /&gt;
; Virtual memory&lt;br /&gt;
: Abstraksi yang memberi tiap process ilusi penggunaan eksklusif atas main memory.&lt;br /&gt;
; Virtual address space&lt;br /&gt;
: Tampilan memory yang seragam yang dilihat tiap process.&lt;br /&gt;
; Heap&lt;br /&gt;
: Area yang memuai dan menyusut dinamis saat run time akibat &amp;lt;code&amp;gt;malloc&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt;.&lt;br /&gt;
; User stack&lt;br /&gt;
: Area di puncak ruang alamat user, dipakai compiler untuk mengimplementasikan pemanggilan fungsi.&lt;br /&gt;
; Shared library&lt;br /&gt;
: Code dan data pustaka bersama seperti libc dan libm, dipetakan di sekitar tengah ruang alamat.&lt;br /&gt;
; Kernel virtual memory&lt;br /&gt;
: Region teratas yang disediakan untuk kernel; tidak boleh dibaca, ditulis, atau dipanggil langsung oleh aplikasi.&lt;br /&gt;
; ASLR&lt;br /&gt;
: Pengacakan alamat basis region saat process dijalankan, sebagai pertahanan keamanan.&lt;br /&gt;
&lt;br /&gt;
== Lihat juga ==&lt;br /&gt;
&lt;br /&gt;
* [[Process]]&lt;br /&gt;
* [[Threads]]&lt;br /&gt;
* [[OS Manages Hardware]]&lt;br /&gt;
* [[System Call]]&lt;br /&gt;
* [[CS:APP]]&lt;/div&gt;</summary>
		<author><name>SanzSkuy</name></author>
	</entry>
</feed>