You are on page 1of 15

LATIHAN SOAL : 1.

Sebutkan state pada proses dan jelaskan diagram proses

Status proses terdiri dari : a. New: proses sedang dibuat. b. Running: proses sedang dieksekusi. c. Waiting: proses sedang menunggu beberapa event yang akan terjadi (seperti menunggu untuk menyelesaikan I/O atau menerima sinyal). d. Ready: proses menunggu jatah waktu dari CPU untuk diproses. e. Terminated: proses telah selesai dieksekusi.

2.

Apa yang dimaksud short term scheduler dan long term scheduler ?

Longterm-Scheduler (job scheduler), menyeleksi proses-proses mana yang harus dibawa ke ready queue.

Short-term Scheduler (CPU scheduler), memilih proses-proses yang siap untuk dieksekusi, dan mengakolakasikan CPU ke salah satu dari proses-proses tersebut.

Short-term scheduler terjadi sangat sering (dalam milidetik), jadi setiap proses dijadwal dengan cepat, sedangkan long-term scheduler terjadi sangat jarang (dalam detik atau menit), sehingga setiap proses dijadwal dengan lambat. Long-term scheduler digunakan untuk mengontrol tingkat multiprogramming.

3.

Jelaskan 4 alasan mengapa proses harus bekerja sama.

1. terjadi pembagian informasi 2. meningkatkan kecepatan komputasi 3. proses dapat dibagi dalam modul-modul 4. lebih memberikan kenyamanan pada programmer.

4.

Tuliskan kode program untuk penyelesaian permasalahan producer consumer

dengan menggunakan shared memory. Penyelesaian permasalahan boundedbuffer producer-consumer dengan solusi shared memory menggunakan data shared berikut :

#define BUFFER_SIZE 10 Typedef struct { ... } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0;

Proses producer : item nextProduced; while (1) { while (((in + 1) % BUFFER_SIZE) == out) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; }

Proses consumer : item nextConsumed; while (1) { while (in == out) ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; }

5.

Diketahui skema komunikasi antar proses menggunakan mailbox

a. Proses P ingin menunggu 2 pesan, satu dari mailbox A dan satu dari Mailbox B. Tunjukkan urutan send dan receive yang dieksekusi. Send (A pesan ); mengirim pesan ke mailbox A, Receive(A pesan ); Proses P menerima pesan dari mailbox A Send (B pesan ); mengirim pesan ke mailbox B, Receive(B pesan ); Proses P menerima pesan dari mailbox B.

Dengan menggunakan metode zero capacity, maka kedua pesan dapat langsung dikirim, dan P akan menerima pesan dari kedua mailbox. Tapi, pengirim pesan harus menunggu penerima pesan menerima pesan yang disampaikan sebelum ia mengirim pesan lagi. Kedua proses ini harus berjalan secara sinkron. Sinkronisasi ini sering disebut dengan istilah rendezvous. b. Bagaimana urutan Send dan Receive yang dieksekusi P Jika P ingin menunggu satu pesan dari mailbox A atau Mailbox B. Hanya bisa menerima satu pesan: Caranya : Receive ( P pesan); menerima peasan dari mailbox A. Receive ( P pesan); menerima peasan dari mailbox B.

Dengan menggunakan metode bounded capacity, salah satu pesan dari mailbox akan mengantri untuk dikirim. Misalnya mailbox A dulu yang dikirim, maka mailbox B akan menunggu. P menerima mailbox A. Baru setelah mailbox A selesai dikirim, mailbox B akan menempati tempat mailbox A terdahulu dan baru kemudian dikirim. Baru diterima oleh P.

6.

Jelaskah apa yang dimaksud dengan thread dan struktur dari thread.

Suatu proses didefinisikan oleh resource yang digunakan dan lokasi yang akan dieksekusi. Namun adakalanya proses-proses akan menggunakan resource secara bersama-sama. Suatu unit dasar dari CPU utilization yang berisi program counter, kumpulan register, dan ruang stack disebut dengan thread atau lighweight process (LWP). Thread akan bekerjasama dengan thread yang lainnya dalam hal penggunaan bagian kode, bagian data, dan resource sistem operasi, seperti open file dan sinyal secara kolektif yang sering disebut dengan task.

Struktur Thread : Seperti halnya proses, thread memiliki status: ready, blocked, running dan terminated, dan hanya satu thread yang aktif dalam satu waktu. Thread dapat

membuat child thread. Jika satu thread dalam keadaan blocked, maka thread yang lainnya dapat dijalankan. Namun, tidak saling bebas, Sebab semua thread dapat mengakses setiap alamat dalam satu task, thread dapat membaca dan menulisi stack dari thread yang lainnya. Sehingga tidak ada proteksi antara satu thread terhadap thread yang lainnya. Suatu proses dapat terdiri dari satu thread (single thread) dan beberapa thread (multi thread)

7.

Jelaskan empat keuntungan menggunakan threads pada multiple process. 1. respon lebih cepat Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading , sebuah thread dapat melayani permintaan pengguna, sementara thread lain berusaha menampilkan image.

2. menggunakan resource bersama-sama thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengijinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

