Sebuah proses dapat memiliki karakteristik (ciri/peran) 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 IVO, peranti I/O, dan berkas.
Sementara proses yang memiliki karakteristik sebagai unit of dispatching akan memiliki satu jalur eksekusi (trace). Eksekusi ini mungkin berganti- an (interleaving) dengan proses lain. Sebuah proses memiliki status proses dan prioritas penjadwalan yang digunakan oleh sistem operasi sebagai informasi untuk melakukan penjadwalan prosesor.
Kedua karakterisitik 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, pro- gram 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, istilah proses digunakan sebagai abstraksi alokasi sumber daya yang diakses bersama oleh thread-thread tersebut.
Keuntungan dari thread adalah peningkatan 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 diimple- mentasikan sebagai satu set unit eksekusi, akan jauh lebih efisien diker- jakan sebagai sekumpulan thread yang terpisah.
Contoh aplikasi yang menggunakan thread adalah server, seperti web server di internet. Setiap kali terjadi akses dari browser internet ke suatu web server (situs), sebuah thread baru diciptakan untuk melayani per- mintaan tersebut, sedangkan thread utama akan kembali melayani per- mintaan 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 menyederhanakan 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 efisiensi dalam komunikasi antara executing program yang berbeda. Dalam hampir semua sistem operasi, komunikasi antar proses yang independen 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 di- pelihara 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.
Tidak ada komentar:
Posting Komentar