Anda di halaman 1dari 33

KOMPONEN SISTEM OPERASI

Diajukan untuk Memenuhi tugas mata kuliah system operasi

Dosen Pengampu : Halimil fathil S.Kom. M.Kom

Disusun Oleh :

KELOMPOK 12

Luthfiyah Sakinah (201904024)

Ikhsan Rafli Fauzi (201904026)

TEKNOLOGI REKAYASA PERANGKAT LUNAK

POLITEKNIK ENJINERING INDORAMA

Kembangkuning, Ubrug Jatiluhur, Purwakarta 41152 Indonesia

2019
KOMPONEN SISTEM OPERASI

1.1 KERNEL

Dalam ilmu komputer, kernel adalah suatu perangkat lunak yang menjadi
bagian utama dari sebuah sistem operasi. Tugasnya melayani bermacam
program aplikasi untuk mengakses perangkat keras komputer secara aman.

Karena akses terhadap perangkat keras terbatas, sedangkan ada lebih


dari satu program yang harus dilayani dalam waktu yang bersamaan, maka
kernel juga bertugas untuk mengatur kapan dan berapa lama suatu program
dapat menggunakan satu bagian perangkat keras tersebut. Hal tersebut
dinamakan sebagai multiplexing.

Akses kepada perangkat keras secara langsung merupakan masalah yang


kompleks, oleh karena itu kernel biasanya mengimplementasikan sekumpulan
abstraksi hardware. Abstraksi-abstraksi tersebut merupakan sebuah cara untuk
menyembunyikan kompleksitas, dan memungkinkan akses kepada perangkat
keras menjadi mudah dan seragam. Sehingga abstraksi pada akhirnya
memudahkan pekerjaan programer.

Untuk menjalankan sebuah komputer kita tidak harus menggunakan kernel


sistem operasi. Sebuah program dapat saja langsung diload dan dijalankan
diatas mesin 'telanjang' komputer, yaitu bilamana pembuat program ingin
melakukan pekerjaannya tanpa bantuan abstraksi perangkat keras atau bantuan
sistem operasi. Teknik ini digunakan oleh komputer generasi awal, sehingga bila
kita ingin berpindah dari satu program ke program lain, kita harus mereset dan
meload kembali program-program tersebut.

1.1.1 Desain Kernel

Sebuah kernel sistem operasi tidak harus ada dan dibutuhkan


untuk menjalankan sebuah komputer. Program dapat langsung dijalankan
secara langsung di dalam sebuah mesin (contohnya adalah CMOS
Setup) sehingga para pembuat program tersebut membuat program
tanpa adanya dukungan dari sistem operasi atau hardware abstraction.
Cara kerja seperti ini, adalah cara kerja yang digunakan pada zaman
awal-awal dikembangkannya komputer (pada sekitar tahun 1950).
Kerugian dari diterapkannya metode ini adalah pengguna harus
melakukan reset ulang komputer tersebut dan memuatkan program
lainnya untuk berpindah program, dari satu program ke program lainnya.
Selanjutnya, para pembuat program tersebut membuat beberapa
komponen program yang sengaja ditinggalkan di dalam komputer, seperti
halnya loader atau debugger, atau dimuat dari dalam ROM (Read-Only
Memory). Seiring dengan perkembangan zaman komputer yang
mengalami akselerasi yang signifikan, metode ini selanjutnya membentuk
apa yang disebut dengan kernel sistem operasi.

Selanjutnya, para arsitek sistem operasi mengembangkan kernel


sistem operasi yang pada akhirnya terbagi menjadi empat bagian yang
secara desain berbeda, sebagai berikut:

a. Kernel monolitik. Kernel monolitik mengintegrasikan banyak fungsi


di dalam kernel dan menyediakan lapisan abstraksi perangkat keras
secara penuh terhadap perangkat keras yang berada di bawah
sistem operasi.
b. Mikrokernel. Mikrokernel menyediakan sedikit saja dari abstraksi
perangkat keras dan menggunakan aplikasi yang berjalan di
atasnya—yang disebut dengan server—untuk melakukan beberapa
fungsionalitas lainnya.
c. Kernel hibrida. Kernel hibrida adalah pendekatan desain microkernel
yang dimodifikasi. Pada hybrid kernel, terdapat beberapa tambahan
kode di dalam ruangan kernel untuk meningkatkan performanya.
d. Exokernel. Exokernel menyediakan hardware abstraction secara
minimal, sehingga program dapat mengakses hardware secara
langsung. Dalam pendekatan desain exokernel, library yang dimiliki
oleh sistem operasi dapat melakukan abstraksi yang mirip dengan
abstraksi yang dilakukan dalam desain monolithic kernel.

1.2 Kernel monolitik


1.3 Pendekatan kernel monolitik didefinisikan sebagai sebuah antarmuka
virtual yang berada pada tingkat tinggi di atas perangkat keras, dengan
sekumpulan primitif atau system call untuk mengimplementasikan
layanan-layanan sistem operasi, seperti halnya manajemen proses,
konkurensi (concurrency), dan manajemen memori pada modul-modul
kernel yang berjalan di dalam mode supervisor.

Meskipun jika setiap modul memiliki layanan operasi-operasi tersebut terpisah


