Virtualisasi

Pengertian

Virtualisasi adalah sebuah metode untuk menyediakan suatu duplikat dari sebuah sistem beserta komponen-komponen perangkat kerasnya. Beberapa guest – profil pengguna dalam suatu sistem – dapat dijalankan dalam satu sistem, dan setiap guest tersebut akan bertindak layaknya sistem operasi native yang memiliki kontrol penuh terhadap semua komponen sistem.

Sedikit Sejarah

Virtualisasi dimulai dari sebuah metode yang digunakan IBM untuk memisahkan para pengguna dengan menyediakan masing-masing pengguna sebuah execution environment (lingunkan eksekusi) pada mainframe IBM. Sekarang, dengan perkembangan dan kemajuan sistem, CPU dalam hal performa, dan teknik-teknik inovatif dalam software, virtualisasi adalah fitur yang sering dijumpai di data center dan bahkan komputer pribadi. Karena popularitas nya, para pengembang CPU menambahkan fitur untuk mendukung virtualisasi. Hal ini diyakini menciptakan snowball effect yang akan terus berkembang seiring perkembangan virtualisasi dan hardware support.

Full-virtualisation dan Paravirtualisation

Virtualisasi memiliki dua jenis utama: full-virtualisation dan paravirtualisation. Konsep full virtualisation awalnya diperkenalkan oleh IBM pada tahun 1966 sebagai solusi software pertama untuk virtualisasi server. Full-virtualisation menggunakan translasi biner dan teknik-teknik pendekatan direct. Dalam full virtualisation, sistem tamu diisolir secara menyeluruh oleh mesin virtual dari virtualisation layer dan hardware. Contoh dari full virtualisation adalah Microsoft dan sistem Parallels.

Sementara itu, paravirtualisation adalah suatu kategori dari virtualisasi CPU yang menggunakan hypercalls untuk operasi-operasi yang mengatur instruksi pada saat waktu compile. Dalam paravirtualisation, sistem tamu tidak terisolir secara penuh namun terisolir secara parsial dari virtualisation layer dan hardware. Contoh dari paravirtualisation adalah WMware dan Xen.

Arsitektur Virtualisasi

Arsitektur virtualisasi adalah sebuah model konseptual yang merinciskan susunan dan hubungan antara komponen-komponen tertentu yang terlibat dalam sesuatu yang bersifat virtual, seperti sistem operasi, server, perangkat penyimpanan, atau netowork resources.

Umumnya, virtualisasi didasari oleh hypervisor. Hypervisor mengisolir sistem operasi dan aplikasi dari perangkat komputer utama agar mesin host dapat menjalankan berbagai mesin virtual sebagai ‘tamu’ yang dapat berbagi resource, seperti siklus prosesor, ruang memori, bandwidth jaringan, dsb.

Hypervisor

Semua mesin virtual memiliki yang namanya hypervisor, atau dalam kata lain virtual machine manager (pengelola mesin sistem). Hypervisor memiliki fungsi untuk membuat dan menjalankan mesin virtual. Hypervisor dibagi menjadi tiga jenis:

  1. Hypervisor tipe 0 – hypervisor ini diterapkan di level perangkat keras dan membutuhkan beberapa modifikasi untuk dilakukan terhadap sistem operasi nya agar dapat beroperasi dengan benar. Hypervisor tipe 0 merupakan sebuah contoh dari paravirtualisasi.
  2. Hypervisor tipe 1 – hypervisor ini menyediakan fitur-fitur beserta environment (lingkungan) yang dibutuhkan untuk membuat, menjalankan, dan mengelola guest virtual machines (mesin-mesin virtual tamu). Setiap tamu memiliki semua perangkat lunak yang umumnya terpasang di suatu sistem native penuh, seperti sistem operasi, driver perangkat, aplikasi, akun pengguna, dll.
  3. Hypervisor tipe 2 – hypervisor ini secara sederhana adalah aplikasi yang berjalan pada sistem operasi lain tanpa mengetahui jika virtualisasi sedang berjalan. Mereka tidak memilki dukungan hardware atau host yang membuatnya harus melakukan semua langkah-langkah virtualisasi sendiri dalam konteks proses.

Hypervisor memanfaatkan dukungan hardware apapun yang disediakan saat mengoptimalkan CPU scheduling, manajemen memori, dan modul I/O demi menyediakan pengguna dengan resource seoptimal mungkin sekaligus menjaga hypervisor nya dari sistem tamunya sendiri dan suatu tamu dengan tamu lain.

Intel VT-x/AMD-V dan Intel VT-d/AMD-Vi

Intel VT-x/AMD-V adalah virtualisasi dari CPU. VT-x/AMD-V memungkinkan mesin virtual tamu untuk berjalan pada level privilege di CPU yang memungkinkan pengoperasian yang baik dan benar. Sedangkan Intel VT-d/AMD-Vi adalah fitur CPU yang memungkinkan virtualisasi dari resource I/O.

Emulasi

Emulasi digunakan saat sistem tamu yang dicompile memiliki arsitektur yang berbeda dari arsitektur sistem host. Setiap instruksi yang ingin dieksekusi oleh sistem tamu harus diterjemahkan terlebih dahulu agar dapat dibaca oleh perangkat keras native milik sistem host. Meskipun metode ini mengorbankan performa, kompromi tersebut terseimbangkan oleh kegunaannya dalam menjalankan program-program lama pada hardware baru yang mungkin tidak kompatibel, seperti menjalankan gim-gim konsol lama pada hardware terbaru.

Menerapkan virtualisasi adalah hal yang susah, apalagi saat dukungan hardware minim. Semakin banyak fitur yang disediakan oleh sistem, semakin mudah virtualisasi untuk diterapkan, dan semakin baik performa dari sistem guest.

Riset saat ini sedang meluaskan penggunaan dari virtualisasi. Unikernel bertujuan untuk meningkatkan efisiensi dan mengurangi permukaan serangan keamanan dengan cara mengcompile suatu aplikasi beserta library dan resource kernelnya menjadi satu bilangan biner dengan satu address space yang berjalan pada suatu mesin virtual. Sementara itu, partitioning hypervisors menyediakan eksekusi aman, operasi real-time, dan fitur-fitur lain yang dulunya hanya ada untuk aplikasi yang berjalan pada dedicated hardware.

Kelebihan dan Kekurangan dari Virtualisasi

