Senin, 15 Maret 2010

process and thread

BAB 1
PENDAHULUAN
A. Latar Belakang
Perkembangan teknologi computer pada zaman sekarang semakin canggih dan berkembang sangat pesat, oleh karena itu kita perlu mengetahui teknologi tersebut dan juga perlu pengetahuan tentang fitur Operating sistem. Salah satu fitur dalam Operating Sistem tersebut adalah Process dan Thread. Oleh karena itu dalam makalah ini kita akan membahas Process dan Thread dan menjelaskan bagaimana sistem operasi mengelola mereka untuk mewujudkan fitur multitasking dan multi programming.



B. Rumusan Masalah
Dalam makalah ini akan memberikan beberapa rumusan masalah, yaitu:
1. Jelaskan konsep dasar dan definisi dari process !
2. Jelaskan keadaan/status process!
3. Apa yang dimaksud dengan Process Control Block ?
4. Jelaskan operasi-operasi Process!
5. Jelaskan Hubungan antar Process !
6. Jelaskan konsep Thread !
7. Apa hubungan antara Process and Thread?
8. Jelaskan konsep dasar Penjadwalan CPU !

C. Tujuan
Tujuan makalah ini dibuat adalah:
1. Menjelaskan konsep dasar dan definisi dari process
2. Menjelaskan keadaan/status process
3. Memahami Process Control Block
4. Memahami operasi-operasi Process
5. Memahami Hubungan antar Process
6. Memahami konsep Thread
7. Menjelaskan hubungan antara Process and Thread
8. Memahami konsep dasar Penjadwalan CPU

D. Batasan Masalah
Dalam makalah ini kami hanya membahas tentang Konsep Dasar dari Process and Thread, hubungan Process and Thread, konsep dasar penjadwalan.



BAB 2
KONSEP DASAR PROSES

A. Pengertian Proses
Sebuah proses adalah suatu program yang sedang dieksekusi. Proses lebih dari sebuah kode program tetapi juga mencakup program counter , stack , dan sebuah data section . Dalam pengeksekusiannya sebuah proses juga memiliki status yang mencerminkan keadaan dari proses tersebut. Status dari proses dapat berubah-ubah setiap saat sesuai dengan kondisinya. Status tersebut mungkin menjadi satu dari lima status berikut: new, ready, running, waiting, atau terminated. Setiap proses juga direpresentasikan oleh proces control block (PCB) yang menyimpan segala informasi yang berkaitan dengan proses tersebut.
Sebuah proses, ketika sedang tidak dieksekusi, ditempatkan pada antrian yang sama. Disini ada 2 kelas besar dari antrian dalam sebuah sistem operasi: permintaan antrian I/O dan ready queue. Ready queue memuat semua proses yang siap untuk dieksekusi dan yang sedang menunggu untuk dijalankan pada CPU. PCB dapat digunakan untuk mencatat sebuah ready queue. Penjadwalan Long-term adalah pilihan dari proses-proses untuk diberi ijin menjalankan CPU. Normalnya, penjadwalan long-term memiliki pengaruh yang sangat besar bagi penempatan sumber daya, terutama manajemen memori. Penjadwalan Short-term adalah pilihan dari satu proses dari ready queue.
Proses-proses pada sistem dapat dieksekusi secara berkelanjutan. Disini ada beberapa alasan mengapa proses tersebut dapat dieksekusi secara berkelanjutan: pembagian informasi, penambahan kecepatan komputasi, modularitas, dan kenyamanan atau kemudahan. Eksekusi secara berkelanjutan menyediakan sebuah mekanisme bagi proses pembuatan dan penghapusan.
Pengeksekusian proses-proses pada sistem operasi mungkin dapat digolongkan menjadi proses yang mandiri dan kooperasi. Proses kooperasi harus memiliki beberapa alat untuk mendukung komunikasi antara satu dengan yang lainnya. Prinsipnya adalah ada dua rencana komplementer komunikasi: pembagian memori dan sistem pesan. Metode pembagian memori menyediakan proses komunikasi untuk berbagi beberapa variabel. Proses-proses tersebut diharapkan dapat saling melakukan tukar-menukar informasi seputar pengguna variabel yang terbagi ini. Pada sistem pembagian memori, tanggung jawab bagi penyedia komunikasi terjadi dengan programmer aplikasi; sistem operasi harus menyediakan hanya pembagian memori saja. Metode sistem pesan mengijinkan proses-proses untuk tukar-menukar pesan. Tanggung jawab bagi penyedia komunikasi ini terjadi dengan sistem operasi tersebut.

B. Keadaan Proses

Ada beberapa model dari kondisi-kondisi yang dialami sebuah proses dimulai dari model yang sederhana yang terdiri dari hanya dua kondisi hingga berkembang menjadi model yang memiliki lebih dari lima kondisi.
1. Model Dua Kondisi
Model yang pertama dan paling sederhana adalah model 2 kondisi (2 state) yang terdiri dari kondisi running dan not running.
- Not running adalah suatu kondisi pada saat pertama kali proses dan akan memasuki sebuah antrian untuk proses-proses yang menunggu untuk di eksekusi oleh prosessor.
- Running adalah kondisi proses yang sedang dieksekusi dan pada suatu saat akan berhenti dieksekusi apakah karena telah selesai atau gilirannya telah habis dan prosesor akan mengeksekusi dispatcher yang akan menaruh proses barusan pada belakang antrian dan merubah nilai program counter sehingga menunjuk pada urutan instruksi yang dimiliki oleh proses yang berada di depan antrian.

Gambar 1 Model Dua Kondisi
2. Model Lima Kondisi
Model ini merupakan perkembangan dari model yang pertama untuk menangani kondisi di mana sebuah proses mungkin saja tidak selalu siap untuk dieksekusi karena harus menunggu sebuah operasi I/O selesai dilaksanakan. Pada model ini kondisi not running dipecah menjadi ready dan blocked. Berikut ini adalah daftar 5 kondisi yang ada pada model 5 kondisi:
- New: proses baru saja selesai dibuat. Pada kondisi ini biasanya baru process control block saja yang telah selesai dibuat dan ditaruh di memori utama sedangkan instruksi dan datanya belum
- Ready: proses siap dieksekusi jika telah mendapat kesempatan
- Running: proses sedang dieksekusi
- Blocked: proses tidak dapat dieksekusi hingga suatu event terjadi atau menunggu suatu proses I/O selesai
- Exit: proses telah dilepaskan dari kumpulan (pool) proses yang dapat dieksekusi oleh sistem operasi dikarenakan telah selesai maupun dibatalkan karena alasan tertentu