dari modul utama, integrasi kode yang terjadi di dalam monolithic kernel
sangatlah kuat, dan karena semua modul berjalan di dalam address space yang
sama, sebuah bug dalam salah satu modul dapat merusak keseluruhan sistem.
Akan tetapi, ketika implementasi dilakukan dengan benar, integrasi komponen
internal yang sangat kuat tersebut justru akan mengizinkan fitur-fitur yang dimiliki
oleh sistem yang berada di bawahnya dieksploitasi secara efektif, sehingga
membuat sistem operasi dengan monolithic kernel sangatlah efisien—meskipun
sangat sulit dalam pembuatannya.

Pada sistem operasi modern yang menggunakan monolithic kernel, seperti


halnya Linux, FreeBSD, Solaris, dan Microsoft Windows, dapat memuat modul-
modul yang dapat dieksekusi pada saat kernel tersebut dijalankan sehingga
mengizinkan ekstensi terhadap kemampuan kernel sesuai kebutuhan, dan tentu
saja dapat membantu menjaga agar kode yang berjalan di dalam ruangan kernel
(kernel-space) seminim mungkin.

Di bawah ini ada beberapa sistem operasi yang menggunakan Monolithic kernel:

 Kernel sistem operasi UNIX tradisional, seperti halnya kernel dari sistem
operasi UNIX keluarga BSD (NetBSD, BSD/I, FreeBSD, dan lainnya).
 Kernel sistem operasi GNU/Linux, Linux.
 Kernel sistem operasi Windows (versi 1.x hingga 4.x; kecuali Windows
NT).

Mikrokernel

Pendekatan mikrokernel berisi sebuah abstraksi yang sederhana terhadap


hardware, dengan sekumpulan primitif atau system call yang dapat digunakan
untuk membuat sebuah sistem operasi agar dapat berjalan, dengan layanan-
layanan seperti manajemen thread, komunikasi antar address space, dan
komunikasi antar proses. Layanan-layanan lainnya, yang biasanya disediakan
oleh kernel, seperti halnya dukungan jaringan, pada pendekatan microkernel
justru diimplementasikan di dalam ruangan pengguna (user-space), dan disebut
dengan server.

Server atau disebut sebagai peladen adalah sebuah program, seperti halnya
program lainnya. Server dapat mengizinkan sistem operasi agar dapat
dimodifikasi hanya dengan menjalankan program atau menghentikannya.
Sebagai contoh, untuk sebuah mesin yang kecil tanpa dukungan jaringan, server
jaringan (istilah server di sini tidak dimaksudkan sebagai komputer pusat
pengatur jaringan) tidak perlu dijalankan. Pada sistem operasi tradisional yang
menggunakan monolithic kernel, hal ini dapat mengakibatkan pengguna harus
melakukan rekompilasi terhadap kernel, yang tentu saja sulit untuk dilakukan
oleh pengguna biasa yang awam.

Dalam teorinya, sistem operasi yang menggunakan microkernel disebut jauh


lebih stabil dibandingkan dengan monolithic kernel, karena sebuah server yang
gagal bekerja, tidak akan menyebabkan kernel menjadi tidak dapat berjalan, dan
server tersebut akan dihentikan oleh kernel utama. Akan tetapi, dalam
prakteknya, bagian dari system state dapat hilang oleh server yang gagal bekerja
tersebut, dan biasanya untuk melakukan proses eksekusi aplikasi pun menjadi
sulit, atau bahkan untuk menjalankan server-server lainnya.

Sistem operasi yang menggunakan microkernel umumnya secara dramatis


memiliki kinerja di bawah kinerja sistem operasi yang menggunakan monolithic
kernel. Hal ini disebabkan oleh adanya overhead yang terjadi akibat proses
input/output dalam kernel yang ditujukan untuk mengganti konteks (context
switch) untuk memindahkan data antara aplikasi dan server.

Beberapa sistem operasi yang menggunakan microkernel:

 IBM AIX, sebuah versi UNIX dari IBM


 Amoeba, sebuah kernel yang dikembangkan untuk tujuan edukasi
 Kernel Mach, yang digunakan di dalam sistem operasi GNU/Hurd,
NexTSTEP, OPENSTEP, dan Mac OS/X
 Minix, kernel yang dikembangkan oleh Andrew Tanenbaum untuk tujuan
edukasi
 Symbian OS, sebuah sistem operasi yang populer digunakan pada hand
phone, handheld device, embedded device, dan PDA Phone.
Kernel hibrida

Kernel hibrida aslinya adalah mikrokernel yang memiliki kode yang tidak
menunjukkan bahwa kernel tersebut adalah mikrokernel di dalam ruangan
kernel-nya. Kode-kode tersebut ditaruh di dalam ruangan kernel agar dapat
dieksekusi lebih cepat dibandingkan jika ditaruh di dalam ruangan user. Hal ini
dilakukan oleh para arsitek sistem operasi sebagai solusi awal terhadap masalah
yang terjadi di dalam mikrokernel: kinerja.

Beberapa orang banyak yang bingung dalam membedakan antara kernel hibrida
dan kernel monolitik yang dapat memuat modul kernel setelah proses booting,
dan cenderung menyamakannya. Antara kernel hibrida dan kernel monolitik jelas
berbeda. Kernel hibrida berarti bahwa konsep yang digunakannya diturunkan
dari konsep desain kernel monolitik dan mikrokernel. Kernel hibrida juga memiliki
secara spesifik memiliki teknologi pertukaran pesan (message passing) yang
digunakan dalam mikrokernel, dan juga dapat memindahkan beberapa kode
yang seharusnya bukan kode kernel ke dalam ruangan kode kernel karena
alasan kinerja.