Virtualisasi memiliki banyak manfaat:

  1. Penggunaan hardware: server fisik umumya tidak pernah memakan semua kapasitas yang telah diberikannya. Oleh karena itu, virtualisasi dapat mengoptimalkan semua kapasitas hardware agar hardware benar-benar digunakan secara optimal dan efisien.
  2. Manajemen: mesin virtual dapat dibuat dan dikonfigurasi secara otomatis demi mengelola resource pool
  3. Konsumsi energi: karena virtualisasi memungkinkan berbagai aplikasi untuk berjalan pada jumlah hardware yang lebih sedikit, konsumsi energi lebih kecil.
  4. Ruang: Membutuhkan ruang yang lebih sedikit.
  5. Perencaan emergensi: pemindahan mesin virtual dari satu resource pool ke resource pool lain dapat dilakukan.

Namun, virtualisasi juga memiliki beberapa kekurangan:

  1. Biaya implementasi bisa mahal.
  2. Munculnya resiko keamanan yang terjadi karena terbaginya resource dan data suatu host sistem.
  3. Munculnya isu skalabilitas karena banyaknya entiti yang menggunakan resource yang sama.

Green IT dengan Virtualisasi

Data center umumnya menggunakan banyak daya yang jika dibandingkan dapat digunakan untuk menakomodasi kebutuhan energi ribuan rumah. Tingginya penggunaan daya tersebut memaksa pengelola data center dan pecinta lingkungan untuk mencari cara untuk menguranginya. Virtualisasi menjadi kandidat untuk melakukan hal tersebut.

Dalam konteks data center, virtualisasi adalah memasang infrastruktur virtual yang memungkinkan beberapa sistem operasi dan aplikasi untuk berjalan pada jumlah server yang lebih sedikit, yang membantu mengurangi penggunaan energi. Disaat jumlah server berkurang, ukuran bangunan untuk mengakomodasi server pun juga berkurang. Beberapa manfaat dari virtualisasi yang secara langsung memengaruhi efisiensi dan berkontribusi terhadap lingkungan adalah:

  1. Dihapusnya Planned downtime dengan cara memindahkan sebuah mesin virtual dari satu server ke server lain/
  2. Menyeimbangkan secara dinamis workload dalam suatu grup server dan secara otomatis menyediakan failover untuk aplikasi virtual.
  3. Alokasi resource terkelola dan terjaga lebih baik.
  4. Virtualisasi meningkatkan kemampuan grup server untuk berbagi utilitas.
  5. Tingkat penggunaan server dapat meningkat sebanyak 80% dibandingkan dengan 10% atau 15% (yang umumnya terjadi jika tidak menggunakan virtualisasi).

Sistem File — Tanpa Ini, Komputermu Ga Akan Berfungsi

File-System Interface

File adalah sebuah tipe data abstrak berupa serangkaian catatan-catatan logis (logical records) yang didefinisikan and diterapkan oleh suatu sistem operasi. Suatu catatan logis dapat berbentuk byte, sebuah baris, atau elemen data kompleks. Kompatibilitas terhadap jenis-jenis catatan logis biasanya diatur oleh sistem operasinya sendiri. Namun, sistem operasi juga terkadang memberikan peran tersebut ke program-program aplikasi.

Salah satu tugas terpenting sistem operasi adalah untuk memetakan konsep file logis ke perangkat penyimpanan fisik seperti hard disk atau perangkat NVM. Karena ukuran dari catatan fisik tidak selalu sama dengan ukuran catatan logis, konversi dari catatan logis ke catatan fisik terkadang diperlukan. Peran ini terkadang diambil alih seluruhnya oleh sistem operasi atau diberikan kepada program-program aplikasi.

Dalam suatu sistem file, ada baiknya untuk membuat direktori untuk menjaga file-file agar tertata rapi. Sebuah sistem direktori satu tingkat pada sistem multiuser dapat menyebabkan masalah penamaan karena setiap file harus memiliki nama yang unik dan berbeda. Masalah tersebut dapat dipecahkan menggunakan sistem direktori dua tingkat, dimana setiap user dapat membuat direktori sendiri-sendiri.

Sistem direktori dua tingkat umumnya di generalisasikan sebagai direktori dengan struktur pohon. Namun, ada beberapa jenis struktur sistem direktori dua tingkat. Direktori pohon memungkinkan pengguna untuk membuat sub-direktori untuk penataan file. Sedangkan untuk struktur direktori acrylic-graph, pengguna dapat berbagi file dan subdirektori – tetapi perihal pencarian dan penghapusan terbilang rumit. Kemudian, pada struktur direktori general graph, pengguna juga mendapatkan fleksibilitas penuh dalam berbagi file dan direktori. Namun, struktur ini terkadang memerlukan metode garbage collection untuk memulihkan ruang disk yang tidak digunakan.

Sistem file jarak jauh (remote) membawakan tantangan-tantangan tersendiri dalam bidang keandalan, performa, dan keamanan. Sistem informasi terdistribusi bertugas untuk menjaga pengguna, host, dan akses informasi agar klien dan server dapat berbagi informasi tentang kondisi untuk mengelola penggunaan dan akses.

Karena file merupakan mekanisme informasi-penyimpanan utama pada kebanyakan sistem komputer, keamanan file dibutuhkan pada sistem multiuser. Akses ke file dapat dikendalikan secara terpisah untuk setiap jenis akses: read, write, execute, append, delete, list directory, dll. Keamanan file dapat disediakan melalui access lists, kata sandi, dan teknik-teknik lain.

File-System Implementation

Kebanyakan sistem file bersinggah pada tempat penyimpanan sekunder yang dirancang untuk menyimpan data berukuran besar secara permanen. Media penyimpanan sekunder paling umum adalah disk, tetapi akhir-akhir ini, penggunaan perangkat-perangkat NVM juga naik.

Perangkat penyimpanan dibagi menjadi partisi-partisi untuk mengelola penggunaan media dan memungkinkan beberapa sistem file dalam suatu perangkat komputer. Sistem-sistem tersebut dipasang pada arsitektur sistem file logis agar dapat digunakan.

Sistem file umumnya diterapkan dalam struktur berlapis atau modular. Tingkatan-tingkatan bawah dari struktur tersebut mengelola sifat-sifat fisik yang membuat suatu perangkat penyimpanan dan berkomunikasi dengannya. Sedangkan, tingkatan-tingkatan atas mengelola nama-nama file symbolic dan sifat-sfiat logis dari file.