Gambar 2 Model Lima Kondisi
Berikut ini adalah jenis-jenis kejadian (event) yang dapat menyebabkan proses berpindah dari suatu kondisi ke kondisi lainnya dalam model 5 kondisi:
- Null –> New: sebuah proses baru dibuat. Prose ini dapat benar-benar baru atau dapat berasal dari proses lain yang telah ada melalui process spawning.
- New –> Ready: sistem operasi memindahkan sebuah proses ke kondisi ready dari kondisi new hanya jika sistem operasi tersebut telah siap. Sistem operasi dapat menahan sebuah proses dalam kondisi new jika kondisi belum memungkinkan untuk menangani proses tambahan seperti kekurangan memori atau terdapat batasan jumlah proses yang dapat ditangani agar tidak menurunkan kinerja keseluruhan.
- Ready –> Running: proses dipindahkan dari kondisi ready ke kondisi running oleh rutin penjadwalan atau dispatcher dan dieksekusi oleh prosesor.
- Running –> Ready: alasan paling umum untuk memindahkan suatu proses dari running ke kondisi ready adalah karena waktu eksekusi untuk proses tersebut telah habis atau diinterupsi untuk digantikan oleh proses dengan prioritas yang lebih tinggi.
- Running –> Exit: proses dihentikan eksekusinya dan diterminasi dikarenakan telah selesai atau karena alasan lainnya seperti terjadinya kesalahan atau pembatalan eksekusi oleh pengguna.
- Running –> Blocked: proses diblok apabila proses tersebut telah meminta sesuatu yang tidak dapat langsung dipenuhi oleh sistem operasi, contohnya: operasi I/O
- Blocked –> Ready: proses dipindahkan dari blocked ke kondisi ready hanya jika kejadian (event) tertentu yang ditunggu telah terjadi seperti permintaan operasi I/O oleh proses tersebut telah selesai dilaksanakan.
- Ready –> Exit: transisi ini tidak digambarkan pada model 5 kondisi untuk menjaga kejelasan tetapi sebuat proses dalam kondisi ready dapat langsung diterminasi contohnya sebuah proses anak dapat diterminasai oleh proses induk kapan saja dan jika sebuah proses induk mati maka proses anak juga ikut diterminasi.
- Blocked –> Exit: transisi ini termasuk dalam penjelasan kondisi ready -> exit.
3. Model dengan Suspended State
Konsep memori virtual ini memungkinkan sistem operasi membuat proses dengan jumlah dan ukuran lebih besar dari kapasitas memori utama. Jika memori utama penuh dan ada proses lain yang harus masuk maka proses yang sedang tidak dieksekusi di memori dapat dipindahkan kembali ke memori virtual. Pemindahan dari memori virtual ke memori utama dan sebaliknya inilah yang disebut sebagai swapping.
Untuk mengimplementasikan konsep memori virtual tersebut perlu dibuat suatu kondisi baru yaitu kondisi ketika proses berada pada dalam memori virtual yaitu kondisi suspended. Proses yang berada dalam kondisi blocked dapat dipindahkan dari memori utama ke sebuah antrian proses di memori virtual untuk menyediakan ruang kosong bagi proses lain di memori utama.
Proses-proses tersebut sebelum dipindahkan ke memori utama dapat diletakkan dalam antrian proses yang siap untuk dieksekusi kembali oleh prosesor. Oleh karena itu kondisi suspended dibagi lagi menjadi dua kondisi, yaitu:
1. Blocked/Suspend: kondisi di mana proses berada dalam kondisi blocked di dalam memori virtual dan menunggu suatu event.
2. Ready/Suspend: kondisi di mana proses berada dalam memori virtual tetapi dapat langsung dijalankan ketika telah berada dalam memori utama.
Selain itu kondisi ready berlaku untuk proses yang tidak menunggu event tertentu dan telah berada di memori utama dan kondisi blocked berlaku bagi proses yang sedang menunggu event tertentu dan sedang berada dalam memori utama.
Transisi-transisi antar kondisi yang terjadi, antara lain:
- Blocked  Blocked/Suspend: transisi ini terjadi ketika sistem operasi membutuhkan tambahan ruang kosong di dalam memori utama untuk proses lain dan tidak tersedia ruang kosong dalam memori utama. Untuk menyediakan ruang tersebut sistem operasi akan memindahakan proses-proses yang berada dalam kondisi blocked ke dalam memori virtual sehingga kondisi proses tersebut dikatakan sebagai blocked/suspend.
- Blocked/Suspend  Ready/Suspend: transisi ini terjadi ketika event yang ditunggu proses dalam kondisi blocked/suspend telah terjadi sehingga status proses tersebut berubah menjadi ready/suspend.
- Ready/Suspend  Ready: transisi ini terjadi ketika tidak ada lagi proses yang berada dalam kondisi ready di dalam memori utama sehingga sistem operasi akan memindahkan proses yang berada dalam kondisi ready/suspend dari memori virtual ke memori utama. Transisi ini juga dapat terjadi apabila proses dalam kondisi ready/suspend memiliki prioritas lebih tinggi dari proses yang berada dalam kondisi ready.
- New  Ready/Suspend dan New  Ready: transisi ini terjadi ketika suatu proses baru saja dibuat. Proses tersebut dapat disimpan di dalam antrian memori di memori utama atau diantrikan dalam kondisi ready/suspend di memori virtual.
- Blocked/Suspend  Blocked: transisi ini meskipun tampak tidak terlalu baik dari segi disain namun masih mungkin terjadi. Jika memori utama memiliki tempat kosong dan proses dalam kondisi blocked/suspend tersebut memiliki prioritas lebih tinggi dari yang berada dalam kondisi ready/suspend serta sistem operasi percaya bahwa event yang ditunggu proses tersebut akan terjadi segera maka transisi ini boleh saja terjadi.
- Running  Ready/Suspend: proses yang telah habis masa eksekusinya biasanya akan dipindahkan ke dalam kondisi ready namun apabila ada proses dengan prioritas lebih tinggi telah berubah dari kondisi blocked/suspend menjadi ready/suspend maka sistem operasi dapat membebaskan memori utama untuk proses tersebut dengan memindahkan proses dengan prioritas lebih rendah tersebut ke dalam kondisi ready/suspend.
- Kondisi Apapun  Exit: biasanya proses diterminasi dalam kondisi berjalan karena telah selesai atau ada kesalahan tertentu namun pada beberapa sistem operasi proses dapat diterminasi oleh proses yang menjadi induknya atau ketika proses induknya diterminasi. Jika hal tersebut diperbolehkan maka semua kondisi dapat segera berubah menjadi kondis exit.

