MAKALAH SISTEM OPERASI THREAD CANCELLATI

MAKALAH SISTEM OPERASI
THREAD CANCELLATION

NAMA KELOMPOK :
AHMAD SIDQI M.

[1534010090]

MURNI YOSEP

[1534010091]

TISCHA JURISA R.

[1534010098]

LISA AULIA FAUZI

[1534010119]

RAY VICTOR PANJAITAN


[1534010121]

PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN”
JAWA TIMUR
2016

KATA PEGANTAR

Puji syukur kehadirat Tuhan Yang Maha Esa atas segala rahmatNya sehingga makalah
ni dapat tersusun hingga selesai. Tidak lupa kami juga mengucapkan banyak terimakasih atas
bantuan dari pihak yang telah berkontrubusi dengan mmberikan sumbangan baik materi
maupun pikirannya.
Dan harapan kami semoga makalah kami ini dapat menambah pengetahuan dan
pengalaman bagi para pembaca. Untuk ke depannya dapat memperbaiki bentuk maupun
menambah isi makalah agar menjadi lebih baik lagi.
Karena keterbatasan pengetahuan maupun pengalaman kami, kami yakin masih
banyak kekurangan dalam makalah ini, oleh karena itu kami sangat mengharapkan saran dan

kritik yang membangun dari pembaca demi kesempurnaan makalah ini.

Surabaya, 20 September 2016

Penyusun

I

DAFTAR ISI

Kata Pengantar...............................................................................................................I
Daftar Isi........................................................................................................................II
Pendahuluan……………………………………………………………………..........1
Pembahasan……………………………………………………………………...........2
Isi………………………………………………………………………………...........3
Makalah 1………………………………………………………………..........3
Makalah 2……………………………………………………………..............4
Paper 1................................................................................................................5
Paper 2…………………………………………………………………...........6
Perbandingan Paper 1 dan Paper 2.....................................................................8

Kesimpulan……………………………………………………………………...........9
Daftar Pustaka…………………………………………………………………..........10

II

PENDAHULUAN

Thread adalah unit terkecil dari eksekusi suatu program. Thread mengeksekusi
rangkaian instruksi satu demi satu. Ketika sistem menjalankan program, komputer akan
membuat thread baru. (Thread dalam konteks ini disebut proses, akan tetapi
perbedaanya tidank penting di sini). Instruksi-instruksi dalam program akan dieksekusi
oleh thread ini secara berantai, satu demi satu dari awal hingga akhir. Thread disebut
"mati" jika program selesai dieksekusi.
Dalam sistem komputer modern, beberapa thread bisa tercipta dalam satu waktu.
Pada satu saat tertentu, hanya ada satu thread yang bisa dijalankan, karena CPU hanya
bisa melakukan satu hal dalam satu waktu. (Pada komputer dengan multiprosesor,
multicore, dan hyper-threading, masing-masing prosesor atau core melakukan thread
yang berbeda-beda). Akan tetapi sebenarnya komputer membagi waktu menjadi bagianbagian kecil sehingga seolah-olah seluruh thread dijalankan secara bersama-sama.
Pembagian waktu berarti CPU mengeksekusi suatu thread dalam kurun waktu tertentu,
setelah itu beralih mengeksekusi thread yang lain, kemudian thread lain, dan seterusnya

dan kemudian kembali ke thread pertama -- kira-kira 100 kali per detik. Di mata user,
semua thread berjalan pada saat yang sama.
Java bisa membuat satu atau lebih thread yang bisa dijalankan secara paralel. Hal
ini adalah bagian mendasar, yang dibuat di dalam core bahasa, bukan merupakan
tambahan (add-on) seperti bahasa pemrograman lain. Tetap saja pemrogaman dengan
banyak thread adalah sesuatu yang tidak mudah.
Penggunaan thread yang banyak digunakan untuk membuat GUI (Graphical
User Interface) yang responsif. Pada dasarnya suatu program harus dapat terus bejalan
dan pada saat yang sama tetap bisa menerima input dari user, menanggapi klik mouse,
dan sebagainya.
Thread juga digunakan untuk mempercepat suatu proses, misalnya kita ingin
membuat program yang menunggu suatu input I/O dari network, dan pada saat yang
sama mengolahnya sehingga proses pengolahan berjalan serentak. Jika program harus
menunggu seluruh input datang baru kemudian melakukan pengolahan, tentunya akan
memakan waktu yang lebih lama, terutama apabila aliran network lambat atau
pengolahannya memakan waktu lama.

