Proses dan Thread dalam OS

Sistem operasi mengeksekusi berbagai jenis program. Pada sistem batch program tersebut biasanya disebut dengan job, sedangkan pada sistem time sharing, program disebut dengan program user atau task. Beberapa buku teks menggunakanistilah job atau proses. Sebuah proses adalah sebuah peristiwa adanya sebuah proses yang dapat dieksekusi. Sebagai sebuah eksekusi proses,maka hal tersebut membutuhkan perubahan keadaan. Keadaan dari sebuah proses dapat didefinisikan oleh aktivitas proses tertentu tersebut.
Secara informal proses adalah program dalam eksekusi. Suatu proses adalah lebih dari kode program, dimana kadang kala dikenal sebagai bagian tulisan. Proses juga termasuk aktivitas yang sedang terjadi, sebagaimana digambarkan oleh nilai pada program counter dan isi dari daftar prosesor/ processor's register. Suatu proses umumnya juga termasuk process stack, yang berisikan data temporer (seperti parameter metoda, address yang kembali, dan variabel lokal) dan sebuah data section, yang berisikan variabel global.

Status Proses

Meskipun tiap-tiap proses terdiri dari suatu kesatuan yang terpisah namun adakalanya proses-proses tersebut butuh untuk saling berinteraksi. Satu proses bisa dibangkitkan dari output proses lainnya sebagai input. Pada saat proses dieksekusi, akan terjadi perubahan status. Status proses didefiniskan sebagai bagian dari aktivitas proses yang sedang berlangsung saat itu. Status proses terdiri dari :
a. New: proses sedang dibuat.
b. Running: proses sedang dieksekusi.
c. Waiting: proses sedang menunggu beberapa event yang akan terjadi (seperti menunggu untuk menyelesaikan I/O atau menerima sinyal).
d. Ready: proses menunggu jatah waktu dari CPU untuk diproses.
e. Terminated: proses telah selesai dieksekusi.


Process Control Block
Gambar 1.

Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 1 PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk ini:
a. Status Proses. New, ready, running, waiting dan terminated.
b. Program Counter. Menunjukkan alamat berikutnya yang akan dieksekusi oleh
proses tersebut.
c. CPU Registers. Register bervariasi tipe dan jumlahnya tergantung arsitektur komputer yang bersangkutan. Register-register tersebut terdiri-atas: accumulator, index register, stack pointer, dan register serbaguna dan beberapa informasi tentang kode kondisi. Selama Program Counter berjalan, status informasi harus disimpan pada saat terjadi interrupt.
d. Informasi Penjadwalan CPU. Informasi tersebut berisi prioritas dari suatu proses, pointer ke antrian penjadwalan, dan beberapa parameter penjadwalan yang lainnya.
e. Informasi Manajemen Memori. Informasi tersebut berisi nilai (basis) dan limit register, page table, atau segment table tergantung pada sistem memory yang digunakan oleh SO.
f. Informasi Accounting. Informasi tersebut berisi jumlah CPU dan real time yang digunakan, time limits, account numbers, jumlah job atau proses, dll.
g. Informasi Status I/O. Informasi tersebut berisi deretan I/O device (seperti tape driver) yang dialokasikan untuk proses tersebut, deretan file yang dibuka, dll

Thread

Thread adalah sebuah alur control dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa alur control dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuanuntuk mengambil keuntungan dari arsitektur multiprosesor. Terdapat 2 model dari multithreaded yaitu one to one dan many to many.

Seperti halnya proses, thread memiliki status: ready, blocked, running dan terminated, dan hanya satu thread yang aktif dalam satu waktu. Thread dapat membuat child thread. Jika satu thread dalam keadaan blocked, maka thread yang lainnya dapat dijalankan. Namun, tidak saling bebas, Sebab semua thread dapat mengakses setiap alamat dalam satu task, thread dapat membaca dan menulisi stack dari thread yang lainnya. Sehingga tidak ada proteksi antara satu thread terhadap thread yang lainnya. Suatu proses dapat terdiri dari satu thread (single thread) dan beberapa thread (multi thread).

Thread terdiri dari dua bentuk yaitu user thread dan kernel thread. User thread adalah thread yang diatur dengan menggunakan pustaka user level thread. Contoh sistem yang menggunakan user thread adalah POSIX Pthreads, Mach C-threads dan Solaris threads. Sedangkan kernel thread adalah thread yang didukung oleh Kernel. Contoh sistem yang menggunakan kernel thread adalah Windows 95/98/NT/2000, Solaris, Tru64 UNIX, BeOS dan Linux.

Model multi thread terdiri dari model Many-to-One, One-to-One dan Many-toMany. Pada model Many-to-One , beberapa user level thread dipetakan ke satu kernel thread dan digunakan pada sistem yang tidak mendukung kernel threads. Pada model One-to-One, setiap user-level thread dipetakan ke kernel Thread, misalnya pada Windows 95/98/NT/2000 dan OS/2. Pada model Many-to-Many, user level thread dipetakan ke beberapa kernel threads. Pada sistem operasi ini akan dibuat sejumlah kernel thread, contohnya Solaris 2 dan Windows NT/2000 dengan ThreadFiber package. Contoh sistem operasi yang menggunakan sistem thread adalah Solaris 2. Solaris 2 mendukung user-level thread dan kernel thread.

Thread pada Windows 2000 mengimplementasikan pemetaan one-to-one. Setiap thread terdiri dari thread id, kumpulan register, stack user dan kernel yang terpisat serta ruang data privat. Thread pada Linux sering disebut sebagai task daripada thread. Pembuatan thread dilakukan dengan menggunakan system call clone(). Clone() memungkinkan task anak menggunakan ruang alamat dari task (proses) parent

source:
http://ikc.unimal.ac.id/umum/ibam/ibam-os-html/i2.html
http://jaketkuning.unsri.ac.id/HanipahMawarni/blog/921/
http://lecturer.eepis-its.edu/~arna/Diktat_SO/3.Proses%20Proses.pdf

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comments:

Posting Komentar