Gambar 3 Model dengan Suspend State
C. Struktur Kendali Sistem Operasi
Sistem operasi membuat dan memelihara beberapa tabel berisi informasi mengenai sumber daya komputer dan proses yang ada. Tabel-tabel tersebut antara lain:
1. Tabel memori
Tabel ini digunakan untuk mengelola memori utama dan memori virtual. Tabel ini berisi, antara lain:
a. Alokasi memori utama untuk proses
b. Alokasi memori virtual untuk proses
c. Atribut-atribut yang digunakan untuk keperluan proteksi blok-blok memori yang digunakan pada memori utama
d. Informasi apa saja yang digunakan untuk mengelola memori virtual.
2. Tabel I/O
Tabel ini digunakan untuk mengelola peralatan-peralatan dan saluran-saluran I/O. Ketika terjadi suatu operasi yang berhubungan dengan I/O sistem operasi harus mengetahui lokasi memori yang digunakan dalam proses perpindahan data.
3. Tabel file
Tabel ini digunakan untuk menyimpan informasi mengenai file-file yang sedang digunakan, seperti: lokasi mereka dalam memori, status, dan atribut mereka.
4. Tabel proses
Tabel ini digunakan untuk memanajemen proses-proses.
D. Atribut Proses
Atribut-atribut proses yang dibutuhkan untuk mengatur jalannya proses seperti sudah disebutkan sebelumnya disimpan di dalam process control block. Di dalamnya terdapat tiga kategori informasi, yaitu:
1. Identifikasi proses
Setiap proses diberi sebuah bilangan penanda identitas yang unik yang dapat menjadi indeks dalam tabel proses. Identitas ini menjadi referensi proses tersebut dalam operasi I/O dan komunikasi dengan proses lainnya,
2. Informasi kondisi prosesor
3. Nilai yang tersimpan dalam register prosesor akan disimpan oleh proses dalam PCB. Hal ini dilakukan agar ketika proses diinterupsi dari prosesor data yang sedang diproses dalam register tidak hilang tergantikan oleh data proses yang lain. Pada saat proses ini kembali dieksekusi isi regsiter akan dikembalikan ke register prosesor.
4. Informasi kendali proses
Ini adalah informasi tambahan yang dibutuhkan oleh sistem operasi untuk mengendalikan dan mengkoordinasi beberapa proses yang aktif.
E. Mengganti Eksekusi Proses
Ada beberapa hal yang dapat menjadi pemicu terjadinya pergantian eksekusi proses di prosesor, di antaranya:
1. Interrupt: disebabkan oleh suatu kejadian yg berada di luar lingkup eksekusi instruksi dan digunakan untuk memberikan reaksi terhadap kejadian luar secara asinkron.
2. Trap: disebabkan oleh kejadian yang berhubungan dengan eksekusi intruksi dan digunakan untuk menangani eror atau eksepsi tertentu.
3. Supervisor call: disebabkan oleh permintaan suatu pihak secara eksplisit kepada sistem operasi dan digunakan untuk memanggil fungsi yang disediakan oleh sistem operasi.
F. Pergantian Mode
Interrupt stage merupakan bagian dari siklus eksekusi instruksi. Pada tahap tersebut prosesor memeriksa ada tidaknya interrupt yang diindikasikan melalui adanya sinyal interupsi. Jika tidak ada sinyal interupsi maka prosesor akan mengambil instruksi berikutnya namun jika terdapat sinyal interupsi maka prosesor akan melakukan hal sebagai berikut:
1. Prosesor mengubah nilai program counter menunjuk ke alamat awal dari program yang menangani interrupt (interrupt handler)
2. Prosesor mengubah dari mode user menjadi mode kernel sehingga program yang menangani interrupt dapat mengeksekusi instruksi yang membutuhkan hak khusus.
G. Perubahan Kondisi Proses
Perubahan state atau kondisi proses berbeda dengan perubahan mode eksekusi proses. Sebuah perubahan mode dapat terjadi tanpa perubahan kondisi proses yang sedang berada dalam keadaan running sedangkan ketika terjadi perubahan kondisi proses maka sistem operasi harus melakukan perubahan pada lingkungannya dengan tahap-tahap sebagai berikut:
1. Simpan konteks dari prosesor termasuk program counter dan register lainnya
2. Perbarui PCB dari proses yang dalam kondisi running.
3. Pindahkan PCB proses ke antrian yang tepat (Ready, Blocked on Event, atau Ready/Suspend).
4. Pilih proses lain untuk eksekusi dan perbarui PCB proses yang akan dieksekusi termasuk kondisinya menjadi running.
5. Perbarui struktur data yang digunakan untuk manajemen memori
6. Kembalikan konteks prosesor ke bagian terakhir ketika proses dipindahkan dari kondisi running dengan memasukkan nilai-nilai program counter dan register lainnya