PEMBAHASAN
1
Thread adalah sebuah alur kontrol dari sebuah proses. Kontrol single thread hanya

memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem
operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah
proses untuk memiliki eksekusi

multi-threads, agar

dapat secara terus menerus

mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama, maka sistem
operasi tersebut

memungkinkan proses untuk menjalankan lebih dari satu tugas pada

satu waktu.
Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol
dengan ruang alamat yang sama. Keuntungan dari multithreaded
respon dari user, pembagian sumber daya proses,

meliputi peningkatan


ekonomis, dan kemampuan untuk

mengambil keuntungan dari arsitektur multiprosesor.
Thread merupakan unit dasar dari useran CPU, yang terdiri dari

Thread_ID,

program counter , register set, dan stack. Sebuah thread berbagi code section, data
section, dan sumber daya sistem operasi dengan thread lain yang dimiliki oleh proses
yang sama. Thread juga sering disebut lightweight process.

2

ISI
Makalah 1 :
Thread 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 target thread 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.

3

Makalah 2 :

Thread adalah sebuah alur kontrol dari sebuah proses. Thread terbagi menjadi dua jenis
yaitu Single Thread dan Multithread. Dilihat dari kegunaannya multithread adalah thread
yang paling banyak dipakai akhir-akhir ini. 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(Application Program Interface) 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.

Paper 1 :
(Thread Launching for C++0X / Howard E. Hinnant / 2007-03-09)
4
Kita dapat mengetahui dalam C++ bagaimana cara cara yang dapat digunakan untuk
memakai proses thread cancellation. Dan juga kita dapat mengetahui bahwa thread utama
tidak dapat dibatalkan (oleh thread lainnya ) karena pembatalan oleh thread lain hanya dapat
melalui std :: thread dan tidak ada cara untuk membuat std :: thread yang mengacu ke thread
adalah utama daftar poin pembatalan yang dianjurkan yaitu :


void std::this_thread::cancellation_point()




void std::this_thread::sleep(std::nanoseconds rel_time)



void std::thread::join()



void std::thread::operator()()



void std::condition::wait(Lock&)



templatevoid std::condition::wait(Lock&,
Predicate)



bool std::condition::timed_wait(Lock&, std::nanoseconds)



templatevoid
std::condition::timed_wait(Lock&,std::nanoseconds,
Predicate)

Sebuah thread dapat menonaktifkan pembatalan untuk dirinya sendiri, bahkan jika
tidak mengeksekusi titik pembatalan seperti cancellation_point. Hal ini dilakukan dengan
kelas disable_cancellation. Pembangunan kelas ini memiliki efek menonaktifkan pembatalan
untuk seumur hidup objek. Ketika destruct objek, pembatalan secara otomatis dikembalikan
ke keadaan sebelumnya (biasanya diaktifkan kembali).

