Sistem
Operasi Proses dan Thread
Assalammualaikum.wr.wb......
Hai, Sobat Blogger di sini saya akan membahasa sedikit tentang
Proses dan Thread
A. PROSES
Proses
adalah konsep pokok dari sistem operasi. Berbagai macam defnisi mengenai proses
telah dicetuskan. Secara sederhana, proses adalah sebuah program yang
dieksekusi. Proses merupakan unit kerja terkecil yang secara individu memiliki
sumber daya-sumber daya dan dijadwalkan sistem operasi. Sistem operasi
mengelola semua proses di sistem dan mengalokasikan sumber daya ke proses
sesuai kebutuhan.
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
Proses yang dieksekusi mempunyai lima status yang
terdiri dari:
a. new
: Pembentukan suatu proses
b. running :
Instruksi-instruksi yang sedang dieksekusi
c. waiting
: Proses menunggu untuk beberapa event yang terjadi
d. ready
: Proses menunggu untuk dialirkan ke pemroses (processor)
e. terminated : Proses telah selesai dieksekusi
Gambar 1. Diagram status proses
Process Control Block(PCB)
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block(PCB), juga disebut sebuah control block. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini:
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block(PCB), juga disebut sebuah control block. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini:
a) Status
proses: status yang mungkin adalah new, ready, running, waiting, halted, dan
seterusnya.
b) Program
counter: suatu penghitung yang mengindikasikan alamat dari instruksi
selanjutnya yang akan dieksekusi untuk proses tersebut.
c) CPU
register: Register bervariasi dalam jumlah dan tipenya, tergantung pada
arsitektur komputer. Register tersebut termasuk accumulator, index register,
stack pointer,general-purposes register, ditambah informasi condition-code.
Bersama dengan program counter, keadaan/status informasi harus disimpan ketika
gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan
benar.
d) Informasi
manajemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai
dari dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung
pada sistem memori yang digunakan oleh sistem operasi.
e) Informasi
pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu nyata yang
digunakan, batas waktu, jumlah account, jumlah job atau proses, dan banyak
lagi.
f) Informasi
status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada
proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.
PCB hanya berfungsi sebagai tempat penyimpanan
informasi yang dapat bervariasi dari proses yang satu dengan yang lain.
Gambar 2. Diagram PCB
B. THREAD
Proses merupakan sebuah program yang mengeksekusi
thread tunggal. Kendali thread tunggal ini hanya memungkinkan proses untuk
menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah
memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk
mengeksekusi multi-threads. Misalnya user melakukan pekerjaan secara bersamaan
yaitu mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama.
Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread ID,
program counter, register set, dan stack. Sebuah threadberbagi 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. Perbedaannya ialah proses dengan thread yang
banyakmengerjakan lebih dari satu tugas pada satu satuan waktu.
Pada umumnya, perangkat lunak yang berjalan pada
komputer modern dirancang secara multithreading. Sebuah aplikasi biasanya
diimplementasi sebagai proses yang terpisah dengan beberapa thread yang
berfungsi sebagai pengendali. Contohnya sebuah web browser mempunyai thread
untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi
sebagai penerima data dari network.
Terkadang ada sebuah aplikasi yang perlu menjalankan
beberapa tugas yang serupa. Sebagai contohnya sebuah web server dapat mempunyai
ratusan klien yang mengaksesnya secara concurrent. Kalau web server berjalan
sebagai proses yang hanya mempunyai thread tunggal maka ia hanya dapat melayani
satu klien pada pada satu satuan waktu. Bila ada klien lain yang ingin
mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai
dilayani. Solusinya adalah dengan membuat web server menjadi multi-threading.
Dengan ini maka sebuah web server akan membuat thread yang akan mendengar
permintaan klien, ketika permintaan lain diajukan maka web server akan
menciptakan thread lain yang akan melayani permintaan tersebut [MDGR2006].
A. Single
thread dan multi thread
1.Single thread: process hanya mengeksekusi satu
thread saja pada satu waktu
2.Multi thread: process dapat mengeksekusi sejumlah
thread dalam satu waktu
Gambar 3. Single thread dan multi thread
B. Model
Multithreading
Dukungan thread disediakan pada tingkat user yaitu
user threads atau tingka kernel untuk kernel threads. User Threads disediakan
oleh kernel dan diatur tanpa dukungan kernel, sedangkan kernel therads didukung
dan diatur secara langusng oleh sistem operasi. Hubungan antara user threads
dan kernel threads terdiri dari tiga model relasi, yaitu:
- Model Many to One: Model Many-to-One memetakan beberapa thread
tingkatan pengguna ke sebuah thread tingkatan kernel. Pengaturan thread
dilakukan dalam ruang pengguna, sehingga efisien. Hanya satu thread
pengguna yang dapat mengakses thread kernel pada satu saat. Jadi, multiple
thread tidak dapat berjalan secara paralel pada multiprocessor. Thread
tingkat pengguna yang diimplementasi pada sistem operasi yang tidak
mendukung thread kernel menggunakan model Many-to-One.
Gambar 4. Model Many to One
- Model One to One: Model One-to-One memetakan setiap thread tingkatan
pengguna ke thread kernel. Ia menyediakan lebih banyak concurrency
dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan
thread kernel. Kelemahannya model ini ialah setiap pembuatan thread pengguna
memerlukan pembuatan thread kernel. Karena pembuatan thread dapat
menurunkan kinerja dari sebuah aplikasi maka implmentasi dari model ini
jumlah thread dibatasi oleh sistem. Contoh sistem operasi yang mendukung
model One-to-One ialah Windows NT dan OS/2.
Gambar 5. Model One to One
- Model Many To Many: Model ini me-multipleks banyak thread tingkatan
pengguna ke thread kernel yang jumlahnya lebih sedikit atau sama dengan
tingkatan pengguna. thread. Jumlah thread kernel spesifik untuk sebagian
aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer
untuk membuat user thread sebanyak yang ia mau tetapi concurrency
(berjalan bersama) tidak dapat diperoleh karena hanya satu thread yang
dapat 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 dapat membuat thread dalam jumlah yang terbatas).
Model Many-to-Many tidak mengalami kelemahan dari dua model di atas.
Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel
thread yang bersangkutan dapat bejalan secara paralel 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.
Apa perbedaan proses dengan thread?
a) Pembentukan Thread membutuhkan waktu yang lebih sedikit
daripada pembentukan process.
b) Membutuhkan waktu yang lebih sedikit untuk mengakhiti
Thread daripada process.
c)
Lebih mudah dan cepat untuk
melakukan switch antar Thread daripada switch antar process.
d)
Thread menggunakan secara
bersama ruang alamat dari proses yang menciptakannya. Proses memiliki ruang alamat sendiri-sendiri.
e)
Terhadap thread lain dalam satu proses.
Proses hanya dapat mengendalikan proses anakannya.
Perubahan pada thread utama seperti pembatalan atau perubahan
prioritas dapat mempengaruhi tingkah laku thread lain dalam satu
proses. Perubahan pada parent proses tidak mempengaruhi proses
anakan.
Sumber
- http://fazza01.wordpress.com/2009/04/11/tugas-pertemuan-5/
- http://ikc.dinus.ac.id/umum/ibam/ibam-os-html/i2.html#AEN865
- http://dee-x-cisadane.webs.com/apps/blog/show/10299581-
- perbedaan-proses-dan-thread-perbedaan-file-service-file-system-dan-file-server-beserta-contohnya-