Anda di halaman 1dari 12

Arsitektur Sistem Operasi Linux

Seperti halnya semua sistem operasi pada umumnya Linux memiliki konsep sama dalam hal
arsitektur. Perbedaanya adalah bentuk disetiap komponen pada arsitektur tersebut. Komponen pada
arsitektur sistem operasi Linux adalah sebagai berikut :

1. Kernel

Kernel adalah bagian terpenting dari sebuah sistem operasi. Pada sistem operasi kernel
berfungsi untuk mengendalikan semua perangkat keras yang ada di PC seperti CPU​(Central
Processing Unit)​, ​Graphic Cards, Sound Card​, Perangkat USB, ​Harddisk​, dll. Selain itu juga kernel
berfungsi untuk menjembatani antara applikasi yang berjalan dengan perangkat keras yang diakses
oleh applikasi tersebut. Sebagai contoh applikasi text editor (vi,notepad,emacs)
membutuhkan​resources ​layar monitor sebagai tampilan bagi penggunanya, dalam kasus ini maka
applikasi tersebut akan dihubungkan oleh kernel melalui device driver ​VGA Card untuk
mengeluarkan data menuju layar monitor. Selain dari applikasi kernel juga menjembatai perintah
yang ditulis oleh pengguna melalui shell atau GUI. Kernel Linux merupakan turunan dari Unix
BSD dan SYSV, dan model dari kernel Linux mengacu pada spesifikasi POSIX(Portable Operating
System IX).

Sistem kerja dari kernel adalah ketika PC melakukan booting pertama kali maka file biner
dari kernel akan dipindah menuju memory dan akan mejalankan semua fungsi manajemen resources
pada PC tersebut​. Setiap PC memiliki jenis perangkat keras yang berbeda-beda, sehingga kernel
akan menginisialisasi perangkat tersebut dengan module device driver yang berbeda. File biner
kernel linux dapat dilihat pada direktori “/boot/vmlinuz” sedangkan source kode dapat dilihat di
“/usr/src/linux”. Untuk lebih detail mengenai perkembangan generasi kernel dapat dilihat pada
situs ​http://www.kernel.org/​.

2. Shells/GUI

Shell merupakan antarmuka linux kernel dengan penggunanya. ​Di dalam shell pengguna
dapat menuliskan perintah yang kemudian akan dieksekusi langsung oleh kernel. ​Perintah-perintah
yang dapat dituliskan merupakan perintah yang berhunbungan dengan pengelolaan sistem operasi,
misalnya melihat isi file yang tersimpan dalam sebuah direktori,membuat file baru, atau melihat isi
dari sebuah file. Selain operasi file shell juga dapat digunakan untuk operasi I/O atau operasi
penanganan pengguna. ​Pada sistem operasi linux ada dua jenis shell atau penghubung antara
pengguna dengan sistem operasi yang pertama adalah text-based shell dan yang kedua adalah
GUI​(Graphic User Interface)​. ​Beda dari keduanya adalah cara penyajiannya kepada pengguna,
jenis text-based adalah antarmuka paling sederhana dimana pengguna hanya dapat berinteraksi
melalui keyboard saja, sedangkan GUI memungkinkan pengguna berinteraksi dengan system
operasi melalui keyboard saja,mouse dan perangkat lainnya dapat digunakan.selain itu tampilan
pada GUI sudah lebih modern yaitu berbasiskan tampilan grafis.

3. Utilitas sistem.
Setiap sistem operasi pada dasarnya mengacu pada sebuah spesifikasi tertentu seperti halnya
Unix pada POSIX.2 dimana pada spesifikasi ini dijelaskan konsep implementasi utilitas sistem
untuk membantu pengguna berinteraksi dengan sistem operasi. ​Utilitas sistem dalam sebuah sistem
operasi berfungsi sebagai pengaturan sumber daya yang sudah diinisialisasi oleh sistem operasi
pada saat proses booting awal dilakukan. Fungsi monitoring, fungsi pengaktifan dan penon-aktifan
sebuah service dalam sistem operasi merupakan pekerjaan yang dapat dilakukan dengan
menggunakan utilitas sistem yang ada dalam sebuah sistem operasi seperti Linux. Beberapa contoh
utilitas sistem dalam Linux adalah ls, man, fdisk, grep, awk, sed, cp, mv, more, dan lain sebagainya.
Seperti halnya dalam sistem operasi Windows beberapa utilitas misalnya control panel, dir, cd, dan
lain-lain.