File dalam suatu sistem file dapat dialokasikan ruang dalam tempat penyimpanan melalui tiga cara: contiguous allocation, linked allocation, dan indexed allocation. Contiguous allocation adalah sebuah teknik dimana sebuah file disimpan dalam serangkaian blok yang berdekatan. Linked allocation adalah sebuah teknik dimana setiap file adalah sebuah linked list dari kumpulan blok dalam disk. Perlu dicatat bahwa blok disini tidak perlu berdekatan seperti halnya dalam contiguous allocation. Indexed allocation adalah sebuah teknik dimana sebuah file memiliki yang namanya index blok, yaitu sebuah blok yang berisi pointers ke semua blok-blok yang digunakan untuk menyimpan file tersebut.

Metode alokasi ruang kosong juga mempengaruhi efisiensi penggunaan disk, performa sistem file, dan keandalan penyimpanan sekunder. Metode-metode yang digunakan meliputi bit vectors dan linked list. Optimisasi yang dapat dilakukan adalah melalui grouping, counting, dan tabel alokasi file yang menaruh linked list dalam area-area yang saling berdekatan.

Praktek-praktek manajemen direktori harus mempertimbangkan efisiensi, performa, dan keandalan. Salah satu metode yang umumnya digunakan adalah tabel hash karena performa nya yang cepat dan efisien. Namun, kerusakan pada tabel atau sistem crash dapat menimbulkan ketidakkonsistenan (ketidaksamaan) antara informasi direktori dan konten disk.

Pengecek konsistensi dapat digunakan untuk memperbaiki struktur sistem file yang rusak. Alat-alat pemulihan yang disediakan oleh sistem operasi memungkinkan data untuk disalin ke pita magnetik atau perangkat penyimpanan lain. Hal ini memungkinkan pengguna untuk memulihkan data-data yang hilang yang disebabkan oleh kegagalan hardware, bug pada sistem operasi, atau kesalahan pengguna.

Karena sistem file memiliki peran yang sangat mendasar dalam pengoperasian sebuah sistem, performa dan keandalan dari suatu sistem file amatlah penting. Teknik-teknik seperti struktur log dan caching dapat membantu performa, sedangkan log struktur dan RAID dapat membantu keandalan. Salah satu contoh optimisasi performa adalah dengan menggunakan sistem file WAFL.

File-System Internals

Sistem operasi general-purpose menyediakan banyak jenis sistem file, dari jenis-jenis umum hingga jenis-jenis yang memiliki tujuan tertentu. Volumes yang berisi sistem-sistem file dapat di mount (dipasang) ke ruang sistem file suatu komputer. Tergantung sistem operasinya, ruang sistem file dapat bersifat seamless atau mulus (sistem file yang dipasang terintegrasi ke struktur direktori), atau distinct atau terpisah (setiap sistem file yang terpasang memiliki tempat tersendiri).

Setidaknya satu sistem file harus dapat dinyalakan agar sistem dapat berjalan. Dalam kata lain, sistem file tersebut harus berisi sebuah sistem operasi. Saat proses boot up, bootloader dijalankan terlebih dahulu. Bootloader adalah sebuah program yang bertugas untuk mencari kode kernel pada sistem file untuk memuatnya dan lalu mengeksekusinya. Sebuah sistem dapat memiliki beberapa partisi bootable, memungkinkan admin untuk memilih partisi mana yang ingin dinyalakan.

Kebanyakan sistem bersifat multiuser yang berarti sistem tersebut harus menyediakan metode untuk berbagi file dan keamanan file. Umumnya, file dan direktori meliputi metadata seperti pemilik, pengguna, dan izin akses grup.

Partisi penyimpanan massal digunakan sebagai blok I/O mentah atau sistem file. Setiap sistem file bersinggah di sebuah volume yang terdiri dari satu partisi atau lebih yang bekerja sama melalui volume manager.

Untuk menyederhanakan penerapan sekumpulan sistem file, sebuah sistem operasi dapat menggunakan pendekatan bertingkat (layered approach) dengan bantuan dari suatu sistem file virtual yang memungkinkan akses ke suatu sistem file yang berbeda terasa mulus.

Sistem file jarak jauh (remote) dapat diterapkan melalui program seperti ftp atau model client-server yang terdapat di internet. Permintaan pemasangan (mount request) dan ID pengguna harus diotentikasi untuk mencegah akses yang tidak dizinkan.

Fasilitas client-server secara native tidak punya kemampuan untuk berbagi informasi. Tetapi, sistem informasi terdistribusi seperti DNS dapat digunakan untuk memungkinkan file sharing. Mereka menyediakan ruang username, manajemen kata sandi, dan identifikasi sistem. Sebagai contoh, Microsoft CIFS menggunakan direktori aktif yang memanfaatkan sebuah versi dari protokol otentikasi jaringan Kerberos untuk menyediakan suatu set penuh yang berisi nama dan servis otentikasi diantara komputer dalam suatu jaringan. Setelah file sharing dapat dilakukan, sebuah model semantik konsistensi harus diterapkan untuk mengatur sekumpulan akses konkuren terhadap file yang sama. Model semantik meliputi UNIX, session, dan immutable-shared-files semantics.

NFS adalah sebuah contoh dari sistem file jarak jauh. NFS menyediakan akses mulus terhadap direktori, file, dan juga seluruh sistem file. Sebuah sistem file jarak jauh dengan fitur yang melimpah umumnya memiliki prokol komunikasi dengan operasi jarak jauh dan juga penerjemah path-name.

File-System: Linux vs Windows

Linux

Linux mendukung lebih dari 12 sistem file dengan teknologi NFS. Saat kode sistem operasinya terhubung, sistem file defaultnya harus ditentukan. Sistem file lainnya dapat dipanggil secara dinamis tergantung kebutuhan. Umumnya, sistem file ext menjadi pilihan terpopuler. Sistem tersebut mirip dengan sistem file Berkeley.

Sistem file ext mengasumsikan bahwa disk dimulai dari boot block. Disk tersebut terbuat dari serangkaian blockgroup yang dinomorkan secara sekuensial dan mengandung beberapa subfield. Organsiasi sistem dapat dipahami menggunakan gambar dibawah:

Detail setiap subfieild adalah sebagai berikut:

  1. Super Block – menentukan jumlah blok, i-nodes, ukuran blok, dll.
  2. Group Description – mengandung informasi tentang lokasi bitmap, jumlah blok kosong, i-nodes, direktori pada group, dll.
  3. Block Bitmap – mengandung sebuah list dari semua blok kosong
  4. I-node Bitmap – mengandung sebuah list dari semua i-node kosong
  5. I-node – memiliki panjang sebesar 128 byte.