Di bawah ini adalah beberapa sistem operasi yang menggunakan kernel hibrida:

 BeOS, sebuah sistem operasi yang memiliki kinerja tinggi untuk aplikasi
multimedia.
 Novell NetWare, sebuah sistem operasi yang pernah populer sebagai
sistem operasi jaringan berbasis IBM PC dan kompatibelnya.
 Microsoft Windows NT (dan semua keturunannya).

Exokernel

Sebenarnya, Exokernel bukanlah pendekatan kernel sistem operasi yang


umum—seperti halnya microkernel atau monolithic kernel yang populer,
melainkan sebuah struktur sistem operasi yang disusun secara vertikal.

Ide di balik exokernel adalah untuk memaksa abstraksi yang dilakukan oleh
developer sesedikit mungkin, sehingga membuat mereka dapat memiliki banyak
keputusan tentang abstraksi hardware. Exokernel biasanya berbentuk sangat
kecil, karena fungsionalitas yang dimilikinya hanya terbatas pada proteksi dan
penggandaan sumber daya.

Kernel-kernel klasik yang populer seperti halnya monolithic dan microkernel


melakukan abstraksi terhadap hardware dengan menyembunyikan semua
sumber daya yang berada di bawah hardware abstraction layer atau di balik
driver untuk hardware. Sebagai contoh, jika sistem operasi klasik yang berbasis
kedua kernel telah mengalokasikan sebuah lokasi memori untuk sebuah
hardware tertentu, maka hardware lainnya tidak akan dapat menggunakan lokasi
memori tersebut kembali.

Exokernel mengizinkan akses terhadap hardware secara langsung pada tingkat


yang rendah: aplikasi dan abstraksi dapat melakukan request sebuah alamat
memori spesifik baik itu berupa lokasi alamat physical memory dan blok di dalam
hard disk. Tugas kernel hanya memastikan bahwa sumber daya yang diminta itu
sedang berada dalam keadaan kosong—belum digunakan oleh yang lainnya—
dan tentu saja mengizinkan aplikasi untuk mengakses sumber daya tersebut.
Akses hardware pada tingkat rendah ini mengizinkan para programmer untuk
mengimplementasikan sebuah abstraksi yang dikhususkan untuk sebuah aplikasi
tertentu, dan tentu saja mengeluarkan sesuatu yang tidak perlu dari kernel agar
membuat kernel lebih kecil, dan tentu saja meningkatkan performa.

Exokernel biasanya menggunakan library yang disebut dengan libOS untuk


melakukan abstraksi. libOS memungkinkan para pembuat aplikasi untuk menulis
abstraksi yang berada pada level yang lebih tinggi, seperti halnya abstraksi yang
dilakukan pada sistem operasi tradisional, dengan menggunakan cara-cara yang
lebih fleksibel, karena aplikasi mungkin memiliki abstraksinya masing-masing.
Secara teori, sebuah sistem operasi berbasis Exokernel dapat membuat sistem
operasi yang berbeda seperti halnya Linux, UNIX, dan Windows dapat berjalan di
atas sistem operasi tersebut.

Contoh implementasi kernel

Windows

Pada sistem operasi Windows, kernel ditangani oleh file kernel32.dll. Kernel ini
menangani manajemen memori, operasi masukan / keluaran dan interrupt.
Ketika boot Windows, kernel32.dll di-load ke dalam spasi protected memory
sehingga spasi memorinya tidak digunakan oleh aplikasi lain. Apabila ada
aplikasi yang mencoba mengambil spasi memori kernel32.dll, akan muncul
pesan kesalahan "invalid page fault".

EKSEKUSI PROGRAM

Sebuah program komputer biasanya akan disimpan terlebih dahulu dalam


memori utama (RAM) komputer sebelum dijalankan yang biasanya dilakukan
oleh sistem operasi. Prosesor kemudian akan mengeksekusi program tersebut,
instruksi demi instruksi sampai program tersebut diterminasi. Sebuah program
yang tengah dieksekusi oleh prosesor dinamakan sebagai proses.[6] Terminasi
ataupun penghentian eksekusi sebuah program biasanya terjadi baik karena
permintaan dari pengguna, interupsi pengguna, kesalahan atas program itu
sendiri, ataupun kesalahan atas perangkat keras yang digunakan.

Umumnya sistem operasi yang ada saat ini sudah mendukung pemanfaatan
multitasking yang memungkinkan beberapa program komputer dijalankan pada
saat yang bersamaan di sebuah komputer. Untuk dapat menjalankan beberapa
program tersebut pada saat yang bersamaan, sistem operasi memanfaatkan
mekanisme penjadualan proses yang merupakan suatu mekanisme yang akan
mengatur pengalihan prosesor dalam melakukan pemrosesan sehingga
beberapa program komputer tersebut dapat berinteraksi dengan pengguna saat
dijalankan.[10] Di sisi perangkat keras yang digunakan, prosesor modern saat ini
umumnya telah mendukung beberapa core prosesor yang dipancangkan sebagai
sebuah prosesor yang memungkinkannya menjalankan beberapa program
sekaligus.[11]

