• Tidak ada hasil yang ditemukan

1. Tujuan Intruksi Khusus

Setelah mengikuti modul ini, mahasiswa diharapkan mampu:

Memahami bagaimana SO mengelola proses untuk setiap bagian (thread) setia job yang akan dieksekusi.

1. Instruksi Modul A. Definisi Thread

Sejauh ini, proses merupakan sebuah program yang mengeksekusi thread tunggal. Kendali thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk mengeksekusi multi-threads. Umpamanya, secara bersamaan mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama.

Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter, register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya system operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaannya ialah proses dengan thread yang banyak – mengerjakan lebih dari satu tugas pada satu satuan waktu.

Pada umumnya, perangkat lunak yang berjalan pada komputer modern dirancang secara multi-threading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya sebuah web browser mempunyai thread untuk

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 33 dari 66 menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.

Terkadang ada sebuah aplikasi yang perlu menjalankan beberapa tugas yang serupa. Sebagai contohnya sebuah web server dapat mempunyai ratusan klien yang mengaksesnya secara concurrent. Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya dapat melayani satu klien pada pada satu satuan waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani. Solusinya adalah dengan membuat web server menjadi multi-threading. Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut.

Dewasa ini (2006), banyak sistem operasi yang telah mendukung proses multithreading. Setiap sistem operasi memiliki konsep tersendiri dalam pengimplementasiannya. Sistem operasi dapat mendukung thread pada tingkatan kernel maupun tingkatan pengguna.

B. Keuntungan Thread

Keuntungan dari program yang multithreading terbagi menjadi empat:

1. Responsif. Aplikasi interaktif menjadi tetap responsif meski pun sebagian dari program sedang diblok atau melakukan operasi yang panjang kepada pengguna. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan gambar.

2. Berbagi sumber daya. thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 34 dari 66 berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

3. Ekonomis. Pembuatan sebuah proses memerlukan 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 dibandingkan context switch thread.

4. Utilisasi arsitektur multiprocessor. Keuntungan dari multithreading dapat 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).

C. User Thread & Kernel Thread 1. User Thread

User Thread didukung kernel serta diimplementasikan dengan pustaka thread pada tingkatan pengguna. Pustaka menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna tanpa campur tangan kernel. Oleh karena itu, User Thread biasanya dapa cepat dibuat

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 35 dari 66 dan dikendalikan. Tetapi User Thread mempunyai kelemahan untuk kernel thread tunggal. Salah satu thread tingkatan pengguna menjalankan blocking system call maka akan mengakibatkan seluruh proses diblok walau pun ada thread lain yang dapat jalan dalam aplikasi tersebut. Contoh pustaka User Thread ialah POSIX Pthreads, Mach C-threads, dan Solaris threads.

2. Thread Kernel

Thread kernel didukung langsung oleh sistem operasi. Pembuatan, penjadwalan, dan manajemen 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 dapat menjadwalkan thread lain di aplikasi untuk melakukan eksekusi. Keuntungan lainnya adalah pada lingkungan multiprocessor, kernel dapat menjadwal thread-thread pada processor yang berbeda. Contoh sistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX.

D.

Model Multithreading 1)Model Many-to-One

Model Many-to-One memetakan beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna, sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi, multiple thread tidak dapat berjalan secara pararel pada multiprocessor. Thread tingkat pengguna yang diimplementasi pada Thread Pengguna dan Kernel sistem operasi yang tidak mendukung thread kernel menggunakan model Many-to-One.

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 36 dari 66 Gambar 5.1 : Many to One

2)Model One-to-One

Model One-to-One memetakan setiap thread tingkatan pengguna ke thread kernel. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahannya model ini ialah setiap pembuatan thread pengguna memerlukan pembuatan thread kernel. Karena pembuatan thread dapat menurunkan kinerja dari sebuah aplikasi maka implmentasi dari model ini, jumlah thread dibatasi oleh sistem. Contoh sistem operasi yang mendukung model One-to-One ialah Windows NT dan OS/2.

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 37 dari 66 3)Model Many-to-Many

Model Many-to-Many memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna. thread. Jumlah thread kernel dapat Model One-to-One spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer untuk membuat user thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwal oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas). Model Many-to-Many tidak menderita kelemahan dari dua model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara pararel pada multiprocessor. Dan juga ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX..

Gambar 5.3 : Many to Many

E. Asymmetric Multiprocessing (AMP) dan Symmetric Multiprocessing (SMP)

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 38 dari 66 A. Asymmetric Multiprocessing