Linux mendukung jenis file berikut:

  1. Direktori – seperti folder
  2. Ordinary File – file umum
  3. Symbolic link – suatu link ke file lain
  4. Special File – driver perangkat
  5. Named  Pipe – saluran antara dua proses atau lebih untuk pertukaran data

Windows

Windows 2000 (W2K) mendukung beberapa jenis sistem file termasuk tabel alokasi file (FAT) yang berjalan pada Windows 95, MS-DOS, dan OS/2. Namun, para pengembang W2K juga merancang sistem file baru, yaitu NTFS yang ditujukan untuk memenuhi kebutuhan high-end dari server dan workstation. Contoh dari aplikasi high-end adalah:

  1. Aplikasi client-server
  2. Aplikasi ilmiah dan teknik yang memerlukan banyak resource
  3. Aplikasi jaringan untuk sistem korporasi besar.

NTFS sendiri adalah sistem file yang andal, yang dibangun dengan dasar sistem file yang sederhana. Fitur-fitur penting dari NTFS meliputi: recoverability, security, large disks and files, multiple data streams, dan general indexing facility.

Berpikir Seperti Komputer

Apa yang dimaksud dengan berpikir komputasi?

Yang dimaksud dengan berpikir komputasi adalah berpikir layaknya komputer. Secara terminologi, berpikir komputasi adalah istilah yang digunakan untuk menjelaskan keahlian-keahlian yang dibutuhkan di dunia perkomputeran, programming, dan digital. Nah, sebelum kita menyelesaikan masalah menggunakan komputer, ada baiknya kita memecah masalah tersebut menjadi bagian-bagian kecil dan mencari pendekatan yang cocok.

Disinilah, berpikir komputasi bermain peran. Teknik-teknik dan metode-metode berpikir komputasi memiliki peran penting dalam merumuskan sebuah masalah dan mengekspresikan suatu solusi agar dapat di selesaikan oleh komputer secara efektif.

Bidang berpikir komputasi sendiri mencakup banyak topik dan pembahasan. Namun, terdapat empat prinsip dasar yang bertindak sebagai landasan. Empat prinsip tersebut adalah: dekomposisi, rekognisi pola, abstraksi, dan algoritma.

4 Cornerstone dalam Berpikir Komputasi

Dekomposisi

Dekomposisi adalah proses pemecahan suatu masalah yang kompleks menjadi serangkaian masalah-masalah yang lebih sederhana. Setiap ‘sub-masalah’ tersebut lalu dapat diselesaikan masing-masing, yang membuat menyelesaikan masalah di awal menjadi lebih mudah.

            Saat mengembangkan kode untuk sebuah masalah atau proyek yang besar dan kompleks, dekomposisi dapat digunakan untuk memecah kode yang akan diketik menjadi bagian-bagian kecil yang dapat dikerjakan agar tidak kewalahan. Bagian-bagian ini umumnya diselesaikan menggunakan subroutine, yaitu serangkaian kode yang fokusnya hanya untuk menyelesaikan satu jenis masalah. Setelah subroutine dibuat, mereka dapat dipergunakan untuk menyelesaikan masalah-masalah yang mirip pada proyek-proyek lain. Selain itu, dekomposisi juga membantu dalam mendeteksi eror dan proses debugging dikarenakan pemecahan masalah yang dapat mengisolir kesalahan-kesalahan kode.

Contoh Teknik Dekomposisi

Di dalam dekomposisi sendiri terdapat berbagai pendekatan. Salah satunya adalah pendekatan top-down, dimana kita melihat masalah secara menyeluruh terlebih dahulu dan mengidentifikasi komponen-komponen dasarnya. Lalu, kita secara sistematis menganalisa komponen-komponen tersebut lebih lanjut hingga kita menemukan komponen-komponen yang dapat digunakan sebagai pembangun terhadap solusinya. Kemudian, kita akan memperlakukan komponen-komponen ini sebagai modul-modul tersendiri yang dapat diimplementasikan menggunakan berbagai metode, seperti classes atau subroutines.

Selain pendekatan top-down, ada juga yang namanya pendekatan divide and conquer. Pendekatan ini menangani suatu masalah dengan menggunakan rekursi untuk terus membagi suatu masalah menjadi masalah-masalah kecil yang seragam/mirip hingga suatu base-case (masalah yang sangat mudah untuk diselesaikan) tercapai. Lalu, setiap masalah-masalah kecil tersebut digabungkan untuk membentuk solusi terhadap masalah di awal tadi. Pendekatan ini sangat umum digunakan pada algoritma pencarian, penyortiran, dan pathfinding.

Rekognisi Pola

Rekognisi pola adalah kemampuan untuk mencari pola-pola atau tema-tema yang sering muncul dalam suatu masalah. Saat kita ingin memecah suatu masalah menjadi masalah-masalah kecil, kita mungkin dapat melihat suatu pola yang nantinya akan membantu kita menyelesaikan masalah tersebut. Prinsip ini juga kadang disebut sebagai generalisasi.

Saat kita ingin mencari suatu pola, kita harus:

  • Mencari kesamaan atau sifat-sifat yang sering muncul/mirip pada masalah
  • Melihat pola apapun pada masalah

Mengidentifikasi kesamaan dan pola-pola dapat membantu kita membuat suatu solusi yang dapat diterapkan secara berulang-ulang. Suatu masalah kompleks menjadi lebih mudah untuk diselesaikan saat ia memiliki pola-pola yang sama, yang memungkinkan kita untuk menyelesaikannya dengan lebih efisien.

Abstraksi

Abstraksi merupakan sebuah skill yang selalu digunakan oleh para developers. Abstraksi adalah menghilangkan kompleksitas suatu masalah dengan cara menyembunyikan detail latar belakang dan menghapus informasi-informasi yang tidak diperlukan.

Abstraksi memungkinkan para developer untuk fokus ke hal-hal yang penting dari suatu masalah untuk merumuskan suatu solusi. Dengan ini, masalah-masalah besar dapat disederhanakan dan lebih mudah untuk dipahami. Intinya adalah, saat kita mengabstraksi sesuatu, kita hanya fokus ke hal-hal yang penting saja.

Jenis-Jenis Abstraksi

  • Abstraksi menggunakan representasi

Representational abstraction adalah teknik abstraksi yang dilakukan dengan cara menghapus detail-detail yang tidak diperlukan. Contoh dari teknik ini adalah peta jalur transportasi umum suatu kota seperti The London Tube Map, dimana hanya nama pemberhentian dan jalur kereta yang ditampilkan.

  • Abstraksi menggunakan generalisasi