Sebuah program komputer dapat melakukan kalkulasi secara simultan pada


beberapa jenis operasi di saat yang bersamaan dengan memanfaatkan thread
atau sebagai proses terpisah. Umumnya prosesor yang ada saat ini sudah
mendukung arsitektur multithreading yang teroptimasi untuk menjalankan
beberapa thread secara efisien.
INTERUPSI

Pengertian Interrupt

Interupsi adalah suatu permintaan khusus pada mikroprocessor untuk melakukan


sesuatu, jika terjadi interupsi maka komputer akan menghentikan dahulu apa
yang sedang dikerjakan dan melakukan apa yang diminta oleh yang
menginterupsi. Interrupt merupakan sub rutin yang sudah tersedia dalam memori
komputer.

Pada IBM PC dan kompatibelnya disediakan 256 buah interupsi

yang diberi nomor 0 s/d 255. Nomor interupsi 0 s/d 1Fh disediakan oleh ROM
BIOS yaitu suatu IC di dalam komputer yang mengatur operasi dasar komputer.
Jadi jika terjadi interupsi dengan nomor 0 s/d 1Fh maka secara default komputer
akan beralih ke ROM BIOS dan melaksanakan program yang terdapat disana.
Program yg melayani suatu interupsi dinamakan Interrupt Handler

Interupsi berbasis pemrograman langsung didukung oleh CPU paling modern.


Interrupts memberikan komputer cara otomatis menyimpan konteks lokal
register, dan menjalankan kode tertentu dalam menanggapi kejadian. Bahkan
komputer yang sangat sederhana saat ini mendukung interupsi hardware, dan
memungkinkan programmer untuk menentukan kode yang akan dijalankan ketika
kejadian berlangsung.

Ketika interupsi diterima, hardware komputer secara otomatis menunda semua


program yang sedang berjalan, statusnya disimpan, dan menjalankan kode
komputer yang terkait dengan interupsi, hal ini analog dengan menempatkan
penunjuk di buku sebagai tanggapan terhadap panggilan telepon. Dalam sistem
operasi modern, interupsi ditangani oleh kernel sistem operasi. Interupsi dapat
berasal dari baik perangkat keras komputer atau dari program berjalan.

Ketika sebuah perangkat keras memicu interupsi, kernel sistem operasi akan
memutuskan bagaimana menangani kejadian ini, dengan menjalankan kode
pemrosesan. Besarnya kode yang dijalankan tergantung pada prioritas interupsi
(misalnya: orang biasanya akan merespon alarm detektor kebakaran sebelum
menjawab telepon). Penanganan interupsi hardware biasanya didelegasikan ke
perangkat lunak device driver , yang mungkin salah satu bagian dari kernel
sistem operasi, atau bagian dari program lain, atau keduanya. Device driver
kemudian dapat menyampaikan informasi ke program yang berjalan dengan
berbagai cara.

Sebuah program mungkin juga untuk memicu interupsi kepada sistem operasi.
Jika sebuah program ingin mengakses hardware misalnya, dia dapat
menginterupsi kernel sistem operasi, yang menyebabkan kontrol untuk
dikembalikan ke kernel. Kernel kemudian akan memproses permintaan tersebut.
Jika sebuah program ingin sumber daya tambahan (atau ingin menumpahkan
sumber daya) seperti memori, ia akan memicu interupsi untuk mendapatkan
perhatian kernel.

Jenis-Jenis Interrupts

• Internal HW interruptions

a. Ditimbulkan/digenerasi oleh peristiwa tertentu yang terjadi

pada waktu/selama eksekusi program

b. Diatur oleh HW dan tidak mungkin diubah


c. Contoh: tipe interrupt u/ counter clock internal; HW call interrupt ini u/
memaintance “time to date”

• External HW interupstions

􀀹 Ditimbulkan/digenerasi oleh devais peripheral, mis keyboard,

printers, dsb.

􀀹 Biasa juga ditimbulkan/digenerasi oleh Co-prosessor

􀀹 Tidak mungkin mendeaktivekan

􀀹 Tidak dikirim langsung ke CPU, melainkan ke IC yang memiliki


