Anda di halaman 1dari 8

Soal Pendahuluan

1. Jelaskan tentang thread dan perbedaannya dengan proses! Thread adalah sebuah alur kontrol dari sebuah proses. Perbedaan antara proses dan thread: Proses * Proses memiliki ruang tersendiri di memori untuk menampung proses image. Selainitu akses ke hardware (processor, memori, I/O) yang dibatasi. - Proses adalah suatu program yang sedang di eksekusi - State yang dimiliki 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 yangsama. Akses terproteksi ke prosesor, proses lain (IPC), sumber daya I/O, file - Penjadwalan/Eksekusi mengikuti lintasan eksekusi melalui sebuah programdan dapat digilirkan dengan eksekusi proses lainnya. Thread * Sedangkan thread akses ke memori dan resource diakses oleh prosesnya. Thread sendiri memiliki berbagai keuntungan diantaranya waktu pembuatan yang lebih cepat, waktu pemberhentian yang lebih cepat, waktu pergantian antar thread lebih cepat bila dibandingkan proses serta komunikasi antar thread yang lebih efisien karena mereka saling berbagi memori antar thread itu sendiri. - Thread adalah sebuah alur kontrol dari sebuah proses. - State : Spawn (Membiakkan thread lain ) , Block (Menunggu suatu event,maka thread akan terblokir. menyimpan user register, program counter,stack) , Unblock (Thread akan dipindahkan ke keadaan ready ) , Finish(Dealokasi konteks register dan stack ) - Memiliki stack eksekusi - Beberapa thread menyimpan variabel-variabel lokal - Semua thread menggunakan sumber daya prosesnya - Ada tiga perbedaan tipe dari model yang berhubungan dengan user dan kernelthread. : Model many to one: memetakan beberapa user level thread hanya kesatu 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, konkruensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.

=========================================================================

2. Jelaskan tentang multithread, perbedaannya dengan multiproses dan berikan contoh pengaplikasian multithread ! * Multithread adalah cara pengeksekusian yang mengizinkan beberapa alur terjadi dalamsatu proses. * Perbedaan antara multiprocess dan multithread : Multiprocessing adalah sebuah proses yang mengacu pada dua atau lebih program yang dieksekusi dalam waktu bersamaan, di bawah kontrol sistem operasi. Program tidak perlu hubungan dengan satu sama lain karena proses yang dilakukan memang secara terpisah dan bersamaan untuk memperingan proses transfer informasi namun tetap menempatkan diri sesuai tempatnya. Dan ketika telah selesai maka kita dapat melihat satu kesatuan yang utuh kembali. Multithreading adalah proses dimana terjadi dua atau lebih tugas yang dieksekusi secara bersamaan, dalam satu program. Hal ini sering disebut sebagai prosesan ringan, hal tersebut terjadi mungkin karena beban yang terlibat dalam membuat semua pekerjaan tersebut tidak begitu berat. Multithreading dapat memproduksi program yang dapat menyelesaikan lebih banyak pekerjaan pada waktu yang sama walaupun keadaan CPU dibagi-bagi antar tugas. Sedangkan multiprosesing biasanya sudah diimplementasikan di dalam sistem operasi. Dua atau lebih program mampu melakukan eksekusi pada platform dengn multiprocessing tanpa perlu menggunakan requirement pada planning. * Contoh pengaplikasian Multithread : Adobe PageMaker, aplikasi ini merupakan aplikasi untuk merancang, menulis, dan menghasilkan desktop publishing. Aplikasi berjalan pada shared system pada sistem operasi OS/2. Terdiri dari 3 thread yang selalu aktif: Service thread Event-handling thread Screen-redraw thread

========================================================================