Selain itu juga utilitas sistem juga termasuk program yang bersifat server, dimana program
ini akan berjalan secara background (tidak tampak), seperti misalnya utilitas untuk menangani
koneksi dari jarak jauh dengan telnet atau ssh, kedua layanan ini merupakan utilitas sistem yang
bersifat server dan dijalankan secara background. contoh lain dari server program dalam Linux
adalah lpd untuk mengangani proses printer, httpd sebagai web server, crond untuk menjalankan
tugas administratif sistem operasi secara reguler. Utilitas sistem yang bersifat server dan dijalankan
secara backgroung dalam Linux disebut DAEMON(Disk And Execution MONitor). daemon
diaktifkan pada saat proses booting sistem operasi, dan akan berjalan secara terus menerus. Program
ini akan memantau ​event ​yang terjadi dan apabila sesusai dengan yang dikehendaki maka daemon
akan menjalankan sesuatu. Sebagai contoh program daemon telnet server. Daemon ini akan
melakukan pemantauan pada semua koneksi yang datang dari luar PC melalui jaringan pada nomer
port 23. jika ada koneksi dari luar yang menghubungi nomer tersebut maka telnet server akan
menerima koneksi tersebut dan melayani proses yang akan dilakukan.

4. Applikasi

Applikasi merupakan level tertinggi pada sistem operasi​. Dimana pada applikasi ini
pengguna sistem operasi dapat menggunakan applikasi berdasarkan kebutuhannya. ​Misalnya
applikasi untuk menulis, pada sistem operasi Linux dapat dilakukan dengan menggunakan bantuan
applikasi Open Office, sedangkan untuk melakukan editing gambar dapat menggunakan GIMP​.
Karena applikasi merupakan level tertinggi dari sebuah sistem operasi maka setiap applikasi
dibentuk dengan cara berbeda untuk masing-masing sistem operasi dan hanya bisa berjalan pada
sistem operasi tempat dimana applikasi tersebut dibangun. Misalnya MS Office tidak dapat berjalan
pada sistem operasi Linux, kecuali pembangun MS Office mengeluarkan distribusi paket MS Office
for Linux.

Distribusi Linux yang beredar saat ini, selain kernel juga menyertakan paket-paket applikasi
yang dapat dimanfaatkan oleh pengguna, namun tidak semua applikasi disertakan, tergantung sifat
dari applikasi tersebut komersial atau open source.sementara ini yang bersifat open source saja yang
disertakan.contoh applikasi open source GCC,G++,Xfix,Latex,dll.

Operating system dapat didefinisikan sebagai perangkat lunak (software) yang mengendalikan
sumber daya perangkat keras (hardware) dan menyediakan tempat dimana program aplikasi dapat
dijalankan. Secara umum, kita menyebut software tersebut (operating system) sebagai kernel (inti).
Gambar di bawah ini memperlihatkan diagram dari system arsitektur UNIX.
Alat yang menghubungkan (interface) ke kernel, kita sebut dengan system call, library yang
berfungsi secara umum dibangun di atas interface system call. Tetapi program aplikasi bebas
menggunakan keduanya (system call dan kernel). Shell adalah suatu aplikasi khusus yang
menyediakan alat penghubung (interface), untuk menjalankan aplikasi yang lain.

Didalam pengertian yang lebih luas, operating system adalah kernel itu sendiri dan semua sofftware
yang lain digunakan sesuai kepentingan user (pengguna komputer). Software tersebut antara lain :
sistem utiliti, applikasi, shell, library yang berfungsi secara umum, dan seterusnya.