fungsi u/ menghandle secara eksklusive interrupts ini. (IC 􀀹

PIC8259A, yg dikontrol oleh CPU dgn menggunakan urutan

komunikasi 􀀹 PATH Control

• Software interruptions

• Diaktifkan langsung oleh assembler melalui sejumlah interuosi

yg diharapkan dgn instruksi INT

• Terdapat dua jenis:

• DOS interruptions

• BIOS interupstions

Interrupt 2/5

􀀹 Perbedaannya:

􀀹 DOS int. lebih mudah digunakan, namun lebih lambat, karena int. jenis ini
menggunakan BIOS, BIOS int. lebih cepat, namun banyak kerugiannya karena
BIOS bagian HW dan HW-specific

􀀹 Pemilihan interupts tergantung pada karakteristik yang akan kita berikan pada
program: SPEED 􀀹 BIOS int; PORTABILITY 􀀹 DOS int.

Ada 2 macam Software Intterrupt :

1. Vektor Interrupt ROM BIOS

Interrupt 00h - 1Fh (0-31) adalah interrupt BIOS dan standar di


semua komputer baik yang menggunakan sistem operasi DOS atau
bukan. Lokasi Interrupt Vector table-nya ada di alamat absolut 0000h-
007Fh Interrupt BIOS dibawah ini telah dipastikan kegunaannya oleh
sistem untuk keperluan khusus tidak boleh diubah oleh program seperti
lainnya

1. DEVIDE BY ZERO Jika terjadi pembagian dengan nol maka


proses akan segera dihentikan

2. SINGLE STEP Untuk melaksanakan/mengeksekusi instruksi


satu per satu

3. NMI Pelayanan terhadap NMI (Non Maskable Interrupt) yaitu


interupsi yang tak dapat dicegah

4. BREAK POINT Jika suatu program menyebabkan overflow flag


menjadi 1, interrupt ini akan melayani pencegahannya dan memberi
tanda error

2. Interrupt DOS

Interrupt 20h-FFh (32 - 255) adalah interrupt DOS, dan hanya ada
pada komputer yang menggunakan sistem operasi DOS dan interrupt
handlernya di-load ke memori oleh DOS pada saat DOS digunakan.
Lokasi Interrupt Vector table-nya ada di alamat absolut 07Fh-3FFh

MODE

MANAJEMEN MEMORY

MANAJEMEN MEMORI SISTEM OPERASI


Manajemen Memori

Memori adalah pusat dari operasi pada sistem komputer modern, berfungsi
sebagai tempat

penyimpanan informasi yang harus diatur dan dijaga sebaikbaiknya.

Memori adalah array besar dari word atau byte, yang disebut alamat. CPU
mengambil instruksi dari memory berdasarkan nilai dari program counter.
Sedangkan manajemen memori adalah suatu kegiatan untuk mengelola memori
komputer. Proses ini menyediakan cara mengalokasikan memori untuk proses
atas permintaan mereka, membebaskan untuk digunakan kembali ketika tidak
lagi diperlukan serta menjaga alokasi ruang memori bagi proses. Pengelolaan
memori utama sangat penting untuk sistem komputer, penting untuk memproses
dan fasilitas masukan/keluaran secara efisien, sehingga memori dapat
menampung sebanyak mungkin proses dan sebagai upaya agar pemogram atau
proses tidak dibatasi kapasitas memori fisik di sistem komputer.

a. Jenis Memori

• Memori Kerja

ROM/

PROM/EPROM/EEPROM

RAM

Cache

memory

• Memori Dukung

Floppy

Harddisk

CD
b. Fungsi manajemen memori :

Manajemen memori merupakan salah satu bagian terpenting dalam sistem


operasi. Memori perlu

dikelola sebaikbaiknya

agar :

1. Utilitas CPU meningkat.

2. Data dan instruksi dapat diakses dengan cepat oleh CPU.

3. Tercapai efisiensi dalam pemakaian memori yang terbatas.

4. Transfer data dari/ke memori utama ke/dari CPU dapat lebih efisien.

5. Mengelola informasi yang dipakai dan tidak dipakai.

6. Mengalokasikan memori ke proses yang memerlukan.

7. Mendealokasikan memori dari proses telah selesai.

8. Mengelola swapping atau paging antara memori utama dan disk.

1. Isi Memori

Instruksi eksekusi yang umum, contohnya, pertama mengambil instruksi dari


memori. Instruksi

dikodekan dan mungkin mengambil operand dari memory. Setelah instruksi


dieksekusi pada

operand, hasilnya ada yang dikirim kembali ke memory. Sebagai catatan, unit
memory hanya

merupakan deretan alamat memory; tanpa tahu bagaimana membangkitkan


(instruction counter,
indexing, indirection, literal address dan lainnya) atau untuk apa (instruksi atau
data). Oleh

karena itu, kita dapat mengabaikan bagaimana alamat memori dibangkitkan oleh
program, yang

lebih menarik bagaimana deretan alamat memori dibangkitkan oleh program


yang sedang

berjalan.

a. Pengikatan Alamat (Address Binding)

Pengikatan alamat adalah cara instruksi dan data (yang berada di disk sebagai
file yang dapat

dieksekusi) dipetakan ke alamat memori. Sebagian besar sistem


memperbolehkan sebuah proses

user (user process) untuk meletakkan di sembarang tempat dari memori fisik.
Sehingga,

meskipun alamat dari komputer dimulai pada 00000, alamat pertama dari proses
user tidak perlu

harus dimulai 00000. Instruksi pengikatan instruksi dan data ke alamat memori
dapat dilakukan

pada saat :

o Compile time

Jika lokasi memori diketahui sejak awal, kode absolut dapat dibangkitkan,
apabila terjadi

perubahan alamat awal harus dilakukan kompilasi ulang.

o Load time
Harus membangkitkan kode relokasi jika lokasi memori tidak diketahui pada saat
waktu

kompilasi.

o Execution time

Pengikatan ditunda sampai waktu eksekusi jika proses dapat dipindahkan


selama eksekusi dari

satu segmen memori ke segmen memori lain.

b. Dinamic Loading

Untuk memperoleh utilitas ruang memori, dapat menggunakan dynamic loading.


Dengan

dynamic loading, sebuah rutin tidak disimpan di memori sampai dipanggil.


Semua rutin

disimpan pada disk dalam format relocatable load. Mekanisme dari dynamic
loading adalah

program utama diload

dahulu dan dieksekusi. Bila suatu routine perlu memanggil routine lain,

routine yang dipanggil lebih dahulu diperiksa apakah rutin yang dipanggil sudah
diload.

Jika

tidak, relocatable linking loader dipanggil untuk meload

rutin yg diminta ke memori dan

mengubah

tabel alamat.
Keuntungan dari dynamic loading adalah rutin yang tidak digunakan tidak pernah
diload.

Skema ini lebih berguna untuk kode dalam jumlah besar diperlukan untuk
menangani

kasuskasus

yang jarang terjadi seperti error routine. Dinamic loading tidak memerlukan

dukungan khusus dari sistem operasi.

c. Dinamic Linking

Sebagian besar sistem operasi hanya mensupport

static linking, dimana sistem library language

diperlakukan seperti obyek modul yang lain dan dikombinasikan dengan loader
ke dalam binary

program image. Dinamic linking biasanya digunakan dengan sistem library,


seperti language

subroutine library. Tanpa fasilitas ini, semua program pada sistem perlu
mempunyai copy dari

library language di dalam executable image. Bagaimanapun, tidak seperti


dynamic loading,

dynamic linking membutuhkan beberapa dukungan dari sistem operasi

d. Overlay

Sebuah proses dapat lebih besar daripada jumlah memori yang dialokasikan
untuk proses, teknik

overlay biasanya digunakan untuk kasus ini. Teknik Overlay biasanya digunakan
untuk
memungkinkan sebuah proses mempunyai jumlah yang lebih besar dari memori
fisik daripada

alokasi memori yang diperuntukkan. Overlay tidak membutuhkan dukungan


khusus dari sistem

operasi. User dapat mengimplementasikannya secara lengkap menggunakan


struktur file

sederhana, membaca dari file ke memori dan meloncat ke memori dan


mengeksekusi instruksi

read yang lebih baru.

2. Ruang Alamat Logika Dan Ruang Alamat Fisik

Alamat yang dibangkitkan oleh CPU disebut alamat logika (logical address)
dimana alamat

terlihat sebagai uni memory yang disebut alamat fisik (physical address). Tujuan
utama

manajemen memori adalah konsep meletakkan ruang alamat logika ke ruang


alamat fisik. Hasil

skema waktu kompilasi dan waktu pengikatan alamat pada alamat logika dan
alamat memori

adalah sama. Tetapi hasil skema waktu pengikatan alamat waktu eksekusi
berbeda. dalam hal ini,

alamat logika disebut dengan alamat maya (virtual address). Himpunan dari
semua alamat logika

yang dibangkitkan oleh program disebut dengan ruang alamat logika (logical
address space);

himpunan dari semua alamat fisik yang berhubungan dengan alamat logika
disebut dengan ruang
alamat fisik (physical address space). Memory Manajement Unit (MMU) adalah
perangkat keras

yang memetakan alamat virtual ke alamat fisik. Pada skema MMU, nilai register
relokasi

ditambahkan ke setiap alamat yang dibangkitkan oleh proses user pada waktu
dikirim ke

memori.

3. Swapping

Swapping merupakan pemindahan proses dari memori utama ke disk dan


kembali lagi. Sebuah

proses harus berada di memori untuk dieksekusi. Proses juga dapat ditukar
(swap) sementara

keluar memori ke backing store dan kemudian dibawa kembali ke memori untuk
melanjutkan

eksekusi. Backing store berupa disk besar dengan kecepatan tinggi yang cukup
untuk meletakkan

copy dari semua memory image untuk semua user, sistem juga harus
menyediakan akses

langsung ke memory image tersebut.

4. Alokasi Berurutan

Memori utama biasanya dibagi ke dalam dua partisi yaitu untuk

o Sistem operasi biasanya diletakkan pada alamat memori rendah dengan vektor
interupsi

o Proses user yang diletakkan pada alamat memori tinggi.


Alokasi proses user pada memori berupa single partition allocation atau multiple
partition

allocation.

a. Single Partition Allocation

Pada single partition allocation diasumsikan sistem operasi ditempatkan di


memori rendah dan

proses user dieksekusi di memori tinggi. Kode dan data sistem operasi harus
diproteksi dari

perubahan tak terduga oleh user proses.

b. Multiple Partition Allocation

Pada multiple partition allocation, mengijinkan memori user dialokasikan untuk


proses yang

berbeda yang berada di antrian input (input queue) yang menunggu dibawa ke
memori. Terdapat

dua skema yaitu partisi tetap (fixed partition) dimana memori dibagi dalam
sejumlah partisi tetap

dan setiap partisi berisi tepat satu proses. Jumlah partisi terbatas pada tingkat
multiprogramming.

Digunakan oleh IBM OS/360 yang disebut Multiprogramming with a Fixed


number of Task

(MFT). Skema yang kedua adalah partisi dinamis (variable partition) merupakan
MFT yang

digeneralisasi yang disebut Multiprogramming with a Variable number of Tasks


(MVT).

c. Fragmentasi
Fragmentasi Eksternal terjadi pada situasi dimana terdapat cukup ruang memori
total untuk

memenuhi permintaan, tetapi tidak dapat langsung dialokasikan karena tidak


berurutan.

Fragmentasi eksternal dilakukan pada algoritma alokasi dinamis, terutama


strategi firstfit

dan

bestfit.

Fragmentasi Internal terjadi pada situasi dimana memori yang dialokasikan lebih
besar

dari pada memori yang diminta tetapi untuk satu partisi tertentu hanya berukuran
kecil sehingga

tidak digunakan.

5. Paging

a. Konsep Dasar Paging

Paging merupakan kemungkinan solusi untuk permasalahan fragmentasi


eksternal dimana ruang

alamat logika tidak berurutan; mengijinkan sebuah proses dialokasikan pada


memori fisik yang

terakhir tersedia. Memori fisik dibagi ke dalam blokblok

ukuran tetap yang disebut frame.

b. Implementasi Sistem Paging

Setiap sistem operasi mempunyai metode sendiri untuk menyimpan tabel page.
Beberapa sistem
operasi mengalokasikan sebuah tabel page untuk setiap proses. Pointer ke tabel
page disimpan

dengan nilai register lainnya dari PCB. Pada dasarnya terdapat 3 metode yang
berbeda untuk

implementasi tabel page :

• Tabel page diimplementasikan sebagai kumpulan dari “dedicated” register.

Register berupa rangkaian logika berkecepatan sangat tinggi untuk efisiensi


translasi alamat

paging.

• Tabel page disimpan pada main memori dan menggunakan page table base
registe” (PTBR)

untuk menunjuk ke tabel page yang disimpan di main memori. Penggunakan


memori untuk

mengimplementasikan tabel page akan memungkinkan tabel page sangat besar


(sekitar 1 juta

entry).

• Menggunakan perangkat keras cache yang khusus, kecil dan cepat yang
disebut associative

register atau translation lookaside

buffers (TLBs). Merupakan solusi standar untuk

permasalahan penggunaan memori untuk implementasi tabel page.

c. Proteksi

Pada model page, proteksi memori menggunakan bit proteksi yang diasosiasikan
untuk setiap
frame. Biasanya bit proteksi disimpan pada tabel page. Satu bit mendifinisikan
satu page untuk

“read and write” atau “readonly”.

Setiap acuan ke memori melalui tabel page untuk menemukan

nomor frame yang benar. Level proteksi yang lebih baik dapat dicapai dengan
menambah jumlah

bit yang digunakan.

d. Multilevel Paging

Model multilevel paging digunakan pada sistem yang mempunyai ruang alamat
logika yang

sangat besar yaitu antara 232 s/d 264. Pada sistem ini, tabel page akan menjadi
sangat besar.

Misalnya untuk sistem dengan ruang alamat logika 32 bit dan ukuran page 4K
byte, maka tabel

page berisi 1 juta entry (232 / 212). Solusinya yaitu dengan melakukan partisi
tabel ke beberapa

beberapa bagian yang lebih kecil.

e. Shared Page

Pada skema paging, dimungkinkan untuk sharing kode umum. Bentuk ini penting
terutama pada

lingkungan time sharing. Satu copy readonly

dibagi ke beberapa proses (misalnya editor teks,

compiler dan sistem window). Kode yang dibagi harus berada pada lokasi ruang
alamat logika
yang sama untuk semua proses.

6. Segmentasi

Segmentasi adalah skema manajemen memori yang memungkinkan user untuk


melihat memori

tersebut. Ruang alamat logika adalah kumpulan segmen. Setiap segmen


mempunyai nama dan

panjang. Spesifikasi alamat berupa nama segmen dan offset. Segment diberi
nomor dan disebut

dengan nomor segmen (bukan nama segmen) atau segment number. Segmen
dibentuk secara

otomatis oleh compiler.

a. Konsep Dasar Segmentasi

Konsep segmentasi adalah user atau programmer tidak memikirkan sejumlah


rutin program yang

dipetakan ke main memori sebagai array linier dalam byte tetapi memori dilihat
sebagai

kumpulan segmen dengan ukuran berbedabeda,

tidak perlu berurutan diantara segment tersebut.

Sebuah program adalah kumpulan segmen. Suatu segmen adalah unit logika
seperti program

utama, prosedur, fungsi, metode, obyek, variabel lokal, variabel global, blok
umum, stack, tabel

simbol, array dan lainlain

.
b. Arsitektur Segmentasi

Alamat logika terdiri dari dua bagian yaitu nomor segmen (s) dan offset (d) yang
dituliskan

dengan .

Pemetaan alamat logika ke alamat fisik menggunakan tabel segmen (segment


table), terdiri dari :

o Segmen basis (base) berisi alamat fisik awal

o Segmen limit merupakan panjang segmen Seperti tabel page, tabel segmen
dapat berupa

register atau memori berkecepatan tinggi.

o Segmenttable

base register (STBR) digunakan untuk menyimpan alamat yang menunjuk ke

segment table.

o Segmenttable

length register (STLR) digunakan untuk menyimpan nilai jumlah segmen yang

digunakan program.

o Untuk alamat logika (s, d), pertama diperiksa apakah segment number s legal
(s < STLR),

kemudian tambahkan segment number ke STBR, alamat hasil (STBR + s) ke


memori dari

segment table.

c. Proteksi dan Sharing


Proteksi bit dapat diletakkan pada tabel segmen. Segmen instruksi dapat
diproteksi sebagai

segmen readonly

atau execute only, segmen data dapat diproteksi sebagai segmen readwrite.

Pemetaan pada perangkat keras memory akan memeriksa bit proteksi untuk
mencegah akses

yang illegal.

Konsep Dasar Menagemen Memory

Operasi manajemen memori yang terpeting adalah membawa program-program


ke dalam

memori utama untuk dieksekusi oleh prosesor. Pada hampir semua sistem
multiprograming

modern, hal ini meliputi teknik canggih yang dikenal sebagai virtual memori. Pada
gilirannya

virtual memori didasarkan pada penggunaan salah satu atau dua buah teknik
dasar yaitu

segmentasi dan paging.

Sebelum menuju ke virtual memori, maka dapat disiapkan dasar teknik-teknik


yang lebih

sederhana yang tidak melibatkan virtual memori. Di bawah ini ada beberapa
teknik untuk
manajemen memori yang dibuat menjadi tabel dengan menampilkan kekurangan
dan

kelebihannya sebagai berikut:

MEMORY VIRTUAL

Memori virtual adalah sebuah mekanisme yang digunakan oleh aplikasi untuk
menggunakan sebagian dari memori sekunder seolah-olah ia menggunakannya
sebagai RAM fisik yang terinstal di dalam sebuah sistem. Mekanisme ini
beroperasi dengan cara memindahkan beberapa kode yang tidak dibutuhkan ke
sebuah berkas di dalam hard drive yang disebut dengan

Bab 7 : Virtual Memori 216 Setiap program yang dijalankan harus berada di
memori. Memori merupakan suatu tempat penyimpanan utama ( primary
storage) yang bersifat sementara (volatile). Ukuran memori yang terbatas dapat
menimbulkan masalah bagaimana menempatkan program yang berukuran yang
lebih besar dari ukuran memori fisik (memori utama) dan masalah penerapan
multiprogramming yang membutuhkan tempat yang lebih besar di memori.

Gbr.7.1. Memori Virtual Memori virtual memisahkan antara memori logis dan
memori fisiknya. Memori logis merupakan kumpulan keseluruhan halaman dari
suatu program. Tanpa memori virtual, memori logis akan langsung dibawa ke
memori fisik (memori utama). Di sinilah memori virtual melakukan pemisahan
dengan menaruh memori logis ke

secondary storage

(
disk

sekunder) dan hanya membawa halaman yang diperlukan ke memori utama


(memori fisik). Teknik ini menempatkan keseluruhan program di

disk

sekunder dan membawa halaman-halaman yang diperlukan ke memori fisik


sehingga memori utama hanya akan menyimpan sebagian alamat proses yang
sering digunakan dan sebagian lainnya akan disimpan dalam

disk

sekunder dan dapat diambil sesuai dengan kebutuhan. Jadi jika proses yang
sedang berjalan membutuhkan instruksi atau data yang terdapat pada suatu
halaman
Bab 7 : Virtual Memori 217 tertentu maka halaman tersebut akan dicari di
memori utama. Jika halaman yang diinginkan tidak ada maka akan dicari ke

disk

sekunder.
7.3.

Konsep

Virtual Memory

Pada desain sistem memori virtual, memori utama menyimpan sebagian alamat
proses yang sering digunakan dan bagian lain disimpan dalam

disk

dan diambil sesuai dengan keinginan. Sehingga akan muncul anggapan bahwa
waktu akses akan terjadi lebih banyak di memori utama daripada di

disk

. Sistem operasi yang mendukung anggapan ini akan menerjemahkan alamat


virtual pada alamat fisik saat proses berlangsung dan hal ini hanya terjadi sekali.
Penerjemahan ini terjadi pada bagian

pages

dengan dukungan unit manajemen memori. Pada gambar ditunjukkan ruang


sebuah memori virtual yang dibagi menjadi bagian- bagian yang sama dan
diidentifikasikan dengan nomor

virtual pages

. Memori fisik di bagi menjadi

page frames
yang berukuran sama dan diidentifikasikan dengan nomor

page frames

Frame menyimpan data dari

page

. Atau memori virtual memetakan nomor virtual

page

ke nomor frame

page

Mapping

(pemetaan) menyebabkan virtual

page

hanya dapat mempunyai satu lokasi alamat fisik. Pemetaan secara

invers

, yaitu dari nomor frame

page

ke nomor
virtual page

, menyebabkan beberapa virtual

page

dipetakan pada satu frame

page

yang sama, bisa dilaksanakan tetapi merupakan fungsi yang tidak begitu
diperlukan. Sistem

paging

, jika sebuah ruang diperlukan untuk proses dan

page

yang bersangkutan tidak sedang digunakan, maka

page

dari proses akan mengalami

page

d out (disimpan ke

disk

), memori akan kosong untuk

page

aktif yang lain.


Page

yang dipindah dari

disk

ke memori ketika diperlukan dinamakan

page

d in (dikembalikan ke memori). Ketika sebuah

item

dapat mengalami

paging

, maka

item

tersebut termasuk dalam

item

yang menempati ruang virtual, yang di akses dengan alamat virtual, dan ruangan
yang ada dialokasikan untuk informasi

mapping

. Sistem operasi

Anda mungkin juga menyukai