H. Process Control Block
Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) - juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 2-2. 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 (lihat Gambar 2-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 yangdigunakan 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.






Gambar 4 PCB


Gambar 5 CPU Register

BAB 3
KONSEP DASAR THREAD
A. Pengertian
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.
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.

B. Keuntungan
Keuntungan menggunakan thread dibandingkan proses:
1. membuat thread baru lebih cepat daripada membuat proses baru
2. menghentikan thread lebih cepat daripada menghentikan proses
3. waktu untuk pergantian thread lebih cepat dibandingkan pergantian proses
4. komunikasi antar thread lebih cepat karena berada dalam satu proses sehingga tidak memerlukan intervensi dari kernel

C. Keadaan Thread
Sebuah thread java dapat menjadi satu dari 4 kemungkinan keadaan:
1. new: sebuah thread pada keadaan ini ada ketika objek dari thread tersebut dibuat.
2. runnable: memanggil start() method untuk mengalokasikan memori bagi thread baru dalam JVM dan memanggil run() method untuk membuat objek.
3. block: sebuah thread akan diblok jika menampilkan sebuah kalimat pengeblokan. Contohnya: sleep() atau suspend().
4. dead: sebuah thread dipindahkan ke keadaan dead ketika run() method berhenti atau ketika stop() method dipanggil.

Gambar 6 Keadaan Thread

Empat operasi terhadap thread berdasarkan status thread:
1. Spawn
Pembuatan proses meliputi pembuatan thread proses tersebut dan thread tersebut dapat pula membuat thread baru di dalam thread yang sama.
2. Block
Ketika thread dihentikan sementara karena menunggu suatu peristiwa (event) processor akan mengeksekusi thread lain yang siap dalam antrian.
3. Unblock
Thread yang telah mendapatkan event yang diperlukan untuk melanjutkan tugasnya akan dikembalikan ke dalam antrian thread yang siap.
4. Finish
Register dan stack dari thread akan didealokasikan begitu thread selesai
Pada processor tunggal, multiprogramming memungkinkan eksekusi secara bergantian beberapa thread ketika suatu thread menunggu event atau jatah waktu eksekusinya telah habis.



D. User Threads
User thread didukung oleh kernel dan diimplementasikan oleh thread library ditingkat pengguna. Library mendukung untuk pembentukan thread, penjadualan, dan managemen yang tidak didukung oleh kernel. Pustaka (library) menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel. Semua pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna tanpa campur tangan kernel. Thread pengguna biasanya dapat cepat dibuat dan dikendalikan.

Gambar 8 User Threads

E. 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.

F. Multi-threading
Multithreading adalah kemampuan sistem operasi untuk mendukung adanya beberapa thread di dalam sebuah proses Sistem operasi terdahulu seperti MS DOS tidak mengenal konsep multiproses maupun multithread sehingga hanya dapat menjalankan satu proses dan setiap proses adalah sebuah thread.

Gambar 9 Multi Threading


G. Model Muti-Threading
1. Many-to-One
Many-to-One model memetakan
banyak user-level thread ke saru kernel thread. Pengaturan thread dilakukan di user space, oleh karena itu ia efisien tetapi ia mempunyai kelemahan yang sama dengan user thread. Selain itu karena hanya satu thread yang bisa mengakses thread pada suatu waktu maka multiple thread tidak bisa berjalan secara pararel pada multiprocessor . User-level thread yang diimplementasi pada sistem operasi yang tidak mendukung kernel thread menggunakan Many-to-One model.
Many-To-One

Gambar 10 Many to One
2. One-To-One
One-to-One model memetakan setiap user thread ke kernel thread. Ia menyediakan lebih banyak concurrency dibandingkan Many-to-One model. Keuntungannya sama dengan keuntungan kernel thread. Kelemahannya model ini adalah setiap pembuatan user thread membutuhkan pembuatan kernel thread. Karena pembuatan thread bisa menurunkan performa dari sebuah aplikasi maka implmentasi dari model ini membatasi jumlah thread yang dibatasi oleh sistem. Contoh sistem operasi yang mendukung One-to-One model adalah Windows NT dan OS/2.
One-To-One

Gambar 11 One to One

3. Many-To-Many
Many-to-many model multiplexes banyak user-level thread ke kernel thread yang jumlahnya lebih kecil atau sama banyaknya dengan user-level thread. Jumlah kernel thread bisa spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengijinkan developer ntuk membuat user thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang bisa 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 bisa membuat thread dalam jumlah yang terbatas ). Many-to-Many model tidak menderita kelemahan dari 2 model di atas. Developer bisa membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan bisa bejalan secara pararel 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.
Many-To-Many

Gambar 12 Many To Many
Penggunaan Thread
- Model Many-to-One mengizinkan developer untuk membuat user thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwal oleh kernel pada suatu waktu.
- Model 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 memiliki kelemahan seperti kedua model sebelumnya.
- Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat berjalan secara pararel pada multiprocessor.
- Jika suatu ketika thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi.
H. User Level Threads
- Semua manajemen thread dikerjakan oleh aplikasi
- Kernel is not aware of keberadaan thread.

Gambar 13 User Level Thread

Hubungan antara ULT Status Thread & Proses

Gambar 14 Hub ULT Status Thread dan Thread
Keuntungan menggunakan user-level thread:
1. Penggantian thread yang dieksekusi tidak membutuhkan hak istimewa kernel karena struktur data untuk manajemen thread ada pada memori proses.
2. Memungkinkan implementasi alogritma penjadwalan thread yang berbeda-beda untuk aplikasi tertentu tanpa mengubah kernel. Aplikasi tertentu membutuhkan penjadwalan tertentu (round robin, skala prioritas, dll) untuk bekerja secara optimal.
3. Dapat diaplikasikan pada semua sistem operasi karena tidak menyentuh level kernel
Kekurangan penggunaan user-level thread:
4. Kebanyakan sistem operasi melakukan blocking pada saat system call dilakukan yang menyebabkan proses (dan seluruh thread di dalamnya) diblok.
5. Multiprocessing tidak dapat diambil manfaatnya karena kernel menugaskan satu processor hanya untuk satu proses sehingga hanya satu thread proses yang bisa dijalankan pada satu waktu.

I. KerneL level Threads
- Kernel memelihara informasi konteks bagib proses & thread
- Manajemen thread dilakukan oleh kernel, bukan aplikasi
- Scheduling dilakukan pada basis thread
- Windows menggunakanpendekatan ini

Gambar 15 Kernel Level Thread
Keuntungan dari KLT
• Kernel dapat secara simultan menjadwal banyak thread dari proses yang sama pada banyak processor.
• Jika satu thread dalam suatu proses diblock, kernel dapat menjadwal thread yang lain dari proses yang sama.
• Rutin kernel sendiri dapat dibuat multithread.
Kerugian KLT
Transfer kontrol dari satu thread ke lainnya di dalam proses yang sama mengharuskan switch modus ke kernel

J. Fork dan exec System Call
Ada 2 kemungkinan dalam system UNIX jika fork dipanggil oleh salah satu thread dalam proses:
1. Semua thread diduplikasi.
2. Hanya thread yang memanggil fork .
Kalau thread memanggil exec System Call maka program yang dispesifikasi di parameter exec akan mengganti keseluruhan proses termasuk thread dan LWP.
Penggunaan 2 versi dari fork diatas tergantung dari aplikasi. Kalau exec dipanggil seketika sesudah fork, maka duplikasi seluruh thread tidak dibutuhkan, karena program yang dispesifikasi di parameter exec akan mengganti seluruh proses. Pada kasus ini cukup hanya mengganti thread yang memanggil fork . Tetapi jika proses yang terpisah tidak memanggil exec sesudah fork maka proses yang terpisah tersebut hendaknya menduplikasi seluruh thread.
K. Cancellation
Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan JVM( Java Virtual Machine ) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread.
Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda :
1. Asynchronous cancellation : suatu thread seketika itu juga memberhentikan target thread.
2. Defered cancellation : target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan targetthread untuk memberhentikan dirinya sendiri secara terurut.
Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread yang diberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous cancellation . Sistem operasi akan mengambil kembali sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang diberhentikan.
Alternatifnya adalah dengan menggunakan Deffered cancellation . Cara kerja dari deffered cancellation adalah dengan menggunakan 1 thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia bisa diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagai cancellation points .
Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara asynchronous . Tetapi Pthread API menyediakan deferred cancellation . Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengijinkan deferred cancellation.
L. Thread Pools
Pada web server yang multithreading ada 2 masalah yang timbul :
1. Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya.
2. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.
Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools , dimana mereka duduk diam dan menunggu untuk bekerja. Jadi ketika server menerima permintaan maka maka ia akan membangunkan thread dari pool dan jika threadnya tersedia maka permintaan tersebut akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada 1 thread yang bebas.
Keuntungan thread pool :
1. Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.
2. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada sistem yang tidak bisa mendukung banyak thread yang berjalan secara concurrent .
Jumlah thread dalam pool bisa tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yang concurrent .