3. lebih ekonomis dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread,karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan,

tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama ibandingkan context switch thread.

4. meningkatkan utilitas arsitektur mikroprosessor. Keuntungan dari multithreading bisa sangat meningkat pada arsitektur multiprocessor , dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu( satu -satuan waktu pada CPU biasa disebut time slice atau quantum ).

8.

Apakah perbedaan antara user-level thread dan kernel-supported threads ?

User thread adalah thread yang diatur dengan menggunakan pustaka user level thread. Contoh sistem yang menggunakan user thread adalah POSIX Pthreads, Mach C-threads dan Solaris threads.

kernel thread adalah thread yang didukung oleh Kernel. Pembuatan, penjadwalan, dan manajeman thread dilakukan oleh kernel pada kernel space . Karena pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Keuntungannya adalah thread diatur oleh kernel, karena itu jika sebuah thread menjalankan blocking system call maka kernel bisa menjadwalkan thread lain di aplikasi untuk melakukan eksekusi. Keuntungan lainnya adalah pada lingkungan multiprocessor , kernel bisa menjadwal thread-thread pada processor yang berbeda.

Contoh sistem yang menggunakan kernel thread adalah Windows 95/98/NT/2000, Solaris, Tru64 UNIX, BeOS dan Linux.

9.

Ada 3 model multithreading, jelaskan.

Model multi thread terdiri dari model 1. Many-to-One, Pada model Many-to-One , beberapa user level thread dipetakan ke satu kernel thread dan digunakan pada sistem yang tidak mendukung kernel threads seperti pada gambar berikut.

2. One-to-One, Pada model One-to-One, setiap user-level thread dipetakan ke kernel thread seperti pada Gambar dibawah misalnya pada Windows 95/98/NT/2000 dan OS/2.

3. Many-to-Many. Pada model Many-to-Many, user level thread dipetakan ke beberapa kernel threads. Pada sistem operasi ini akan dibuat sejumlah kernel thread seperti Gambar dibawah, contohnya Solaris 2 dan Windows NT/2000 dengan ThreadFiber package.

10.

Jelaskan state pada Java thread.

Bahasa pemrograman Java menggunakan Java thread yang dibuat dengan menggunakan class Thread dan mengimplementasikan antar muka yang bersifat runnable (dapat dijalankan). Java thread diatur oleh Java virtual machine (JVM). Java thread terdiri dari state new, runnable, blocked dan dead seperti Gambar dibawah.

1.

Sebutkan perbedaan antara penjadwalan preemptive dan nonpreemptive.

Pada saat CPU menganggur, maka sistem operasi harus menyeleksi prosesproses yang ada di memori utama (ready queue) untuk dieksekusi dan mengalokasikan CPU untuk salah satu dari proses tersebut. Seleksi semacam ini disebut dengan shortterm scheduler (CPU scheduler). Keputusan untuk menjadwalkan CPU mengikuti empat keadaan dibawah ini : 1. Apabila proses berpindah dari keadaan running ke waiting; 2. Apabila proses berpindah dari keadaan running ke ready; 3. Apabila proses berpindah dari keadaan waiting ke ready; 4. Apabila proses berhenti. Apabila model penjadwalan yang dipilih menggunakan keadaan 1 dan 4, maka penjadwakan semacam ini disebut non-peemptive. Sebaliknya, apabila yang digunakan adalah keadaan 2 dan 3, maka disebut dengan preemptive. Pada non-preemptive, jika suatu proses sedang menggunakan CPU, maka proses tersebut akan tetap membawa CPU sampai proses tersebut melepaskannya (berhenti atau dalam keadaan waiting). Preemptive scheduling memiliki kelemahan, yaitu biaya yang dibutuhkan sangat tinggi. Antara lain, harus selalu dilakukan perbaikan data. Hal ini terjadi jika suatu proses ditinggalkan dan akan segera dikerjakan proses yang lain.

2. Terdapat 5 job yang datang hampir pada saat yang bersamaan. Estimasi waktu eksekusi (burst time) masing-masing 10, 6, 2, 4 dan 8 menit dengan prioritas masing-masing 3, 5, 2, 1 dan 4, dimana 5 merupakan prioritas tertinggi. Tentukan rata-rata waktu turnaround untuk penjadwalan CPU dengan menggunakan algoritma

a. Round Robin (quantum time = 2) b. Priority c. Shortest job first

3. Diketahui proses berikut : Proses Arrival Time Burst Time P1 0.0 8 P2 0.4 4 P3 1.0 1 Tentukan rata-rata waktu tunggu dan rata-rata waktu turnaround dengan algoritma penjadwalan a. FCFS b. SJF non preemptive c. SJF preemptive / SRTF d. Round Robin dengan quantum time = 1

4. Suatu algoritma penjadwalan CPU kemungkinan melibatkan algoritma yang lain, contohnya algoritma FCFS adalah algoritma RR dengan waktu quantum tertentu. Apakah ada hubungan antara pasangan algoritma berikut ? a. Priority dan SJF b. Priority dan FCFS c. RR dan SJF

