Proses
Satu selingan pada diskusi kita mengenai sistem operasi yaitu bahwa ada sebuah pertanyaan mengenai apa untuk menyebut semua aktivitas CPU. Sistem batch mengeksekusi jobs, sebagaimana suatu sistem time-shared telah menggunakan program pengguna, atau tugas-tugas/ pekerjaan-pekerjaan. Bahkan pada sistem tunggal, seperti Microsoft Windows dan Macintosh OS, seorang pengguna mampu untuk menjalankan beberapa program pada saat yang sama: sebuah Word Processor, Web Browser, dan paket e-mail.
Bahkan jika pengguna dapat melakukan
hanya satu program pada satu waktu, sistem operasi perlu untuk mendukung
aktivitas program internalnya sendiri, seperti managemen memori. Dalam banyak
hal, seluruh aktivitas ini adalah serupa, maka kita menyebut seluruh program
itu proses-proses (processes).
konsep dasar
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.
Walau dua proses dapat dihubungkan
dengan program yang sama, program tersebut dianggap dua urutan eksekusi yang
berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan copy yang berbeda
pada mail program, atau pengguna yang sama dapat meminta banyak copy dari
program editor.
Keadaan Proses
Sebagaimana proses bekerja, maka
proses tersebut merubah state (keadaan statis/ asal). Status dari sebuah proses
didefinisikan dalam bagian oleh aktivitas yang ada dari proses tersebut. Tiap
proses mungkin adalah satu dari keadaan berikut ini:
·
New : proses baru di ciptakan
·
Running : proses sedang di jalankan
·
Waiting : proses sedang
menunggu suatu proses tertentu untuk dijalankan (misalkan sedang menunggu respon dari
perangkat I/O)
·
Ready : proses sedang menunggu untuk dilayani processor
·
Terminated : proses telah
menyelesaikan eksekusi
Diagram process state
Process
Control Block
Tiap
proses digambarkan dalam sistem operasi oleh sebuah process control block
(PCB) juga disebut sebuah control block.
Process control block
Sebuah
PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses
yang spesifik, termasuk ini:
- Keadaan proses: Keadaan mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.
- Program counter: Counter mengindikasikan address dari perintah selanjutnya untuk dijalankan untuk proses ini.
- CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, index register, stack pointer, general-puposes register, ditambah code information pada kondisi apa pun. Besertaan dengan program counter, keadaan/ status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/ bekerja dengan benar setelahnya.
- Informasi managemen 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.
- Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, jumlah job atau proses, dan banyak lagi.
- Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, suatu daftar open berkas dan banyak lagi.
- PCB hanya berfungsi sebagai tempat menyimpan/ gudang untuk informasi apa pun yang dapat bervariasi dari prose ke proses.
Definisi Threads
Thread, atau kadang-kadang disebut proses ringan (lightweight),
adalah unit dasar dari utilisasi CPU. Di dalamnya terdapat ID thread, program
counter, register, dan stack. Dan saling berbagi dengan thread lain dalam
proses yang sama.
Thread
Sebuah program yang menjalankan eksekusi thread tunggal.
Sebagai contoh, jika sebuah proses menjalankan sebuah program Word Processor,
ada sebuah thread tunggal dari instruksi-instruksi yang sedang dilaksanakan.
Kontrol
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 memiliki eksekusi multithreads,
agar dapat dapat secara terus menerus mengetik dalam karakter dan menjalankan
pengecek ejaan didalam proses yang sama. Maka sistem operasi tersebut
memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu.
Thread
Program yang dieksekusi :
1.Proses berat (heavyweight) => proses tradisional
2.Proses ringan (lightweight) => THREAD
Thread terdiri dari ID thread, program counter,himpunan register dan stack. Thread dapat melakukan lebih dari satu
pekerjaan pada waktu yang sama (multithreading). Thread bekerja sama dengan thread lain dalam penggunaan bagian kode, bagian data, dan resource. Dengan penggunaan thread CPU dapat secara ekstensif di antara peer thread tanpa menggunakan manajemen memori.
Keuntungan penggunaan thread :
1.Tanggap
2.Pemberdayaan resorce
3.Ekonomis
4.Pemberdayaan arsitektur multiprocessor
2.1 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.
1.Single thread >> process hanya mengeksekusi satu thread saja pada satu waktu
2.Multi thread >> process dapat mengeksekusi sejumlah thread dalam satu waktu.
Model Multithreading
Dalam sub bab
sebelumnya telah dibahas pengertian dari thread, keuntungannya, tingkatan atau
levelnya seperti pengguna dan kernel. Maka dalam sub-bab ini pembahasan akan
dilanjutkan dengan jenis-jenis thread tersebut dan contohnya baik pada solaris maupun
java.
Sistem-sistem yang ada sekarang sudah banyak yang bisa mendukung untuk kedua pengguna dan kernel thread, sehingga model-model multithreading-nya pun menjadi beragam. Implementasi multithreading yang umum akan kita bahas ada tiga, yaitu model many-to-one, one-to-one, dan many-to-many.
Model Many
to One
Model
many-to-one ini memetakan beberapa tingkatan pengguna thread hanya ke satu buah
kernel thread. Managemen proses thread dilakukan oleh (di ruang) pengguna,
sehingga menjadi efisien, tetapi apabila sebuah thread melakukan sebuah
pemblokingan terhadap sistem pemanggilan, maka seluruh proses akan berhenti (blocked).
Kelemahan dari model ini adalah multihreads tidak dapat berjalan atau bekerja
secara paralel di dalam multiprosesor dikarenakan hanya satu thread saja yang
bisa mengakses kernel dalam suatu waktu.
Model One
to One
Model one-to-one memetakan setiap thread pengguna ke dalam
satu kernel thread. Hal ini membuat model one-to-one lebih sinkron daripada
model many-to-one dengan mengizinkan thread lain untuk berjalan ketika suatu
thread membuat pemblokingan terhadap sistem pemanggilan; hal ini juga
mengizinkan multiple thread untuk berjalan secara parallel dalam multiprosesor.
Kelemahan model ini adalah dalam pembuatan thread pengguna dibutuhkan pembuatan
korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread
dapat mempengaruhi kinerja dari aplikasi maka kebanyakan dari implementasi
model ini membatasi jumlah thread yang didukung oleh sistem. Model one-to-one
diimplementasikan oleh Windows NT dan OS/2.
Model Many to Many
Beberapa
tingkatan thread pengguna dapat menggunakan jumlah kernel thread yang
lebih kecil atau sama dengan jumlah thread pengguna. Jumlah dari kernel thread
dapat dispesifikasikan untuk beberapa aplikasi dan beberapa mesin (suatu
aplikasi dapat dialokasikan lebih dari beberapa kernel thread dalam
multiprosesor daripada dalam uniprosesor) dimana model many-to-one mengizinkan
pengembang untuk membuat thread pengguna sebanyak mungkin, konkurensi tidak
dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel
dalam satu waktu. Model one-to-one mempunyai konkurensi yang lebih tinggi,
tetapi pengembang harus hati-hati untuk tidak membuat terlalu banyak thread
tanpa aplikasi dan dalam kasus tertentu mungkin jumlah thread yang dapat dibuat
dibatasi.
Konsep Dasar
Secara informal, proses adalah
program yang sedang dieksekusi. Ada dua jenis proses, proses berat (heavyweight)
atau biasa dikenal dengan proses tradisional, dan proses ringan atau kadang
disebut thread.
Thread saling berbagi bagian
program, bagian data dan sumber daya sistem operasi dengan thread lain yang
mengacu pada proses yang sama. Thread terdiri atas ID thread, program counter,
himpunan register, dan stack. Dengan banyak kontrol thread proses dapat
melakukan lebih dari satu pekerjaan pada waktu yang sama.
Keuntungan
1.
Tanggap: Multithreading mengizinkan program untuk
berjalan terus walau pun pada bagian program tersebut di block atau sedang
dalam keadaan menjalankan operasi yang lama/ panjang. Sebagai contoh, multithread
web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika
suatu gambar sedang diload oleh thread yang lain.
2.
Pembagian sumber daya: Secara default, thread membagi
memori dan sumber daya dari proses. Keuntungan dari pembagian kode adalah
aplikasi mempunyai perbedaan aktifitas thread dengan alokasi memori yang sama.
3.
Ekonomis: Mengalokasikan memori dan sumber daya untuk
membuat proses adalah sangat mahal. Alternatifnya, karena thread membagi sumber
daya dari proses, ini lebih ekonomis untuk membuat threads.
4.
Pemberdayaan arsitektur multiprosesor: Keuntungann dari
multithreading dapat ditingkatkan dengan arsitektur multiprosesor, dimana
setiap thread dapat jalan secara parallel pada prosesor yang berbeda. Pada
arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread
dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya
hanya satu thread yang berjalan di setiap waktu.
User
Threads
User thread didukung oleh kernel dan diimplementasikan olehthread library ditingkat pengguna. Library mendukung untuk pembentukan thread,penjadualan, dan managemen yang tidak didukung oleh kernel.
Kernel
Threads
Kernel thread didukung secara
langsung oleh sistem operasi: pembentukan thread, penjadualan, dan managemen
dilakukan oleh kernel dalam ruang kernel. Karena managemen thread telah
dilakukan oleh sistem operasi, kernel thread biasanya lebih lambat untuk
membuat dan mengelola daripada pengguna thread.
Bagaimana pun, selama kernel
mengelola thread, jika suatu thread di block tehadap sistem pemanggilan, kernel
dapat menjadualkan thread yang lain dalam aplikasi untuk dieksekusi. Juga, di
dalam lingkungan multiprosesor, kernel dapat menjadualkan thread dalam prosesor
yang berbeda. Windows NT, Solaris, dan Digital UNIX adalah sistem operasi yang
mendukung kernel thread.
Kesimpulan:
Proses dan Thread merupakan dua
bagian yang saling berhubungan dan berkaitan. Suatu program yang sedang
dieksekusi merupakan pengertian dari sutau proses. Proses membutuhkan
sumber daya. Sistem operasi mengeksekusi proses dengan dua cara yaitu
batch system yang mengeksekusi jobs dan
time-shared system yang mengatur pengeksekusian program
pengguna ( user) atau tasks. Proses berisikan stack yang menyimpan alamat
register dan juga alamat dari sebuah instruksi yang berisikan data–data
yang dibutuhkan untuk instruksi selanjutnya. Program Counter,
register set serta stack merupakan bagian dari thread.
Thread berbagi code section, data
section dan juga sumber daya sistem operasi dengan thread lain yang dalam
proses yang sama. Kelebihan thread antara lain responsif, berbagi sumberdaya,
ekonomis serta utilitas arsitektur mikroprossesor.
hmppssssh ah, membantu sekali asw
BalasHapus