BAB 4
HUBUNGAN PROCESS AND THREAD

Manfaat dari thread versus process
Jika kita benar dalam mengimplementasikan thread, maka kita akan memperoleh keuntungan khususnya pada multiprocess, yaitu:
Lebih sedikit waktu yang dibutuhkan untuk membuat thread yang baru dibandingkan harus membuat proses yang baru. Karena thread yang baru akan menempati ruang alamat memori proses yang sedang terjadi saat ini. Lebih sedikit waktu untuk mematikan thread daripada proses. Lebih sedikit waktu untuk berpindah (switch) antar 2 thread dibandingkan berpindah antar 2 proses. Lebih mudah untuk melakukan komunikasi (communication overheads). Karena komunikasi antar thread sangat sederhana disebabkan thread berbagi space address. Jadi data yang dimiliki oleh satu thread langsung tersedia bagi thread yang lain.
Ada dua hal mengenai proses yang menjadi fokus sistem, yaitu:
1. Kepemilikan sumber daya (resource ownership)
Masing-masing proses memiliki sumber daya (memory, saluran I/O, berkas, dll) yang dilindungi oleh sistem operasi dari interferensi yang tidak diinginkan oleh proses lain.
2. Penjadwalan/eksekusi
Banyak proses dapat dieksekusi secara bergantian sehingga proses memiliki atribut kondisi eksekusi dan prioritas eksekusi yang menentukan penjadwalan eksekusi proses-proses tersebut.
Sebuah proses memiliki satu thread atau banyak thread sudah umum digunakan tetapi relasi antara thread dan proses dapat dikombinasikan menjadi dua macam lagi, yaitu:
▪ Banyak thread dimiliki oleh banyak proses
1. Melibatkan konsep domain dan thread.
2. Domain adalah entitas statis yang memiliki ruang dan port di mana pesan dapat dikirim dan diterima.
3. Thread adalah jalur eksekusi tunggal dengan stack eksekusi, status processor, dan informasi penjadwalan.
4. Thread dapat berpindah-pindah dari satu domain ke domain lainnya.
▪ Satu thread dimiliki oleh banyak proses
1. Digunakan pada sistem terdistribusi.
2. Sebuah proses adalah sebuah virtual address space dan memiliki sebuah control block .
3. Thread dapat berpindah-pindah dari satu proses ke proses lainnya dalam satu mesin atau berpindah mesin dengan membawa informasi-informasi yang diperlukan.
4. Digunakan untuk menyembunyikan detil lingkungan terdistribusi dari programmer.



BAB 5
KONSEP DASAR PENJADWALAN

A. Pengertian
Penjadual CPU adalah basis dari multi programming sistem operasi. Dengan men-switch CPU diantara proses. Akibatnya sistem operasi bisa membuat komputer produktif. Dalam bab ini kami akan mengenalkan tentang dasar dari konsep penjadual dan beberapa algoritma penjadual. Dan kita juga memaparkan masalah dalam memilih algoritma dalam suatu sistem.
Tujuan dari multi programming adalah untuk mempunyai proses berjalan secara bersamaan, untuk memaksimalkan kinerja dari CPU. Untuk sistem uniprosesor, tidak pernah ada proses yang berjalan lebih dari satu. Bila ada proses yang lebih dari satu maka yang lain harus mengantri sampai CPU bebas. Ide dari multi porgamming sangat sederhana. Ketika sebuah proses dieksekusi yang lain harus menunggu sampai selesai. Di sistem komputer yang sederhana CPU akan banyak dalam posisi idle. Semua waktu ini sangat terbuang. Dengan multiprogamming kita mencoba menggunakan waktu secara produktif. Beberapa proses di simpan dalam memori dalam satu waktu. Ketika proses harus menuggu. Sistem operasi mengmbil CPU untuk memproses proses tersebut dan meninggalkan proses yang sedang dieksekusi.
Penjadual adalah fungsi dasar dari suatu sistem operasi. Hampir semua sumber komputer dijadual sebelum digunakan. CPU salah satu sumber dari komputer yang penting yang menjadi sentral dari sentral penjadual di sistem operasi.

B. Siklus Burst CPU-I/O
Keberhasilan dari penjadual CPU tergantung dari beberapa properti prosesor. Proses eksekusi mengandung siklus CPU ekskusi dan I/o Wait. Proses hanya akan bolak-balik dari dua state ini. Poses eksekusi dimulai dengan CPU Burst, setelah itu diikuti oleh I/O burst, dan dilakukan secara bergiliran.
Durasi dari CPU bust ini ditelah diukur secara ekstensif, walau pun mereka sangat berbeda dari proses ke proses. Mereka mempunyai frekeunsi kurva yang sama seperti yang diperlihatkan gambar dibawah ini.

Gambar 16 Siklus Burst CPU I/O
Penjadual CPU mungkin akan dijalankan ketika proses:
1. Berubah dari running ke waiting state.
2. Berubah dari running ke ready state.
3. Berubah dari waiting ke ready.
4. Terminates.

Penjadual dari no 1 sampai 4 non premptive sedangkan yang lain premptive. Dalam penjadualnonpreemptive sekali CPU telah dialokasikan untuk sebuah proses, maka tidak bisa di ganggu, penjadual model seperti ini digunakan oleh Windows 3.x; Windows 95 telah menggunakan penjadual preemptive.

C. Dispatcher
Komponen yang lain yang terlibat dalam penjadual CPU adalan dispatcher. Dispatcher adalah modul yang memberikan kontrol CPU kepada proses yang fungsinya adalah:
1. Alih Konteks
2. Switching to user mode.
3. Lompat dari suatu bagian di progam user untuk mengulang progam.