Karena pembatalan dinonaktifkan dengan objek kelas, pembatalan dijamin akan benar
diaktifkan apakah ruang lingkup yang tersisa biasanya, atau dengan pengecualian (apakah
atau tidak itu pengecualian thread_canceled. Pembatalan tidak dinonaktifkan selama

5

tumpukan unwinding. Destructors harus pembatalan aman apakah mereka sedang dieksekusi
karena pengecualian thread_canceled, atau pengecualian lainnya. Dengan demikian secara
otomatis menonaktifkan pembatalan ketika thread_canceled dilemparkan adalah berlebihan.
Dan ada setidaknya satu kasus sudut mana hal itu menyebabkan efek buruk.

Paper 2 :
6
(The Linux Programming Interface / Michael Kerrisk / 2015-07-23)

Thread cancellation berfungsi mengirimkan permintaan
pembatalan ke thread. Disaat dan ketika target thread bereaksi terhadap permintaan
pembatalan tergantung pada dua atribut yang berada di bawah kendali thread yang: dalam
keadaan kemampuan membatalkan dan jenis. Ketika pembatalan diminta bertindak, langkahlangkah berikut terjadi karena thread (dalam urutan ini):
1. Pembersih pembatalan penanngan yang muncul (dalam kebalikan dari urutan di mana
mereka

didorong)

dan

dipanggil.

(Lihat

pthread_cleanup_push

(3).)

pthread_cancel (3)
2. Thread khusus destructors data dipanggil, dalam urutan yang tidak ditentukan. (Lihat
pthread_key_create (3).)
3. Thread diakhiri. (Lihat pthread_exit (3).)
Langkah di atas terjadi asynchronously sehubungan dengan pthread_cancel ()
panggilan; status kembalinya pthread_cancel () hanya menginformasikan pemanggil
apakah permintaan pembatalan berhasil antri.
Setelah thread dibatalkan telah dihentikan, bergabung dengan thread menggunakan
pthread_join (3) memperoleh PTHREAD_CANCELED sebagai status keluar thread ini.
(Bergabung dengan thread adalah satu-satunya cara untuk mengetahui bahwa pembatalan
telah selesai.). Pada Linux, pembatalan diimplementasikan menggunakan sinyal. Di bawah
threading implementasi NPTL, pertama real-time sinyal (yaitu, sinyal 32) digunakan untuk
tujuan ini. Pada LinuxThreads, kedua sinyal real-time yang digunakan, jika sinyal real-time
yang tersedia, jika tidak SIGUSR2 digunakan.

Perbandingan Paper 1 dan Paper 2 :

7

Perbedaannya dari paper 1 dengan paper 2 terlatak pada segi implementasi paper 1
menggunakan C++ programming sedangkan paper 2 menggunakan linux programming.
Kelebihan dari paper 1 menggunakan C++ programming sehingga dapat mudah di pahami
karena c++ programming merupakan medium level lenguage dan kelebihan dari paper 2
menggunakan Linux untuk thread cancelation yang bersifat open source, terbuka dan bebas
sehingga untuk mendapatkannya tidak memerlukan biaya (LISENSI FREE) dan semuanya
boleh di utak atik, sehingga thread cancelation yang di jalankan di linux lebih lancar dan leih
mudah. Kekurangan dari paper 1 dengan menggunakan C++ programing user serta
fleksibelitas program kadang-kadang membingungkan pemakai (pemula) sehingga sulit untuk
menerapkan thread cancelation pada C++ programming sedangkan kekurangan pada paper 2
banyak user yang belum banyak mengerti tentang linux karena mereka terbiasa menggunakan
linux.

KESIMPULAN
8
Thread adalah sebuah alur kontrol dari sebuah proses. Thread cancellation adalah
tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya.
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 target thread untuk memberhentikan dirinya sendiri secara terurut.
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.
Pada umumnya sistem operasi memperbolehkan proses atau thread untuk
diberhentikan secara asynchronous. Tetapi Pthread API menyediakan deferred cancellation.
Hal

ini

berarti

sistem

operasi

mengijinkan deferred cancellation.

yang

mengimplementasikan

Pthread

API

akan

DAFTAR PUSTAKA
9
J.E.N.I. -. Pengenalan Pemrograman 2. Jakarta: Jardiknas.
Gata, Windu. 2005. Bahasa Pemrograman Java Gui, Error Exception, Thread, I/O
(Input/Output), Database & Pembuatan Laporan. Jakarta:-.
Silberschatz, Abraham, Peter Baer Galvin, dan Greg Gagne. 2005. Operating System
Concepts. Seventh Edition. USA: John Wiley & Sons, Inc.
www.java.lyracc.com/belajar/java-untuk-pemula/dasar-dasar-thread

16 april 2014 by citra ‘nchietz’ Wulandari.

10