Kamis, 13 Januari 2011

BAB III

Proses


3.1 Konsep Proses
Jika kita berdiskusi mengenai sistem operasi, maka akan timbul sebuah
pertanyaan yaitu mengenai istilah apa yang tepat untuk menyebut semua
kegiatan yang dilakukan oleh CPU. Sistem batch mengeksekusi jobs sebagaimana
suatu sistem time-share menggunakan program pengguna (user programs)
atau tasks. Bahkan pada sistem dengan pengguna tunggal pun,
seperti padaMicrosoftWindows dan Macintosh OS, seorang pengguna mampu
menjalankan beberapa program pada saat yang sama, contohnya Word Processor,
Web Browser, dan paket e-mail. Bahkan jika pengguna hanya dapat
menjalankan 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.
Istilah job dan proses digunakan hampir dapat dipertukarkan pada tulisan
ini. Walau kami sendiri lebih menyukai istilah proses, banyak teori dan terminologi
sistem operasi dikembangkan selama suatu waktu ketika aktivitas
utama sistem operasi adalah job processing. Akan membingungkan jika kita
menghindari penggunaan istilah yang telah diterima oleh masyarakat yang
memasukkan kata job hanya karena proses memiliki istilah job sebagai pengganti
atau pendahulunya.

PROSES 31
3.1.1 De…nisi Proses
Secara tidak langsung, proses merupakan program yang sedang dieksekusi.
Menurut Silberschatz, suatu proses adalah lebih dari sebuah kode program,
yang terkadang disebut text section. Proses jugamencakup program counter,
yaitu sebuah stack untuk menyimpan alamat dari instruksi yang akan dieksekusi
selanjutnya dan register. Sebuah proses pada umumnya juga memiliki
sebuah stack yang berisikan data-data yang dibutuhkan selama proses
dieksekusi seperti parameter metoda, alamat return dan variabel lokal, dan
sebuah data section yang menyimpan variabel global.
Sama halnya dengan Silberschatz, Tanenbaum juga berpendapat bahwa
proses adalah sebuah program yang dieksekusi yangmencakup program counter,
register, dan variabel di dalamnya.
Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu
program adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan
didalam disket. Sedangkan sebuah proses dalam suatu entitas aktif,
dengan sebuah program counter yang menyimpan alamat instruksi selanjut
yang akan dieksekusi dan seperangkat sumber daya (resource) yang dibutuhkan
agar sebuah proses dapat dieksekusi.
Untuk mempermudah kita membedakan program dengan proses, kita
akan menggunakan analogi yang diberikan oleh Tanenbaum. Misalnya ada
seorang tukang kue yang ingin membuat kue ulang tahun untuk anaknya.
Tukang kue tersebut memiliki resep kue ulang tahun dan bahan-bahan yang
dibutuhkan untuk membuat kue ulang tahun di dapurnya seperti: tepung
terigu, telur, gula, bubuk vanila dan bahan-bahan lainnya. Dalam analogi
ini, resep kue ulang tahun adalah sebuah program, si tukang kue tersebut
adala prosesor (CPU), dan bahan-bahan untuk membuat kue tersebut adalah
data input. Sedangkan proses-nya adalah kegiatan sang tukang kue untuk
membaca resep, mengolah bahan, dan memanggang kue tersebut.
Walau dua proses dapat dihubungkan dengan program yang sama, program
tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh,
beberapa pengguna dapat menjalankan salinan yang berbeda pada mail program,
atau pengguna yang sama dapat meminta banyak salinan dari program
editor. Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian
text-section adalah sama, data section-nya bervariasi. Adalah umum untuk
memiliki proses yang menghasilkan banyak proses begitu ia bekerja.
BAB 3. PROSES 32
3.1.2 Status Proses
Bila sebuah proses dieksekusi, maka statusnya akan berubah-ubah. Status
dari sebuah proses mencerminkan aktivitas atau keadaan dari proses itu
sendiri. Berikut ini adalah status-status yangmungkin dimiliki sebuah proses
menurut Tanenbaum:
² Running: pada saat menggunakan CPU pada suatu waktu.
² Ready: proses diberhentikan sementara karena menunggu proses lain
untuk dieksekusi.
² Blocked: tidak dijalankan sampai event dari luar, yang berhubungan
dengan proses tersebut terjadi.
Sedangkan menurut Silberschatz, terdapat lima macam jenis status yang
mungkin dimiliki oleh suatu proses:
² New: status yang dimiliki pada saat proses baru saja dibuat.
² Running: status yang dimiliki pada saat instruksi-instruksi dari sebuah
proses dieksekusi.
² Waiting: status yang dimiliki pada saat proses menunggu suatu event
(contohnya: proses I/O).
² Ready: status yang dimiliki pada saat proses siap untuk dieksekusi oleh
prosesor.
² Terminated: status yang dimiliki pada saat proses telah selesai dieksekusi.
Nama-nama tersebut adalah berdasar opini, istilah tersebut bervariasi di
sepanjang sistem operasi. Keadaan yang mereka gambarkan ditemukan pada
seluruh sistem. Namun, pada sistem operasi tertentu lebih baik menggambarkan
keadaan/status proses. Penting untuk diketahui bahwa hanya satu
proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun,
banyak proses yang dapat berstatus ready atau waiting. Keadaan
diagram yang berkaitan dengan keadaan tersebut dijelaskan pada gambar
3.1
Ada tiga kemungkinan bila sebuah proses memiliki status running:


