Anda di halaman 1dari 16

MAKALAH

MULTI THREAD

Disusun oleh:
Nama

: LUKMAN MENJING

Clas

: TKDM 5.2

Nim

: 16132029

STMIK PROFESIONAL MAKASSAR

KATA PENGANTAR
Puji syukur Kepada Tuhan Yang

Maha Esa. Yang telah memberikan banyak

nikmatnya kepada kami. Sehingga kami mampu menyelesaikan Makalah ini sesuai dengan
waktu yang kami rencanakan. Makalah ini kami buat dalam rangka memenuhi salah satu
syarat penilaian mata kuliah Jaringan Komputer. Yang meliputi nilai tugas dan nilai keaktifan.
Penyusunan makalah ini tidak berniat untuk mengubah materi yang sudah tersusun.
Namun, hanya lebih pendekatan pada study banding atau membandingkan beberapa materi
yang sama dari berbagai referensi. Yang semoga bisa memberi tambahan pada hal yang
terkait dengan Tekhnologi Informasi dan Komunikasi.
saya sebagai penyusun pastinya tidak pernah lepas dari kesalahan. Begitu pula dalam
penyusunan makalah ini, yang mempunyai banyak kekurangan. Oleh karena itu, saya mohon
maaf atas segala kekurangannya.
saya mengucapkan terima kasih kepada sebagai pengajar mata kuliah Tekhnologi
Informasi dan Komunikasi yang telah membimbing saya dalam penyusunan makalah
ini.tidak lupa pula kepada rekan rekan yang telah ikut berpartisipasi. Sehingga makalah ini
selesai tepat pada waktunya.

Penyusun

LUKMAN MENJING

DAFTAR ISI

Judul .......................................................................................................................................... i
Kata Pengantar ......................................................................................................................... ii
Daftar Isi ................................................................................................................................. iii
BAB 1 Pendahuluan
Latar Belakang ............................................................................................................. 1
Tujuan .......................................................................................................................... 1
Rumusan Masalah ........................................................................................................ 1
BAB 2 Pembahasan .................................................................................................................. 5
Pengertian Multi Thread ... 6
Keuntungan dari Multi Thread ..... 8
Layanan Thread 8
Thread ..... 11
Progran Thread Phyton ... 13
BAB 3 Penutup
Kesimpulan ................................................................................................................. 15
Daftar Pustaka ............................................................................................................ 16

BAB 1
PENDAHULUAN
1. Latar Belakang Masalah
Di dunia TIK (Tekhnologi dan Informatika) banyak sekali hal-hal yang asing untuk para
pemula yang baru saja memasuki dunia TIK. Darimulai hadware, software, pengenalan web,
java sicript, dll hingga cloud computing. Penulis pun mengalami hal demikian. Sulit
mencerna bahasa baru yang ada di dunia TIK. Untuk di makalah ini sendiri, penulis akan
berusaha membahas tentang Bagaimana Multi Thread Dapat Bekerja. Agar mereka yang
senasib dengan penulis, akan mengetahui seluk beluk Cloud Computing.
2. Tujuan
Adapun tujuan dari penulisan makalah ini ialah :
Untuk memenuhi tugas yang telah diberikan oleh dosen mata kuliah Sistem Operasi.
Untuk menambah ilmu serta wawasan yang lebih luas mengenai Cloud Computing yang
sebenarnya saya pun yang awalnya tidak paham menjadi paham.
3. Rumusan Masalah
1. Pengertian Multi Thread
2. Keuntungan dari penggunaan Multi Thread
3. Sejarah Multi Thread

BAB 2
PEMBAHASAN
A. Pengertian Cloud Computing
Thread adalah unit dasar dari penggunaan CPU, thread mengandung 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. Sebuah proses tradisional
atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali.
Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak
adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu
satuan waktu.
Secara informal, proses adalah program yang sedang dieksekusi. Ada dua jenis proses,
proses berat (heavyweight) atau biasa dikenal dengan proses tradisional, dan proses ringan
atau kadang disebut thread.

Thread saling berbagi bagian program, bagian data dan sumber daya sistem operasi dengan
thread lain yang mengacu pada proses yang sama. Thread terdiri atas ID thread, program

counter, himpunan register, dan stack. Dengan banyak kontrol thread proses dapat melakukan
lebih dari satu pekerjaan pada waktu yang sama
B. Keuntungan dari Cloud Computing
1. Responsi
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
dalamweb browser yang multithreading, sebuah thread dapat melayani permintaan pengguna
sementara thread lain berusaha menampilkan image.
2. Berbagi sumber daya
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. Ekonomi
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.
4. Utilisasi arsitektur multiprocessor
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 ).

