Ilustrasi Thread dengan Linux dan Java

3.6. Ilustrasi Thread dengan Linux dan Java

Dewasa ini, banyak sistem operasi yang telah mendukung proses multithreading. Setiap sistem operasi memiliki konsep tersendiri dalam mengimplementasikannya ke dalam sistem.

3.6.1. Thread dengan Linux

Kernel Linux mulai menggunakan thread pada versi 2.2. Thread dalam Linux dianggap sebagai task, seperti halnya proses. Kebanyakan sistem operasi yang mengimplementasikan multithreading menjalankan sebuah thread terpisah dari proses. Linus Torvalds mendefinisikan bahwa sebuah thread adalah Context of Execution (COE), yang berarti bahwa hanya ada sebuah Process Control Block (PCB) dan sebuah penjadual yang diperlukan. Linux tidak mendukung multithreading, struktur data yang terpisah, atau pun rutin kernel.

Linux menyediakan dua macam system call, yaitu fork dan clone. fork memiliki fungsi untuk menduplikasi proses dimana proses anak yang dihasilkan bersifat independent. clone memiliki sifat yang mirip dengan fork yaitu sama-sama membuat duplikat dari proses induk. Namun demikian, selain membuat proses baru yang terpisah dari proses induk, clone juga mengizinkan terjadinya proses berbagi ruang alamat antara proses anak dengan proses induk, sehingga proses anak yang dihasilkan akan sama persis dengan proses induknya.

Setiap proses memiliki struktur data yang unik. Namun demikian, proses-proses di Linux hanya menyimpan pointer-pointer ke struktur data lainnya dimana instruksi disimpan, sehingga tidak harus menyimpan instruksi ke setiap struktur data yang ada. Hal ini menyebabkan context switch antar proses di Linux menjadi lebih cepat.

Ketika fork dieksekusi, sebuah proses baru dibuat bersamaan dengan proses penyalinan struktur data dari proses induk. Ketika clone dieksekusi, sebuah proses baru juga dibuat, namun proses tersebut tidak menyalin struktur data dari proses induknya. Proses baru tersebut hanya menyimpan pointer ke struktur data proses induk. Oleh karena itu, proses anak dapat berbagi ruang alamat dan sumber daya dengan proses induknya. Satu set flag digunakan untuk mengindikasikan seberapa banyak kedua proses tersebut dapat berbagi. Jika tidak ada flag yang ditandai, maka tidak ada sharing, sehingga clone berlaku sebagai fork. Jika kelima flag ditandai, maka proses induk harus berbagi semuanya dengan proses anak.

Tabel 3-1. Tabel Flag dan Fungsinya Flag

Keterangan

CLONE_VM

Berbagi data dan Stack

CLONE_FS Berbagi informasi sistem berkas CLONE_FILES

Berbagi berkas

CLONE_SIGHAND

Berbagi sinyal

CLONE_PID Berbagi PID dengan proses induk

3.6.2. Thread dengan Java

Sistem operasi mendukung thread pada tingkat kernel atau tingkat pengguna. Java merupakan salah satu dari sedikit bahasa pemrograman yang mendukung thread di tingkat bahasa untuk pembuatan dan managemen thread . Karena thread dalam Java diatur oleh Java Virtual Machine (JVM), tidak dengan user level library ataupun kernel, sulit mengelompokkan thread di Java apakah di tingkat pengguna atau kernel.

Setiap program dalam Java memiliki minimal sebuah thread, yaitu main thread yang merupakan single-thread tersendiri di JVM. Java juga menyediakan perintah untuk membuat dan memodifikasi thread tambahan sesuai Setiap program dalam Java memiliki minimal sebuah thread, yaitu main thread yang merupakan single-thread tersendiri di JVM. Java juga menyediakan perintah untuk membuat dan memodifikasi thread tambahan sesuai

Pembuatan Thread

Ada dua cara untuk membuat thread dalam Java. Pertama, thread dapat dibuat secara eksplisit dengan cara membuat objek baru dari class yang telah meng-extends class Thread yang menyebabkan class tersebut mewarisi method-method dan field dari class super. Dalam kasus ini, sebuah class hanya dapat meng-extends sebuah class. Keterbatasan ini dapat diatasi dengan cara kedua yaitu meng-implements interface Runnable, yang merupakan cara yang paling sering digunakan untuk membuat thread, sehingga class tersebut dapat meng-extends class lain.