Sebagai contoh, linux adalah kernel yang digunakan oleh sistem operasi di bawah lisensi GNU.
Beberapa orang mereferensikan sistem operasi ini dengan GNU/Linux operating system, tetapi yang
lainnya hanya menyebut linux saja. Walaupun hal itu dapat dikatakan tidak benar, tetapi dapat
dimengerti, hanya karena berbeda dua ungkapan, tetapi maksudnya sama.

Bagian - Bagian Sistem Operasi Linux


Sistem Operasi Linux terdiri dari :
Kernel Linux, Program System dan beberapa Program Aplikasi.

Kernel Linux

Merupakan inti dari sistem operasi linux yang mengatur penggunaan memori linux, piranti
masukan, keluaran, proses-proses, pemakaian file pada file system dll. Kernel juga menyediakan
sekumpulan layanan yang di gunakan untuk mengakses kernel yang di sebut dengan System Call.
System Call di gunakan untuk mengimplementasikan berbagai layanan yang di butuhkan oleh
sistem operasi.
Kernel Linux terdiri atas proses ,managemen memory, hardware device driver , file system driver,
Manajemen jaringan dll.

Program System

di butuhkan agar suatu sistem opersi dapat berjalan.

Program Aplikasi

adalah program yang di butuhkan untuk menjalankan suatu aplikasi.​.

Materi pertemuan ke-2

Algoritma Penjadwalan pada LINUX

Jenis-jenis algoritma penjadwalan​:

1. Nonpreemptive, menggunakan konsep :

a. FIFO (First In First Out) atau FCFS (First Come First Serve)

b. SJF (Shortest Job First)

c. HRN (Highest Ratio Next)

d. MFQ (Multiple Feedback Queues)

2. Preemptive, menggunakan konsep :

a. RR (Round Robin)

b. SRF (Shortest Remaining First)

c. PS (Priority Schedulling)

d. GS (Guaranteed Schedulling)
Klasifikasi lain selain berdasarkan dapat/tidaknya suatu proses diambil secara paksa adalah
klasifikasi berdasarkan adanya prioritas di proses-proses, yaitu :

1. Algoritma penjadwalan tanpa berprioritas.

2. Algoritma penjadwalan berprioritas, terdiri dari :

a. Berprioritas static

b. Berprioritas dinamis

Algoritma Nonpreemptive

1) First In First Out (FIFO)

First In First Out (FIFO) merupakan penjadwalan tidak berprioritas. FIFO adalah penjadwalan
paling sederhana, yaitu proses-proses diberi jatah waktu pemroses berdasarkan waktu kedatangan.
Pada saat proses mendapat jatah waktu pemroses, proses dijalankan sampai selesai.

Penilaian penjadwalan ini berdasarkan kriteria optimasi :

• Adil, dalam arti resmi (proses yang datang duluan akan dilayani lebih dulu), tapi dinyatakan tidak
adil karena job-job yang perlu waktu lama membuat job-job pendek menunggu. Job-job yang tidak
penting dapat membuat job-job penting menunggu lama.

• Efisiensi, sangat efisien.

• Waktu tanggap sangat jelek, tidak cocok untuk sistem interaktif apalagi untuk sistem waktu nyata.

• Turn around time kurang baik.

• Throughtput kurang baik. FIFO jarang digunakan secara mandiri, tetapi dikombinasikan dengan
skema lain.

• Baik untuk sistem batch yang sangat jarang berinteraksi dengan pemakai.

Contoh : aplikasi analisis numerik, maupun pembuatan tabel.

• Sangat tidak baik (tidak berguna) untuk sistem interaktif, karena tidak memberi waktu tanggap
yang baik.

• Tidak dapat digunakan untuk sistem waktu nyata (real-time applications).

2) Shortest Job First (SJF)

Penjadwalan ini mengasumsikan waktu berjalannya proses sampai selesai telah diketahui
sebelumnya. Mekanismenya adalah menjadwalkan proses dengan waktu jalan terpendek lebih dulu
sampai selesai, sehingga memberikan efisiensi yang tinggi dan turn around time rendah dan
penjadwalannya tak berprioritas.