² Jika program telah selesai dieksekusi maka status dari proses tersebut
akan berubah menjadi Terminated.
² Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis
maka akan terjadi interrupt dan proses tersebut kini berstatus Ready.
² Jika suatu event terjadi pada saat proses dieksekusi (seperti ada request
I/O) maka proses tersebut akan menunggu event tersebut selesai dan
proses berstatus Waiting.
3.1.3 Proses Control Block
Tiap proses digambarkan dalam sistem operasi oleh sebuah process control
block (PCB) - juga disebut sebuah control block. Sebuah PCB ditunjukkan
dalam Gambar 3.2. PCB berisikan banyak bagian dari informasi yang
berhubungan dengan sebuah proses yang spesi…k, termasuk hal-hal di bawah
ini:
² Status proses: status mungkin, new, ready, running, waiting, halted,
dan juga banyak lagi.
² Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya
untuk dieksekusi untuk proses ini.
BAB 3. PROSES 34
² CPU register: Register bervariasi dalam jumlah dan jenis, tergantung
pada rancangan komputer. Register tersebut termasuk accumulator,
register indeks, stack pointer, general-purposes register, ditambah code
information pada kondisi apa pun. Beserta dengan program counter,
keadaan/status informasi harus disimpan ketika gangguan terjadi, untukmemungkinkan
proses tersebut berjalan/bekerja dengan benar setelahnya
(lihat Gambar 3.3Tiap proses digambarkan dalamsistem operasi
oleh sebuah process control block (PCB) - juga disebut sebuah control
block. Sebuah PCB ditunjukkan dalam Gambar 3-2. PCB berisikan
banyak bagian dari informasi yang berhubungan dengan sebuah proses
yang spesi…k, termasuk hal-hal di bawah ini:
² Status proses: status mungkin, new, ready, running, waiting, halted,
dan juga banyak lagi.
² Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya
untuk dieksekusi untuk proses ini.
² CPU register: Register bervariasi dalam jumlah dan jenis, tergantung
pada rancangan komputer. Register tersebut termasuk accumulator,
register indeks, stack pointer, general-purposes register, ditambah code
information pada kondisi apa pun. Beserta dengan program counter,
keadaan/status informasi harus disimpan ketika gangguan terjadi, untukmemungkinkan
proses tersebut berjalan/bekerja dengan benar setelahnya
(lihat Gambar 3.3).
² 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 (lihat Bab 5).
² 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 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.

Thread
3.2.1 Apa itu thread ?
Threadmerupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID,
program counter, register set, dan stack. Sebuah thread berbagi 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. Perbedaan antara proses dengan
thread tunggal dengan proses dengan thread yang banyak adalah proses dengan
thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu
satuan waktu.
Banyak perangkat lunak yang berjalan pada PC modern dirancang secara
multi-threading. 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.
Kadang kala ada situasi dimana sebuah aplikasi diperlukan untuk menjalankan
beberapa tugas yang serupa. Sebagai contohnya sebuah web server
dapatmempunyai ratusan klien yangmengaksesnya 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.
Java mempunyai pengunaan lain dari thread. Perlu diketahui bahwa
Java tidak mempunyai konsep asynchronous. Sebagai contohnya kalau program
java mencoba untuk melakukan koneksi ke server maka ia akan berada
dalam keadaan block state sampai koneksinya jadi (dapat dibayangkan apa
yang terjadi apabila servernya mati). Karena Java tidak memiliki konsep
asynchronous maka solusinya adalah dengan membuat thread yang mencoba



Tidak ada komentar:

Posting Komentar