Penjadwalan preemptive adalah salah satu yang dapat dilakukan dalam keadaan ketika suatu proses beralih dari menjalankan status ke status siap atau dari statusmenunggu ke status siap . Di sini, sumber daya (siklus CPU) dialokasikan ke proses untuk jumlah waktu terbatas
dan kemudian dihapus, dan proses tersebut ditempatkan kembali dalam
antrian siap lagi jika masih ada sisa waktu burst CPU. Proses tetap
dalam antrian siap sampai mendapat kesempatan berikutnya untuk
dieksekusi.
Jika proses dengan prioritas tinggi tiba di antrian
siap, ia tidak harus menunggu proses saat ini untuk menyelesaikan waktu
burst-nya. Sebagai gantinya, proses saat ini terputus di tengah
pelaksanaan dan ditempatkan dalam antrian siap sampai proses dengan
prioritas tinggi memanfaatkan siklus CPU. Dengan cara ini, setiap proses
dalam antrian siap mendapatkan waktu untuk menjalankan CPU. Itu membuat
penjadwalan preemptive fleksibel tetapi, meningkatkan overhead beralih
proses dari menjalankan negara ke status siap dan ayat.
Definisi Penjadwalan Non-Preemptive
Penjadwalan
First Come First Served (FCFS) dapat diambil sebagai contoh penjadwalan
nonpreemptive. Proses yang meminta pertama dialokasikan ke CPU terlebih
dahulu. Penjadwalan ini mudah dikelola oleh antrian First In First Out
(FIFO). Jika ada proses datang dalam urutan sebagai P1, P2 dan P3, maka
kesempatan pertama diberikan kepada P1. Setelah selesai, P2 akan
mengeksekusi. Ketika P2 selesai, P3 akan dieksekusi.
Perbedaan Kunci antara Penjadwalan Preemptif dan Non-Preemptif
Perbedaan
mendasar antara penjadwalan preemptive dan non-preemptive adalah bahwa
dalam penjadwalan preemptive CPU dialokasikan ke proses untuk waktu yang
terbatas . Sementara dalam penjadwalan Non-preemptive, CPU dialokasikan untuk proses sampai ia berakhir atau beralih ke status menunggu .
Proses eksekusi dalam penjadwalan preemptif terputus di tengah eksekusi sedangkan proses eksekusi dalam penjadwalan non-preemptif tidak terputus di tengah eksekusi.
Penjadwalan Preemptive memiliki overhead
untuk mengalihkan proses dari status siap ke status sedang, vis-ayat,
dan mempertahankan antrian siap. Di sisi lain, penjadwalan
non-preemptive tidak memiliki overhead untuk mengalihkan proses dari menjalankan status ke status siap.
Dalam
penjadwalan preemptive, jika suatu proses dengan prioritas tinggi
sering tiba dalam antrian siap maka proses dengan prioritas rendah harus
menunggu lama, dan mungkin harus kelaparan. Di sisi lain, dalam
penjadwalan non-preemptive, jika CPU dialokasikan untuk proses dengan
waktu burst lebih besar maka proses dengan waktu burst kecil mungkin
harus kelaparan.
Penjadwalan preemptive cukup fleksibel
karena proses kritis diperbolehkan untuk mengakses CPU ketika mereka
tiba di antrian siap, tidak peduli proses apa yang sedang dieksekusi
saat ini. Penjadwalan non-preemptive adalah kaku karena bahkan jika proses kritis memasuki antrian siap proses yang menjalankan CPU tidak terganggu.
Penjadwalan
Preemptive adalah asosiatif biaya karena harus menjaga integritas data
bersama yang tidak demikian halnya dengan Penjadwalan Non-preemptive.
Kesimpulan:
Bukannya penjadwalan preemptive lebih baik
daripada penjadwalan non-preemptive atau vise-ayat. Semua tergantung
pada bagaimana penjadwalan meminimalkan waktu tunggu rata-rata dari
proses dan memaksimalkan pemanfaatan CPU.
Bounded Buffer Problem adalah suatu struktur data untuk
menampung (buffer) suatu nilai dimana kapasitasnya tertentu/terbatas (bounded).
Masalah bounded buffer merupakan salah satu masalah yang menerangkan
sinkronisasi antara proses-proses yang berjalan secara konkuren untuk mengakses
data yang sama.
Masalah Bounded Buffer :
Masalah
ini digeneralisasikan dalam istilah masalah Konsumen Produsen ,
di mana kumpulan buffer terbatas digunakan untuk bertukar
pesan antara proses produsen dan konsumen.
Solusi
untuk masalah ini adalah, membuat dua semaphore penghitungan
"penuh" dan "kosong" untuk melacak masing-masing
jumlah buffer penuh dan kosong saat ini.
Dalam
hal ini Produsen terutama menghasilkan produk dan konsumen mengkonsumsi
produk tersebut, tetapi keduanya dapat menggunakan salah satu wadah setiap
saat.
Kompleksitas
utama dari masalah ini adalah kita harus menjaga jumlah container kosong
dan penuh yang tersedia.
Solusi untuk produsen adalah baik pergi tidur atau membuang
data jika buffer penuh. Ketika konsumen menghapus item dari buffer, maka sistem
akan memberitahu produser, yang mulai mengisi buffer lagi. Dengan cara yang
sama, ketika produsen menempatkan data ke dalam buffer, maka konsumen lebih baik tidur sambail menunggu
buffer terisi penuh.
Solusi dapat dicapai dengan sarana komunikasi antar-proses,
biasanya menggunakan Semaphore. Sebuah solusi yang tidak memadai bisa
mengakibatkan kebuntuan di mana kedua proses sedang menunggu untuk dibangunkan.
Masalahnya juga dapat digeneralisasi untu memiliki beberapa produsen dan
konsumen. Kita dapat menerapkan konsep semaphore untuk menyelesaikan masalah
tersebut. Disini kita menggunakan tiga buah semaphore yaitu mutex, full dan
empty.
Mutex digunakan untuk menjamin hanya boleh satu proses yang
berjalan mengakses buffer pada suatu waktu, awalnya dinisialisasi sebesar satu
(1).
Full digunakan untuk menghitung jumlah buffer yang berisi,
yang pada awalnya diinisialisasi sebesar nol (0).
Sedangkan empty digunakan untuk menghitung jumlah buffer yang
kosong, yang awalnya dinisialisasi sebesar ukuran buffer.
Readers and Writers Problem
Readers dan writers problem adalah problem yang memodelkan
beberapa proses yang mengakses database yang sama dalam satu waktu sehingga
dapat menyebabkan korupsi data. Data dapat berupa buffer, objek, atau file dari
suatu program. Terdapat thread yang membaca dan thread yang menulis.
Thread yang membaca disebut reader, sedangkan yang menulis disebut writer.
Contoh permasalahan readers and writers adalah sebuah reader sedang membaca
objek, kemudian sebuah writer menulis ulang objek data tersebut maka reader
akan membaca data yang tidak akurat, karena ada kemungkinan data yang terbaca
adalah setengah data lama dan setengah data baru. Solusi pada permasalahan ini
adalah:
- Jika terdapat satu proses menulis (mengubah) basis
data, proses lain tidak boleh mengakses basis data, baik membaca atau menulis.
Pada masalah ini, writers memiliki prioritas yang lebih tinggi dari pada readers.
Jika ada writer yang sedang menunggu, maka tidak boleh ada reader lain yang
bekerja. Writer akan memblok semua proses reading oleh readers dan melakukan
proses writing. Ketika proses writing selesai, maka proses reading dapat
dilanjutkan kembali oleh reader.
- Jika ada reader yang datang ketika reader lain sedang
membaca dan sebuah writer sedang menunggu, maka reader yang baru datang
tersebut akan langsung mendapat giliran untuk membaca. Writer akan ditunda
pengerjaannya
Dining Philosophers Problem
Dining Philosophers Prolem
Masalah
ini pertama kali ditulis dan diselesaikan oleh Djikstra pada tahun
1965.Masalah ini memodelkan masalah enkapsulasi dari ketergantungan
mesin dan masalah portabilitas. Dalam masalah Dining Philosophers,
diketahui sejumlah (N) filusuf yang hanya memiliki tiga status,
berpikir, lapar, dan makan. Semua filusuf berada di sebuah meja makan
bundar yang ditata sehingga di depan setiap filusuf ada sebuah piring
berisi mie dan di antara dua piring yang bersebelahan terdapat sebuah
sumpit.
Solusi Dining – Philosophers Problem ada dua, yakni :
a.Solusi Waiter
Solusi
Waiter : solusi sederhana ini dilakukan dengan mengadakan seorang
waiter yang senantiasa mengawasi penggunaan sumpit di meja makan. Ketika
empat buah (dua pasang) sumpit sedang dipakai,orang berikutnya yang
ingin memakai sumpit harus meminta izin kepada sang waiter, yang hanya
dapat diberi ketika salah satu sumpit telah selesai terpakai.
b.Solusi Hierarki Resource
Solusi
Hirarki Resource: resources (sumpit) di meja makan telah diberi susunan
hirarki. Setiap permintaan orang terhadap sebuah sumpit harus dilakukan
pada susunan tertentu, dan dikembalikan pada susunan sebaliknya. Dalam
hal ini, setiap orang dapat mengambil sumpit dimanapun diatas meja.
Misalkan setiap sumpit diberi nomor sebagai tingkat hirarki dari 1
sampai 5, seseorang hanya dapat mengambil sumpit dengan nomor yang
paling rendah, kemudian mengambil sumpit yang setingkat lebih tinggi.
Ketika ia hendak mengembalikannya, orang itu harus meletakkan sumpit
dengan nomor yang lebih tinggi terlebih dahulu, lalu yang rendah.
Process Explorer adalah sebuah software buatan Mark Russinovich yang
memiliki feature cukup menarik. Walaupun hanya sebuah utility kecil,
aplikasi ini sangat powerful dan berguna untuk melihat program apa saja
yang sedang berjalan. Sebenarnya, Windows telah menyediakan aplikasi
untuk melihat proses program yang sedang berjalan. Anda cukup menekan
Ctrl+Alt+Del, lalu akan muncul berbagai pilihan termasuk task manager.
Sayangnya, task manager yang disediakan Windows bukanlah power tools.
Dengan
Process Explorer, Anda dapat melihat penggunaan CPU dan Memory melalui
DLL’s. Aplikasi ini merupakan sebuah portable aplikasi yang berkapasitas
1.45 MB. Untuk menjalankan program ini, Anda cukup mengekstraknya
kemudian klik “procexp”. Program pun akan berjalan. Interface aplikasi
ini tampak sangat sederhana dan mudah untuk digunakan.
Memahami The Tree View
Ketika Anda pertama kali meluncurkan Process Explorer, Anda disajikan
dengan banyak data visual langsung - ada tampilan hierarki pohon dari
proses yang berjalan di komputer Anda, termasuk penggunaan CPU dan RAM
menggunakan nilai numerik untuk setiap proses. Ada beberapa grafik
aktivitas mini yang berjalan di bagian atas di bilah alat, menunjukkan
kepada Anda penggunaan CPU, yang dapat diklik untuk ditampilkan di
jendela terpisah.
Pasti ada banyak hal yang terjadi, dan akan mudah untuk kewalahan oleh semua yang ada di layar.
Tampilan awal memberi Anda serangkaian kolom yang mencakup:
Proses - nama file executable bersama dengan ikon jika ada.
CPU - persentase waktu CPU di detik terakhir (atau kecepatan pembaruan apa pun diatur ke)
Private Bytes - Jumlah memori yang dialokasikan untuk program ini saja.
Set Bekerja - Jumlah RAM aktual yang dialokasikan untuk program ini oleh Windows.
PID - pengidentifikasi proses.
Deskripsi - deskripsi, jika aplikasi memilikinya.
Nama Perusahaan
- Yang ini lebih berguna daripada yang kamu pikirkan. Jika ada yang
tidak beres, mulailah dengan mencari proses yang tidak dilakukan oleh
Microsoft.
Anda dapat mengkustomisasi kolom-kolom ini dan
menambahkan banyak opsi lain, atau Anda dapat mengklik salah satu kolom
untuk mengurutkan berdasarkan bidang itu. Jika Anda pernah menggunakan
Task Manager sebelumnya, Anda mungkin telah mengurutkan berdasarkan
Memory atau CPU, dan Anda dapat melakukannya di sini juga.
Mengklik
Proses akan beralih antara menyortir dengan nama proses, atau kembali
ke tampilan pohon default, yang sangat berguna setelah Anda terbiasa.
Tampilan
diperbarui sekali per detik, tetapi Anda dapat pergi ke Lihat ->
Perbarui Kecepatan dan sesuaikan seberapa sering pembaruan, yang paling
rendah 0,5 detik dan tingkat teratas adalah 10 detik. Jika Anda
menggunakannya untuk mengatasi masalah, nilai default mungkin baik-baik
saja, tetapi jika Anda ingin menggunakannya sebagai monitor CPU yang
duduk di baki sistem, 5 atau 10 detik mungkin menggunakan lebih sedikit
CPU saat berjalan di latar belakang.
Anda juga dapat menjeda
tampilan di bawah sub-menu yang sama, atau hanya dengan menekan bilah
Space. Ini akan membekukan tampilan sebagai snapshot dalam waktu, yang
dapat berguna jika Anda mencoba mengidentifikasi proses yang dimulai dan
cepat mati, atau jika Anda memutuskan untuk mengurutkan berdasarkan
penggunaan CPU dan semua baris terus melompat-lompat.
Namun,
dalam kasus proses penutupan yang cepat, Anda ingin menambahkan kolom
tambahan ke tampilan default untuk apa pun yang mungkin perlu Anda
ketahui, karena mengklik proses yang tidak aktif dalam daftar tidak akan
banyak ditampilkan dalam tampilan detail jika proses tidak berjalan,
bahkan jika Anda menghentikan semuanya.
Feature, Penggunaan, dan Support
Pada saat task manager
menawarkan kesederhaanaan dalam menampilkan informasi seputar penggunaan
CPU, memory, atau sebuah program yang sedang berjalan, Process
Explorer menawarkan sesuatu yang lebih advance. Bahkan, Process Explorer
dapat menggantikan konfigurasi task manager saat Anda menekan tombol
ctrl+alt+del. Baris pertama menu software ini menampilkan penggunaan
I/O, Network, harddisk, CPU, dan Memory. Di sini, Anda dapat
memonitornya. Ketika Anda mengklik salah satu menu tersebut, akan muncul
window yang memberikan dalam bentuk grafik bar.
Selain
itu, aplikasi ini juga memberikan informasi dalam bentuk tree explorer.
Di sini, Anda bisa melihat aplikasi apa saja yang sedang berjalan. Anda
dapat melakukan berbagai aksi untuk mematikan aplikasi tersebut atau
membiarkannya terus berjalan.
Selain dapat berjalan melalui
Windows, Process Explore juga dapat Anda jalankan melalui command line.
Anda dapat membuka aplikasi ini melalui DOS. Berikut beberapa command
line yang dapat dipergunakan:
1. /e – berguna untuk menjalankan Process Explorer dengan User Account Control administrative.
2. /s – Process Explorer akan otomatis memilih menjalankan proses dengan ID yang Anda masukkan di sini.
3. /t – menjalakan Process Explorer dengan minimize dan icon tray saja.
4.
/p [r, h, n, or l] perintah ini digunakan untuk menjalankan prioritas
dari Process Explore menjadi realtime, high, normal, atau low.
Memahami Semua Warna
Objek Baru (Hijau Cerah) - Ketika proses baru muncul di Process Explorer, prosesnya akan berwarna hijau terang.
Objek yang Dihapus (Merah) - Ketika suatu proses dibunuh atau ditutup, biasanya akan berkedip merah tepat sebelum menghapus.
Proses Sendiri (Cahaya Biru) - Proses yang berjalan sebagai akun pengguna yang sama dengan Process Explorer.
Layanan (Light Pink)
- Proses Windows Service, meskipun perlu dicatat bahwa mereka mungkin
memiliki proses turunan yang diluncurkan sebagai pengguna yang berbeda,
dan itu mungkin warna yang berbeda.
Proses yang Ditangguhkan (Dark Grey) -
Saat proses ditangguhkan, tidak bisa berbuat apa-apa. Anda dapat dengan
mudah menggunakan Process Explorer untuk menangguhkan aplikasi.
Terkadang aplikasi yang macet akan muncul secara singkat saat Windows
sedang menangani macet.
Proses Immersive (Biru Terang) - Ini
hanyalah cara mewah untuk mengatakan bahwa prosesnya adalah aplikasi
Windows 8 menggunakan API baru. Dalam screenshot sebelumnya Anda mungkin
telah memperhatikan WSHost.exe, yang merupakan proses "Windows Store
Host" yang menjalankan aplikasi Metro. Untuk beberapa alasan,
Explorer.exe dan Task Manager juga akan tampil sebagai immersive.
Gambar yang Dikemas (Ungu) -
proses ini mungkin berisi kode terkompresi yang tersembunyi di
dalamnya, atau setidaknya Process Explorer berpikir bahwa mereka
melakukannya dengan menggunakan heuristik. Jika Anda melihat proses
berwarna ungu, pastikan untuk memindai malware!
Karena
jelas ada beberapa tumpang tindih antara skenario yang berbeda ini,
warna akan diterapkan dalam urutan prioritas. Jika proses adalah layanan
dan ditangguhkan, itu akan ditampilkan dalam warna abu-abu gelap karena
warna itu lebih penting.
Dari apa yang telah kami pelajari saat meneliti, pesanan Ditangguhkan> Dikemas> Immersif> Layanan -> Proses Sendiri.
Menggunakan Process Explorer untuk Mengganti Task Manager
Process
Explorer telah lama digunakan sebagai pengganti yang kuat untuk
aplikasi Task Manager yang sebelumnya anemik di setiap versi Windows
sebelum Windows 8, dan dengan asumsi Anda menginginkan beberapa kekuatan
nyata di tangan Anda, ia bekerja dengan sangat baik sebagai pengganti
dalam versi itu juga. Untuk membuat Process Explorer mengganti Task Manager, yang harus Anda
lakukan hanyalah memilih Options -> Ganti opsi Task Manager dari
menu. Setelah Anda selesai melakukannya, menggunakan CTRL + SHIFT + ESC atau
mengklik kanan pada Taskbar akan meluncurkan Process Explorer daripada
Task Manager.