KONSEP THREAD

Sebuah proses dapat memiliki karakteristik sebagai unit of resource ownership atau unit of dispatching. Proses yang memiliki karakteristik sebagai unit of resource ownership akan mengabstraksi sebuah ruang alamat virtual untuk menyimpan process image, dan dari waktu ke waktu proses diberi memori utama ditambah kendali terhadap sumber daya lain, seperti saluran I/O peranti I/O dan berkas.

Sementara proses yang memiliki karakteristik sebagai unit of dispatching akan memiliki satu jalur eksekusi (trace). Eksekusi ini mungkin bergantian (interleaving) dengan proses lain. Sebuah proses memiliki status proses dan prioritas penjadwalan yang digunakan oleh sistem operasi sebagai informasi untuk melakukan penjadwalan prosesor.

Kedua karakteristik tersebut independen dan dapat diperlakukan secara independen oleh sistem operasi. Untuk membedakan keduanya, unit of dispatching biasanya disebut dengan thread atau lightweight process, sementara unit of resources ownership biasanya tetap disebut sebagai proses atau task.

Yang paling menonjol dari konsep thread adalah dimungkinkan terdapat lebih dari satu thread dalam sebuah proses tunggal. Dalam kasus demikian, masing-masing thread memiliki informasi status eksekusi, program counter, stack, variabel lokal, serta konteks prosesornya sendiri-sendiri. Sementara akses ke berkas, variabel global, memori utama dibagi-pakai antar thread tersebut. Dalam konsep thread, istilahnya proses digunakan sebagai abstraksi alokasi sumber daya yang diakses bersama oleh thread-thread tersebut.

Keuntungan dari thread adalah meningkatkan kinerja, yaitu waktu yang dibutuhkan untuk menciptakan thread jauh lebih kecil dibanding dengan menciptakan sebuah proses baru, sedikit waktu untuk mengakhiri, dan lebih sedikit waktu untuk berganti (switch) antara thread yang ada dalam proses yang sama. Jika ada sebuah aplikasi atau function yang diimplementasikan sebagai satu set unit eksekusi, akan jauh lebih efisien dikerjakan sebagai sekumpulan thread yang terpisah.

Contoh aplikasi yang menggunakan thread adalah server, seperti web server di internet. Setiap kali terjadi akses dan browser internet ke suatu web server (situs), sebuah thread baru diciptakan untuk melayani permintaan tersebut, sedangkan thread utama akan kembali melayani permintaan pengguna lain. Karena sebuah web server  akan menangani banyak permintaan, banyak thread akan diciptakan dan dihancurkan dalam sebuah periode waktu yang singkat. Jika server-nya merupakan komputer multiprocessor maka banyak thread dalam proses yang sama akan dieksekusi secara simultan pada prosesor yang berbeda. Thread berguna pula pada sebuah prosesor tunggal untuk menyedehanakan struktur sebuah program yang secara logis mengerjakan beberapa fungsi yang berbeda secara bersamaan. Contoh penggunaan thread yang efektif adalah untuk aplikasi pemrosesan komunikasi dan pengawasan proses transaksi.

Thread memberikan pula efesiensi dalam komunikasi atara executing program yang berbeda. Dalam hampir semua sistem operasi, komunikasi atara proses yang idependen membutuhkan intervensi dari kernel untuk menyediakan proteksi dan mekanisme yang diperlukan untuk komunikasi. Karena thread dalam proses yang sama berbagi-pakai memori dan berkas, mereka dapat berkomunikasi satu sama lain tanpa melibatkan kernel sistem operasi.

Penjadwalan dan dispatching dikerjakan berbasis thread. Oleh karena itu, hampir semua informasi status yang berhubungan dengan eksekusi dipelihara dalam struktur data tingkat thread. Bagaimanapun, ada beberapa aksi yang menggunakan semua thread dalam sebuah proses harus diatur sistem operasi pada level proses. Penundaan (suspension) melibatkan swapping ruang alamat keluar dari memori utama. Karena semua thread dalam sebuah proses berbagi-pakai ruang alamat yang sama, semua thread harus memasukkan status suspend pada saat yang sama. Pengakhiran sebuah proses akan mengakhiri semua thread dalam task.