C. User Thread

User thread didukung oleh kernel dan diimplementasikan oleh thread library ditingkat
pengguna. Library mendukung untuk pembentukan thread, penjadualan, dan managemen
yang tidak didukung oleh kernel. User thread didukung diatas kernel dan diimplementasi oleh
thread library pada user level. Library 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 di
user space tanpa intervensi dari kernel. Oleh karena itu, user -level thread biasanya cepat
untuk dibuat dan diatur. Tetapi user thread mempunyai kelemahan yaitu apabila kernelnya
merupakan thread tunggal maka apabila 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.
D. Kernel Threads
Kernel thread didukung secara langsung oleh sistem operasi. Pembentukan thread,
penjadwalan, dan manajemen dilakukan oleh kernel dalam ruang kernel. Karena managemen
thread telah 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 operasi yang mendukung kernel thread adalah Windows NT, Solaris,
Digital UNIX.
E. Multithreading Models

1. One-to-One
One-to-One model memetakan setiap user thread ke kernel thread. Ia menyediakan lebih
banyak concurrency dibandingkan Many-to-One model. Keuntungannya sama dengan
keuntungan kernel thread. Kelemahannya model ini adalah setiap pembuatan user thread
membutuhkan pembuatan kernel thread. Karena pembuatan thread bisa menurunkan
performa dari sebuah aplikasi maka implmentasi dari model ini membatasi jumlah thread
yang dibatasi oleh sistem. Contoh sistem operasi yang mendukung One-to-One model adalah
Windows NT dan OS/2.

2. Many-to-One model
Many-to-One model memetakan banyak user-level thread ke saru kernel thread. Pengaturan
thread dilakukan di user space, oleh karena itu ia efisien tetapi ia mempunyai kelemahan
yang sama dengan user thread. Selain itu karena hanya satu thread yang bisa mengakses
thread pada suatu waktu maka multiple thread tidak bisa berjalan secara pararel
pada multiprocessor. User-level thread yang diimplementasi pada sistem operasi yang tidak

mendukung kernel thread menggunakan Many-to-One model. Contoh: Solaris Green


Threads dan GNU Portable Threads.

3. Many-to-Many model
Many-to-many model multiplexes banyak user-level thread ke kernel thread yang jumlahnya
lebih kecil atau sama banyaknya dengan user-level thread. Jumlah kernel thread bisa spesifik
untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengijinkan developer
ntuk membuat user thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh
karena hanya satu thread yang bisa 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
bisa membuat thread dalam jumlah yang terbatas). Many-to-Many model tidak menderita
kelemahan dari 2 model di atas. Developer bisa membuat user thread sebanyak yang
diperlukan, dan kernel thread yang bersangkutan bisa 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.
F. Thread Pools
Pada web server yang multithreading ada 2 masalah yang timbul :
1.

Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan

yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia
menyelesaikan tugasnya.
2.

Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari

sistem.

Solusinya adalah dengan penggunaan thread pools, cara kerjanya adalah dengan membuat
beberapa thread pada proses startup dan menempatkan mereka ke pools, dimana mereka
duduk diam dan menunggu untuk bekerja. Jadi ketika server menerima permintaan maka
maka ia akan membangunkan thread dari pool dan jika threadnya tersedia maka permintaan
tersebut akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali
ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat
dibutuhkan maka server menunggu sampai ada 1 thread yang bebas.
Keuntungan thread pool :
1. Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding
dengan menunggu thread baru dibuat.
2. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada
sistem yang tidak bisa mendukung banyak thread yang berjalan secara concurrent .
Jumlah thread dalam pool bisa tergantung dari jumlah CPU dalam sistem, jumlah
memori fisik, dan jumlah permintaan klien yangconcurrent
G. Thread Cancellation
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.
H. Thread Java
Threads di Java dibuat dengan cara :
a.

meng-extends class Threads

b.

men-implement interface Runnable

Threads di Java diatur oleh Java Virtual Machine (JVM). Keunggulan Java Threads adalah:
a. JVM menggunakan prioritas preemptive berdasarkan algoritma penjadualan.
b. Semua threads di Java mempunyai prioritas. Prioritas tertinggi dijadualkan untuk
dieksekusi oleh JVM.
c. Jika ada 2 thread yang prioritasnya sama, digunakan algoritma First In First Out (FIFO).

