SISTEM OPERASI
Davit Hermawan, S.T., [Link]
MEMORY
MANAGEMENT
Memori merupakan inti dari sistem komputer modern. CPU
mengambil instruksi dari memori sesuai yang ada pada program
counter.
Instruksi dapat berupa menempatkan/menyimpan dari/ke
alamat di memori, penambahan, dan sebagainya.
Manajemen Memori Meskipun komputer modern memiliki kapasitas memori yang jauh
lebih besar dibandingkan komputer-komputer awal, kebutuhan
akan memori terus meningkat.
Untuk mengatasi keterbatasan ini, komputer menggunakan
hierarki memori. Hierarki ini terdiri dari beberapa tingkatan,
masing-masing dengan kecepatan, kapasitas, dan biaya yang
berbeda.
Hierarki memori adalah sebuah konsep dalam
arsitektur komputer yang menggambarkan
susunan komponen penyimpanan data dalam
sebuah sistem komputer
Hierarki Memori
Setiap tingkatan dalam hierarki ini memiliki
karakteristik yang berbeda-beda dalam hal
kecepatan akses, kapasitas, dan biaya.
Struktur Bertingkat dalam Manajemen Memori
Hierarki Memori
Unit memori kecil berkecepatan tinggi yang
terletak di CPU. Register digunakan untuk
menyimpan data dan instruksi yang paling sering
digunakan.
Register Komponen tercepat dan terkecil dalam hierarki memori.
Digunakan untuk menyimpan data yang sedang diproses oleh
CPU.
Setiap instruksi yang dieksekusi oleh CPU melibatkan akses ke
register.
Unit memori kecil dan cepat yang terletak dekat
dengan CPU. Unit ini menyimpan data dan instruksi
yang sering digunakan dan baru saja diakses dari
memori utama.
Cache Memori cache dirancang untuk meminimalkan waktu
yang dibutuhkan untuk mengakses data dengan
menyediakan akses cepat bagi CPU ke data yang
sering digunakan.
Lebih lambat dari register tetapi lebih cepat dari
memori utama.
Berfungsi sebagai buffer antara CPU dan memori
utama.
Cache Menyimpan salinan data yang sering diakses oleh
CPU untuk mengurangi waktu akses ke memori
utama.
Terdapat beberapa jenis cache, seperti L1, L2, dan
L3 cache, dengan ukuran dan kecepatan yang
berbeda-beda.
Adalah memori utama dari sistem komputer. Memori ini
memiliki kapasitas penyimpanan yang lebih besar
daripada memori cache, tetapi lebih lambat.
Memori Memori utama digunakan untuk menyimpan data dan
instruksi yang sedang digunakan oleh CPU.
Utama (RAM) Lebih lambat dari cache tetapi lebih besar.
Digunakan untuk menyimpan program dan data yang
sedang aktif digunakan oleh sistem operasi dan aplikasi.
Akses ke memori utama lebih lambat dibandingkan dengan
cache, tetapi masih jauh lebih cepat dibandingkan dengan
disk.
Unit memori yang memiliki kapasitas penyimpanan
lebih besar daripada memori utama. Unit ini digunakan
untuk menyimpan data dan instruksi tidak digunakan
oleh CPU.
Disk Paling lambat dan terbesar dalam hierarki memori.
Digunakan untuk menyimpan data dalam jangka
panjang, seperti sistem operasi, aplikasi, dan file
pengguna.
Akses ke disk jauh lebih lambat dibandingkan
dengan memori utama.
NO MEMORY
ABSTRACTION
Istilah "No Memory Abstraction" merujuk pada suatu kondisi di
mana sistem operasi tidak menyediakan lapisan abstraksi untuk
mengelola memori.
Akses Langsung ke Memori Fisik: Setiap proses memiliki akses
langsung ke memori fisik, tanpa adanya pengaturan memori
virtual.
No Memory Minimnya Proteksi: Tanpa abstraksi memori, tidak ada proteksi
Abstraction antara proses satu dengan proses lain.
Contoh Penerapan: Sistem tanpa abstraksi memori biasanya
ditemukan pada perangkat sederhana atau sistem tertanam
(embedded systems) yang tidak membutuhkan fitur manajemen
memori yang kompleks.
Keterbatasan Multitasking: Karena proses tidak memiliki ruang
memori terisolasi, multitasking menjadi lebih berisiko.
Keamanan Rendah: Tanpa abstraksi memori, setiap proses
memiliki akses langsung ke seluruh memori fisik, sehingga satu
proses bisa membaca atau menimpa data proses lain.
Implikasi No Stabilitas Sistem Berkurang: Karena tidak ada pemisahan
Memory antara area memori proses, satu kesalahan kecil dalam satu
proses dapat memengaruhi seluruh sistem.
Abstraction Keterbatasan dalam Multitasking: Dalam lingkungan tanpa
abstraksi memori, multitasking menjadi lebih sulit untuk
diimplementasikan secara aman.
Minim Proteksi untuk Data dan Program: Pada sistem yang
menggunakan abstraksi memori, memori dibagi menjadi
halaman atau segmen, dan aksesnya dikontrol dengan ketat.
Sumbu Vertikal:
0: Menunjukkan alamat memori terendah.
0xFFF...: Menunjukkan alamat memori tertinggi.
Kotak-kotak:
Operating System: Bagian yang berisi sistem operasi.
User Program: Bagian yang berisi program yang sedang
dijalankan oleh pengguna.
ROM: Read-Only Memory, jenis memori yang isinya tidak dapat
diubah setelah proses pembuatan.
RAM: Random Access Memory, jenis memori yang isinya dapat
dibaca dan ditulis, serta bersifat volatile (data hilang saat daya
mati).
Gambaran dasar tentang bagaimana memori dapat diorganisasikan dalam sebuah sistem komputer. Pilihan
konfigurasi akan bergantung pada berbagai faktor, seperti jenis sistem operasi, jenis perangkat keras, dan
persyaratan kinerja serta keamanan.
(a) Operating System in RAM
Pada konfigurasi (a), sistem operasi dimuat di RAM (Random Access
Memory) bersama dengan program pengguna.
Sistem operasi berada di bagian bawah RAM,
sementara program pengguna berada di bagian atas.
Kelebihan: Karena sistem operasi berada di RAM, ia
dapat diperbarui atau dimodifikasi saat sistem
berjalan. Konfigurasi ini memungkinkan fleksibilitas
dalam memperbarui OS tanpa mengganti perangkat
keras.
Kekurangan: Sistem operasi bersaing dengan program
pengguna untuk ruang memori di RAM, yang berarti
sebagian RAM harus dicadangkan untuk sistem
operasi.
(b) Operating System in ROM
Pada konfigurasi (b), sistem operasi disimpan di ROM (Read-Only
Memory), sedangkan program pengguna berjalan di RAM.
Konfigurasi ini memungkinkan sistem operasi untuk
memiliki bagian yang stabil (di ROM) dan bagian yang
fleksibel (di RAM).
Bagian di ROM: Biasanya berisi bagian inti dari sistem
operasi yang tidak berubah, seperti bootloader dan
driver perangkat keras dasar.
Bagian di RAM: Berisi bagian sistem operasi yang
dinamis, seperti pengelola memori, prosesor, dan
layanan lainnya.
Kelebihan: Sistem operasi dalam ROM lebih stabil dan Kekurangan: Sistem operasi tidak dapat diperbarui
aman dari modifikasi yang tidak disengaja, karena dengan mudah, karena berada di ROM.
ROM bersifat read-only (hanya-baca).
(c) Operating System in RAM with Device Drivers in ROM
Pada konfigurasi (c), sistem operasi berada di RAM, tetapi
driver perangkat (device drivers) disimpan di ROM, dan
program pengguna juga berjalan di RAM.
Mirip dengan diagram (b), tetapi kali ini driver
perangkat keras juga ditempatkan di ROM.
Konfigurasi ini memastikan bahwa driver perangkat
keras selalu tersedia saat sistem dinyalakan, tanpa
perlu memuatnya dari disk.
Kelebihan: Driver perangkat yang disimpan di ROM Kekurangan: Memori RAM tetap harus dicadangkan
berarti mereka stabil dan tidak mudah diubah, yang untuk OS, mengurangi jumlah memori yang tersedia
cocok untuk perangkat keras yang membutuhkan untuk program pengguna.
driver khusus.
A MEMORY
ABSTRACTION:
ADDRESS SPACES
Sistem operasi menyediakan abstraksi memori yang disebut
address space atau ruang alamat bagi setiap proses.
Abstraksi memori ini memberikan sebuah lapisan tambahan
antara proses-proses yang berjalan dan hardware fisik memori.
A MEMORY Lapisan ini memungkinkan sistem operasi untuk memberikan
ABSTRACTION: ilusi kepada setiap proses seolah-olah mereka memiliki seluruh
ADDRESS SPACES memori fisik untuk diri mereka sendiri.
Konsep A Memory Abstraction: Address Spaces diterapkan di
berbagai sistem operasi modern, dan penerapannya penting
untuk keamanan, stabilitas, dan pengelolaan memori yang
efisien.
Konsep address space sebagai abstraksi memori sangat
penting dalam sistem operasi modern. Dengan memberikan
ruang alamat terpisah untuk setiap proses, sistem operasi
dapat menjaga keamanan, stabilitas, dan efisiensi, serta
memudahkan eksekusi multitasking dan pengelolaan memori.
Penerapan Abtraksi
Memori di Berbagai
OS Modern
Windows menerapkan ruang alamat (address space) untuk
setiap proses melalui mekanisme memori virtual. Setiap proses
di Windows mendapatkan ruang alamat virtual sebesar 4 GB
(pada sistem 32-bit) atau lebih besar (pada sistem 64-bit).
Windows Windows menggunakan tabel halaman untuk memetakan ruang
alamat virtual ini ke memori fisik.
Dengan memori virtual, Windows juga mendukung fitur paging,
di mana data yang jarang digunakan dapat disimpan
sementara di disk (swap file) dan dipanggil kembali ke memori
saat diperlukan.
Di Linux, setiap proses juga memiliki ruang alamat virtualnya
sendiri. Linux menggunakan manajemen memori berbasis
halaman dan mendukung konsep memori virtual, yang
memungkinkan proses memiliki ruang alamat lebih besar dari
memori fisik yang tersedia.
LINUX Linux menerapkan address space isolation, yang membuat satu
proses tidak dapat membaca atau mengubah memori proses
lain.
Linux juga mendukung copy-on-write (COW), teknik di mana
proses baru (hasil forking) berbagi ruang alamat yang sama
dengan proses induk hingga salah satu dari mereka mencoba
memodifikasi data.
Di macOS, konsep address space digunakan untuk memberikan
setiap aplikasi ruang alamat terpisah sehingga mereka berjalan
secara terisolasi.
Sistem Operasi macOS juga menggunakan memori virtual, memungkinkan
macOS aplikasi untuk menggunakan lebih banyak memori daripada
yang tersedia secara fisik.
Linux juga mendukung copy-on-write (COW), teknik di mana
proses baru (hasil forking) berbagi ruang alamat yang sama
dengan proses induk hingga salah satu dari mereka mencoba
memodifikasi data.
Android, yang berbasis kernel Linux, juga
menerapkan ruang alamat terpisah untuk
setiap aplikasi. Setiap aplikasi Android
Android berjalan dalam lingkungan proses yang
terisolasi, dengan ruang alamatnya sendiri.
(Berbasis Linux)
Android juga menggunakan memori virtual
untuk mengelola penggunaan memori di
perangkat, dengan teknik paging yang
serupa dengan Linux.
Swapping
Swapping adalah sebuah teknik manajemen memori yang
digunakan oleh sistem operasi untuk memindahkan proses
secara keseluruhan dari memori utama (RAM) ke disk, dan
sebaliknya.
Sebuah proses membutuhkan memori untuk dieksekusi.
Sebuah proses dapat ditukar sementara keluar memori ke
Swapping backing store (disk), dan kemudian dibawa masuk lagi ke
memori untuk dieksekusi.
Idealnya memori manager, dapat menukar prosesproses
cukup cepat, sehingga selalu ada proses di memori siap
dieksekusi, ketika penjadwal CPU ingin menjadwal ulang
CPU.
Variasi dari kebijakan swapping ini, digunakan untuk
algoritma penjadwalan berdasarkan prioritas.
(a) Memori Awal:
Pada tahap ini, hanya ada satu proses, yaitu proses A.
Sistem operasi mengisi bagian bawah memori, dan sisa memori
diisi oleh proses A.
Ada area berbayang di bagian atas yang merupakan memori
kosong atau tidak terpakai.
(b) Proses B Masuk ke Memori:
Proses B dimuat ke memori setelah proses A.
Memori sekarang memiliki tiga bagian: area untuk sistem
operasi, proses A, dan proses B.
Sisa memori di bagian atas masih kosong dan diarsir sebagai
area berbayang.
(c) Proses C Masuk ke Memori:
Gambar ini menunjukkan perubahan alokasi memori seiring Proses C dimuat ke bagian atas memori, mengisi area kosong
waktu saat proses-proses masuk dan keluar dari memori. yang sebelumnya berbayang.
Sekarang memori penuh dengan proses A, B, dan C serta sistem
operasi.
(d) Proses A Keluar dari Memori:
Proses A dikeluarkan dari memori, meninggalkan area kosong di
tengah memori (ditandai sebagai area berbayang).
Proses B dan C tetap berada di memori, tetapi ada area kosong
di antara sistem operasi dan proses B.
(e) Proses D Masuk ke Memori:
Proses D dimuat ke area kosong yang ditinggalkan oleh proses
A.
Proses D sekarang mengisi ruang kosong di antara sistem
operasi dan proses B.
Proses B dan C tetap pada tempatnya, tetapi memori di atas
proses C masih berbayang karena kosong.
(f) Proses B Keluar dari Memori:
Gambar ini menunjukkan perubahan alokasi memori seiring Proses B dikeluarkan dari memori, menciptakan lebih banyak
waktu saat proses-proses masuk dan keluar dari memori. ruang kosong di memori.
Sekarang ada dua area kosong yang terpisah, yaitu satu di
antara proses D dan C, serta area kosong di bagian atas.
(g) Proses A Masuk Kembali ke Memori:
Proses A kembali masuk ke memori, mengisi area kosong di
antara sistem operasi dan proses D.
Meskipun A kembali, masih ada area berbayang di bagian atas,
yang menunjukkan bahwa ada bagian memori yang tidak
terpakai.
Gambar ini menunjukkan bagaimana fragmentasi
memori bisa terjadi. Meskipun ada ruang kosong
yang cukup di memori, fragmentasi eksternal
membuat memori tidak bisa dimanfaatkan secara
efisien.
(a) Alokasi Ruang untuk Segmen Data yang Tumbuh
Proses A dan Proses B berada di memori utama, bersama
dengan sistem operasi yang berada di bagian bawah
memori.
Setiap proses (A dan B) memiliki ruang yang dialokasikan
untuk segmen data dan area kosong di atasnya untuk
pertumbuhan segmen data.
Ruang yang Digunakan (Actually in Use):
Bagian dari segmen data yang benar-benar digunakan oleh
proses ditandai dengan batas bawah pada ruang sebenarnya
yang sedang dipakai.
Gambar ini menggambarkan bagaimana alokasi memori
Misalnya, proses A memiliki area "Actually in Use" yang
untuk sebuah proses dapat diatur agar dapat tumbuh seiring
digunakan oleh segmen datanya, sementara ada ruang kosong di
waktu.
atasnya untuk kemungkinan pertumbuhan.
(a) Alokasi Ruang untuk Segmen Data yang Tumbuh
Ruang untuk Pertumbuhan (Room for Growth):
Ruang kosong di atas area yang sedang dipakai disediakan
untuk pertumbuhan segmen data dari setiap proses. Jika proses
membutuhkan lebih banyak data, maka area ini akan digunakan.
Fragmentasi Eksternal:
Di antara proses A dan B terdapat area berarsir yang tidak
digunakan oleh kedua proses, yang merupakan bentuk
fragmentasi eksternal. Ini menunjukkan bahwa meskipun ada
ruang kosong di antara proses, tidak dapat digunakan secara
efektif oleh proses tersebut.
(b) Alokasi Ruang untuk Segmen Data dan Stack yang Tumbuh
Proses A dan Proses B:
Setiap proses dibagi menjadi tiga bagian: Program (Code),
Data, dan Stack.
Program adalah kode instruksi yang dijalankan oleh CPU,
sedangkan Data adalah area tempat proses menyimpan
variabel atau data lainnya.
Stack adalah area memori yang digunakan untuk memproses
pemanggilan fungsi, penyimpanan variabel lokal, dan
pengelolaan data lain yang bersifat sementara.
Gambar (b) menunjukkan skenario yang lebih kompleks, di
mana baik segmen data maupun stack untuk setiap proses
dialokasikan ruang untuk pertumbuhan.
(b) Alokasi Ruang untuk Segmen Data dan Stack yang Tumbuh
Alokasi Ruang Pertumbuhan untuk Data dan Stack:
Segmen Data memiliki ruang pertumbuhan yang dialokasikan
ke arah atas. Ini berarti jika proses membutuhkan lebih
banyak ruang untuk variabel atau data dinamis, segmen data
dapat diperluas ke arah atas.
Stack memiliki ruang pertumbuhan yang dialokasikan ke arah
bawah. Stack biasanya tumbuh ke arah bawah (turun dari
alamat memori yang lebih tinggi ke yang lebih rendah) seiring
dengan pemanggilan fungsi tambahan.
Gambar (b) menunjukkan skenario yang lebih kompleks, di
mana baik segmen data maupun stack untuk setiap proses
dialokasikan ruang untuk pertumbuhan.
(b) Alokasi Ruang untuk Segmen Data dan Stack yang Tumbuh
Room for Growth (Ruang untuk Pertumbuhan):
Pada segmen Data dan Stack masing-masing proses (A dan
B), terdapat ruang kosong untuk pertumbuhan yang
disediakan oleh sistem operasi.
Contoh untuk Proses A:
A-Data memiliki ruang kosong di atasnya untuk
memungkinkan data berkembang ke arah atas.
A-Stack memiliki ruang kosong di bawahnya untuk
memungkinkan stack berkembang ke arah bawah.
Begitu juga untuk Proses B, dengan ruang pertumbuhan yang
Gambar (b) menunjukkan skenario yang lebih kompleks, di sama untuk segmen data dan stack-nya.
mana baik segmen data maupun stack untuk setiap proses
dialokasikan ruang untuk pertumbuhan.