Contoh :
Terdapat empat proses (job) yaitu A,B,C,D dengan waktu jalannya masing-masing adalah 8,4,4 dan
4 menit. Apabila proses-proses tersebut dijalankan, maka turn around time untuk A adalah 8 menit,
untuk B adalah 12, untuk C adalah 16 dan untuk D adalah 20. Apabila keempat proses tersebut
menggunakan penjadwalan shortest job fisrt, maka turn around time untuk B adalah 4, untuk C
adalah 8, untuk D adalah 12 dan untuk A adalah 20.

Karena SJF selalu memperhatikan rata-rata waktu respon terkecil, maka sangat baik untuk proses
interaktif. Umumnya proses interaktif memiliki pola, yaitu menunggu perintah, menjalankan
perintah, menunggu perintah dan menjalankan perintah, begitu seterusnya. Masalah yang muncul
adalah tidak mengetahui ukuran job saat job masuk. Untuk mengetahui ukuran job adalah dengan
membuat estimasi berdasarkan kelakukan sebelumnya. Prosesnya tidak datang bersamaan, sehingga
penetapannya harus dinamis. Penjadwalan ini jarang digunakan karena merupakan kajian teoritis
untuk pembandingan turn around time.

3) Highest Ratio Next (HRN)

Highest Ratio Next merupakan strategi penjadwalan dengan prioritas proses tidak hanya
berdasarkan fungsi waktu layanan tetapi juga jumlah waktu tunggu proses. Begitu proses mendapat
jatah pemroses, proses berjalan sampai selesai.

Prioritas dinamis HRN dihitung berdasarkan rumus : Prioritas = (waktu tunggu + waktu layanan ) /
waktu layanan Karena waktu layanan muncul sebagai pembagi, maka job lebih pendek berprioritas
lebih baik, karena waktu tunggu sebagai pembilang maka proses yang telah menunggu lebih lama
juga mempunyai kesempatan lebih bagus. Disebut HRN, karena waktu tunggu ditambah waktu
layanan adalah waktu tanggap, yang berarti waktu tanggap tertinggi yang harus dilayani.

4) Multiple Feedback Queues (MFQ)

Merupakan penjadwalan berprioritas dinamis. Penjadwalan ini untuk mencegah (mengurangi)


banyaknya swappingdengan proses-proses yang sangat banyak menggunakan pemroses (karena
menyelesaikan tugasnya memakan waktu lama) diberi jatah waktu (jumlah kwanta) lebih banyak
dalam satu waktu. Penjadwalan ini juga menghendaki kelas-kelas prioritas bagi proses-proses yang
ada. Kelas tertinggi berjalan selama satu kwanta, kelas berikutnya berjalan selama dua kwanta,
kelas berikutnya berjalan empat kwanta, dan seterusnya. Ketentuan yang berlaku adalah sebagai
berikut :

• Jalankan proses pada kelas tertinggi.

• Jika proses menggunakan seluruh kwanta yang dialokasikan, maka diturunkan kelas prioritasnya.

• Proses yang masuk untuk pertama kali ke sistem langsung diberi kelas tertinggi.

Mekanisme ini mencegah proses yang perlu berjalan lama swapping berkali-kali dan mencegah
proses-proses interaktif yang singkat harus menunggu lama.

Algoritma Preemptive

1) Round Robin (RR)


Merupakan :

Penjadwalan yang paling tua, sederhana, adil, banyak digunakan algoritmanya dan mudah
diimplementasikan.
Penjadwalan ini bukan dipreempt oleh proses lain tetapi oleh penjadwal berdasarkan lama waktu
berjalannya proses (preempt by time).
Penjadwalan tanpa prioritas.
Berasumsi bahwa semua proses memiliki kepentingan yang sama, sehingga tidak ada prioritas
tertentu. Semua proses dianggap penting sehingga diberi sejumlah waktu oleh pemroses yang
disebut kwanta (quantum) atau time slice dimana proses itu berjalan.Jika proses masih running
sampai akhir quantum, maka CPU akan mempreempt proses itu dan memberikannya ke proses lain.
Penjadwal membutuhkannya dengan memelihara daftar proses dari runnable. Ketika quantum habis
untuk satu proses tertentu, maka proses tersebut akan diletakkan diakhir daftar (list).