D. Kriteria Penjadual
Algoritma penjadual CPU yang berbeda mempunyai property yang berbeda. Dalam memilih algoritma yang digunakan untuk situasi tertentu, kita harus memikirkan properti yang berbeda untuk algoritma yang berbeda. Banyak kriteria yang dianjurkan utnuk membandingkan penjadual CPU algoritma. Kritria yang biasanya digunakan dalam memilih adalah:
1. CPU utilization: kita ingin menjaga CPU sesibuk mungkin. CPU utilization akan mempunyai range dari 0 ke 100 persen. Di sistem yang sebenarnya seharusnya ia mempunyai range dari 40 persen samapi 90 persen.
2. Throughput: jika CPU sibuk mengeksekusi proses, jika begitu kerja telah dilaksanakan. Salah satu ukuran kerja adalah banyak proses yang diselesaikan per unit waktu, disebut througput. Untuk proses yang lama mungkin 1 proses per jam; untuk proses yang sebentar mungkin 10 proses perdetik.
3. Turnaround time: dari sudur pandang proses tertentu, kriteria yang penting adalah berapa lama untuk mengeksekusi proses tersebut. Interval dari waktu yang diizinkan dengan waktu yang dibutuhkan untuk menyelesaikan sebuah prose disebut turn-around time. Trun around time adalah jumlah periode untuk menunggu untuk bisa ke memori, menunggu di ready queue, eksekusi di CPU, dan melakukan I/O.
4. Waiting time: algoritma penjadual CPU tidak mempengaruhi waktu untuk melaksanakan proses tersebut atau I/O; itu hanya mempengaruhi jumlah waktu yang dibutuhkan proses di antrian ready. Waiting time adalah jumlah periode menghabiskan di antrian ready.
5. Response time: di sistem yang interaktif, turnaround time mungkin bukan waktu yang terbaik untukkriteria. Sering sebuah proses bisa memproduksi output diawal, dan bisa meneruskan hasil yang baru sementara hasil yang sebelumnya telah diberikan ke user. Ukuran yang lain adalah waktu dari pengiriamn permintaan sampai respon yang pertama di berikan. Ini disebut response time, yaitu waktu untuk memulai memberikan respon, tetapi bukan waktu yang dipakai output untu respon tersebut.

E. . Algoritma Penjadual First Come, First Served
Penjadual CPU berurusan dengan permasalahan memutuskan proses mana yang akan dillaksanakan, oleh karena itu banyak bermacam algoritma penjadual, di seksi ini kita akan mendiskripsikan beberapa algoritma. Ini merupakan algoritma yang paling sederhana, dengan skema proses yang meminta CPU mendapat prioritas. Implementasi dari FCFS mudah diatasi dengan FIFO queue.
Contoh:

Gambar 17 Kedatangan Proses.

misal urutan kedatangan adalah P1, P2, P3 Gantt Chart untuk ini adalah:


Gambar 18 Gannt Chart Kedatangan Proses I.


Gambar 19 . Gannt Chart Kedatangan Proses II.

misal proses dibalik sehingga urutan kedatangan adalah P3, P2, P1.
Gantt chartnya adalah:


Gambar 20 Gannt Chart Kedatangan Proses III.


Gambar 21 Gannt Chart Kedatangan Proses IV.

Dari dua contoh diatas bahwa kasus kedua lebih baik dari kasus pertama, karena pengaruh kedatangan disamping itu FCFS mempunyai kelemahan yaitu convoy effect dimana seandainya ada sebuah proses yang kecil tetapi dia mengantri dengan proses yang membutuhkan waktu yang lama mengakibatkan proses tersebut akan lama dieksekusi.
Penjadual FCFS algoritma adalah nonpremptive. Ketika CPU telah dialokasikan untuk sebuah proses, proses tetap menahan CPU sampai selssai. FCFS algortima jelas merupakan masalah bagi sistem time-sharing, dimana sangat penting untuk user mendapatkan pembagian CPU pada regular interval. Itu akan menjadi bencana untuk megizinkan satu proses pada CPU untuk waktu yang tidak terbatas

F. Penjadual Shortest Job First
Salah satu algoritma yang lain adalah Shortest Job First. Algoritma ini berkaitan dengan waktu setiap proses. Ketika CPU bebas proses yang mempunyai waktu terpendek untuk menyelesaikannya mendapat prioritas. Seandainya dua proses atau lebih mempunyai waktu yang sama maka FCFS algoritma digunakan untuk menyelsaikan masalah tersebut.
Ada dua skema dalam SJFS ini yaitu:
1. nonpremptive— ketika CPU memberikan kepada proses itu tidak bisa ditunda hingga selesai.
2. premptive— bila sebuah proses datang dengan waktu prose lebih rendah dibandingkan dengan waktu proses yang sedang dieksekusi oleh CPU maka proses yang waktunya lebih rendah mendapatkan prioritas. Skema ini disebut juga Short - Remaining Time First (SRTF).
Contoh:

Gambar 22 Kedatangan Proses

Gambar 23 Gannt Chart SJF Non-Preemtive


Gambar 24 Rata-rata Menunggu

SJF algoritma mungkin adalah yang paling optimal, karena ia memberikan rata-rata minimum waiting untuk kumpulan dari proses yang mengantri. Dengan mengeksekusi waktu yang paling pendek baru yang paling lama. Akibatnya rata-rata waktu mnenuggu menurun.
Hal yang sulit dengan SJF algoritma adalah mengethaui waku dari proses berikutnya. Untuk penjadual long term (lama) di sistem batch, kita bisa menggunakan panjang batas waktu proses yang user sebutkan ketika dia mengirim pekerjaan. Oleh karena itu sjf sering digunakan di penjadual long term. Walau pun SJF optimal tetapi ia tidak bisa digunakan untuk penjadual CPU short term. Tidak ada jalan untuk mengetahui panjang dari CPU burst berikutnya. Salah satu cara untuk mengimplementasikannya adalah dengan memprediksikan CPU burst berikutnya.
Contoh SJF premptive:
SJF algoritma mungkin adalah yang paling optimal, karena ia memberikan rata-rata minimum waiting untuk kumpulan dari proses yang mengantri.


Gambar 25 Kedatangan Proses.

Gambar 26 . Gannt Chart SJF Preemtive.


Gambar 27 Rata-rata Menunggu.

G. Penjadual Prioritas
Penjadualan SJF (Shortest Job First) adalah kasus khusus untuk algoritma penjadual Prioritas. Prioritas dapat diasosiasikan masing-masing proses dan CPU dialokasikan untuk proses dengan prioritas tertinggi. Untuk proritas yang sama dilakukan dengan FCFS.
Ada pun algoritma penjadual prioritas adalah sebagai berikut:
Setiap proses akan mempunyai prioritas (bilangan integer). Beberapa sistem menggunakan integer dengan urutan kecil untuk proses dengan prioritas rendah, dan sistem lain juga bisa menggunakan integer urutan kecil untuk proses dengan prioritas tinggi. Tetapi dalam teks ini diasumsikan bahwa integer kecil merupakan prioritas tertinggi.
CPU diberikan ke proses dengan prioritas tertinggi (integer kecil adalah prioritas tertinggi).
• Dalam algoritma ini ada dua skema yaitu:
- Preemptive: proses dapat di interupsi jika terdapat prioritas lebih tinggi yang memerlukan CPU.
- Nonpreemptive: proses dengan prioritas tinggi akan mengganti pada saat pemakain time-slice habis.
• SJF adalah contoh penjadual prioritas dimana prioritas ditentukan oleh waktu pemakaian CPU berikutnya. Permasalahan yang muncul dalam penjadualan prioritas adalah indefinite blocking atau starvation.
Kadang-kadang untuk kasus dengan prioritas rendah mungkin tidak pernah dieksekusi. Solusi untuk algoritma penjadual prioritas adalah aging Prioritas akan naik jika proses makin lama menunggu waktu jatah CPU.