Abstraction by generalisation merupakan teknik dasar yang sangat sering digunakan dalam pemrograman berbasis objek. Contohnya, kita ingin membuat kelas untuk jenis-jenis spesies kucing. Setiap spesies kucing memiliki karakteristik tersendiri, namun ada pula karakteristik umum yang dimiliki oleh setiap kucing, seperti berkaki empat, memiliki kumis, dan bersuara meow.

  • Abstraksi dengan menyembunyikan informasi

Information hiding adalah konsep esensial di dunia perkomputeran. Ambil sistem operasi sebagai contoh. Sistem operasi menyembunyikan kompleksitasnya melalui interface untuk pengguna. Jadi, sebagai pengguna, kita tidak perlu khawatir tentang bagaimana komputer mengeksekusi sebuah program atau menyalin sebuah file. Kita hanya perlu menggunakan opsi yang sudah disediakan dalam interface tersebut.

  • Abstraksi prosedural

Abstraksi prosedural adalah proses membuat prosedur terabstraksi yang tergenenalisir sebaik mungkin. Contohnya, kita ingin membuat prosedur untuk menghitung luas suatu talenan. Kita dapat mulai dari prosedur dibawah:

Prosedur tersebut dapat disederhanakan lebih lanjut dengan mengurangi jumlah variabel yang digunakan:

Lalu, prosedur tersebut dapat digeneralisir agar dapat menghitung luas dari semua bangun persegi panjang:

  • Abstraksi fungsional

Dalam abstraksi fungsional, detail penerapan dari suatu metode komputasi disembunyikan. Kita bisa ibaratkan suatu fungsi layaknya sebuah kotak hitam. Fungsi tersebut menerima sederet input yang akan diproses untuk mengasilkan suatu output. Sebagai pengguna, kita tidak perlu tahu detail proses fungsi tersebut.

  • Abstraksi data

Abstraksi data adalah teknik yang memungkinkan pemisahan antara bagaimana suatu objek data gabungan dibuat dari detail pembuatannya. Hal ini penting saat menangani struktur-struktur data yang kompleks agar kita tidak terlalu mengkhawatirkan bagaimana struktur data tersebut diterapkan.

  • Problem reduction

Reduksi masalah adalah proses generalisasi atau mereduksi (mengurangi) masalah menjadi suatu masalah yang sudah pernah diselesaikan sebelumnya.

Berpikir Algoritmik

Sebelum mengenal prinsip berpikir algoritmik, mari kita pahami apa itu algoritma terlebih dahulu. Secara sederhana, algoritma adalah sekumpulan langkah-langkah saksama yang saat dieksekusi akan menyelesaikan suatu masalah. Langkah-langkah tersebut harus kelas, tidak ambigu, dan mudah untuk diikuti agar mereka dapat direplikasi oleh siapapun.

Lalu, apa itu berpikir algoritmik? Berpikir algoritmik adalah proses pengembangan suatu algoritma untuk menyelesaikan suatu masalah. Untuk dapat berpikir secara algoritmik, kita harus mampu mengidentifikasi komponen-komponen pembangun dari suatu masalah, lalu menjabarkan langkah-langkah secara spesifik untuk menghasilkan suatu solusi. Algoritma yang baik adalah algoritma yang menjabarkan semua langkah secara jelas dan saksama yang dapat direplikasi berulang-ulang.

Manajemen Memori — Buat Apa Sih?

Tujuan computer adalah mengeksekusi program. Untuk melakukan ini, program-program beserta data yang dibutuhkannya harus berada di dalam memori utama saat proses eksekusi berlangsung. Maka dari itu, memori utama harus dikelola dengan baik demi memaksimalkan pengoperasian komputer.

Oleh karena itu, manajemen memori memiliki peran penting dalam komputer. Komputer modern dapat menjalankan banyak proses dalam sewaktu-waktu. Manajemen memori yang baik pun diperlukan untuk mengatur sumber daya untuk dapat dialokasikan ke proses-proses tersebut. Selain itu, manajemen memori juga dapat membantu komputer mengatasi keterbatasan memori fisiknya. Manajemen memori yang baik dapat memprioritaskan proses mana yang perlu alokasi memori.

Fungsi manajemen memori secara umum pun dapat diklasifikasikan menjadi poin-poin berikut:

  • Pengelolaan informasi memori – mengidentifikasi memori yang tidak terpakai dan yang terpakai.
  • Alokasi memori – memutuskan proses-proses yang pantas untuk dimasukkan ke dalam memori, dan proses-proses yang tidak lagi memerlukan memori.
  • Mengelola proses swapping antara disk dan memori

Monoprogramming dan Multiprogramming

Di dalam bidang sistem operasi terdapat dua konsep manajemen memori dasar: monoprogramming dan multiprogramming. Monoprogramming merupakan teknik manajemen memori yang paling sederhana. Komputer hanya mengijinkan satu proses dalam memori pada suatu waktu, dimana proses tersebut menggunakan semua memori (atau resource) yang ada. Jika terdapat beberapa proses yang perlu dieksekusi, komputer akan mengalokasikan memori secara berurutan.

Multiprogramming merupakan kebalikan dari monoprogramming. Dalam suatu sistem yang menggunakan multiprogramming, memori utama dapat memuat banyak program dan mengeksekusi program-program tersebut secara bersamaan. Sistem operasi yang menggunakan teknik multiprogramming juga menggunakan yang Namanya context switching, dimana program-program yang berjalan diberi waktu yang cukup di dalam memori guna meminimalisir memory overload.

Di dunia kita saat ini, hampir semua perangkat yang memiliki sistem operasi menggunakan multiprogramming. Hal ini dikarenakan kemampuan multiprogramming untuk menjalankan banyak proses secara bersamaan dan utilisasi sumber daya yang efisien.

Swapping

Swapping merupakan suatu teknik dimana suatu proses (atau bagian dari proses) ditukar dengan proses lain secara sementara. Proses yang ditukar ditaruh ke dalam suatu backing store seperti disk sebelum dibawa kembali ke memori utama. Dengan swapping, komputer dapat menggunakan memori lebih dari total kapasitas memori utama.