2) Shortest Remaining First (SRF)

Merupakan :

• Penjadwalan berprioritas.dinamis.

• preemptive untuk timesharing

• Melengkapi SJF

Pada SRF, proses dengan sisa waktu jalan diestimasi terendah dijalankan, termasuk proses-proses
yang barutiba.Pada SJF, begitu proses dieksekusi, proses dijalankan sampai selesai.Pada SRF,
proses yang sedang berjalan (running) dapat diambil alihproses baru dengan sisa waktu jalan yang
diestimasi lebih rendah.

Kelemahan :

• Mempunyai overhead lebih besar dibanding SJF. SRF perlu penyimpanan waktu layanan yang
telah dihabiskan job dan kadang-kadang harus menangani peralihan.

• Tibanya proses-proses kecil akan segera dijalankan.

• Job-job lebih lama berarti dengan lama dan variasi waktu tunggu lebih lama dibanding pada SJF.

SRF perlu menyimpan waktu layanan yang telah dihabiskan , menambah overhead. Secara teoritis,
SRF memberi waktu tunggu minimum tetapi karena overhead peralihan, maka pada situasi tertentu
SFJ bisa memberi kinerja lebih baik dibanding SRF.

3). Priority Schedulling (PS)

Setiap proses diberi prioritas dan proses yang berprioritas tertinggi mendapat jatah waktu lebih dulu
(running). Diasumsikan bahwa masing-masing proses memiliki prioritas tertentu, sehingga akan
dilaksanakan berdasar prioritas yang dimilikinya. Ilustrasi yang dapat memperjelas prioritas
tersebut adalah dalam komputer militer, dimana proses dari jendral berprioritas 100, proses dari
kolonel 90, mayor berprioritas 80, kapten berprioritas 70, letnan berprioritas 60 dan seterusnya.
Dalam UNIX perintah untuk mengubah prioritas menggunakan perintah nice. Pemberian prioritas
diberikan secara:

a.) Statis (Static Priorities) berarti prioritas tidak berubah.

Keunggulan :

• Mudah diimplementasikan.

• Mempunyai overhead relatif kecil.

Kelemahan :

• Tidak tanggap terhadap perubahan lingkungan yang mungkin menghendaki penyesuaian prioritas.

b. ) Dinamis (Dynamic Priorities) merupakan mekanisme untuk menanggapi perubahan lingkungan


system beroperasi. Prioritas awal yang diberikan ke proses mungkin hanya berumur pendek setelah
disesuaikan ke nilai yang lebih tepat sesuai lingkungan.

Kelemahan :

Implementasi mekanisme prioritas dinamis lebih kompleks dan mempunyai overhead lebih besar.
Overhead ini diimbangi dengan peningkatan daya tanggap sistem.

Contoh penjadwalan berprioritas :

Proses-proses yang sangat banyak operasi masukan/keluaran menghabiskan kebanyakan waktu


menunggu selesainya operasinya masukan/keluaran. Proses-proses ini diberi prioritas sangat tinggi
sehingga begitu proses Memerlukan pemroses segera diberikan, proses akan segera memulai
permintaan masukan/keluaran berikutnya sehingga menyebabkan proses blocked menunggu
selesainya operasi masukan/keluaran. Dengan demikian pemroses dapat dipergunakan
proses-proses lain. Proses-proses I/O berjalan paralel bersama proses-proses lain yang benar-benar
memerlukan pemroses, sementara proses-proses I/O itu menunggu selesainya operasi DMA.

Proses-proses yang sangat banyak operasi I/O-nya, kalau harus menunggu lama untuk memakai
pemroses (karena prioritas rendah) hanya akan membebani memori, karena harus disimpan tanpa
perlu proses-proses itu dimemori karena tidak selesai-selesai menunggu operasi masukan dan
menunggu jatah pemroses.

