1.Definisi Proses
Proses adalah program dalam
eksekusi. Proseslebih dari sekedar kode program yang
kadang-kadang dikenal sebagai bagian teks. Seperti nilai dari program counter
dan isi dari register prosesor. Selain itu, proses umumnya termasuk proses
stack, yang berisi data temporer (seperti parameter metoda, alamat return dan
variabel lokal), dan sebuah bagian data, yang berisi variabel global. Program
bukanlah sebuah proses. Program adalah sebuah entitas pasif, seperti isi file
yang disimpan pada disk, sedangkan proses adalah suatu entitas aktif, dengan
sebuah program counter menentukan instruksi berikutnya untuk mengeksekusi dan
seperangkat sumber daya yang terkait. Meskipun dua proses dapat dikaitkan
dengan program yang sama, mereka tetap dianggap dua urutan eksekusi yang
terpisah.
Process State
a. Running. Status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi
b. Waiting. Status yang dimiliki pada saat proses menunggu suatu sebuah event seperti proses M/K.
c. Ready. Status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor.
d. New. Status yang dimiliki pada saat proses baru saja dibuat
e. Terminated. Status yang dimiliki pada saat proses telah selesai dieksekusi.
Hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapat berstatus Ready atau Waiting.
a. Running. Status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi
b. Waiting. Status yang dimiliki pada saat proses menunggu suatu sebuah event seperti proses M/K.
c. Ready. Status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor.
d. New. Status yang dimiliki pada saat proses baru saja dibuat
e. Terminated. Status yang dimiliki pada saat proses telah selesai dieksekusi.
Hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapat berstatus Ready atau Waiting.
Blok Kontrol Proses
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block(PCB) yang 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 new, ready, running, waiting, halted, dan juga banyak lagi.
b. Program Counter . Suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
c. 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, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya.
d. Informasi manajemen memori. Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi (lihat Bagian V, Memori).
e. Informasi pencatatan. Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, 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, daftar berkas-berkas yang sedang diakses dan banyak lagi.
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block(PCB) yang 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 new, ready, running, waiting, halted, dan juga banyak lagi.
b. Program Counter . Suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
c. 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, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya.
d. Informasi manajemen memori. Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi (lihat Bagian V, Memori).
e. Informasi pencatatan. Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, 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, daftar berkas-berkas yang sedang diakses dan banyak lagi.
Operasi pada Proses
1.Proses
Creation
Secara umum, suatu proses akan memerlukan sumber tertentu (waktu CPU, memori, berkas, perangkat I/O) untuk menyelesaikan tugasnya. Ketika suatu proses membuat sebuah subproses, sehingga subproses dapat mampu untuk memperoleh sumbernya secara langsung dari sistem operasi. Induk mungkin harus membatasi sumber diantara anaknya, atau induk dapat berbagi sebagian sumber (seperti memori berkas) diantara beberapa dari anaknya. Membatasi suatu anak proses menjadi subset sumber daya induknya mencegah proses apa pun dari pengisian sistem yang telalu banyak dengan menciptakan terlalu banyak subproses.
2. Process
Termination
Sebuah proses berakhir ketika proses tersebut selesai mengeksekusi pernyataan akhirnya dan meminta sistem operasi untuk menghapusnya dengan menggunakan sistem pemanggilan exit. Pada titik itu, proses tersebut dapat mengembalikan data (keluaran) pada induk prosesnya (melalui sistem pemanggilan wait)
Ada situasi tambahan tertentu ketika terminasi terjadi. Sebuah proses dapat menyebabkan terminasi dari proses lain melalui sistem pemanggilan yang tepat (contoh abort). Biasanya, sistem seperti itu dapat dipanggil hanya oleh induk proses tersebut yang akan diterminasi.
KOMUNIKASI ANTAR PROSES
1. Proses Kooperatif
Proses yang bersifat simultan (concurrent) dijalankan pada sistem operasi dapat dibedakan menjadi 2 yaitu proses independent dan proses kooperatif.
Suatu proses dikatakan independen apabila proses tersebut tidak dapat terpengaruh atau dipengaruhi oleh proses lain yang sedang dijalankan pada sistem. Berarti, semua proses yang tidak membagi data apa pun (baik sementara/ tetap) dengan proses lain adalah independent.
Sedangkan proses kooperatif adalah proses yang dapat dipengaruhi atau pun terpengaruhi oleh proses lain yang sedang dijalankan dalam sistem. Dengan kata lain, proses dikatakan kooperatif bila proses dapat membagi datanya dengan proses lain.
2.
Komunikasi Proses Dalam Sistem
Cara lain untuk meningkatkan efek yang sama adalah untuk sistem operasi yaitu untuk menyediakan alat-alat proses kooperatif untuk berkomunikasi dengan yang lain lewat sebuah komunikasi dalam proses (IPC = Inter-Process Communication).
IPC menyediakan sebuah mekanisme untuk mengizinkan proses-proses untuk berkomunikasi dan menyelaraskan aksi-aksi mereka tanpa berbagi ruang alamat yang sama.
IPC adalah khusus digunakan dalam sebuah lingkungan yang terdistribusi dimana proses komunikasi tersebut mungkin saja tetap ada dalam komputer-komputer yang berbeda yang tersambung dalam sebuah jaringan.
IPC adalah penyedia layanan terbaik dengan menggnakan sebuah sistem penyampaian pesan, dan sistem-sistem pesan dapat diberikan dalam banyak cara.
Cara lain untuk meningkatkan efek yang sama adalah untuk sistem operasi yaitu untuk menyediakan alat-alat proses kooperatif untuk berkomunikasi dengan yang lain lewat sebuah komunikasi dalam proses (IPC = Inter-Process Communication).
IPC menyediakan sebuah mekanisme untuk mengizinkan proses-proses untuk berkomunikasi dan menyelaraskan aksi-aksi mereka tanpa berbagi ruang alamat yang sama.
IPC adalah khusus digunakan dalam sebuah lingkungan yang terdistribusi dimana proses komunikasi tersebut mungkin saja tetap ada dalam komputer-komputer yang berbeda yang tersambung dalam sebuah jaringan.
IPC adalah penyedia layanan terbaik dengan menggnakan sebuah sistem penyampaian pesan, dan sistem-sistem pesan dapat diberikan dalam banyak cara.
3.
Sinkronisasi
Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat rancangan yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) - juga dikenal dengan nama sinkron atau asinkron.
Pengiriman yang diblok: Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving process) atau oleh mailbox.
Pengiriman yang tidak diblok: Proses pengiriman pesan dan mengkalkulasi operasi.
Penerimaan yang diblok: Penerima mem blok samapai pesan tersedia.
Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.
Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat rancangan yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) - juga dikenal dengan nama sinkron atau asinkron.
Pengiriman yang diblok: Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving process) atau oleh mailbox.
Pengiriman yang tidak diblok: Proses pengiriman pesan dan mengkalkulasi operasi.
Penerimaan yang diblok: Penerima mem blok samapai pesan tersedia.
Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.
4. Buffering
Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan:
Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyai penungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan.
Kapasitas terbatas: antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian.
Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.
Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan:
Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyai penungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan.
Kapasitas terbatas: antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian.
Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.
2. Thread
Thread adalah sebuah alur kontrol dari sebuah proses. 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 multi-threads, agar
dapat secara terus menerus mengetik dan menjalankan pemeriksaan ejaan didalam
proses yang sama, maka sistem operasi tersebut memungkinkan proses untuk
menjalankan lebih dari satu tugas pada satu waktu. Suatu proses yang multithreaded
mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama.
Keuntungan dari multithreaded meliputi
peningkatan respon dari pengguna, pembagian sumber daya proses, ekonomis, dan
kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. Thread merupakan 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 dan proses dengan thread yang banyak adalah proses dengan thread
banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu.
Keuntungan Thread
Keuntungan dari program yang multithreading dapat
dipisah menjadi empat kategori:
1.
Responsi: Membuat aplikasi yang interaktif menjadi multithreading dapat
membuat sebuah program terus berjalan meski pun sebagian dari program tersebut
diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan
respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading,
sebuah thread dapat melayani permintaan pengguna sementara thread lain
berusaha menampilkan image.
2.
Berbagi sumber daya: thread berbagi memori dan sumber daya dengan
thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi
kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang
berbeda dalam lokasi memori yang sama.
3.
Ekonomi: dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian
memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread,
karena thread berbagi memori dan sumber daya proses yang memilikinya
maka akan lebih ekonomis untuk membuat dan context switch thread. Akan
susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal
pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses
lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih
lama 30 kali dibandingkan pembuatan thread, dan context switch proses
5 kali lebih lama dibandingkan context switch thread.
4.
Utilisasi arsitektur multiprocessor: Keuntungan dari
multithreading dapat sangat meningkat pada arsitektur multiprocessor,
dimana setiap thread dapat berjalan secara pararel di atas processor
yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread
secara bergantian tetapi hal ini berlangsung sangat cepat sehingga
menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang
dijalankan CPU pada satu-satuan waktu (satu-satuan waktu pada CPU biasa disebut
time slice atau quantum).
Multithreading Models
Beberapa
terminologi yang akan dibahas:
a. Thread pengguna:
Thread yang pengaturannya dilakukan oleh pustaka thread pada
tingkatan pengguna. Karena pustaka yang menyediakan fasilitas untuk pembuatan
dan penjadwalan thread, thread pengguna cepat dibuat dan
dikendalikan.
b. Thread Kernel: . Thread
yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen thread
dilakukan oleh kernel pada kernel space. Karena dilakukan oleh
sistem operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan thread
pengguna.
Kelebihan
dan kelemahan pada Model-model Multithreading:
a. Model Many-to-One.
Model ini 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 multiprosesor. Contoh: Solaris Green Threads dan GNU
Portable Threads.
b. Model One-to-One.
Model ini memetakan setiap thread tingkatan pengguna ke setiap thread.
Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini
ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel.
Karena itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja
dari sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam
sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.
c. Model Many-to-Many.
Model ini memultipleks banyak thread tingkatan pengguna ke thread
kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini
mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency
tidak dapat diperoleh karena hanya satu thread yang dapat
dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah
kernel thread yang bersangkutan dapat berjalan secara paralel pada
multiprosessor.
Tidak ada komentar:
Posting Komentar