Makalah Thread
Makalah Thread
Oleh:
Kelompok 4
Ida Bagus Adinara Pratama 2308561049
Ida Bagus Gede Widiastana Bawaskara 2308561097
Ida Bagus Made Andika Dwipramana 2308561121
I Gusti Agung Rangga Barbikas Sidemen 2308561136
0
KATA PENGANTAR
Puji syukur kami panjatkan kepada Tuhan Yang Maha Esa, karena atas
limpahan rahmatnya penyusun dapat menyelesaikan makalah ini tepat waktu tanpa
ada halangan yang berarti dan sesuai dengan harapan.
Ucapan terima kasih kami sampaikan kepada bapak Dr. Made Agung
Raharja,M.Cs. sebagai dosen pengampu mata kuliah Sistem Operasi yang telah
membantu memberikan arahan dan pemahaman dalam penyusunan makalah ini.
Kami menyadari bahwa dalam penyusunan makalah ini masih banyak
kekurangan karena keterbatasan kami. Maka dari itu penyusun sangat mengharapkan
kritik dan saran untuk menyempurnakan makalah ini. Semoga apa yang ditulis dapat
bermanfaat bagi semua pihak yang membutuhkan.
1
DAFTAR ISI
Hlm
COVER ....................................................................................................... 0
KATA PENGANTAR……………………………………………………. 1
DAFTAR ISI……………………………………………………………… 2
BAB I: PENDAHULUAN
1.1 Latar Belakang …………………………………………………………. 3
1.2 Rumusan Masalah ……………………………………………………… 4
1.4 Tujuan Penulisan ………………………………………………….......... 5
BAB II: PEMBAHASAN
2.1 Pengenalan Thread…………………........................................................
2.2 Multithreading Models……………………………..……………………
2.3 Thread Libraries…………………………………………………………
2.3 Permasalahan dalam Thread…………………………………………….
BAB III: PENUTUP
3.1 Kesimpulan……………………………………………………………...
3.2 Saran…………………………………………………………………….
DAFTAR PUSTAKA………………………………………………………
LAMPIRAN (Jika Ada)……………………………………………………
2
BAB I
PENDAHULUAN
3
1.3 Tujuan Penulisan
a. Mendefinisikan thread, menjelaskan model-model multithreading,
mengevaluasi perpustakaan thread, dan menganalisis permasalahan yang
timbul dalam penggunaan thread.
b. Dengan fokus pada tujuan ini, penelitian akan memberikan pemahaman yang
mendalam tentang konsep thread, model-model multithreading, perpustakaan
yang tersedia, serta tantangan yang dihadapi dalam pengguna
4
BAB II
PEMBAHASAN
Saat menyelesaikan tugas secara digital, aplikasi komputer dapat membantu anda
menyelesaikan tugas secara efisien dan akurat, antara lain: Microsoft Word, Microsoft
Excel, kalkulator, catatan Evernote, dll. Ini berarti kita terus-menerus menggunakan aplikasi
di PC, ponsel, dan tablet kita. Semua aplikasi tersebut memiliki kegunaan yang berbeda
beda dan memiliki fitur yang spesifik
Namun, dari sudut pandang sistem operasi, semua aplikasi hanyalah proses. Setiap proses
dikendalikan oleh sistem operasi dengan struktur blok kendali proses (PCB). Setiap proses
pada papan sirkuit ini mempunyai komponen-komponen yang berisi informasi penting
tentang proses tersebut, seperti: Hal ini memungkinkan sistem operasi untuk
mengidentifikasi setiap proses dengan PID-nya
5
Pada prosesor dengan singlecore mengeksekusi proses yang memilki thread lebih dari satu,
maka CPU akan mengeksekusi thread-thread tersebut akan bergantian secara bersisipan
dalam mengeksesusi setiap threadnya. Seakan-akan sistem terdapat processing unit yang
banyak namun kenyataannya processing unit bergantian menjalankan tugas secara cepat
tanpa menyelesaikan masing-masing tugas. Hal ini disebut dengan concurrency.
Upaya untuk mendukung proses multithread dimulai, dan pengembangan teknologi baru
dimulai: prosesor multicore. Prosesor ini memiliki beberapa unit pemrosesan pada chip
prosesor. Oleh karena itu, sistem operasi ini mengenali bahwa sistem memiliki beberapa unit
pemrosesan dan dapat menggunakan prosesor tambahan tersebut untuk menjalankan
program dan proses. Teknologi ini dikembangkan karena kebutuhan sementara akan daya
komputasi yang lebih besar.
Upaya untuk mendukung proses multithread dimulai, dan pengembangan teknologi baru
dimulai: prosesor multicore. Prosesor ini memiliki beberapa unit pemrosesan pada chip
prosesor. Oleh karena itu, sistem operasi ini mengenali bahwa sistem memiliki beberapa unit
pemrosesan dan dapat menggunakan prosesor tambahan tersebut untuk menjalankan
program dan proses. Teknologi ini dikembangkan karena kebutuhan sementara akan daya
komputasi yang lebih besar. Sistem multi-core ini dapat melakukan pemrosesan paralel
proses eksekusi dengan lebih efektif dan efisien. Peran multicore dalam proses dengan
banyak thread adalah membagi thread dalam proses secara merata ke dalam setiap unit
pemrosesan
6
Contohnya jika suatu proses memilki 6 thread dalam eksekusinya dan dieksekusi dengan 2
core prosesor, maka setiap corenya dalam processornya akan mengeksekusi 3 thread secara
concurrent. Proses pembagian thread dalam proses kepada beberapa prosesing unit disebut
dengan parallelism, mengekseksi beberapa tugas secara bersamaan.
1. Thread Pengguna : Thread ini dikelola melalui pustaka thread yang beroperasi pada
tingkat pengguna. Dalam konteks ini, proses pembuatan, penjadwalan, dan pengelolaan
thread dilakukan sepenuhnya dalam ruang pengguna tanpa perlu campur tangan langsung
dari kernel. Keunggulan utama dari thread pengguna adalah kemampuan untuk membuat
dan mengendalikan thread secara cepat dan efisien. Ini disebabkan karena pustaka thread
pada tingkat pengguna menyediakan fasilitas yang memungkinkan pembuatan dan
penjadwalan thread dengan overhead yang relatif rendah. Meskipun demikian, meskipun
thread pengguna beroperasi pada tingkat pengguna, mereka tetap mendapat dukungan dari
kernel dalam hal manajemen sumber daya dan akses ke layanan sistem operasi tertentu.
7
2. Thread Kernel: Sebaliknya, thread kernel, seperti namanya, dikelola secara langsung oleh
kernel sistem operasi. Artinya, pembuatan, penjadwalan, dan manajemen thread dilakukan
di dalam ruang kernel oleh sistem operasi itu sendiri. Proses ini melibatkan interaksi
langsung dengan kernel dan memungkinkan sistem operasi untuk secara langsung mengatur
alokasi sumber daya dan menangani penjadwalan thread. Meskipun thread kernel
memberikan kontrol yang lebih langsung kepada sistem operasi, proses pembuatan dan
penjadwalan thread biasanya memakan waktu lebih lama daripada thread pengguna karena
melibatkan overhead yang lebih tinggi akibat interaksi langsung dengan kernel.
Dengan demikian, perbedaan antara thread pengguna dan thread kernel tidak hanya terletak
pada lokasi di mana mereka dikelola, tetapi juga pada kinerja, tingkat kontrol, dan overhead
yang terkait dengan masing-masing pendekatan tersebut.
1. Model Many-to-One.
2. Model One-to-One.
3. Model Many-to-Man
8
1. Model Many-to-one
Model Many-to-One. Model ini 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 paralel pada multiprosesor. Kekurangannya
adalah ketika ada satu blocking systemc call, semua akan menjadi terblok juga. Contoh:
Solaris
2. Model One-to-One.
Model One-to-One. Model ini memetakan setiap thread tingkatan pengguna ke setiap thread.
Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap
pembuatan thread pengguna memerlukan tambahan thread kernel. Karena itu, jika
mengimplementasikan sistem ini maka akan menurunkan kinerja dari sebuah aplikasi
sehingga biasanya jumlah thread dibatasi dalam sistem.
Contoh: Windows NT/XP/2000 , Linux, Solaris 9, OS/2.
9
3. Model Many-to-Many
Model Many-to-Many. Model ini memultipleks banyak thread tingkatan pengguna ke thread
kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan
developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh
karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan
dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada
multiprosessor dan lebih efisien. Contoh : Solaris 2, IRIX, HPUX.
1
0
2.3 Pustaka Thread
Pustaka thread, atau yang lebih akrab dikenal sebagai Thread Library, berperan dalam
menyediakan antarmuka pemrograman aplikasi (API) bagi pengembang untuk menciptakan
dan mengelola thread. Terdapat dua pendekatan dalam implementasi pustaka thread:
1. API Level Pengguna : Pustaka thread diimplementasikan pada level pengguna tanpa
dukungan dari kernel, sehingga pemanggilan fungsi tidak melibatkan system call. Dengan
demikian, pemanggilan fungsi tersebut lebih bersifat lokal dan tidak memerlukan akses ke
kernel. Meskipun proses pembuatan dan pengelolaan thread dapat dilakukan dengan cepat,
thread ini tetap memiliki dukungan dari kernel.
2. API Level Kernel : Pustaka thread diimplementasikan pada level kernel dan didukung
langsung oleh sistem operasi. Oleh karena itu, pemanggilan fungsi thread melibatkan system
call ke kernel. Tiga pustaka thread yang umum digunakan saat ini adalah POSIX Pthreads,
Java, dan Win32. Implementasi standar POSIX dapat dilakukan baik pada level pengguna
maupun level kernel, sementara Win32 beroperasi pada level kernel. API thread Java dapat
diimplementasikan menggunakan Pthreads atau Win32.
Pembatalan thread
adalah proses dimana sebuah thread dihentikan sebelum tugasnya selesai. Misalnya, sebelum
mematikan Java Virtual Machine (JVM) pada program Java, semua thread yang sedang
berjalan harus dibatalkan terlebih dahulu. Ada dua cara utama untuk melakukan pembatalan
thread:
2. Pembatalan Deferred : Thread secara periodik memeriksa apakah harus dibatalkan atau
tidak. Pendekatan ini memungkinkan thread untuk memeriksa kondisi pembatalan secara
1
1
teratur dan membatalkan dirinya sendiri jika diperlukan.
Thread pools
merupakan solusi untuk mengatasi masalah pembuatan dan manajemen thread yang tidak
efisien pada server web yang menerapkan multithreading. Dengan menggunakan thread
pools, sejumlah thread dibuat dan dikelola saat proses startup, kemudian ditempatkan dalam
"kolam" dimana mereka menunggu untuk menerima tugas. Ketika server menerima
permintaan, thread dari kolam tersebut dapat diaktifkan untuk melayani permintaan tersebut.
Setelah menyelesaikan tugasnya, thread kembali ke dalam kolam untuk menunggu tugas
selanjutnya.
Penjadwalan thread
adalah proses yang menentukan bagaimana thread akan dijalankan. Kebijakan penjadwalan
ini menentukan prioritas setiap proses dan bagaimana proses tersebut bergerak dalam antrian
penjadwalan. Dalam model many-to-many atau many-to-one multithreading, thread dapat
dijadwalkan menggunakan dua skema:
1. Process Contention Scope (PCS) : Thread pengguna dijadwalkan untuk berjalan pada
lightweight process (LWP) yang tersedia.
2. System Contention Scope (SCS) : SCS memilih satu dari banyak thread dan
menjadwalkannya ke satu thread tertentu (CPU/Kernel).
Permasalahan dalam penggunaan thread dapat mencakup berbagai hal, mulai dari deadlock
hingga race condition. Berikut adalah beberapa permasalahan umum yang sering muncul
dalam pengembangan perangkat lunak yang menggunakan thread, beserta pembahasannya:
1
2
2.4 Permasalahan dalam Thread
1. Deadlock : Deadlock terjadi ketika dua atau lebih thread saling menunggu untuk sumber
daya yang dikunci oleh thread lain, sehingga tidak ada yang dapat melanjutkan eksekusi.
Deadlock juga bisa diartikan sebagai kebuntuan.
2. Race Condition : Race condition terjadi ketika hasil dari suatu proses bergantung pada
urutan eksekusi dari dua atau lebih thread, dan hasil akhirnya tidak dapat diprediksi.
Solusi untuk race condition termasuk penggunaan locking, penggunaan variabel kondisi,
atau penggunaan mekanisme sinkronisasi lainnya untuk mengatur akses ke sumber daya
bersama.
3. Starvation : Starvation terjadi ketika satu atau beberapa thread terus-menerus gagal
mendapatkan akses ke sumber daya yang mereka perlukan karena prioritas yang lebih
rendah dibandingkan dengan thread lain.
Solusi untuk starvation termasuk menggunakan mekanisme penjadwalan yang adil, seperti
penjadwalan berbasis waktu atau penjadwalan berbasis prioritas yang dinamis.
4. Priority Inversion : Priority inversion terjadi ketika sebuah thread dengan prioritas rendah
mengunci sumber daya yang dibutuhkan oleh thread dengan prioritas tinggi, menyebabkan
thread dengan prioritas tinggi terblokir.
1
3
Solusi untuk priority inversion termasuk penggunaan mekanisme penguncian dengan
prioritas, seperti prioritized mutex, dan penggunaan mekanisme penjadwalan yang
mendukung inherit priority.
5. Data Race : Data race terjadi ketika dua atau lebih thread mengakses dan memodifikasi
data yang sama tanpa sinkronisasi yang tepat, mengakibatkan hasil yang tidak konsisten.
Solusi untuk data race termasuk menggunakan locking, penggunaan variabel atomik, atau
penggunaan mekanisme sinkronisasi lainnya untuk memastikan akses yang aman ke data
bersama.
1
4
BAB III
PENUTUP
3.1 Kesimpulan
Bagian ini berisi ringkasan dan simpulan dari seluruh pembahasan yang telah
dipaparkan di BAB II. Dalam kesimpulan tidak perlu memasukkan kutipan apapun.
Panjang kesimpulan dibatasi maksimal sebanyak 2 lembar. Kesimpulan dan seluruh
isi BAB III Penutup diketik dengan format margin 4 cm (kiri), 4 cm (atas), 3 cm
(kanan), dan 3 cm (bawah). font yang digunakan adalah Times New Roman ukuran 12
pt. dengan spasi ukuran 1.5. Judul BAB dan setiap sub-judul yang ada dalam BAB III
Penutup wajib diketik cetak tebal (bold).
1
5
DAFTAR PUSTAKA
https://socs.binus.ac.id/2020/12/13/thread-unit-pemanfaatan-cpu/
https://gustibgsbayu.medium.com/sistem-operasi-thread-c7fb4a35d89a
https://repository.dinus.ac.id/docs/ajar/Sister_3_Proses_dan_Thread.pdf
https://lms-paralel.esaunggul.ac.id/pluginfile.php?file=%2F403345%2Fmod_resource
%2Fcontent%2F3%2Fmodul%20online%205%20ccs210.pdf
http://digilib.politama.ac.id/libtama/repository/THREAD.pdf
https://medium-com.translate.goog/@rodbauer/understanding-programs-processes-
and-threads-fd9fdede4d88?
_x_tr_sl=en&_x_tr_tl=id&_x_tr_hl=id&_x_tr_pto=tc&_x_tr_hist=true
1
6