4) Guaranteed Schedulling (GS)

Penjadwalan ini memberikan janji yang realistis (memberi daya pemroses yang sama) untuk
membuat dan menyesuaikan performance adalah jika ada N pemakai, sehingga setiap proses
(pemakai) akan mendapatkan 1/N dari daya pemroses CPU. Untuk mewujudkannya, sistem harus
selalu menyimpan informasi tentang jumlah waktu CPU untuk semua proses sejak login dan juga
berapa lama pemakai sedang login. Kemudian jumlah waktu CPU, yaitu waktu mulai login dibagi
dengan n, sehingga lebih mudah menghitung rasio waktu CPU. Karena jumlah waktu pemroses tiap
pemakai dapat diketahui, maka dapat dihitung rasio antara waktu pemroses yang sesungguhnya
harus diperoleh, yaitu 1/N waktu pemroses seluruhnya dan waktu pemroses yang telah
diperuntukkan proses itu. Rasio 0,5 berarti sebuah proses hanya punya 0,5 dari apa yang waktu
CPU miliki dan rasio 2,0 berarti sebuah proses hanya punya 2,0 dari apa yang waktu CPU miliki.
Algoritma akan menjalankan proses dengan rasio paling rendah hingga naik ketingkat lebih tinggi
diatas pesaing terdekatnya. Ide sederhana ini dapat diimplementasikan ke sistem real-time dan
memiliki penjadwalan berprioritas dinamis.

Managemen Memori di Linux


Managemen Memori Fisik
Bagian ini menjelaskan bagaimana linux menangani memori dalam sistem. Memori managemen
merupakan salah satu bagian terpenting dalam sistem operasi. Karena adanya keterbatasan memori,
diperlukan suatu strategi dalam menangani masalah ini. Jalan keluarnya adalah dengan
menggunakan memori virtual. Dengan memori virtual, memori tampak lebih besar daripada ukuran
yang sebenarnya.
Dengan memori virtual kita dapat:
1. Ruang alamat yang besar
Sistem operasi membuat memori terlihat lebih besar daripada ukuran memori sebenarnya.
Memori virtual bisa beberapa kali lebih besar daripada memori fisiknya.
2. Pembagian memori fisik yang adil
Managemen memori membuat pembagian yang adil dalam pengalokasian memori antara
proses-proses.
3. Perlindungan
Memori managemen menjamin setiap proses dalam sistem terlindung dari proses-proses
lainnya. Dengan demikian, program yang ​crash​ tidak akan mempengaruhi proses lain dalam
sistem tersebut.
4. Penggunaan memori virtual bersama
Memori virtual mengizinkan dua buah proses berbagi memori diantara keduanya, contohnya
dalam ​shared library​. Kode library dapat berada di satu tempat, dan tidak dikopi pada dua
program yang berbeda.
Memori Virtual
Gambar 7-2. Pemetaan Memori Virtual ke Alamat Fisik. Sumber: . . .