Keadaan Threads di Java dibagi menjadi 4 keadaan :


a. new: sebuah thread pada keadaan ini ada ketika objek dari thread tersebut dibuat.
b runnable: memanggil start() method untuk mengalokasikan memori bagi thread baru
dalam JVM dan memanggil run() method untuk membuat objek.
c. block: sebuah thread akan diblok jika menampilkan sebuah kalimat pengeblokan.
Contohnya: sleep() atau suspend().
d. dead: sebuah thread dipindahkan ke keadaan dead ketika run() method berhenti atau ketika
stop() method dipanggil.
I. Thread Linux
Ketika pertama kali dikembangkan, Linux tidak didukung dengan threading di dalam
kernelnya, tetapi dia mendukung proses-proses sebagai entitas yang dapat dijadwalkan
melalui clone()

system

calls.

Sekarang

Linux

mendukung

penduplikasian

proses

menggunakan system call clone() dan fork(). Clone() mempunyai sifat mirip dengan fork(),
kecuali dalam hal pembuatan copy dari proses yang dipanggil dimana ia membuat sebuah
proses yang terpisah yang berbagi address space dengan proses yang dipanggil.
Pembagian address space dari parent processmemungkinkan cloned task bersifat mirip
dengan thread yang terpisah. Pembagian address space ini dimungkinkan karena proses
direpresentasikan di dalam Kernel Linux.
Di dalam Kernel Linux setiap proses direpresentasikan sebagai sebuah struktur data yang
unik.

Jadi,

daripada

menciptakan

yang

baru

maka

struktur

data

yang

baru

mengandung pointer yang menunjuk ke tempat dimana data berada. Jadi ketika fork()
dipanggil, proses yang baru akan tercipta beserta duplikasi dari segala isi di struktur data
di parent process, namun ketika clone() dipanggil, ia tidak menduplikasi parent
processnya tetapi

menciptakan pointer ke

struktur

data

pada parent

process yang

memungkinkan child process untuk berbagi memori dan sumber daya dari parent processnya.
Project LinuxThread menggunakan system call ini untuk mensimulasi thread di user space.
Sayangnya, pendekatan ini mempunyai beberapa kekurangan, khususnya di area signal
handling, scheduling, dan interprocess synchronization primitive.Untuk meningkatkan
kemampuan Thread Linux, dukungan kernel dan penulisan ulang pustaka thread sangat
diperlukan. Dua projectyang saling bersaing menjawab tantangan ini. Sebuah tim yang terdiri
dari pengembang dari IBM membuat NGPT (Next Generation POSIX Threads). Sementara
pengembang dari Red Hat membuat NPTL (Native POSIX Thread Library).Sebenarnya
Linux tidak membedakan antara proses dan thread. Dalam kenyataannya, Linux lebih
menggunakan istilah task dibandingkan proses dan thread ketika merujuk kepada pengaturan
alur pengontrolan di dalam program.

Program Multi Thread deangan Phyton

BAB 3
PENUTUP
Kesimpulan
Suatu proses didefinisikan oleh resource yang digunakan dan lokasi yang akan
dieksekusi. Namun adakalanya proses-proses akan menggunakan resource secara bersamasama. 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.
Apabila dilakukan perbandingaan antara sistem multi thread dengan sistem
multi proses dapat disimak berikut. Pada multi proses, setiap proses secara terpisa
melakukan operasi tidak bekerja sama dengan proses lain, setiap proses mempunyai
program counter, stack register dan ruang alamat sendiri. Organisasi jenis ini berguna
jika job dibentuk oleh proses-proses yang tidak saling berhubungan.

Multi proses

membentuk task yang sama. Sebagai contoh, multi proses dapat menyediakan data untuk
mesin secara remote pada implementasi system file jaringan. Hal ini lebih efisien apabila
satu proses terdiri dari multi thread melayani tugas yang sama.

Pada implementasi multi

proses, setiap proses mengeksekusi kode yang sama tetapi mempunyai memori dan
resource file sendiri.

Satu proses multi thread menggunakan resource lebih sedikit

daripada multi proses, termasuk memory, open file dan penjadwalan CPU.

DAFTAR PUSTAKA
http://andyhimpunanmakalah.blogspot.co.id/2012/07/tugas-iii-sistem-operasi.html
http://dokumen.tips/download/link/makalah-multithread
http://dokumen.tips/documents/makalah-multithread.html
http://www.distrodoc.com/5649-makalah-sistem-operasi-thread

Anda mungkin juga menyukai