3. Jelaskan apa yang dimaksud dengan sinkronisasi dan mutex, sebutkan juga perbedaan mutex dan persamaannya jika dibandingkan dengan semaphore ! Sinkronisasi Koordinasi akses ke shared data, misalkan hanya satu proses yang dapat menggunakan shared var. Contoh operasi terhadap var counter harus dijamin dieksekusi dalam satu kesatuan (atomik) : J counter := counter + 1 J counter := counter 1 Sinkronisasi merupakan issue penting dalam rancangan/implementasi OS (shared resources, data, dan multitasking) Mutexes (mutex locks) Penguncian yang diperlukan untuk menjaga konsistensidata ketika beberapa thread dapat mengakses atau memodifikasi data pada saat yang sama,sehingga thread-thread lain yang mencoba mengakusisi mutex akan mem-block.Pemblokiran didapatkan dengan melakukan spinning atau sleeping

Mutex (latches)

Semaphore

Dalam bahasa oracle, mutex dikenal sebagai kait Semaphore dikenal sebagai menunggu (wait)

Digunakan untuk mencegah dua proses dari Digunakan untuk membatasi akses kesumber daya mengeksekusi potongan kode yang sama, atau tunggal. mengakses data yang sama, pada waktu yang sama. Dilepaskan hanya oleh thread yang telah diperoleh Dilepaskan dari thread lain (atau proses) sehingga lebih cocok untuk beberapa masalah sinkronisasi

========================================================================

4. Jelaskan apa yang dimaksud dari : a) pthread_t b) pthread_mutex_t

c) pthread_create d) pthread_detach e) pthread_cancel f) pthread_mutex_lock g) pthread_mutex_unlock h) pthread_mutex_destroy Jawab: a) pthread_t Berfungsi untuk menyimpan thread ID. b) pthread_mutex_t Mendeklarasikan variabel mutex c) pthread_create Membuat suatu Thread baru dan langsung dieksekusi. Saat memanggil fungsi ini kita harus mendefinisikan sebuah atribut objek dari thread tersebut, jika tidak maka atributnya akan diset default. d) pthread_detach Fungsi ini digunakan untuk menunjukkan penyimpanan untuk thread yang bisa dipakai ketika mengakhiri thread. Jika thread belum berakhir, pthread_detach() tidak akan mengakhiri thread. Pengaruh panggilan pthread_detach() pada target thread yang sama tidak ditentukan. e) pthread_cancel Saat fungsi ini dipanggil, request akan dibatalkan, tetapi Thread masih running. Pemangggilan fungsi ini gagal jika ID Thread yang akan dicancel tidak valid. f) pthread_mutex_lock Kunci mutex. Jika mutex telah dilock, maka fungsi ini akan memblok eksekusi sampai mutex diunlock. Beberapa thread dapat sekaligus terblok oleh lock mutex,dan hanya satu thread yang unblock (secara acak) saat mutex diunlock. g) pthread_mutex_unlock Membuka kunci mutex (unlock). Fungsi ini sebaiknya dipanggil oleh thread yang melock mutex. h) pthread_mutex_destroy Function untuk menghapus variabel mutex.

========================================================================

5.Jelaskan permodelan thread dilihat dari levelnya: a) User Level b) Kernel Level c) Hybrid Jawab a. User Level Semua manajemen thread dikerjakan oleh aplikasi Kernel tidak menyadari keberadaan thread. kernel tidak menyadari user-level thread maka semua pembuatan dan penjadwalan thread dilakukan di user space tanpa intervensi dari kernel sehingga cepat untuk dibuat dan diatur Jika salah satu user-level thread menjalankan blocking system call maka akan mengakibatkan seluruh proses diblok walaupun ada thread lain yang bisa jalan dalam aplikasi tersebut. Contoh user-thread libraries adalah POSIX Pthreads, Mach C-threads,dan Solaris threads. b. Kernel Level Didukung langsung oleh sistem operasi. Pembuatan, penjadwalan, dan manajeman thread dilakukan oleh kernel pada kernel space. Pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Thread diatur oleh kernel, sehingga jika sebuah thread menjalankan blocking system call maka kernel bisa menjadwalkan thread lain diaplikasi untuk melakukan eksekusi Lingkungan multiprocessor, kernel bisa menjadwal thread-thread pada processor yang berbeda. Kernel memelihara informasi konteks bagi proses & thread Manajemen thread dilakukan oleh kernel, bukan aplikasi Contoh sistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX. c. Hybrid Mikrokernel yang memiliki kode yang tidak menunjukkan bahwa kerneltersebut 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