Memori fisik dan memori virtual dibagi menjadi bagian-bagian yang disebut ​page​. ​Page​ ini
memiliki ukuran yang sama besar. Tiap ​page​ ini punya nomor yang unik, yaitu Page Frame Number
(PFN). Untuk setiap instruksi dalam program, CPU melakukan mapping dari alamat virtual ke
memori fisik yang sebenarnya.
Penerjemahan alamat di antara virtual dan memori fisik dilakukan oleh CPU menggunakan
tabel ​page​ untuk proses x dan proses y. Ini menunjukkan virtial PFN 0 dari proses x dimap ke
memori fisik PFN 1. Setiap anggota tabel ​page​ mengandung informasi berikut ini:
1. Virtual PFN
2. PFN fisik
3. informasi akses ​page​ dari ​page​ tersebut
Untuk menerjemahkan alamat virtual ke alamat fisik, pertama-tama CPU harus menangani alamat
virtual PFN dan offsetnya di virtual ​page​. CPU mencari tabel ​page​ proses dan mancari anggota
yang sesuai degan virtual PFN. Ini memberikan PFN fisik yang dicari. CPU kemudian mengambil
PFN fisik dan mengalikannya dengan besar ​page​ untuk mendapat alamat basis ​page​ tersebut di
dalam memori fisik. Terakhir, CPU menambahkan offset ke instruksi atau data yang dibutuhkan.
Dengan cara ini, memori virtual dapat dimap ke ​page​ fisik dengan urutan yang teracak.
Demand Paging
Cara untuk menghemat memori fisik adalah dengan hanya meload ​page​ virtual yang sedang
digunakan oleh program yang sedang dieksekusi. Tehnik dimana hanya meload ​page​ virtual ke
memori hanya ketika program dijalankan disebut demand paging.
Ketika proses mencoba mengakses alamat virtual yang tidak ada di dalam memori, CPU tidak dapat
menemukan anggota tabel ​page​. Contohnya, dalam gambar, tidak ada anggota tabel ​page​ untuk
proses x untuk virtual PFN 2 dan jika proses x ingin membaca alamat dari virtual PFN 2, CPU tidak
dapat menterjemahkan alamat ke alamat fisik. Saat ini CPU bergantung pada sistem operasi untuk
menangani masalah ini. CPU menginformasikan kepada sistem operasi bahwa ​page fault​ telah
terjadi, dan sistem operasi membuat proses menunggu selama sistem operasi menagani masalah ini.
CPU harus membawa ​page​ yang benar ke memori dari image di disk. Akses disk membutuhkan
waktu yang sangat lama dan proses harus menunggu sampai ​page​ selesai diambil. Jika ada proses
lain yang dapat dijalankan, maka sistem operai akan memilihnya untuk kemudian
dijalankan. ​Page​ yang diambil kemudian dituliskan di dalam ​page​ fisik yang masih kosong dan
anggota dari virtual PFN ditambahkan dalam tabel ​page​ proses. Proses kemudian dimulai lagi pada
tempat dimana ​page​ fault terjadi. Saat ini terjadi pengaksesan memori virtual, CPU membuat
penerjemahan dan kemudian proses dijalankan kembali.
Demand paging terjadi saat sistem sedang sibuk atau saat image pertama kali diload ke memori.
Mekanisme ini berarti sebuah proses dapat mengeksekusi image dimana hanya sebagian dari image
tersebut terdapat dalam memori fisik.
Swaping
Jika memori fisik tiba-tiba habis dan proses ingin memindahkan sebuah ​page​ ke memori, sistem
operasi harus memutuskan apa yang harus dilakukan. Sistem operasi harus adil dalam
mambagi ​page​ fisik dalam sistem diantara proses yang ada, bisa juga sistem operasi menghapus
satu atau lebih ​page​ dari memori untuk membuat ruang untuk ​page​ baru yang dibawa ke memori.
Cara ​page​ virtual dipilih dari memori fisik berpengaruh pada efisiensi sistem.
Linux menggunakan tehnik ​page aging​ agar adil dalam memilih ​page​ yang akan dihapus dari
sistem. Ini berarti setiap ​page​ memiliki usia sesuai dengan berapa sering ​page​ itu diakses. Semakin
sering sebuah ​page​ diakses, semakin muda ​page​ tersebut. Page yang tua adalah kandidat untuk
diswap.
Pengaksesan Memori Virtual Bersama
Memori virtual mempermudah proses untuk berbagi memori saat semua akses ke memori
menggunakan tabel ​page​. Proses yang akan berbagi memori virtual yang sama, ​page​ fisik yang
sama direference oleh banyak proses. Tabel ​page​ untuk setiap proses mengandung
anggota ​page​ table yang mempunyai PFN fisik yang sama.
Efisiensi
Desainer dari CPU dan sistem operasi berusaha meningkatkan kinerja dari sistem. Disamping
membuat prosesor, memori semakin cepat, jalan terbaik adalah manggunakan cache. Berikut ini
adalah beberapa cache dalam managemen memori di linux:
1. Page Cache
Digunakan untuk meningkatkan akses ke image dan data dalam disk. Saat dibaca dari
disk, ​page​ dicache di ​page​ cache. Jika ​page​ ini tidak dibutuhkan lagi pada suatu saat, tetapi
dibutuhkan lagi pada saat yang lain,​page​ ini dapat segera diambil dari ​page​ cache.
2. Buffer Cache
Page​ mungkin mengandung buffer data yang sedang digunakan oleh kernel, device driver
dan lain-lain. Buffer cache tampak seperti daftar buffer. Contohnya, device driver
membutuhkan buffer 256 bytes, adalah lebih cepat untuk mengambil buffer dari buffer
cache daripada mengalokasikan ​page​ fisik lalu kemudian memecahnya menjadi 256 bytes
buffer-buffer.
3. Swap Cache
Hanya ​page​ yang telah ditulis ditempatkan dalam swap file. Selama ​page​ ini tidak
mengalami perubahan setelah ditulis ke dalam swap file, maka saat berikutnya ​page​ di swap
out tidak perlu menuliskan kembali jika​page​ telah ada di swap file. Di sistem yang sering
mengalami swap, ini dapat menghemat akses disk yang tidak perlu.
Salah satu implementasi yang umum dari hardware cache adalah di CPU, cache dari anggota
tabel ​page​. Dalam hal ini, CPU tidak secara langsung membaca tabel ​page​, tetap mencache
terjemahan ​page​ yang dibutuhkan.
Load dan Eksekusi Program
1. Penempatan program dalam memori
Linux membuat tabel-tabel fungsi untuk loading program, memberikan kesempatan kepada
setiap fungsi untuk meload file yang diberikan saat sistem call exec dijalankan.
Pertama-tama file binari dari ​page​ditempatkan pada memori virtual. Hanya pada saat
program mencoba mengakses ​page​ yang telah diberikan terjadi ​page fault​, maka ​page​ akan
diload ke memori fisik.
2. Linking statis dan linking dinamis
a. Linking statis:
librari-librari yang digunakan oleh program ditaruh secara langsung dalam file binari
yang dapat dieksekusi. Kerugian dari linking statis adalah setiap program harus
mengandung kopi library sistem yang umum.
b. Linking dinamis:
hanya sekali meload librari sistem menuju memori. Linking dinamis lebih efisien
dalam hal memori fisik dan ruang disk.
Managemen I/O pada linux