Swapping pun memiliki beberapa jenis. Standard Swapping melibatkan pertukaran proses secara menyeluruh antara memori utama dan tempat penyimpanan. Tetapi, teknik tersebut sudah jarang digunakan oleh SO-SO modern, dimana mereka menggunakan Swapping with paging (atau paging) yang melibatkan hanya sebuah page (bagian) dari proses untuk dipindahkan dari memori utama dan tempat penyimpanan dan sebaliknya.

Lain lagi halnya dengan proses swapping di perangkat mobile. iOS melakukan swapping dengan cara meminta suatu aplikasi untuk menyerahkan memori untuk aplikasi lain. Data aplikasi tersebut lalu dipindahkan ke flash memory untuk menunggu dipanggil lagi. Jika aplikasi menolak permintaan untuk menyerahkan memori, sistem akan mematikan secara paksa palikasi tersebut. Android pun menggunakan teknik yang mirip. Bedanya, sebelum mematikan suatu aplikasi secara paksa, Android menyimpan application state ke flash memori agar bisa dimuat ulang dengan cepat.

Partisi Statis dan Partisi Dinamis

Memori dapat dibagi menjadi beberapa bagian yang disebut sebagai partisi. Proses pemartisian memori dapat dibagi menjadi dua: partisi statis dan partisi dinamis.

Partisi statis adalah pemecahan memori menjadi beberapa partisi yang kapasitasnya tidak dapat diubah setelah proses pemartisian selesai. Setiap partisi dapat memiliki kapasitas yang sama ataupun berbeda, tergantung dengan kebutuhan pengguna. Di sisi lain, partisi dinamis adalah pemecahan memori menjadi beberapa partisi yang kapasitasnya dapat berubah setelah proses pemartisian selesai. Tidak hanya kapasitas partisi yang dapat berubah, partisi dinamis juga memungkinkan untuk lokasi, jumlah, dan ukuran proses untuk berubah sepanjang waktu.

Setiap metode partisi memiliki kelebihan dan kelemahannya tersendiri. Karena kapasitas partisi statis tidak dapat diubah, ada kemungkinan pemborosan memori saat tidak semua memori dalam partisi tersebut digunakan. Kejadian tersebut disebut fragmentasi. Fragmentasi pun dapat dibagi menjadi dua: fragmentasi internal (yang sudah dijelaskan diatas) dan eksternal – dimana kapasitas partisi terlalu kecil untuk proses yang menunggu di antrian. Tetapi, karena ketetapan kapasitas dan lokasi partisi, proses alokasi dan dealokasi memori menjadi lebih mudah.

Sedangkan untuk partisi dinamis, karena sifatnya dimana lokasi, ukuran, dan jumlah proses yang dapat berubah-ubah sepanjang waktu, proses alokasi dan dealokasi memori menjadi lebih susah. Lubang-lubang kecil memori pun dapat bermunculan di antara partisi-partisi yang dipakai. Tetapi, partisi dinamis lebih superior dalam hal memory utilization karena minimya terjadinya fragmentasi.

Alokasi Memori

Sebelumnya, sudah banyak disebutkan istilah alokasi memori. Namun, kita belum benar-benar membahas apa itu alokasi memori. Alokasi memori adalah suatu proses dimana proses diberikan suatu blok memori (disebut juga lubang) dengan ukuran yang cukup untuk memuat proses tersebut. Ada banyak strategi untuk melakukan hal tersebut, diantaranya:

First Fit & Next Fit

Komputer akan mencari lubang kosong pertama dengan ukuran yang sama atau lebih (dari ukuran proses). Proses pencarian dimulai dari urutan paling awal. Strategi tersebut disebut juga first fit. Proses pencarian pun juga dapat dimulai dari titik dimana proses pencarian sebelumnya berakhir, yang dimana proses ini disebut sebagai next fit.

Best Fit

Komputer akan mencari lubang kosong dengan ukuran terkecil yang mencukupi suatu proses. Strategi ini memerlukan pencarian seluruh list lubang-lubang, kecuali list tersebut sudah diurutkan sesuai ukuran. Strategi ini juga menghasilkan lubang sisa terkecil.

Worst Fit

Komputer akan mencari lubang kosong dengan ukuran terbesar yang mencukupi suatu proses. Strategi ini memerlukan pencarian seluruh list lubang-lubang, kecuali list tersebut sudah diurutkan sesuai ukuran. Strategi ini juga menghasilkan lubang sisa terbesar, yang mungkin dapat menjadi lebih berguna dibandingkan lubang sisa kecil dari strategi best fit.

Sistem Buddy

Sistem buddy merupakan strategi alokasi memori dimana komputer menggunakan suatu lubang yang ukurannya mencukupi suatu proses, tetapi ukuran lubang tersebut hanya dapat memiliki ukuran dimana angkanya merupakan kepangkatan dari dua.

Cara kerja sistem buddy adalah sebagai berikut. Misalnya, sistem meminta memori sebanyak 21 kB dari memori yang berukuran 256 kB. Memori tersebut akan dibagi dua terus menerus, hingga ada lubang yang ukurannya mencukupi permintaan sistem.

Proses pemecahan akan berhenti di lubang-lubang yang berukuran 32 kB karena pemecahan selanjutnya adalah lubang-lubang yang berukuran 16 kB (tidak cukup untuk memenuhi permintaan sistem yaitu 21 kB).

Selanjutnya, jika setelah proses pemecahan sistem meminta memori sebanyak (contohnya) 47 kB, lubang-lubang yang berukuran 32kB dapat dengan mudah digabungkan untuk menmbentuk lubang 64 kB yang akan mengakomodasi permintaan 47kB dari sistem. Proses tersebut disebut juga sebagai coalescing.

Memori Virtual & Overlay

Memori virtual merupakan sebuah teknik pengabstrakan memori yang dapat mengabstrakan memori utama menjadi suatu array (rangkaian) memori, yang dapat memisah memori logika dan memori fisik. Memori virtual juga dapat memungkinkan pengeksekusian suatu proses yang tidak seluruhnya berada di dalam memori. Dengan ini, program yang akan dieksekusi dapat memiliki ukuran yang lebih besar dari ukuran memori fisik.

Contohnya, suatu mesin dengan memori 2 kB ingin menjalankan program sebesar 10 kB. Pertama-tama, program tersebut dipecah menjadi proses-proses yang berukuran 2 kB. Proses pemecahan program ini disebut overlay. Overlay pun dilakukan secara hati-hati agar pemecahan program tidak merusak integritas program. Pengeksekusian proses-proses tersebut pun dibantu dengan proses swapping agar program dapat berjalan dengan normal.

Konsep Dasar Sistem Operasi

