STRUKTUR SISTEM OPERASI
Komponen-komponen Sistem
Pada
kenyataannya tidak semua sistem operasi mempunyai struktur yang sama. Namun
menurut Avi Silberschatz, Peter Galvin, dan Greg Gagne, umumnya sebuah sistem
operasi modern mempunyai komponen sebagai berikut:
- Managemen Proses.
- Managemen Memori Utama.
- Managemen Secondary-Storage.
- Managemen Sistem I/O.
- Managemen Berkas.
- Sistem Proteksi.
- Jaringan.
- Command-Interpreter system.
Managemen Proses
Proses
adalah keadaan ketika sebuah program sedang di eksekusi. Sebuah proses
membutuhkan beberapa sumber daya untuk menyelesaikan tugasnya. sumber daya
tersebut dapat berupa CPU time, memori, berkas-berkas, dan
perangkat-perangkat I/O.
Sistem
operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan
managemen proses seperti:
- Pembuatan dan penghapusan proses pengguna dan sistem proses.
- Menunda atau melanjutkan proses.
- Menyediakan mekanisme untuk proses sinkronisasi.
- Menyediakan mekanisme untuk proses komunikasi.
- Menyediakan mekanisme untuk penanganan deadlock.
Managemen Memori Utama
Memori
utama atau lebih dikenal sebagai memori adalah sebuah array yang
besar dari word atau byte, yang ukurannya mencapai
ratusan, ribuan, atau bahkan jutaan. Setiap word atau byte mempunyai
alamat tersendiri. Memori Utama berfungsi sebagai tempat penyimpanan yang akses
datanya digunakan oleh CPU atau perangkat I/O. Memori utama termasuk tempat
penyimpanan data yang sementara (volatile), artinya data dapat hilang
begitu sistem dimatikan.
Sistem
operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan
managemen memori seperti:
- Menjaga track dari memori yang sedang digunakan dan siapa yang menggunakannya.
- Memilih program yang akan di-load ke memori.
- Mengalokasikan dan meng-dealokasikan ruang memori sesuai kebutuhan.
Managemen Secondary-Storage
Data
yang disimpan dalam memori utama bersifat sementara dan jumlahnya sangat kecil.
Oleh karena itu, untuk meyimpan keseluruhan data dan program komputer
dibutuhkan secondary-storage yang bersifat permanen dan mampu
menampung banyak data. Contoh dari secondary-storage adalah harddisk,
disket, dll.
Sistem
operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan dengan disk-management seperti: free-space
management, alokasi penyimpanan, penjadualan disk.
Managemen Sistem I/O
Sering
disebut device manager. Menyediakan "device driver"
yang umum sehingga operasi I/O dapat seragam (membuka, membaca, menulis,
menutup). Contoh: pengguna menggunakan operasi yang sama untuk membaca berkas
pada hard-disk, CD-ROM dan floppy disk.
Komponen
Sistem Operasi untuk sistem I/O:
- Buffer: menampung sementara data dari/ ke perangkat I/O.
- Spooling: melakukan penjadualan pemakaian I/O sistem supaya lebih efisien (antrian dsb.).
- Menyediakan driver untuk dapat melakukan operasi "rinci" untuk perangkat keras I/O tertentu.
Managemen Berkas
Berkas
adalah kumpulan informasi yang berhubungan sesuai dengan tujuan pembuat berkas
tersebut. Berkas dapat mempunyai struktur yang bersifat hirarkis (direktori,
volume, dll.). Sistem operasi bertanggung-jawab:
- Pembuatan dan penghapusan berkas.
- Pembuatan dan penghapusan direktori.
- Mendukung manipulasi berkas dan direktori.
- Memetakan berkas ke secondary storage.
- Mem-backup berkas ke media penyimpanan yang permanen (non-volatile).
Sistem Proteksi
Proteksi
mengacu pada mekanisme untuk mengontrol akses yang dilakukan oleh program,
prosesor, atau pengguna ke sistem sumber daya. Mekanisme proteksi harus:
- membedakan antara penggunaan yang sudah diberi izin dan yang belum.
- specify the controls to be imposed.
- provide a means of enforcement.
Jaringan
Sistem
terdistribusi adalah sekumpulan prosesor yang tidak berbagi memori atau clock.
Tiap prosesor mempunyai memori sendiri. Prosesor-prosesor tersebut terhubung
melalui jaringan komunikasi Sistem terdistribusi menyediakan akses pengguna ke
bermacam sumber-daya sistem. Akses tersebut menyebabkan:
- Computation speed-up.
- Increased data availability.
- Enhanced reliability.
Command-Interpreter System
Sistem
Operasi menunggu instruksi dari pengguna (command driven). Program yang
membaca instruksi dan mengartikan control statements umumnya
disebut: control-card interpreter, command-line interpreter,
dan UNIX shell. Command-Interpreter System sangat
bervariasi dari satu sistem operasi ke sistem operasi yang lain dan disesuaikan
dengan tujuan dan teknologi I/O devices yang ada.
Contohnya: CLI, Windows, Pen-based (touch),
dan lain-lain.
Layanan Sistem Operasi
Eksekusi
program adalah kemampuan sistem untuk "load" program ke memori
dan menjalankan program. Operasi I/O: pengguna tidak dapat secara langsung
mengakses sumber daya perangkat keras, sistem operasi harus menyediakan
mekanisme untuk melakukan operasi I/O atas nama pengguna. Sistem manipulasi
berkas dalah kemampuan program untuk operasi pada berkas (membaca, menulis,
membuat, and menghapus berkas). Komunikasi adalah pertukaran data/ informasi
antar dua atau lebih proses yang berada pada satu komputer (atau lebih). Deteksi error adalah
menjaga kestabilan sistem dengan mendeteksi "error", perangkat
keras mau pun operasi.
Efesisensi
penggunaan sistem:
- Resource allocator adalah mengalokasikan sumber-daya ke beberapa pengguna atau job yang jalan pada saat yang bersamaan.
- Proteksi menjamin akses ke sistem sumber daya dikendalikan (pengguna dikontrol aksesnya ke sistem).
- Accounting adalah merekam kegiatan pengguna, jatah pemakaian sumber daya (keadilan atau kebijaksanaan).
System Calls
System
call menyediakan interface antara program (program
pengguna yang berjalan) dan bagian OS. System call menjadi
jembatan antara proses dan sistem operasi. System call ditulis
dalam bahasaassembly atau bahasa tingkat tinggi yang dapat
mengendalikan mesin (C). Contoh: UNIX menyediakan system call: read,
write => operasi I/O untuk berkas.
Sering
pengguna program harus memberikan data (parameter) ke OS yang akan dipanggil.
Contoh pada UNIX: read(buffer, max_size, file_id);
Tiga
cara memberikan parameter dari program ke sistem operasi:
- Melalui registers (sumber daya di CPU).
- Menyimpan parameter pada data struktur (table) di memori, dan alamat table tsb ditunjuk oleh pointer yang disimpan di register.
- Push (store) melalui "stack" pada memori dan OS mengambilnya melalui pop pada stack tsb.
Mesin Virtual
Sebuah
mesin virtual (Virtual Machine) menggunakan misalkan terdapat sistem
program => control program yang mengatur pemakaian sumber daya perangkat
keras. Control program = trap System call + akses ke perangkat
keras. Control program memberikan fasilitas ke proses pengguna. Mendapatkan
jatah CPU dan memori. Menyediakan interface "identik"
dengan apa yang disediakan oleh perangkat keras => sharing devices untuk
berbagai proses.
Mesin
Virtual (MV) (MV) => control program yang minimal MV memberikan ilusi multitasking:
seolah-olah terdapat prosesor dan memori ekslusif digunakan MV. MV memilah
fungsi multitasking dan implementasi extended machine (tergantung
proses pengguna) => flexible dan lebih mudah untuk pengaturan. Jika setiap
pengguna diberikan satu MV => bebas untuk menjalankan OS (kernel) yang
diinginkan pada MV tersebut. Potensi lebih dari satu OS dalam satu komputer.
Contoh: IBM VM370: menyediakan MV untuk berbagai OS: CMS (interaktif), MVS,
CICS, dll. Masalah: Sharing disk => OS mempunyai sistem berkas yang mungkin
berbeda. IBM: virtual disk (minidisk) yang dialokasikan untuk pengguna melalui
MV.
Konsep
MV menyediakan proteksi yang lengkap untuk sumberdaya sistem, dikarenakan tiap
MV terpisah dari MV yang lain. Namun, hal tersebut menyebabkan tidak
adanya sharing sumberdaya secara langsung. MV merupakan alat
yang tepat untuk penelitian dan pengembangan sistem operasi. Konsep MV susah
untuk diimplementasi sehubungan dengan usaha yang diperlukan untuk menyediakan
duplikasi dari mesin utama.
Perancangan Sistem dan Implementasi
Target
untuk pengguna: sistem operasi harus nyaman digunakan, mudah dipelajari, dapat
diandalkan, aman dan cepat. Target untuk sistem: sistem operasi harus gampang
dirancang, diimplementasi, dan dipelihara, sebagaimana fleksibel, error,
dan efisien.
Mekanisme
dan Kebijaksanaan:
- Mekanisme menjelaskan bagaimana melakukan sesuatu kebijaksanaan memutuskan apa yang akan dilakukan. Pemisahan kebijaksanaan dari mekanisme merupakan hal yang sangat penting; ini mengizinkan fleksibilitas yang tinggi bila kebijaksanaan akan diubah nanti.
- Kebijaksanaan memutuskan apa yang akan dilakukan.
Pemisahan
kebijaksanaan dari mekanisme merupakan hal yang sangat penting; ini mengizinkan
fleksibilitas yang tinggi bila kebijaksanaan akan diubah nanti.
Implementasi
Sistem biasanya menggunakan bahas assembly, sistem operasi sekarang
dapat ditulis dengan menggunakan bahasa tingkat tinggi. Kode yang ditulis dalam
bahasa tingkat tinggi: dapat dibuat dengan cepat, lebih ringkas, lebih mudah
dimengerti dan didebug. Sistem operasi lebih mudah dipindahkan ke perangkat
keras yang lain bila ditulis dengan bahasa tingkat tinggi.
System Generation (SYSGEN)
Sistem
operasi dirancang untuk dapat dijalankan di berbagai jenis mesin; sistemnya
harus di konfigurasi untuk tiap komputer. Program SYSGEN mendapatkan informasi
mengenai konfigurasi khusus dari sistem perangkat keras.
- Booting: memulai komputer dengan me-load kernel.
- Bootstrap program: kode yang disimpan di code ROM yang dapat menempatkan kernel, memasukkannya kedalam memori, dan memulai eksekusinya.
Multiprocessor
membutuhkan penjadualan yang lebih rumit karena mempunyai banyak kemungkinan
yang dicoba tidak seperti pada processor tunngal. Tapi saat ini kita hanya
fokus pada processor yang homogen (sama) sesuai dengan fungsi masing-masing
dari processor tersebut. Dan juga kita dapat menggunakan processor yang
tersedia untuk menjalankan proses didalam antrian.
Penjadualan Multiple Processor
Diskusi
kita sampai saat ini di permasalahan menjadualkan CPU di single prosesor. Jika
multiple prosesor ada. Penjadualan menjadi lebih kompleks banyak kemungkinan
telah dicoba dan telah kita lihat dengan penjadualan satu prosesor, tidak ada
solusi yang terbaik. Pada kali ini kita hanya membahas secara sekilas tentang
panjadualan di multiprosesor dengan syarat prosesornya identik.
Jika
ada beberapa prosesor yang identik tersedia maka load sharing akan terjadi.
Kita bisa menyediakan queue yang terpisah untuk setiap prosesor. Dalam kasus ini,
bagaimana pun, satu prosesor bisa menjadi idle dengan antrian
yang kosong sedangkan yang lain sangat sibuk. Untuk mengantisipasi hal ini kita
menggunakanready queue yang biasa. Semua proses pergi ke satu queue
dan dijadualkan untuk prosesor yang bisa dipakai.
Dalam
skema tersebut, salah satu penjadualan akan digunakan. Salah satu cara
menggunakan symmetric multiprocessing (SMP). Dimana setiap prosesor
menjadualkan diri sendiri. Setiap prosesor memeriksa raedy queue dan memilih
proses yang akan dieksekusi.
Beberapa
sistem membawa struktur satu langkah kedepan, dengan membawa semua keputusan
penjadualan, I/O prosesing, dan aktivitas sistem yang lain ditangani oleh satu
prosesor yang bertugas sebagai master prosesor. Prosesor yang lain mengeksekusi
hanya user code yang disebut asymmetric multiprosessing jauh lebih mudah.
Penjadualan Real Time
Dalam
bab ini, kita akan mendeskripsikan fasilitas penjadualan yang dibutuhkan untuk
mendukung real time computing dengan bantuan sistem komputer.
Terdapat
dua jenis real time computing: sistem hard real time dibutuhkan untuk
menyelesaikan critical task dengan jaminan waktu tertentu. Secara umum, sebuah
proses di kirim dengan sebuah pernyataan jumlah waktu dimana dibutuhkan untuk
menyelesaikan atau menjalankan I/O. Kemudian penjadual bisa menjamin proses
untuk selesai atau menolak permintaan karena tidak mungkin dilakukan. Karena
itu setiap operasi harus dijamin dengan waktu maksimum.
Soft
real time computing lebih tidak ketat. Itu membutuhkan bahwa proses yang kritis
menerima prioritas dari yang lain. Walau pun menambah fungsi soft real time ke
sistem time sharing mungkin akan mengakibatkan pembagian sumber yang tidak
adildan mengakibatkan delay yang lebih lama, atau mungkin pembatalan bagi
proses tertentu, Hasilnya adalah tujuan secara umum sistem yang bisa mendukung
multimedia, graphic berkecepatan tinggi, dan variasi tugas yang tidak bisa
diterima di lingkungan yang tidak mendukunng soft real time computing
Mengimplementasikan
fungsi soft real time membutuhkan design yang hati-hati dan aspek yang
berkaitan dengan sistem operasi. Pertama, sistem harus punya prioritas
penjadualan, dan proses real time harus tidak melampaui waktu, walau pun
prioritas non real time bisa terjadi. Kedua, dispatch latency harus lebih
kecil. Semakin kecil latency, semakin cepat real time proses mengeksekusi.
Untuk
menjaga dispatch tetap rendah. Kita butuh agar system call untuk preemptible.
Ada
beberapa cara untuk mencapai tujuan ini. Satu untuk memasukkan preemption
points di durasi yang lama system call, yang mana memeriksa apakah prioritas
yang utama butuh untuk dieksekusi. Jika satu sudah, maka alih konteks mengambil
alih; ketika high priority proses selesai, proses yang diinterupsi meneruskan
dengan system call. Points premption bisa diganti hanya di lokasi yang aman di
kernel hanya kernel struktur tidak bisa dimodifikasi walau pun dengan
preemption points, dispatch latency bisa besar, karena pada prakteknya untuk
menambah beberapa preemption points untuk kernel.
Metoda
yang lain untuk berurusan dengan preemption untuk membuat semua kernel
preemptible. Karena operasi yang benar bisa dijamin, semua data kernel struktur
dengan di proteksi. Dengan metode ini, kernel bisa selalu di preemptible,
karena semua kernel bisa diupdate di proteksi.
Apa
yang bisa diproteksi jika prioritas yang utama butuh untuk dibaca atau
dimodifisikasi yang bisa dibutuhkan oleh yang lain, prioritas yang rendah?
Prioritas yang tinggi harus menunggu menunggu untuk menyelesaikan prioritas
yang rendah.
Fase
konflik dari dispatch latency mempunyai dua komponen:
- Preemption semua proses yang berjalan di kernel.
- Lepas prioritas yang rendah untuk prioritas yang tinggi.
Penjadualan Thread
Di bagian berjudul Thread, kita mengenalkan threads untuk model
proses, hal itu mengizinkan sebuah proses untuk mempunyai kontrol terhadap
multiple threads. Lebih lanjut kita membedakan antara user-level dan kernel
level threads. User level threads diatur oleh thread library. Untuk menjalankan
di CPU, user level threads di mapping dengan asosiasi kernel level thread,
walau pun mapping ini mungkin bisa indirect dan
menggunakan lightweight.
BAB 2. PROSES DAN THREAD
Java Thread dan Algoritmanya
Penjadualan thread
yang Runnable oleh Java Virtual Machine dilakukan dengan konsep preemptive dan
mempunyai prioritas tertinggi. Dalam algoritma evaluasi ditentukan terlebih
dahulu kriteria-kriterianya seperti utilisasinya dilihat dari segi waktu tunggu
yang digunakan dan throughput yang disesuaikan dengan waktu turnaroundnya.
Penjadualan Java Thread
Java Virtual Machine
menjadualkan thread menggunakan preemptive, berdasarkan prioritas algoritma
penjadualan. Semua Java Thread diberikan sebuah prioritas dan Java Virtual
Machine menjadualkan thread yang Runnable dengan menggunakan prioritas
tertinggi saat eksekusi. Jika ada dua atau lebih thread yang Runnable yang
mempunyai prioritas tertinggi, Java Virtual Machine akan menjadualkan thread
tersebut menggunakan sebuah antrian secara FIFO.
Keunggulan Penjadualan Java Thread
1.
Java Virtual
Machine menggunakan prioritas
preemtive berdasarkan algoritma penjadualan.
2. Semua thread
Java mempunyai prioritas dan thread dengan proritas tertinggi dijadualkan untuk
dieksekusi oleh Java Virtual Machine.
3. Jika terjadi
dua thread dengan prioritas sama maka digunakan algoritma First In First Out.
Thread lain dijalankan
bila terjadi hal-hal berikut ini:
·
Thread yang sedang dieksekusi keluar dari status runnable misalnya
diblok atau berakhir
·
Thread dengan prioritas yang lebih tinggi dari thread yang sedang
dieksekusi memasuki status runnable. Maka thread dengan prioritas yang lebih
rendah ditunda eksekusinya dan digantikan oleh thread dengan prioritas lebih
tinggi.
Time slicing
tergantung pada implementasinya. Sebuah thread dapat memberi kontrol pada
yield() method. Saat thread memberi sinyal pada CPU untuk mengontrol thread
yang lain dengan prioritas yang sama maka thread tersebut dijadualkan untuk
dieksekusi. Thread yang memberi kontrol pada CPU disebut Cooperative
Multitasking.
Prioritas Thread
Java Virtual Machine
memilih thread yang runnable dengan prioritas tertinggi. Semua thread java
mempunyai prioritas dari 1 sampai 10. Prioritas tertinggi 10 dan berakhir
dengan 1 sebagai prioritas terendah. Sedangkan prioritas normal adalah 5.
·
Thread.MIN_PRIORITY = thread dengan prioritas terendah.
·
Thread.MAX_PRIORITY = thread dengan prioritas tertinggi.
·
Thread.NORM_PRIORITY = thread dengan prioritas normal.
Saat thread baru
dibuat ia mempunyai prioritas yang sama dengan thread yang menciptakannya.
Prioritas thread dapat diubah dengan menggunakan setpriority() method.
Penjadualan Round-Robin dengan Java
public class Scheduler extends Thread {public Scheduler {timeSlice = DEFAULT_TIME_SLICE; queue = new Circularlist }
public Scheduler(int quantum) {timeSlice = quantum;queue = new Circularlist;}
public addThread(Thread t) {t.setPriority;queue.additem;}
private void schedulerSleep try{Thread.sleep(timeSlice ) catch (Interrupted Exception e)}
public void run(){
Thread current;
This.setpriority(6);
while (true) {
// get the next thread
current = (Thread)qeue.getnext();
if ( current != null) && (current.isAlive())) {
current.setPriority(4);
schedulerSleep();
current.setPriority(2)
}
}
}
private CircularList queue;
private int timeSlice;
private static final int DEFAULT_TIME_SLICE = 1000;
}
public class TesScheduler{
public static void main()String args[]) {
Thread.currentThread().setpriority(Thread.Max_Priority);
Schedular CPUSchedular = new Scheduler ();
CPUSchedular.start()
TestThread t1 = new TestThread("Thread 1");
t1.start()
CpuSchedular.addThread(t1);
TestThread t2 = new TestThread("Thread 2");
t2.start()
CpuSchedular.addThread(t2);
TestThread t3 = new TestThread("Thread 1");
t3.start()
CpuSchedular.addThread(t3);
}
}
|
Evaluasi Algoritma
Bagaimana kita memilih
sebuah algoritma penjadualan CPU untuk sistem-sistem tertentu. Yang menjadi
pokok masalah adalah kriteria seperti apa yang digunakan untuk memilih sebuah
algoritma. Untuk memilih suatu algoritma, pertama yang harus kita lakukan
adalah menentukan ukuran dari suatu kriteria berdasarkan:
·
Memaksimalkan penggunaan CPU dibawah maksimum waktu responnya
yaitu 1 detik.
·
Memaksimalkan throughput karena waktu turnaroundnya bergerak
secara linier pada saat eksekusi proses.
Sinkronisasi dalam Java
Setiap objek dalam
java mempunyai kunci yang unik yang tidak digunakan biasanya. Saat method
dinyatakan sinkron, maka method dipanggil untuk mendapatkan kunci untuk objek
tersebut. Saat kunci tersebut dipunyai thread yang lain maka thread tersebut
diblok dan dimasukkan kedalam kumpulan kunci objek, misalnya:
public synchronized void enter(Object item) {
while (count == BUFFER_SIZE)
;
Thread.yeild();
++count;
buffer[in] = item;
in = (in+1) % BUFFER_SIZE;
}
public synchronized void remove (){
Object item;
while (count == 0)
;
Thread.yeild();
--count;
item = buffer[out]
out = (out+1) % BUFFER_SIZE;
return item
}
|
Metoda Wait() dan Notify()
Thread akan memanggil
method wait() saat:
1.
Thread melepaskan kunci untuk objek.
2. Status thread
diblok.
3. Thread yang
berada dalam status wait menunggu objek.
Thread akan memanggil
method notify() saat: Thread yang dipilih diambil dari thread yang ada pada
himpunan wait. Dengan cara:
1.
Pindahkan thread yang dipilih dari wait set ke entry set.
2. Atur status
dari thread yang dipilih dari blocked menjadi runnable.
Contoh Metoda Wait() dan Notify()
public synchronized void enter(Object item){
while (count == BUFFER_SIZE) {
try{
wait();
} catch (InterruptedException e) {}
}
// add an item to the buffer
++count;
buffer[in] = item;
in = (in+1) % BUFFER_SIZE;
notify();
}
public synchronized void remove(Object item){
while (count == 0) {
try {
wait();
}
catch (InterruptedException e) {}
}
// remove an item to the buffer
--count;
item = buffer[out];
out = (out+1) % BUFFER_SIZE;
notify();
return item;
}
|
BAB 2. PROSES DAN THREAD
Proses
Sebuah
proses adalah sebuah peristiwa adanya sebuah proses yang dapat dieksekusi.
Sebagai sebuah eksekusi proses, maka hal tersebut membutuhkan perubahan
keadaan. Keadaan dari sebuah proses dapat didefinisikan oleh aktivitas proses
tertentu tersebut. Setiap proses mungkin menjadi satu dari beberapa state
berikut, antara lain: new, ready, running, waiting,
atau terminated. Setiap proses direpresentasikan ada sistem operasi
berdasarkan proses-control-block (PCB)-nya.
Sebuah
proses, ketika sedang tidak dieksekusi, ditempatkan pada antrian yang sama.
Disini ada 2 kelas besar dari antrian dalam sebuah sistem operasi: permintaan
antrian I/O dan ready queue. Ready queue memuat semua proses yang siap untuk
dieksekusi dan yang sedang menunggu untuk dijalankan pada CPU. Setiap proses
direpresentasikan oleh sebuah PCB, dan PCB tersebut dapat digabungkan secara
bersamaan untuk mencatat sebuah ready queue. Penjadualan Long-term adalah
pilihan dari proses-proses untuk diberi izin menjalankan CPU. Normalnya,
penjadualan long-term memiliki pengaruh yang sangat besar bagi penempatan
sumber, terutama managemen memori. Penjadualan Short-term adalah pilihan dari
satu proses dari ready queue.
Proses-proses
pada sistem dapat dieksekusi secara berkelanjutan. Disini ada beberapa alasan
mengapa proses tersebut dapat dieksekusi secara berkelanjutan: pembagian
informasi, penambahan kecepatan komputasi, modularitas, dan kenyamanan atau
kemudahan. Eksekusi secara berkelanjutan menyediakan sebuah mekanisme bagi
proses pembuatan dan penghapusan.
Pengeksekusian
proses-proses pada operating system mungkin dapat digolongkan menjadi proses
independent dan kooperasi. Proses kooperasi harus memiliki beberapa alat untuk
mendukung komunikasi antara satu dengan yang lainnya. Prinsipnya adalah ada dua
rencana komplementer komunikasi: pembagian memori dan sistem pesan. Metode
pembagian memori menyediakan proses komunikasi untuk berbagi beberapa variabel.
Proses-proses tersebut diharapkan dapat saling melakukan tukar-menukar
informasi seputar pengguna variabel yang terbagi ini. Pada sistem pembagian
memori, tanggung jawab bagi penyedia komunikasi terjadi dengan programmer
aplikasi; sistem operasi harus menyediakan hanya pembagian memori saja. Metode
sistem pesan mengizinkan proses-proses untuk tukar-menukar pesan. Tanggung
jawab bagi penyedia komunikasi ini terjadi dengan sistem operasi tersebut.
Thread
Thread
adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded
mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama.
Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian
sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari
arsitektur multiprosesor. User level thread adalah thread yang tampak oleh
programmer dan tidak diketahui oleh kernel. User level thread secara tipikal
dikelola oleh sebuah library thread di ruang user. Kernel level thread didukung
dan dikelola oleh kernel sistem operasi. Secara umum, user level thread lebih
cepat dalam pembuatan dan pengelolaan dari pada kernel thread. Ada tiga
perbedaan tipe dari model yang berhubungan dengan user dan kernel thread.
- Model many to one: memetakan beberapa user level thread hanya ke satu buah kernel thread.
- Model one to one: memetakan setiap user thread ke dalam satu kernel thread. berakhir.
- Model many to many: mengizinkan pengembang untuk membuat user thread sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.
Java
adalah unik karena telah mendukung thread didalam tingkatan bahasanya. Semua
program Java sedikitnya terdiri dari kontrol sebuah thread tunggal dan
mempermudah membuat kontrol untuk multiple thread dengan program yang sama.
JAVA juga menyediakan library berupa API untuk membuat thread, termasuk method
untuk suspend dan resume suatu thread, agar thread tidur untuk jangka waktu
tertentu dan menghentikan thread yang berjalan. Sebuah java thread juga
mempunyai empat kemungkinan keadaan, diantaranya: New, Runnable, Blocked dan
Dead. Perbedaan API untuk mengelola thread seringkali mengganti keadaan thread
itu sendiri.
Penjadualan CPU
Penjadualan
CPU adalah pemilihan proses dari antrian ready untuk dapat dieksekusi. Algoritma
yang digunakan dalam penjadulan CPU ada bermacam-macam. Diantaranya adalah
First Come First Serve (FCFS), merupakan algoritma sederhana dimana proses yang
datang duluan maka dia yang dieksekusi pertama kalinya. Algoritma lainnya
adalah Sorthest Job First (SJF), yaitu penjadualan CPU dimana proses yang
paling pendek dieksekusi terlebih dahulu.
Kelemahan
algoritma SJF adalah tidak dapat menghindari starvation. Untuk itu diciptakan
algoritma Round Robin (RR). Penjadulan CPU dengan Round Robin adalah membagi
proses berdasarkan waktu tertentu yaitu waktu quantum q. Setelah proses
menjalankan eksekusi selama q satuan waktu maka akan digantikan oleh proses
yang lain. Permasalahannya adalah bila waktu quantumnya besar sedang proses
hanya membutuhkan waktu sedikit maka akan membuang waktu. Sedang bila waktu
quantum kecil maka akan memakan waktu saat alih konteks.
Penjadualan
FCFS adalah non-preemptive yaitu tidak dapat diinterupsi sebelum proses
dieksekusi seluruhnya. Penjadualan RR adalah preemtive yaitu dapat dieksekusi
saat prosesnya masih dieksekusi. Sedangkan penjadualan SJF dapat berupa
nonpreemptive dan preemptive.
Tidak ada komentar:
Posting Komentar