Dalam Linux system i/o kurang lebih mirip dengan yang terdapat pada Unix. User dapat membuka
saluran akses ke perangkat sama seperti membuka file-perangkat lain yang tampak sebagai objek
dalam file sistem. Linux membagi semua perangkat i/o menjadi 3 kelas: ​“block devices”, “character
devices”, dan “network devices”.

“Block devices” yaitu menyimpan, menerima, dan mengirim informasi sebagai blok-blok berukuran
tetap yang berukuran 128 sampai 1024 byte dan memiliki alamat tersendiri, sehingga
memungkinkan membaca atau menulis blok-blok secara independen, yaitu dapat membaca atau
menulis sembarang blok tanpa harus melewati blok-blok lain. Contoh : disk, tape, CD ROM, optical
disk. Fungsi “block devices” sendiri didukung oleh 2 sistem component, block buffer cache dan
request manager. Block buffer cache bertugas sebagai pool dari buffer i/o aktif dan cache dari
“completed i/o”. “Request manager” adalah lapisan software yang mengelola konten read dan write
buffer dari dan menuju block-device driver.

“Character devices” yaitu perangkat yang menerima, dan mengirimkan aliran karakter tanpa
membentuk suatu struktur blok. Contoh : terminal, line printer, pita kertas, kartu-kartu berlubang,
mouse. Perangkat ini tidak memerlukan random access untuk sebuah block data. Akan tetapi, tiap
perangkat telah memiliki berbagai fungsi yang telah terdaftar pada kernel yang diimplementasikan
pada file operasi i/o.

Sedangkan “network devices” berbeda dengan block atau character devices, user harus
berkomunikasi secara tidak langsung dengan cara harus membuka sambungan dengan subsistem
jaringan kernel.

Anda mungkin juga menyukai