1. Apa yang dimaksud dengan race condition? Situasi dimana beberapa proses mengakses dan memanipulasi data yang digunakan bersamasama secara konkuren disebut dengan race condition. 2. Apakah yang dimaksud dengan critical section ? Untuk menyelesaikan masalah critical section , ada tiga hal yang harus dipenuhi, sebutkan dan jelaskan ! Suatu system terdiri dari n proses dimana semuanya berkompetisi menggunakan data yang digunakan bersama-sama. Masing-masing proses mempunyai sebuah kode segmen yang disebut dengan critical section, dimana proses memungkinkan untuk mengubah variabel umum, mengubah sebuah tabel, menulis file dan lain sebagainya. Sebuah solusi dari permasalahan critical section harus memenuhi 3 syarat sebagai berikut : 1. Mutual Exclusion. Apabila proses Pi menjalankan critical section-nya, maka tidak ada proses lain yang dapat menjalankan critical section. 2. Progress. Apabila tidak ada proses yang menjalankan critical section-nya dan terdapat beberapa proses yang akan memasuki critical section-nya, maka hanya proses-proses itu yang tidak diproses di dalam daerah pengingat (remainder) dapat ikut berpartisipasi di dalam keputusan proses mana yang akan memasuki critical section selanjutnya, dan pemilihan ini tidak dapat ditunda tiba-tiba. 3. Bounded Waiting. Terdapat batasan jumlah waktu yang diijinkan oleh proses lain untuk memasuki critical section setelah sebuah proses membuat permintaan untuk memasuki critical section-nya dan sebelum permintaan dikabulkan.

3. Bagaimana algoritma Bakery untuk sinkronisasi banyak proses (n proses) ? 4. Apa yang dimaksud semaphore dan sebutkan operasi pada semaphore Semaphore adalah pendekatan yang dikemukakan Dijkstra. Prinsip semaphore adalah sebagai berikut : Dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Proses dipaksa berhenti sampai proses memperoleh penanda tertentu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan strukstur penanda yang sesuai kebutuhannya. Variabel khusus untuk penandaan ini disebut semaphore. Semaphore adalah alat untuk sinkronisasi yang tidak membutuhkan busy waiting. Semaphore S berupa variable integer. Semaphore hanya dapat diakses melalui operasi atomic yang tak dapat diinterupsi sampai kode selesai. Operasi dari semaphore S adalah wait dan signal berikut : wait (S): while S 0 do no-op; S--; signal (S): S++; 5. Bagaimana struktur semaphore yang digunakan untuk menyelesaikan permasalahan : a. bounded buffer problem. Untuk penyelesaian permasalahan bounded buffer menggunakan semaphore menggunakan variabel umum berikut :

semaphore full, empty, mutex; Inisialisasi untuk variable diatas, full = 0, empty = n, mutex = 1. Struktur

program untuk produsen adalah


do {

menghasilkan item pada nextp


wait(empty); wait(mutex);

menambah nextp ke buffer


signal(mutex); signal(full); } while (1);

Sedangkan struktur program untuk konsumen adalah


do { wait(full) wait(mutex);

mengambil item dari buffer ke nextc


signal(mutex); signal(empty);

menggunakan item pada nextc


} while (1);

b. reader and writer problem. Terdapat dua variasi pada masalah ini, yaitu : a. seorang reader tidak perlu menuggu reader lain untuk selesai hanya karena ada writer menunggu (reader memiliki prioritas lebih tinggi disbanding dengan writer) b. Jika ada writer yang sedang menunggu, maka tidak boleh ada reader lain yang bekerja (writer memiliki prioritas yang lebih tinggi) Jika terdapat writer dalam critical section dan terdapat n reader yang menunggu, maka satu reader akan antri di wrt dan n-1 reader akan antri di mutex. Jika writer mengeksekusi signal(wrt), maka dapat disimpulkan bahwa eksekusi adalah menunggu reader atau menunggu satu writer. Variabel umum yang digunakan adalah
semaphore mutex, wrt;

Inisialisasi variable diatas adalah mutex = 1, wrt = 1, readcount = 0. Struktur proses writer adalah
wait(wrt);

menulis

signal(wrt);

Sedangkan struktur proses reader adalah


wait(mutex); readcount++; if (readcount == 1) wait(rt); signal(mutex);

membaca
wait(mutex); readcount--; if (readcount == 0) signal(wrt); signal(mutex):

c. dining philosopher problem. Struktur data yang digunakan untuk penyelesaian permasalahan ini dengan semaphore adalah
semaphore chopstick[5];

Dimana semua nilai array dinisialisasi 1. Struktur program untuk filosof ke i adalah
do { wait(chopstick[i]) wait(chopstick[(i+1) % 5])

makan
signal(chopstick[i]); signal(chopstick[(i+1) % 5]);

berfikir
} while (1);

1. Apa yang dimaksud dengan sumber daya ? Berikan contohnya. 2. Apa yang dimaksud deadlock ? 3. Sebutkan 4 kondisi yang menyebabkan deadlock. 4. Sebutkan cara mencegah deadlock dari 4 kondisi tersebut pada soal 3.

You might also like