Structure of a computer system

Suatu sistem komputer memiliki 4 bagian utama:

Hardware (Perangkat Keras)

Hardware atau perangkat keras merupakan komponen fisik dari sebuah komputer. Hardware terdiri dari perifal-perifal seperti mouse, keyboard, monitor, dll.

OS (Sistem Operasi)

OS atau sistem operasi merupakan program yang bekerja untuk mengontrol dan mengoordinasikan penggunaan hardware oleh program (di bahas lebih lanjut di bawah).

Program

Kumpulan instruksi yang jika dieksekusi akan menyelesaikan suatu permasalahan.

User (Pengguna)

Kita sebagai manusia termasuk pengguna komputer. Contoh lain adalah bot atau komputer jarak jauh.

What is an operating system?

Sistem operasi (Operating System dalam bahasa Inggris atau OS) adalah sebuah program yang berperan sebagai penghubung antara pengguna dan komputer, dimana yang dimaksud dengan komputer adalah komponen perangkat keras (hardware) dari komputer. OS adalah program yang di eksekusi paling pertama saat komputer di boot-up.

Tujuan OS adalah abstraksi. Bayangkan sebuah komputer tanpa sistem operasi. Kita sebagai pengguna harus mengatur semua aspek secara manual. Contohnya, kita harus membuat sendiri program untuk mengendalikan kursor mouse. Kita harus mengecek apakah mouse sudah terpasang, lalu mendeteksi sinyal-sinyal yang dihasilkan oleh mouse, menerima input-input dari pengguna seperti klik atau scroll, dkk. Cukup rumit kan? Dengan adanya OS, semua hal tersebut bisa di atasi oleh OS sehingga kita sebagai pengguna dapat fokus ke menggunakan komputer secara nyaman. Maka dari itu, OS mengabstraksi semua proses-proses yang terjadi behind the scene agar pengguna dapat mengoperasikan komputer dengan nyaman dan lancar.

What does it do?

Secara sederhana, fungsi OS adalah sebagai berikut:

  1. OS mengeloloa hubungan antara perangkat lunak dan keras
  2. OS memungkinkan program untuk jalan tanpa perlu mengetahui hikuk pikuk perangkat keras.

OS adalah ibarat orang tua yang baik. Setiap aspek dari sebuah komputer – program, perangkat lunak dan keras – berlomba-lomba untuk mendapatkan tempat di CPU agar bisa berjalan dengan baik. Disini lah OS turun tangan. OS, layaknya orang tua yang baik, mengatur semua aspek-aspek diatas agar dapat mendapatkan resource yang cukup (tidak lebih, tidak kurang) untuk jalan. OS juga bekerja untuk memaksimalkan resource yang ada (yang pasti selalu terbatas) agar semua kebutuhan program terlayani dan tercukupi.

Selain itu, OS juga memiliki tanggung jawab untuk menyediakan user interface yang konsisten. Yang dimaksud dengan konsisten disini adalah kewajiban OS untuk dapat menampilkan user interface yang sama di perangkat yang berbeda. Hal ini di tujukan agar program-program tetap bisa jalan jika ada pembaharuan perangkat lunak maupun keras.

Di sebuah komputer, OS bekerja sebagai berikut:

  1. Saat komputer pertama kali di hidupkan, sebuah program beristilah boot ROM akan di eksekusi (contoh: BIOS, UEFI).
  2. Boot ROM tersebut mendeteksi dan menginisiasi semua perangkat I/O yang terhubung ke komputer tersebut, lalu menjalankan program yang beristilah bootloader.
  3. Bootloader tersebut lalu mencari file kode OS yang nantinya akan dimuat ke memori untuk dieksekusi.

Tugas OS pun bisa digeneralisir menjadi bagian-bagian berikut:

  • Processor management
  • Memory management
  • Device management
  • Storage management
  • Application interface
  • User interface
  • System security management

Maka dari itu, bisa di simpulkan bahwa OS adalah resource allocator dan juga control program.

Types of and Examples of an OS

Real-time Operating System (RTOS)

RTOS atau sistem operasi waktu nyata adalah OS yang digunakan untuk mengontrol perangkat-perangkat ilmiah dan industri yang membutuhkan presisi dalam waktu eksekusi. Contoh: sistem kontrol lalu lintas penerbangan.

Single-user, Single Task

OS ini di rancang untuk mengelola resource komputer agar pengguna dapat menggunakannya untuk melakukan satu tugas dalam satu waktu secara efektif. Contoh dari OS ini adalah MS-DOS.

Single-user, Multitask

Jika single-user, single task hanya dapat melakukan satu tugas di satu waktu, OS single-user, multitask dapat menjalankan berbagai tugas bersamaan. OS ini pun menjadi jenis yang paling umum di kehidupan sehari-hari. Contoh: Windows, macOS.

Multiuser

Multiuser OS memungkinkan beberapa pengguna untuk menggunakan resource sebuah komputer secara bersamaan. Oleh karena itu, OS ini harus dapat membagi resource dengan maksimal agar setiap pengguna tercukupi. Contoh: Unix, VMS, dan mainframe OS.

Distributed

Distributed OS mengelola beberapa komputer secara bersamaan. Daripada menggunakan suatu komputer besar untuk menyalahkan suatu masalah besar, OS ini memecahkan masalah tersebut menjadi bagian-bagian kecil yang dapat diselesaikan oleh berbagai komputer. Contoh: pusat server.

Serba-Serbi Virtual Memori

Secara singkat, virtual memory adalah suatu teknik yang memungkinkan pengeksekusian proses-proses yang tidak perlu sepenuhnya berada di dalam memori. Virtual Memory melakukan hal tersebut dengan cara mengabstrak memori fisik menjadi rangkaian-rangkaian penyimpanan yang sangat besar dan seragam.

Kelebihan Virtual Memory adalah sebagai berikut:

  1. program/proses yang ingin dijalankan dapat memiliki ukuran yang lebih besar dari memori fisik;
  2. suatu program/proses tidak perlu berada di dalam memori secara menyeluruh;
  3. proses-proses dapat berbagi memor; dan
  4. proses-proses dapat dibuat secara lebih efisien

Demand Paging

Demand paging adalah suatu teknik dimana page (blok virtual memori yang berdekatan dengan ukuran tetap) hanya akan dimuat jika dibutuhkan saat program dieksekusi. Hal ini membuat page yang tidak dibutuhkan tidak pernah dimuat ke memori utama. Ini mengakibatkan beberapa page untuk bersinggah di memori utama sedangkan page yang lain tetap berada di tempat penyimpanan sekunder.