H. Penjadual Round Robin
Algoritma Round Robin (RR) dirancang untuk sistem time sharing. Algoritma ini mirip dengan penjadual FCFS, namun preemption ditambahkan untuk switch antara proses. Antrian ready diperlakukan atau dianggap sebagai antrian sirkular. CPU menglilingi antrian ready dan mengalokasikan masing-masing proses untuk interval waktu tertentu sampai satu time slice/ quantum.
Berikut algritma untuk penjadual Round Robin:
• Setiap proses mendapat jatah waktu CPU (time slice/ quantum) tertentu Time slice/quantum umumnyaantara 10 - 100 milidetik. Setelah time slice/ quantum maka proses akan di-preempt dan dipindahkan ke antrian ready. Proses ini adil dan sangat sederhana.
• Jika terdapat n proses di "antrian ready" dan waktu quantum q (milidetik), Maka setiap proses akan mendapatkan 1/n dari waktu CPU. Proses tidak akan menunggu lebih lama dari: (n-1)q time units.
• Kinerja dari algoritma ini tergantung dari ukuran time quantum
- Time Quantum dengan ukuran yang besar maka akan sama dengan FCFS
- Time Quantum dengan ukuran yang kecil maka time quantum harus diubah ukurannya lebih besar dengan respek pada alih konteks sebaliknya akan memerlukan ongkos yang besar.


Gambar 28 . Round Robin.
- Tipikal: lebih lama waktu rata-rata turnaround dibandingkan SJF, tapi mempunyai response terhadap user lebih cepat.
Time Quantum Vs Alih Konteks

Gambar 29 Time Quantum dan Alih Konteks

I. Penjadualan Multiprocessor
Multiprocessor membutuhkan penjadualan yang lebih rumit karena mempunyai banyak kemungkinan yang dicoba tidak seperti pada processor tunngal. Tapi saat ini kita hanya fokus pada processor yang homogen (sama) sesuai dengan fungsi masing-masing dari processor tersebut. Dan juga kita dapat menggunakan processor yang tersedia untuk menjalankan proses didalam antrian. Jika ada beberapa prosesor yang identik tersedia maka load sharing akan terjadi. Kita bisa menyediakan queue yang terpisah untuk setiap prosesor. Dalam kasus ini, bagaimana pun, satu prosesor bisa menjadi idle dengan antrian yang kosong sedangkan yang lain sangat sibuk. Untuk mengantisipasi hal ini kita menggunakan ready queue yang biasa. Semua proses pergi ke satu queue dan dijadualkan untuk prosesor yang bisa dipakai.
Dalam skema tersebut, salah satu penjadualan akan digunakan. Salah satu cara menggunakan symmetric multiprocessing (SMP). Dimana setiap prosesor menjadualkan diri sendiri. Setiap prosesor memeriksa raedy queue dan memilih proses yang akan dieksekusi.
Beberapa sistem membawa struktur satu langkah kedepan, dengan membawa semua keputusan penjadualan, I/O prosesing, dan aktivitas sistem yang lain ditangani oleh satu prosesor yang bertugas sebagai master prosesor. Prosesor yang lain mengeksekusi hanya user code yang disebut asymmetric multiprosessing jauh lebih mudah.

