|
Ekplorasi didasarkan pada literatur-literatur dan aplikasi Help
mengenai sistem operasi Windows dan aplikasi-aplikasi lainnya yang
dinilai dapat membantu, serta penelitian dengan cara mencoba
langsung pada program menggunakan Borland Delphi 5 dalam lingkungan
Windows 98SE. Semua istilah “proses” dan “thread” yang ada dalam
tulisan ini mengacu pada “proses” dan “thread” yang ada pada sistem
operasi Windows 9x/ME, sedangkan fungsi-fungsi yang disebutkan
mengacu kepada fungsi Win32 API. Namun sebelum masuk ke dalam proses
& hasil eksplorasi, ada baiknya jika dibahas dulu mengenai teorinya.
Apa itu Proses & Thread?
Proses merupakan konsep pokok dalam sistem operasi. Konsep ini
pertama kali dipakai pada sistem operasi Multics pada tahun 60-an.
Banyak sekali definisi tentang proses, diantaranya adalah seperti
yang dituliskan berikut ini.
Pada Microsoft® Win32® Programmer’s Reference dijelaskan:
“A process, in the simplest terms, is an executing program.
One or more threads run in the context of the process. A thread is
the basic unit to which the operating system allocates processor
time. A thread can execute any part of the process code, including
parts currently being executed by another thread.”
(Index: Processes and Threads)
Ben Ezzel dan Jim Blaney mengemukakan bahwa:
“Threads are closely related to processes. A process is a
program loaded into memory, complete with all the resources assigned
to the program, but a process is static and does nothing by itself.
A thread executes program commands, following a path through
the code. Every process possesses one initial thread. Optionally,
the initial thread (also called the primary thread) may create other
threads. All the threads belonging to one process share the assets
of that process. They all follow instructions from the same code
image, refer to the same global variables, write to the same private
address space, and have access to the same objects. Think of a
process as being house that is inhabited by threads.”
(Chapter Fourteen: Multiple Threading Applications)
Menurut Stallings:
“To distinguish the two characteristics, the unit of
dispatching is usually referred to as a thread, or lightweight
process, whereas the unit of resource ownership is usually still
referred to as a process, or task.”
(Stallings, 1995:135)
Secara singkat Gary J. Nutt juga mengemukakan bahwa:
“A process is a sequential program in execution.”
(Nutt, 2000: 30)
dan
“A thread is an entity that executes using the program and
other resources of its associated process.”
(Nutt, 2000: 38)
Dari definisi-definisi di atas bisa disimpulkan bahwa thread
sangat erat kaitannya dengan proses, dan setiap satu proses pasti
memiliki minimal satu thread yang disebut dengan primary thread.
Yang membedakan dari keduanya adalah sisi karakteristiknya, yaitu
proses merupakan suatu entitas kepemilikan sumber daya dan thread
merupakan entitas penjadwalan / pengeksekusian.
Nutt juga menggambarkan tentang komponen-komponen proses sebagai
berikut:

- Code atau objek program merupakan sesuatu (thread) yang akan
dieksekusi.
- Data merupakan tempat yang diatasnya akan dieksekusi
program.
- Resources merupakan sumber daya yang diperlukan program.
- Process Status merupakan status dari proses.
Sedangkan thread-thread yang terdapat di dalam proses digambarkan
sebagai berikut:

Status Proses
Berdasarkan diagram state dasar (three state), suatu proses bisa
memiliki salah satu dari tiga status berikut:
- Running: Pemroses sedang mengeksekusi instruksi pada proses
itu.
- Ready: Proses siap (ready) dieksekusi, tapi pemroses tidak
tersedia untuk eksekusi proses ini.
- Blocked: Proses menunggu kejadian/event untuk melengkapi
tugasnya. Misalnya proses menunggu: selesainya operasi I/O
device, tersedianya memori, tibanya pesan jawaban, dsb.
Hubungan ketiga state dasar digambarkan dengan diagram state
berikut.