Dalam demand paging terdapat yang namanya page fault, dimana page yang tidak sedang berada di dalam memori utama diakses oleh program yang sedang dieksekusi. Akibatnya, page tersebut harus dipindah dari tempat penyimpanan sekunder ke suatu page frame (tempat dimana suatu page bersinggah di memori utama) yang kosong.

Copy-on-write

Copy-on-write adalah suatu teknik yang memungkinkan suatu proses anak untuk berbagi address space yang sama dengan proses orangtuanya.  Jika di antaranya mencoba untuk menulis (dalam kata lain memodifikasi) sebuah page, salinan dari page tersebut akan dibuat.

Page Replacement

Saat memori kosong mulai menipis, sebuah algoritma page replacement akan berjalan untuk memilih suatu page yang sudah terdapat di memori untuk digantikan oleh page baru. Beberapa contoh algoritma page replacement:

  1. FIFO (first in, first out) – menggantikan sebuah page dengan page tertua dalam antrian.
  2. Optimal – menggantikan sebuah page yang dikiranya tidak akan digunakan dalam jangka waktu yang lama.
  3. LRU (least recently used) – menggantikan sebuah page dengan page yang sudah paling lama tidak digunakan.

Perlu diketahui bahwa algoritma LRU murni jarang digunakan karena penerapannya yang tidak praktis. Kebanyakan sistem menggunakan algoritma LRU-approximation, yang menggunakan bantuan dari reference bit dari sebuah page untuk menghemat penggunaan memori.

Algoritma-algoritma page replacement juga dapat dikategorikan menjadi dua:

  • Global page-replacement – algoritma akan memilih sebuah page dari proses yang berada dimanapun dalam sistem;
  • Local page-replacement – algoritma akan memilih sebuah page dari proses yang sedang dioperasikan.

Allocation of Frames

Setiap proses perlu dialokasikan sebuah frame (blok memori di memori fisik yang berukuran tetap). Ada banyak strategi untuk melakukan pengalokasian yang optimal. Pendekatan-pendekatan pengalokasian frame dapat ditinjau dari penggunaan jumlah frame seminimal mungkin, penggunaan algoritma-algoritma pengalokasian, dan pengalokasian lokal dan global.

Thrashing

Thrashing adalah kejadian dimana sistem menghabiskan lebih banyak waktu dalam melakukan paging daripada mengekseksui suatu proses/program. Umumnya, thrashing terjadi saat suatu proses yang sedang dieksekusi tidak memiliki frame yang cukup.

Pencegahan thrashing dapat dimulai dari seberapa banyak frame yang sedang digunakan oleh suatu proses. Pendekatan ini mendefinisikan yang namanya locality model (model lokalitas) dari pengeksekusian proses.

Lokalitas adalah sekumpulan page yang sedang digunakan secara aktif bersamaan. Disini, model lokalitas mengutarakan bahwa saat proses sedang dieksekusi, proses tersebut berpindah dari lokalitas ke lokalitas lain. Sebuah working set memiliki basis dalam lokalitas dan didefinisikan sebagai sekumpulan page yang sedang digunakan oleh suatu proses.

Memory Compression

Memory compression adalah teknik pengelolaan memori yang mengkompresi sekumpulan page menjadi suatu page tunggal. Memori yang terkompresi ini menjadi alternatif untuk paging yang sering digunakan pada sistem mobile yang tidak mendukung paging.

Allocating Kernel Memory

Memori kernel dialokasikan berbeda dengan proses-proses user-mode. Memori kernel dialokasikan dalam bagian-bagian yang berdekatan yang memiliki ukuran berbeda-beda. Dua teknik umum dalam pengalokasian memori kernel adalah:

    1. Sistem Buddy
    2. Slab Allocation

Other Considerations

Prepaging

Salah satu karakteristik dari demand paging murni adalah banyaknya page fault yang terjadi saat suatu proses sedang berjalan. Untuk mencegah hal tersebut, digunakanlah yang namanya prepaging, dimana beberapa – atau semua – page yang akan dibutuhkan oleh sebuah proses dimuat ke memori secara bersamaan.

Namun, perlu diperhatikan bahwa prepaging tidak selalu dibutuhkan. Pertanyaan yang patut dipertimbangkan adalah apakah prepaging akan lebih efisien dari demand paging biasa. Bisa saja, saat semua proses sudah dimuat ke memori, banyak dari mereka yang tidak digunakan. Maka dari itu, perlu pertimbangan lebih.

Page Size

Perancang sistem operasi untuk sebuah mesin yang sudah ada jarang memiliki pilihan dalam memutuskan seberapa besar ukuran suatu page. Namun, saat mesin-mesin baru sedang dirancang, keputusan terhadap berapa ukuran terbaik untuk setiap page perlu diambil. Beberapa faktor yang perlu dipertimbangkan saat memutuskan ukuran suatu page:

  1. Ukuran dari page tablepage table yang besar umumnya lebih baik.
  2. Memori lebih baik dimanfaatkan di page-page yang berukuran kecil untuk mengurangi fragmentasi internal. Namun, ukuran yang kecil berdampak negatif dalam pengeksekusian proses-proses I/O.
  3. Waktu yang dibutuhkan untuk proses-proses I/O – lebih kecil lebih baik; namun, diperlukan ukuran page yang besar.
  4. Jumlah page fault – lebih sedikit lebih baik; dapat dicapai dengan cara menggunakan ukuran page yang besar.

Bisa dilihat bahwa setiap pertimbangan memiliki pengorbanan. Maka dari itu, diperlukan tujuan dan keperluan yang jelas.

TLB reach

TLB (translation lookaside buffer) adalah suatu cache memori yang menyimpan translasi dari alamat memori maya ke memori fisik yang digunakan agar pengambilan data dapat dilakukan dengan cepat.

TLB reach mengacu kepada jumlah memori yang dapat diakses oleh TLB, dimana jumlah tersebut sama dengan jumlah entry dalam TLB tersebut dikalikan dengan ukuran pagenya. Salah satu teknik untuk menaikkan kemampuan TLB reach adalah dengan menambah ukuran page.

Operating-System Examples

Linux, Windows, dan Solaris memiliki pengelolaan memori maya yang mirip dengan menggunakan paging, copy-on-write, dll. Setiap sistem juga menggunakan variasi dari algoritma LRU-approximation untuk digunakan sebagai clock algorithm.