========================================================================

6. Jelaskan tentang apa itu race condition dan berikan salah satu contohnya !

Race Condition ialah suatu kondisi dimana ketika ada dua proses atau thread yang membaca atau menulis suatu shared memori secara bersamaan sehingga hasilnya ditentukan oleh urutan eksekusi proses atau thread tersebut.

Studi kasus : Ilustrasi program produsen dan konsumen

Untuk mencegah masalah ini dan di situasi yang melibatkan memori bersama, berkas bersama, dan sumber daya lain yang digunakan secara bersama-sama adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses melakukan proses tulis dan baca kepada data yang sama pada saat yang bersamaan. Dengan kata lain, kita membutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan variabel atau berkas yang digunakan bersamasama, proses lain akan dikeluarkan dari pekerjaan yang sama. Contoh source code: int counter = 0; //Proses yang dilakukan oleh produsen item nextProduced; while (1) { while (counter == BUFFER_SIZE) {... do nothing ... } buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; counter++; }//Proses yang dilakukan oleh konsumenitem nextConsumed; while (1) { while (counter == 0) { ... do nothing ... } nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE;

counter--;}

========================================================================

7. Jelaskan fungsi pemanggilan thread di bawah ini :


int pthread_create (pthread_t * thread, const pthread_attr_t * attr, void * (*start_routine) (void *), void *arg);

Jawab : Fungsi tersebut untuk membuat thread (pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg)). Yang harus disediakan adalah:
pointer ke variabel pthread_t, dimana thread_ID akan tersimpan pointer ke thread attribute. Object ini akan mengontrol interaksi thread dengan program. Jika diisi

NULL, maka thread akan dibuat dengan atribut default


pointer ke fungsi thread, yang didefinisikan dalam: void* your_func_name (void*) nilai argumen, dengan tipe void*, yang akan dikirim ke fungsi thread

Sebuah thread akan berhenti saat fungsi thread return. Nilai return fungsi thread akan menjadi return value dari thread.

========================================================================

8. Jelaskan apa yang dimaksud dengan mutexdeadlock! Deadlock merupakan suatu kondisi dimana proses tidak berjalan lagi atau pun tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut. Contoh studi kasus Deadlock: Proses A mempunyai resource X, proses B mempunyai resource Y. Kemudian kedua proses ini dijalankan bersama, proses A memerlukan resource Y dan proses B memerlukan resource X, tetapi kedua proses tidak akan memberikan resource yang dimiliki sebelum proses dirinya sendiri selesai dilakukan. Sehingga akan terjadi tunggu-menunggu.

========================================================================

9. Bagaimana cara thread berhenti dari suatu program ? Thread CancellationThread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan JVM( Java Virtual Machine ) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread. Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda : 1. Asynchronous cancellation : suatu thread seketika itu juga memberhentikan target thread. 2. Defered cancellation : target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan targetthread untuk memberhentikan dirinya sendiri secara terurut. Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread yang diberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous cancellation . Sistem operasi akan mengambil kembali sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang diberhentikan. Alternatifnya adalah dengan menggunakan Deffered cancellation . Cara kerja dari deffered cancellation adalah dengan menggunakan 1 thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia bisa diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagai cancellation points . Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara asynchronous . Tetapi Pthread API menyediakan deferred cancellation . Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengijinkan deferred cancellation .

========================================================================

10) Misal dalam sebuah program terdapat proses utama dan 2 thread buatan. Apa yang terjadi jika proses utama berhenti terlebih dahulu sementara thread yang lain masih belum selesai berjalan? Jelaskan mekanisme pengaturan/ scheduling untuk mengatasi resiko yang mungkin terjadi dari hal diatas!

Anda mungkin juga menyukai