Gambar tersebut menunjukkan transisi di antara state-state selama
siklus hidup proses.
- Proses yang baru diciptakan akan segera mempunyai state
ready.
- Proses berstatus running menjadi blocked, karena sumber daya
yang diminta belum tersedia atau meminta layanan I/O devices,
sehingga menunggu event muncul. Proses menunggu event alokasi
sumber daya atau selesainya layanan I/O devices (event wait).
- Proses berstatus running menjadi ready, karena penjadwal
memutuskan eksekusi proses lain karena jatah waktu untuk proses
tersebut telah habis (timeout).
- Proses berstatus blocked menjadi ready saat sumber daya yang
diminta/diperlukan tersedia atau layanan I/O devices selesai
(event occurs).
- Proses berstatus ready menjadi running, karena penjadwal
memutuskan penggunaan pemroses untuk proses itu karena proses
yang saat itu running berubah state¬-nya atau telah selesai
sehingga disingkirkan dari sistem.
Sebenarnya, ada juga diagram state lanjut (five state) yang
terdiri dari dua state tambahan: suspended-ready dan
suspended-blocked. Tapi itu tidak akan di bahas di tulisan ini.
Silahkan baca-baca di buku sistem operasi karangan Stallings
dan/atau Tanenbaum.
Strategi Penjadwalan
Terdapat dua strategi penjadwalan, yaitu:
- Penjadwalan nonpreemptive (run-to-completion)
Begitu proses diberi jatah waktu pemroses, maka pemroses tidak
dapat diambil alih oleh proses lain selama proses yang sedang
dieksekusi itu belum selesai.
- Penjadwalan preemptive
Saat proses diberi jatah waktu pemroses, maka pemroses dapat
diambil alih oleh proses lain (istilahnya di-preempt), sehingga
proses disela sebelum selesai dan harus dilanjutkan menunggu
jatah waktu pemroses tiba kembali pada proses itu.
Algoritma Penjadwalan
Terdapat banyak algoritma penjadwalan seperti First-In First-Out
(FIFO), Shortest Job First (SJF), Highest Ratio Next (HRN),
Multiple-Feedback Queues (MFQ), Round-Robin (RR), Shortest Remaining
First (SRF), Priority Scheduling (PS), dan Guaranteed Scheduling
(GS), baik nonpreemptive maupun preemptive. Yang akan di bahas kali
ini adalah penjadwalan FIFO, RR, PS dan MFQ, karena hanya keempat
algoritma itulah yang penulis kira berhubungan dengan sistem operasi
Windows 9x sehingga yang lainnya tidak akan dibahas.
1. Penjadwalan FIFO (First-in, First-out)
Penjadwalan ini merupakan non-preemptive dan tidak berprioritas.
Algoritma penjadwalan ini merupakan yang paling sederhana, yaitu:
- Proses-proses diberi jatah waktu pemroses berdasarkan waktu
kedatangan.
- Begitu proses mendapat jatah waktu pemroses, proses
dijalankan sampai selesai.
FIFO jarang digunakan secara mandiri tapi dikombinasikan dengan
skema lain.
2. Penjadwalan Round-Robin (RR)
Penjadwalan ini merupakan preemptive, tapi bukan di-preempt oleh
proses lain melainkan oleh penjadwal berdasarkan lama waktu
berjalannya proses (preempt-by-time). Sejumlah proses dianggap
penting dan diberi sejumlah waktu pemroses yang disebut kwanta
(quantum) atau time-slice dimana proses itu berjalan.
Ketentuan algoritma round robin adalah sebagai berikut:
- Jika kwanta habis dan proses belum selesai, maka status
pemroses menjadi runnable dan pemroses dialihkan ke proses lain.
- Jika kwanta belum habis dan proses menunggu suatu kejadian
(selesainya operasi I/O), maka proses menjadi blocked dan
pemroses dialihkan ke proses lain.
- Jika kwanta belum habis tapi proses telah selesai, maka
proses diakhiri dan pemroses langsung dialihkan ke proses lain
tanpa menunggu kwanta habis dulu.
Algoritma penjadwalan ini dapat diimplementasikan sebagai
berikut:
- Mengelola senarai proses ready (runnable) sesuai urutan
kedatangan.
- Ambil proses yang berada di ujung depan antrian menjadi
running.
- Bila kwanta belum habis dan proses selesai, maka ambil
proses di ujung depan antrian proses ready.
- Jika kwanta habis dan proses belum selesai maka tempatkan
proses running ke ekor antrian proses ready dan ambil proses di
ujung depan antrian proses ready.
3. Penjadwalan Berprioritas/Priority Scheduling (PS)
Ide dari penjadwalan ini adalah tiap proses diberi prioritas dan
proses berprioritas tertinggi (running) mendapat jatah waktu
pemroses. Prioritas dapat diberikan secara statis (static
priorities) maupun dinamis (dynamic priorities).
Prioritas statis berarti prioritas tak berubah. Keunggulannya
mudah diimplementasikan dan mempunyai overhead relatif kecil.
Kelemahannya, penjadwalan tak tanggap terhadap perubahan lingkungan
yang mungkin menghendaki penyesuaian prioritas. Sedangkan prioritas
dinamis merupakan mekanisme menanggapi perubahan lingkungan sistem
operasi. Prioritas awal yang diberikan ke proses mungkin hanya
berumur pendek setelah disesuaikan ke nilai yang lebih tepat sesuai
lingkungan. Kelemahannya, implementasi mekanisme prioritas dinamis
lebih kompleks dan mempunyai overhead lebih besar. Overhead ini
diimbangi dengan peningkatan daya tanggap sistem.
4. Multiple-Feedback Queues (MFQ)
Multiple-feedback queues merupakan pengembangan dari priority
scheduling yang mana semua proses yang memiliki prioritas sama
disimpan di satu antrian, sehingga jumlah antrian sama dengan jumlah
dari prioritas. Penjadwal mulai mengeksekusi thread-thread yang ada
di antrian berprioritas tertinggi dulu, kemudian dilanjutkan ke
antrian berprioritas satu tingkat lebih rendah dari sebelumnya dan
seterusnya.
Dapat disimpulkan bahwa ketika memilih antrian dengan prioritas
tertinggi dulu, berlaku algoritma priority scheduling. Sedangkan
ketika mengeksekusi satu antrian berlaku algoritma lainnya
(tergantung sistem operasi). Keseluruhan dari sifat-sifat tersebut
itulah disebut algoritma Multiple-feedback queues.
Referensi
- Haryanto, B. Ir. (1999), Buku Teks Ilmu Komputer: Sistem
Operasi, Edisi Kedua. Bandung, Informatika.
- Nutt, J. G. (2000), Operating Systems: A Modern Perspective,
Second Edition, United States: Addison Wesley Longman Inc.
- Stallings, W. (1995), Operating Systems, 2nd ed. Englewood
Cliffs, New Jersey: Prentice Hall.
- Tanenbaum, S. A. (1992), Modern Operating System, Englewood
Cliffs, New Jersey: Prentice-Hall Inc.
Sampai sekian dulu tulisan bagian satu ini, lanjutan dari tulisan
ini bisa Anda baca melalui tulisan yang berjudul "Eksplorasi
Proses pada Windows 9x/Me - Bagian II".
Demikian tulisan mengenai eksplorasi proses pada Windows 9x/Me
(bagian pertama). Semoga
bermanfaat bagi Anda semuanya. Jika ada saran atau komentar bisa
dilayangkan ke
arioss@softhome.net. Untuk membaca tulisan menarik lainnya
silakan menuju ke situs Sony AK Knowledge Center dengan alamat di
www.sony-ak.com.
Terimakasih.
| Send
your comments or suggestions |
|
|
|