Dalam Asymmetric Multiprocessing (AMP), sistem operasi biasanya menyisihkan satu atau lebih prosesor untuk penggunaan tertentu secara eksklusif. sisa dari prosesor yang lain akan menjalankan aplikasi user. Hal ini akan memaksa aplikasi untuk menunggu sementara sistem membangun Catche yang akan mengurangi kecepatan transfer keseluruhan sistem. Dalam mode ini, jika prosesor mengalami kegagalan pada sistem operasi , seluruh komputer akan Down!

B. Symmetric Multiprocessing

Symmetric Multiprocessing (SMP) menggunakan teknologi yang menghasilkan kinerja yang lebih baik. Dalam Symmetric Multiprocessing (SMP) setiap prosesor dapat menjalankan semua jenis bagian. Prosesor berkomunikasi satu dengan yang lainnya melalui memori yang digunakan bersama.

Sistem Symmetric Multiprocessing (SMP) memiliki Load-Balancing (Keseimbangan Pemuatan) dan toleransi kesalahan yang lebih baik. Hal ini dikarenakan bagian dalam sistem operasi dapat berjalan pada prosesor manapun dan kemungkinan terjadinya error dan hambatan pada CPU akan berkurang.

Semua prosesor diizinkan menjalankan campuran berbagai macam aplikasi dan kode sistem operasi. Kegagalan prosesor dalam mode Symmetric Multiprocessing (SMP) kapasitas komputasi (Kemampuan dalam mengkomputerisasi suatu tugas) dan tidak akan membuat sistem menjadi Down atau lumpuh total.

Sistem Symmetric Multiprocessing (SMP) secara langsung lebih kompleks daripada sistem Asymmetric Multiprocessing (AMP). Seluruh koordinasi

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 39 dari 66 harus berlangsung dalam sistem operasi untuk menjaga semuanya tetap tersinkronisasi. Dengan alasan tersebut, sistem Symmetric Multiprocessing (SMP) biasanya dirancang dan ditulis dari bawah keatas.

Gambar 5.4 : Symmetric Multiprocessor System F. Microkernel

Microkernel berguna untuk menjalankan servis yang paling banyak (sering dijalankan) namun ringan seperti jaringan, filesystem, driver, dll. Yang tugas kernelnya ringan yang hanya berupa servis-servis dasar seperti alokasi memori, penjadwalan, dan messaging (Inter Process Communication).

Gambar 5.5 : Microkernel

Pada teorinya, konsep ini membuat kernel menjadi lebih responsif karena Microkernel dijalankan di user space, bukan di kernel space. Sehingga Kernel

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 40 dari 66 tidak perlu terlalu sibuk menjadwalkan banyak thread-thread kecil dari servis-servis dasar tersebut. Namun pada prakteknya terdapat kendala seperti jika terjadi sistem crash. Pada sistem yang crash, Kernel akan tetap berjalan, namun User Space akan terganggu dan bisa saja terjadi kehilangan informasi. Microkernel akan menjadi merugikan karena Microkernel disimpan di User Space.

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 41 dari 66

PERTEMUAN 6 & 7 KONKURENSI : DEADLOCK

1. Tujuan Instruksi Khusus

Setelah mengikuti modul ini, mahasiswa diharapkan mampu : a. Memahami hal-hal yang dapat menyebabkan deadlock b. Mengetahui bagaimana SO mengatasi deadlock 2. Alat dan Bahan

3. Dasar Teori

Deadlock adalah sekumpulan proses yang terblok yang tiap proses tersebut memegang sumber daya dan menunggu untuk mendapatkan sumber daya yang dipegang oleh proses di dalam kumpulan tersebut.

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 42 dari 66 4. Instruksi Modul

a. Model dan syarat terjadi deadlock Model Deadlock

Urutan kejadian pengoperasian perangkat I/O adalah : - meminta / request : meminta palayanan I/O

- memakai / use : memakai perangkat I/O

- melepaskan / release : melepaskan pamakaian perangkat I/O

Syarat terjadinya Deadlock :  Mutual exclution condition

Tiap sumber daya saat itu diberikan pada tepat satu proses.  Hold and wait condition / kondisi genggam dan tunggu

Proses-proses yang sedang menggenggam sumber daya, menunggu sumber daya – sumber daya yang baru.

Non-preemption condition / kondisi non-preemption

Sumber daya – sumber daya yang sebelumnya diberikan tidak dapat diambil paksa dari proses itu. Sumber daya – sumber daya harus secara eksplisit dilepaskan dari proses yang menggenggamnya.

Circular wait condition / kondisi menunggu secara sirkular

Harus terdapat rantai sirkuler dari dua proses atau lebih, masing-masing menunggu sumber daya yang digenggam oleh anggota berikutnya pada rantai itu.

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 43 dari 66 b. Metode Penanganan deadlock

 Pengabaian