J. Penjadualan Real Time
Terdapat dua jenis real time computing: sistem hard real time dibutuhkan untuk menyelesaikan critical task dengan jaminan waktu tertentu. Secara umum, sebuah proses di kirim dengan sebuah pernyataan jumlah waktu dimana dibutuhkan untuk menyelesaikan atau menjalankan I/O. Kemudian penjadual bisa menjamin proses untuk selesai atau menolak permintaan karena tidak mungkin dilakukan. Karena itu setiap operasi harus dijamin dengan waktu maksimum.
Soft real time computing lebih tidak ketat. Itu membutuhkan bahwa proses yang kritis menerima prioritas dari yang lain. Walau pun menambah fungsi soft real time ke sistem time sharing mungkin akan mengakibatkan pembagian sumber yang tidak adildan mengakibatkan delay yang lebih lama, atau mungkin pembatalan bagi proses tertentu, Hasilnya adalah tujuan secara umum sistem yang bisa mendukung multimedia, graphic berkecepatan tinggi, dan variasi tugas yang tidak bisa diterima di lingkungan yang tidak mendukunng soft real time computing
Mengimplementasikan fungsi soft real time membutuhkan design yang hati-hati dan aspek yang berkaitan dengan sistem operasi. Pertama, sistem harus punya prioritas penjadualan, dan proses real time harus tidak melampaui waktu, walau pun prioritas non real time bisa terjadi. Kedua, dispatch latency harus lebih kecil. Semakin kecil latency, semakin cepat real time proses mengeksekusi.
Untuk menjaga dispatch tetap rendah. Kita butuh agar system call untuk preemptible. Ada beberapa cara untuk mencapai tujuan ini. Satu untuk memasukkan preemption points di durasi yang lama system call, yang mana memeriksa apakah prioritas yang utama butuh untuk dieksekusi. Jika satu sudah, maka alih konteks mengambil alih; ketika high priority proses selesai, proses yang diinterupsi meneruskan dengan system call. Points premption bisa diganti hanya di lokasi yang aman di kernel — hanya kernel struktur tidak bisa dimodifikasi walau pun dengan preemption points, dispatch latency bisa besar, karena pada prakteknya untuk menambah beberapa preemption points untuk kernel.
Metoda yang lain untuk berurusan dengan preemption untuk membuat semua kernel preemptible. Karena operasi yang benar bisa dijamin, semua data kernel struktur dengan di proteksi. Dengan metode ini, kernel bisa selalu di preemptible, karena semua kernel bisa diupdate di proteksi.
Apa yang bisa diproteksi jika prioritas yang utama butuh untuk dibaca atau dimodifisikasi yang bisa dibutuhkan oleh yang lain, prioritas yang rendah? Prioritas yang tinggi harus menunggu menunggu untuk menyelesaikan prioritas yang rendah.
Fase konflik dari dispatch latency mempunyai dua komponen:
1. Preemption semua proses yang berjalan di kernel.
2. Lepas prioritas yang rendah untuk prioritas yang tinggi.  
BAB 6
KESIMPULAN
A. Proses
Sebuah proses adalah sebuah peristiwa adanya sebuah proses yang dapat dieksekusi. Sebagai sebuah eksekusi proses, maka hal tersebut membutuhkan perubahan keadaan. Keadaan dari sebuah proses dapat didefinisikan oleh aktivitas proses tertentu tersebut. Setiap proses mungkin menjadi satu dari beberapa state berikut, antara lain: new, ready, running, waiting, atau terminated. Setiap proses direpresentasikan ada sistem operasi berdasarkan proses-control-block (PCB)-nya.
Sebuah proses, ketika sedang tidak dieksekusi, ditempatkan pada antrian yang sama. Disini ada 2 kelas besar dari antrian dalam sebuah sistem operasi: permintaan antrian I/O dan ready queue. Ready queue memuat semua proses yang siap untuk dieksekusi dan yang sedang menunggu untuk dijalankan pada CPU. Setiap proses direpresentasikan oleh sebuah PCB, dan PCB tersebut dapat digabungkan secara bersamaan untuk mencatat sebuah ready queue. Penjadualan Long-term adalah pilihan dari proses-proses untuk diberi izin menjalankan CPU. Normalnya, penjadualan long-term memiliki pengaruh yang sangat besar bagi penempatan sumber, terutama managemen memori. Penjadualan Short-term adalah pilihan dari satu proses dari ready queue.
Proses-proses pada sistem dapat dieksekusi secara berkelanjutan. Disini ada beberapa alasan mengapa proses tersebut dapat dieksekusi secara berkelanjutan: pembagian informasi, penambahan kecepatan komputasi, modularitas, dan kenyamanan atau kemudahan. Eksekusi secara berkelanjutan menyediakan sebuah mekanisme bagi proses pembuatan dan penghapusan.
Pengeksekusian proses-proses pada operating system mungkin dapat digolongkan menjadi proses independent dan kooperasi. Proses kooperasi harus memiliki beberapa alat untuk mendukung komunikasi antara satu dengan yang lainnya. Prinsipnya adalah ada dua rencana komplementer komunikasi: pembagian memori dan sistem pesan. Metode pembagian memori menyediakan proses komunikasi untuk berbagi beberapa variabel. Proses-proses tersebut diharapkan dapat saling melakukan tukar-menukar informasi seputar pengguna variabel yang terbagi ini. Pada sistem pembagian memori, tanggung jawab bagi penyedia komunikasi terjadi dengan programmer aplikasi; sistem operasi harus menyediakan hanya pembagian memori saja. Metode sistem pesan mengizinkan proses-proses untuk tukar-menukar pesan. Tanggung jawab bagi penyedia komunikasi ini terjadi dengan sistem operasi tersebut.

B. Thread
Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. User level thread adalah thread yang tampak oleh programmer dan tidak diketahui oleh kernel. User level thread secara tipikal dikelola oleh sebuah library thread di ruang user. Kernel level thread didukung dan dikelola oleh kernel sistem operasi. Secara umum, user level thread lebih cepat dalam pembuatan dan pengelolaan dari pada kernel thread. Ada tiga perbedaan tipe dari model yang berhubungan dengan user dan kernel thread.
- Model many to one: memetakan beberapa user level thread hanya ke satu buah kernel thread.
- Model one to one: memetakan setiap user thread ke dalam satu kernel thread. berakhir.
- Model many to many: mengizinkan pengembang untuk membuat user thread sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.

Java adalah unik karena telah mendukung thread didalam tingkatan bahasanya. Semua program Java sedikitnya terdiri dari kontrol sebuah thread tunggal dan mempermudah membuat kontrol untuk multiple thread dengan program yang sama. JAVA juga menyediakan library berupa API untuk membuat thread, termasuk method untuk suspend dan resume suatu thread, agar thread tidur untuk jangka waktu tertentu dan menghentikan thread yang berjalan. Sebuah java thread juga mempunyai empat kemungkinan keadaan, diantaranya: New, Runnable, Blocked dan Dead. Perbedaan API untuk mengelola thread seringkali mengganti keadaan thread itu sendiri.

C. Penjadualan CPU
Penjadualan CPU adalah pemilihan proses dari antrian ready untuk dapat dieksekusi. Algoritma yang digunakan dalam penjadulan CPU ada bermacam-macam. Diantaranya adalah First Come First Serve (FCFS), merupakan algoritma sederhana dimana proses yang datang duluan maka dia yang dieksekusi pertama kalinya. Algoritma lainnya adalah Sorthest Job First (SJF), yaitu penjadualan CPU dimana proses yang paling pendek dieksekusi terlebih dahulu.
Kelemahan algoritma SJF adalah tidak dapat menghindari starvation. Untuk itu diciptakan algoritma Round Robin (RR). Penjadulan CPU dengan Round Robin adalah membagi proses berdasarkan waktu tertentu yaitu waktu quantum q. Setelah proses menjalankan eksekusi selama q satuan waktu maka akan digantikan oleh proses yang lain. Permasalahannya adalah bila waktu quantumnya besar sedang proses hanya membutuhkan waktu sedikit maka akan membuang waktu. Sedang bila waktu quantum kecil maka akan memakan waktu saat alih konteks.
Penjadualan FCFS adalah non-preemptive yaitu tidak dapat diinterupsi sebelum proses dieksekusi seluruhnya. Penjadualan RR adalah preemtive yaitu dapat dieksekusi saat prosesnya masih dieksekusi. Sedangkan penjadualan SJF dapat berupa nonpreemptive dan preemptive


Daftar Pustaka
1. http://pranotoutomo.wordpress.com/2007/12/19/thread-on-unix-process/
2. http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c36.html
3. http://ikc.unimal.ac.id/umum/ibam/ibam-os-html/i2.html#AEN865
4. http://kambing.ui.ac.id/bebas/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c3bsoal.html
5. Avi Silberschatz, Peter Galvin, dan Greg Gagne, Applied Operationg System Concepts, 1stEd., John Wiley & Sons, Inc. , 2002
6. William Stallings, Operating Systems -- Fourth Edition, Prentice Hall. , 2001
7. Coursware Politeknik Telko

Tidak ada komentar:

Posting Komentar

kamut

Hidup itu suatu perjuangan yang harus kita lalui dengan orang yang kita sayangi....