Sebuah objek yang berasal dari subkelas Thread dapat dijalankan sebagai thread pengontrol yang terpisah dalam JVM. Membuat objek dari class Thread tidak akan membuat thread baru. Hanya dengan method start thread baru akan terbentuk. Memanggil method start untuk membuat objek baru akan mengakibatkan dua hal, yaitu:

• Pengalokasian memori dan menginisialisasikan sebuah thread baru dalam JVM. • Memanggil method run, yang sudah di-override, membuat thread dapat dijalankan oleh JVM.

(Catatan: Method run dijalankan jika method start dipanggil. Memanggil method run secara langsung hanya menghasilkan sebuah single-thread tambahan selain main thread)

Contoh pembuatan thread dengan membuat objek baru dari class yang meng-extends class Thread:

Gambar 3-22. Thread

public class TestThread1 { public static void main (String[] args) { BuatThread1 b = new BuatThread1(); for(int i = 0; i < angka; i++) {

b.start(); } } }

class BuatThread1 extends Thread { public void run() { try { System.out.println("Thread baru dibuat."); } catch (InterruptedException e) { }

JVM dan Host Operating System

Implementasi umum dari JVM adalah di atas sebuah host operating system. Hal ini memungkinkan JVM untuk menyembunyikan implementasi detail dari sistem operasi tempat JVM dijalankan dan menyediakan lingkungan abstrak dan konsisten yang memungkinkan program-program Java untuk beroperasi di atas platform apa pun yang mendukung JVM. Spesifikasi untuk JVM tidak mengindikasikan bagaimana thread-thread Java dipetakan ke sistem operasi tempat JVM dijalankan, melainkan menyerahkan keputusan tersebut kepada implementasi Implementasi umum dari JVM adalah di atas sebuah host operating system. Hal ini memungkinkan JVM untuk menyembunyikan implementasi detail dari sistem operasi tempat JVM dijalankan dan menyediakan lingkungan abstrak dan konsisten yang memungkinkan program-program Java untuk beroperasi di atas platform apa pun yang mendukung JVM. Spesifikasi untuk JVM tidak mengindikasikan bagaimana thread-thread Java dipetakan ke sistem operasi tempat JVM dijalankan, melainkan menyerahkan keputusan tersebut kepada implementasi

Dokumen yang terkait

ANALISIS EFISIENSI PEMASARAN DAN PENDAPATAN USAHATANI ANGGUR (Studi Kasus di Kecamatan Wonoasih Kotamadya Probolinggo)

52 472 17

Studi Kualitas Air Sungai Konto Kabupaten Malang Berdasarkan Keanekaragaman Makroinvertebrata Sebagai Sumber Belajar Biologi

23 176 28

ANALISIS KOMPARATIF PENDAPATAN DAN EFISIENSI ANTARA BERAS POLES MEDIUM DENGAN BERAS POLES SUPER DI UD. PUTRA TEMU REJEKI (Studi Kasus di Desa Belung Kecamatan Poncokusumo Kabupaten Malang)

23 307 16

PENILAIAN MASYARAKAT TENTANG FILM LASKAR PELANGI Studi Pada Penonton Film Laskar Pelangi Di Studio 21 Malang Town Squere

17 165 2

Analisis Sistem Pengendalian Mutu dan Perencanaan Penugasan Audit pada Kantor Akuntan Publik. (Suatu Studi Kasus pada Kantor Akuntan Publik Jamaludin, Aria, Sukimto dan Rekan)

136 695 18

DOMESTIFIKASI PEREMPUAN DALAM IKLAN Studi Semiotika pada Iklan "Mama Suka", "Mama Lemon", dan "BuKrim"

133 700 21

PEMAKNAAN MAHASISWA TENTANG DAKWAH USTADZ FELIX SIAUW MELALUI TWITTER ( Studi Resepsi Pada Mahasiswa Jurusan Tarbiyah Universitas Muhammadiyah Malang Angkatan 2011)

59 326 21

STRATEGI KOMUNIKASI POLITIK PARTAI POLITIK PADA PEMILIHAN KEPALA DAERAH TAHUN 2012 DI KOTA BATU (Studi Kasus Tim Pemenangan Pemilu Eddy Rumpoko-Punjul Santoso)

119 459 25

STRATEGI PUBLIC RELATIONS DALAM MENANGANI KELUHAN PELANGGAN SPEEDY ( Studi Pada Public Relations PT Telkom Madiun)

32 284 52

FAKTOR-FAKTOR PENYEBAB ORANG TUA MENIKAHKAN ANAK PEREMPUANYA PADA USIA DINI ( Studi Deskriptif di Desa Tempurejo, Kecamatan Tempurejo, Kabupaten Jember)

12 105 72