Maksud dari pengabaian di sini adalah sistem mengabaikan terjadinya deadlock dan pura-pura tidak tahu kalau deadlock terjadi. Dalam penanganan dengan cara ini dikenal istilah ostrich algorithm. Pelaksanaan algoritma ini adalah sistem tidak mendeteksi adanya deadlock dan secara otomatis mematikan proses atau program yang mengalami deadlock. Kebanyakan sistem operasi yang ada mengadaptasi cara ini untuk menangani keadaan deadlock. Cara penanganan dengan mengabaikan deadlock banyak dipilih karena kasus deadlock tersebut jarang terjadi dan relatif rumit dan kompleks untuk diselesaikan.

 Pencegahan

Penanganan ini dengan cara mencegah terjadinya salah satu karakteristik deadlock. Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada sistem. Intinya memastikan agar sistem tidak akan pernah berada pada kondisi deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.

 Penghindaran

Menghindari keadaan deadlock. Bagian yang perlu diperhatikan oleh pembaca adalah bahwa antara pencegahan dan penghindaran adalah dua hal yang berbeda. Pencegahan lebih kepada mencegah salah satu dari empat karakteristik deadlock terjadi, sehingga deadlock pun tidak terjadi. Sedangkan penghindaran adalah memprediksi apakah tindakan yang diambil sistem, dalam kaitannya dengan permintaan proses akan sumber daya, dapat mengakibatkan terjadi deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 44 dari 66

 Pendeteksian dan Pemulihan

Pada sistem yang sedang berada pada kondisi deadlock, tindakan yang harus diambil adalah tindakan yang bersifat represif. Tindakan tersebut adalah dengan mendeteksi adanya deadlock, kemudian memulihkan kembali sistem. Proses pendeteksian akan menghasilkan informasi apakah sistem sedang deadlock atau tidak serta proses mana yang mengalami deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.

c. Pencegahan deadlock

 tiap proses harus meminta semua sumber daya yang diperlukan sekaligus dan tidak berlanjut sampai semuanya diberikan.

 Jika proses telah sedang memegang sumber daya tertentu, untuk permintaan berikutnya proses harus melepas dulu sumber daya yang dipegangnya. Jika diperlukan, proses meminta kembali sekaligus dengan sumber daya yang baru.

 Beri pengurutan linier terhadap tipe-tipe sumber daya pada semua proses, yaitu jika proses telah dialokasikan suatu tipe sumber daya, proses hanya boleh berikutnya meminta sumber daya tipe pada urutan yang berikutnya.

d. Penghindaran deadlock

Adalah memberi akses ke permintaan sumber daya yang tidak mungkin menimbulkan deadlock. Metode alternatif untuk menghindari deadlock adalah digunakan informasi tambahan tentang bagaimana sumber daya diminta.

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 45 dari 66 e. Deteksi dan pemulihan deadlock

Metode deteksi digunakan pada sistem yang mengijinkan terjadinya deadlock. Tujuan metode ini adalah memeriksa apakah telah terjadi deadlock dan menentukan proses-proses dan sumberdaya-sumberdaya yang terlibat deadlock secara presisi. Begitu telah dapat di tentukan, sistem dipulihkan dari deadlock dengan metode pemulihan.

Metode pemulihan dari deadlock berupaya untuk menghilangkan deadlock dari sistem sehingga sistem beroperasi kembali, bebas dari deadlock. proses-proses yang terlibat deadlock mungkin dapat menyelesaikan eksekusi dan membebaskan sumberdaya-sumberdayanya.

f. Strategi dan penanggulangan deadlock terpadu

Masing-masing teknik mempunyai keunggulan dan kelemahan, maka daripada berusaha merancang fasilitas sistem operasi dengan satu strategi penanggulangan deadlock maka lebih efisien menggunakan strategi-strategi berbeda untuk situasi-situasi berbeda. Silberschatz [SIL-94] menyarankan satu pendekatan terpadu, yaitu :

 Kelompokan sumber daya-sumber daya menjadi sejumlah kelas sumber daya.

 Gunakan strategi pengurutan linear seperti yang didefinisikan pada pencegahan menunggu sirkular. Strategi ini digunakan untuk mencegah deadlock di antara kelas-kelas sumber daya berbeda.

 Dalam satu kelas sumber daya, gunakan algoritma yang paling cocok untuk kelas-kelas sumber daya itu.

Modul Jaringan Komputer : DAFTAR GAMBAR Hal. 46 dari 66

PERTEMUAN 8 – 11

Dokumen terkait