-
Konsep Proses Pada Sistem Operasi
Sistem operasi mengeksekusi berbagai jenis
program. Pada sistem batch program tersebut biasanya disebut dengan job, sedangkan
pada sistem time sharing, program
disebut dengan program user atau task. Beberapa buku teks menggunakan istilah job atau proses. Proses adalah program yang
sedang dieksekusi. Eksekusi proses dilakukan secara berurutan. Dalam suatu proses terdapat
program counter, stack dan daerah data. Penjadwalan merupakan kumpulan kebijaksanaan dan mekanisme di sistem
operasi yang berkaitan dengan urutan kerja yang dilakukan sistem komputer.
Proses penjadwalan yang akan dibahas disini adalah proses penjadwalan sistem
operasi Solaris dan Linux. Tujuan utama penjadwalan proses optimasi kinerja
menurut kriteria tertentu, dimana kriteria untuk mengukur dan optimasi kerja
penjadwalan.
Penjadwalan CPU adalah basis dari multi
programming sistem operasi. Dengan cara men-switch CPU diantara proses, maka
akan berakibat sistem operasi bisa membuat komputer produktif. Dalam bab ini
kami akan mengenalkan tentang dasar dari konsep penjadwalan dan beberapa
algoritma penjadwalan.
Pada sistem Operasi, terdapat 3 tipe
penjadwal berada secara bersama-sama pada sistem operasi yang kompleks, yaitu:
a. Penjadwalan Jangka Pendek
(Short Term Scheduller)
Bertugas menjadwalkan alokasi pemroses
diantara proses-proses ready di memori utama. Penjadwalan ini dijalankan setiap
terjadi pengalihan proses untuk memilih proses berikutnya yang harus
dijalankan.
b. Penjadwalan Jangka
Menengah (Medium Term Scheduller)
Setelah eksekusi selama suatu waktu, proses
mungkin menunda sebuah eksekusi karena membuat permintaan layanan
masukan/keluaran atau memanggil suatu system call. Proses-proses tertunda tidak
dapat membuat suatu kemajuan menuju selesai sampai kondisi-kondisi yang
menyebabkan tertunda dihilangkan. Agar ruang memori dapat bermanfaat, maka
proses dipindah dari memori utama ke memori sekunder agar tersedia ruang untuk proses-proses
lain. Kapasitas memori utama terbatas untuk sejumlah proses aktif. Aktivitas
pemindahan proses yang tertunda dari memori utama ke memori sekunder disebut
swapping. Proses-proses mempunyai kepentingan kecil saat itu sebagai proses
yang tertunda. Tetapi, begitu kondisi yang membuatnya tertunda hilang dan
dimasukkan kembali ke memori utama dan ready.
c. Penjadwalan Jangka Panjang
(Long Term Scheduller)
Penjadwalan ini bekerja terhadap antrian
batch dan memilih batch berikutnya yang harus dieksekusi. Batch biasanya berupa
proses-proses dengan penggunaan sumber daya yang intensif (yaitu waktu
pemroses, memori, masukan/keluaran), program-program ini berprioritas rendah,
digunakan sebagai pengisi (agar pemroses sibuk) selama periode aktivitas
job-job interaktif rendah. Meskipun tiap-tiap proses terdiri dari suatu
kesatuan yang terpisah namun adakalanya proses-proses tersebut butuh untuk
saling berinteraksi. Satu proses bisa dibangkitkan dari output proses lainnya
sebagai input. Pada saat proses dieksekusi, akan terjadi perubahan status.
Status proses didefiniskan sebagai bagian dari aktivitas proses yang sedang
berlangsung saat itu. Gambar 3.1 dibawah, ditunjukkan diagram status proses.
Status proses terdiri dari :
· New, proses sedang dibuat.
· Running, proses sedang dieksekusi.
· Waiting, proses sedang menunggu
beberapa event yang akan terjadi (seperti menunggu untuk menyelesaikan
I/O atau menerima sinyal).
· Ready, proses menunggu jatah
waktu dari CPU untuk diproses.
· Terminated, proses telah selesai
dieksekusi.
Secara blog diagram, maka dapat digambarkan
sebagai berikut :
Masing-masing proses direpresentasikan oleh
Sistem Operasi dengan menggunakan Process Control Block (PCB). Informasi yang terdapat pada setiap proses
meliputi :
· Status Proses. New, ready, running, waiting dan terminated.
· Program Counter. Menunjukkan alamat berikutnya yang akan dieksekusi oleh proses
tersebut.
· CPU Registers. Register bervariasi tipe dan jumlahnya tergantung arsitektur komputer yang
bersangkutan. Register-register tersebut terdiri-atas: accumulator,
index register, stack pointer, dan register serbaguna dan beberapa
informasi tentang kode kondisi. Selama Program Counter berjalan, status
informasi harus disimpan pada saat terjadi interrupt.
· Informasi Penjadwalan CPU. Informasi tersebut berisi prioritas
dari suatu proses, pointer ke antrian penjadwalan, dan beberapa parameter penjadwalan
yang lainnya.
· Informasi Manajemen Memori. Informasi tersebut berisi nilai
(basis) dan limit register, page table, atau segment table tergantung pada
sistem memory yang digunakan oleh sistem operasi.
· Informasi Accounting. Informasi tersebut berisi jumlah CPU dan
real time yang digunakan, time limits, account numbers, jumlah job atau proses.
· Informasi Status I/O. Informasi tersebut berisi deretan I/O device
(seperti tape driver) yang dialokasikan untuk proses tersebut, deretan file
yang dibuka.
Swithing proses dari
proses satu ke proses berikutnya, ditunjukkan seperti gambar berikut ini.
2.
Kriteria Penjadwalan
Algoritma penjadwalan CPU yang berbeda akan
memiliki perbedaan properti. Untuk memilih algoritma ini harus dipertimbangkan
dulu properti-properti algoritma tersebut. Ada beberapa kriteria yang digunakan
untuk melakukan pembandingan algoritma penjadwalan CPU, antara lain:
· CPU utilization. Diharapkan agar CPU selalu dalam keadaan sibuk. Utilitas CPU
dinyatakan dalam bentuk prosen yaitu 0-100%. Namun dalam kenyataannya hanya
berkisar antara 40-90%.
· Throughput. Adalah banyaknya proses yang selesai dikerjakan dalam satu satuan
waktu.
· Turnaround time. Banyaknya waktu yang diperlukan untuk mengeksekusi proses, dari
mulai menunggu untuk meminta tempat di memori utama, menunggu di ready queue,
eksekusi oleh CPU, dan mengerjakan I/O.
· Waiting time. Waktu yang diperlukan oleh suatu proses untuk menunggu di ready
queue. Waiting time ini tidak mempengaruhi eksekusi proses dan penggunaan I/O.
· Response time. Waktu yang dibutuhkan oleh suatu proses dari minta dilayani hingga
ada respon pertama yang menanggapi permintaan tersebut.
· Fairness. Meyakinkan bahwa tiap-tiap proses akan mendapatkan pembagian waktu
penggunaan CPU secara terbuka (fair).
3.
Dispatcher
Dispatcher adalah suatu modul yang akan
memberikan kontrol pada CPU terhadap penyeleksian proses yang dilakukan selama
short-term scheduling. Fungsi-fungsi yang terkandung di dalamnya meliputi:
· Switching context;
· Switching ke user-mode;
· Melompat ke lokasi tertentu pada user program untuk memulai
program.
Waktu
yang diperlukan oleh dispatcher untuk menghentikan suatu proses dan memulai
untuk menjalankan proses yang lainnya disebut dispatch latency.
4.
Algoritma Penjadwalan
Proses memerlukan prosesor dan penjadwalan
pemakaian prosesor. Berdasarkan berbagai
ketentuan pada penjadwalan proses serentak, dapat disusun teknik penjadwalan
prosesor. Dapat dipandang semua proses serentak
itu sebagai satu kumpulan proses yang memerlukan prosesor.
Penjadwalan proses didasarkan pada sistem
operasi yang menggunakan prinsip
multiprogramming. Dengan cara
mengalihkan kerja CPU untuk beberapa proses, maka CPU akan semakin produktif. Algoritma
diperlukan untuk mengatur giliran proses-proses yang ada di ready queue yang
mengantri untuk dialokasikan ke CPU. Beberapa algoritma penjadwalan dijelaskan
sebagai berikut :
a. First Come First Saved
(FCFS) Scheduling
FCFS merupakan algoritma penjadwalan yang
paling sederhana yang digunakan dalam CPU. Dengan menggunakan algoritma ini
setiap proses yang berada pada status ready dimasukkan kedalam FIFO
queue atau antrian dengan prinsip first in first out, sesuai dengan
waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi. Kelemahan
dari algoritma ini:
· Waiting time rata-ratanya cukup lama.
· Terjadinya convoy effect, yaitu proses-proses menunggu lama
untuk menunggu proses besar yang sedang dieksekusi oleh CPU. Algoritma ini juga
menerapkan konsep non-preemptive, yaitu setiap proses yang sedang dieksekusi
oleh CPU tidak dapat di-interrupt oleh proses yang lain.
Pada algoritma ini, maka proses yang pertama
kali meminta jatah waktu untuk menggunakan CPU akan dilayani terlebih dahulu.
Pada skema ini, proses yang meminta CPU pertama kali akan dialokasikan ke CPU
pertama kali.
Misalnya terdapat tiga proses yang dapat
dengan urutan P1, P2, dan P3 dengan waktu CPU-burst dalam
milidetik yang diberikan sebagai berikut :
Gant chart dengan penjadwalan FCFS dapat
digambarkan sebagai berikut :
Waktu tunggu untuk P1 adalah 0, P2
adalah 24 dan P3 adalah 27 sehingga rata-rata waktu tunggu adalah (0 + 24
+ 27)/3 = 17 milidetik.
Apabila urutannya P2, P3 dan P1 dengan waktu
CPU-burst dalam milidetik yang diberikan sebagai berikut :
Maka Gant chart-nya dengan penjadwalan FCFS
digambarkan sebagai berikut :
Waktu tunggu untuk P1 adalah 6, P2
adalah 0 dan P3 adalah 3 sehingga rata-rata waktu tunggu adalah (6 + 0 +
3)/3 = 3 milidetik. Rata-rata waktu untuk kasus ini jauh lebih baik jika
dibandingkan dengan kasus sebelumnya.
Algoritma FCFS termasuk non-preemptive,
karena sekali CPU dialokasikan pada suatu proses, maka proses tersebut tetap
akan memakai CPU sampai proses tersebut melepaskannya (berhenti atau meminta
I/O).
b. Shortest Job First (SJF)
Scheduling
Pada algoritma ini setiap proses yang ada di ready
queue akan dieksekusi berdasarkan burst time terkecil. Hal ini
mengakibatkan waiting time yang pendek untuk setiap proses dan karena
hal tersebut maka waiting time rata-ratanya juga menjadi pendek. Ada
beberapa kekurangan dari algoritma ini yaitu:
· Susahnya untuk memprediksi burst time proses yang akan dieksekusi selanjutnya.
· Proses yang mempunyai burst time yang besar akan memiliki waiting
time yang besar pula SJF (Shortest Job First) karena yang dieksekusi terlebih dahulu
adalah proses dengan burst time yang lebih kecil.
Algoritma ini dapat dibagi menjadi dua bagian
yaitu :
· Preemptive. Jika ada proses yang sedang dieksekusi oleh CPU dan terdapat proses
di ready queue dengan burst time yang lebih kecil daripada proses yang sedang
dieksekusi tersebut, maka proses yang sedang dieksekusi oleh CPU akan
digantikan oleh proses yang berada di ready queue tersebut. Preemptive
SJF sering disebut juga Shortest-Remaining- Time-First scheduling.
· Non-preemptive. CPU tidak memperbolehkan proses yang ada di ready queue untuk
menggeser proses yang sedang dieksekusi oleh CPU meskipun proses yang baru tersebut
mempunyai burst time yang lebih kecil.
c. Priority Scheduling
Priority Scheduling merupakan algoritma
penjadwalan yang mendahulukan proses yang memiliki prioritas tertinggi. Setiap
proses memiliki prioritasnya masing-masing. Prioritas suatu proses dapat
ditentukan melalui beberapa karakteristik antara lain:
· Time limit.
· Memory requirement.
· Akses file.
· Perbandingan antara I/O burst dengan CPU burst.
· Tingkat kepentingan proses.
Pada algoritma ini terdapat 2 macam
penjadwalan, yaitu :
· Preemptive. Jika ada suatu proses yang baru datang memiliki prioritas yang lebih
tinggi daripada proses yang sedang dijalankan, maka proses yang sedang berjalan
tersebut dihentikan, lalu CPU dialihkan untuk proses yang baru datang tersebut.
· Nonpreemtive. Proses yang baru datang tidak dapat menganggu proses yang sedang
berjalan, tetapi hanya diletakkan di depan queue.
Kelemahan pada priority scheduling adalah
dapat terjadinya indefinite blocking (starvation). Solusi dari
permasalahan ini adalah aging, yaitu meningkatkan prioritas dari setiap
proses yang menunggu dalam queue secara bertahap.
d. Round Robin Scheduling
Algoritma ini menggilir proses yang ada di
antrian. Setiap proses mendapat jatah sebesar time quantum. Jika time
quantum-nya habis atau proses sudah selesai, CPU akan dialokasikan ke
proses berikutnya.
Semua proses mendapat jatah waktu yang sama
dari CPU yaitu (1/n), dan tak akan menunggu lebih lama dari (n-1)q dengan q
adalah lama 1 quantum. Jika q terlalu besar maka akan sama dengan
algoritma FCFS. Jika terlalu kecil, akan semakin banyak peralihan proses
sehingga banyak waktu terbuang.
Gambar Urutan
Kejadian Algoritma Round Robin
Konsep dasar dari
algoritma ini adalah dengan menggunakan timesharing. Pada dasarnya algoritma
ini sama dengan FCFS, hanya saja bersifat preemptive. Setiap proses mendapatkan
waktu CPU yang disebut dengan waktu quantum (quantum time) untuk
membatasi waktu proses, biasanya 1-100 milidetik. Setelah waktu habis, proses
ditunda dan ditambahkan pada ready queue. Jika suatu proses memiliki CPU burst lebih
kecil dibandingkan dengan waktu quantum, maka proses tersebut akan melepaskan
CPU jika telah selesai bekerja, sehingga CPU dapat segera digunakan oleh proses
selanjutnya. Sebaliknya, jika suatu proses memiliki CPU burst yang lebih besar
dibandingkan dengan waktu quantum, maka proses tersebut akan dihentikan
sementara jika sudah mencapai waktu quantum, dan selanjutnya mengantri kembali
pada posisi ekor dari ready queue, CPU kemudian menjalankan proses berikutnya. Jika
terdapat n proses pada ready queue dan waktu quantum q, maka setiap
proses mendapatkan 1/n dari waktu CPU paling banyak q unit waktu
pada sekali penjadwalan CPU.
Tidak ada proses yang
menunggu lebih dari (n-1)q unit waktu. Performansi algoritma
round robin dapat dijelaskan sebagai berikut, jika q besar, maka yang digunakan
adalah algoritma FIFO, tetapi jika q kecil maka sering terjadi context switch.
Misalkan ada 3 proses: P1, P2, dan P3 yang meminta pelayanan CPU dengan
quantum-time sebesar 4 milidetik, maka dapat digambarkan sebagai berikut
:
Maka Gant chart-nya dapat digambarkan sebagai
berikut :
Waktu tunggu untuk P1 adalah 6, P2
adalah 4, dan P3 adalah 7 sehingga rata-rata waktu tunggu adalah (6+4+7)/3
= 5.66 milidetik.
Algoritma Round-Robin ini di satu sisi
memiliki keuntungan, yaitu adanya keseragaman waktu. Namun di sisi lain,
algoritma ini akan terlalu sering melakukan switching seperti yang terlihat
pada Gambar berikut.
Semakin besar quantum-timenya maka switching
yang terjadi akan semakin sedikit.
Gambar Waktu quantum yang lebih
kecil meningkatkan context switch
Pada multiprogramming, selalu akan terjadi
beberapa proses berjalan dalam suatu waktu.
Sedangkan pada uniprogramming hal ini tidak akan terjadi, karena hanya
ada satu proses yang berjalan pada saat tertentu.
Konsep dasar dari multiprogramming ini
adalah: suatu proses akan menggunakan CPU sampai proses tersebut dalam status wait
(misalnya meminta I/O) atau selesai.
Pada saat wait , maka CPU akan nganggur (idle). Untuk mengatasi hal ini, maka CPU dialihkan
ke proses lain pada saat suatu proses sedang dalam wait, demikian
seterusnya.
5.
Implementasi Pada Sistem Operasi Linux
Pada sistem operasi Linux, untuk melihat
proses yang sedang terjadi, maka digunakan perintah ps. Apabila belum tahu
perintah ps itu digunakan untuk apa, maka kita bisa tanya ke library
menggunakan perintah man, kemudian diikuti nama perintahnya (#man ps), kemudian
tekan enter, seperti pada gambar berikut
ini.
Gambar Menjalankan
perintah man pada Linux 1
Sedangkan untuk menampilkan proses tree atau
memperoleh informasi tentang threads dan security info, dapat dilakukan dengan
melakukan scroll mouse ke arah bawah, sehingga akan diperoleh tampilan seperti
berikut ini.
Gambar Menjalankan perintah man pada Linux 2
Pada sistem operasi Linux Debian, untuk
melihat proses yang terjadi dapat dilakukan dengan mengetikkan perintah ps pada
terminal Linux, seperti berikut ini.
Contoh proses
pada sistem operasi Linux 1
Jika dijalankan perintah # ps –au, maka akan
diperoleh tampilan seperti berikut ini.
Gambar Contoh
proses pada sistem operasi Linux 2
Pada sistem Linux, terdapat banyak cara untuk
menangani eksekusi-eksekusi perintah. Diantaranya, diberi kesempatan untuk
membuat daftar perintah dan menentukan kapan perintah dijalankan oleh sistem.
Misalnya perintah “at” digunakan untuk memberi peluang menjalankan program
berdasarkan waktu yang ditentukan.
Contoh script pada Linux ditunjukkan pada gambar berikut ini.
Gambar Menjalankan
perintah at
Pada gambar di atas, langkah pertama adalah
membuat file pada directory home/yamta/ dengan nama belajar_linux. Perintah
untuk membuatnya adalah : #touch belajar_linux
File di atas sebagai tempat kita menyimpan
dan melihat proses. Dengan demilian, maka pada Wednesday December 11 2013 jam
13:00 akan terjadi proses ping ke IP 192.168.0.1, yang keterangan prosesnya ada
pada file /home/yamta/belajar_linux.
Untuk melihat faktor/elemen lainnya , maka
menggunakan perintah ps –u seperti gambar berikut ini
Gambar Hasil
perintah ps -u
Untuk melihat faktor/elemen lainnya, gunakan
option –u (user). %CPU adalah presentasi CPU time yang digunakan oleh proses
tersebut, %MEM adalah presentasi system memori yang digunakan proses, SIZE
adalah jumlah memori yang digunakan, RSS (Real System Storage) adalah jumlah
memori yang digunakan, START adalah kapan proses tersebut diaktifkan. Sedangkan
pada option -u yang disertai untuk mencari proses yang spesifik pemakai. Proses
diatas hanya terbatas pada proses milik pemakai, dimana pemakai teresbut
melakukan login.
Untuk menampilkan proses Parent dan Child
maka ketikkan perintah #ps –eH, sehingga akan keluar tampilan seperti berikut
ini.
Gambar Hasil
perintah ps -u
Pada gambar di atas terlihat hubungan proses
parent dan child. Setelah mengetikkan perintah ps -eH kemudian enter, maka
proses child muncul dibawah proses parent dan proses child ditandai dengan
awalan beberapa spasi. Karena pada opsi e disini untuk memilih semua proses dan
opsi H menghasilkan tampilan proses secara hierarki.
Dengan mengetikkan perintah # ps –ef, maka
akan ditampilkan gambar seperti berikut ini.
Gambar Hasil
perintah ps –ef
Untuk menampilkan semua proses pada sistem
dalam bentuk hirarki parent/child, maka dilakukan dengan mengetikkan perintah #
pstree, seperti gambar berikut ini.
Gambar Hasil
perintah pstree
Percobaan diatas menampilkan semua proses
pada sistem dalam bentuk hirarki parent/child. Proses parent di sebelah kiri
proses child. Sebagai contoh proses init sebagai parent (ancestor) dari semua
proses pada sistem. Beberapa child dari init mempunyai child. Proses login
mempunyai proses bash sebagai child. Proses bash mempunyai proses child startx.
Proses startx mempunyai child xinit dan seterusnya.
Untuk melihat semua PID, maka dilakukan
dengan mengetikkan perintah #pstree –p, sehingga akan menghasilkan tampilan
seperti berikut ini.
Untuk melihat semua PID untuk proses gunakan
opsi –p. Jadi , menampilakn semua proses pada sistem dalam bentuk hirarki
parent/child. Disini memberitahukan proses yang sedang berjalan bahwa ada
sesuatu yang harus dikendalikan. Dan berdasarkan sinyal yang dikirim ini maka
dapat bereaksi dan administrator dapat menentukan reaksi tersebut.
Untuk menampilkan proses dan ancestor, maka
dilakukan dengan mengetikkan perintah # pstree –h, sehingga hasilnya sebagai
berikut.
Untuk menampilkan semua proses (PID, TTY,
TIME dan CMD), dilakukan dengan mengetikkan perintah $ ps ax | more. Opsi a
akan menampilkan semua proses yang dihasilkan terminal (TTY). Opsi x
menampilkan semua proses yang tidak dihasilkan terminal. Secara logika opsi ini
sama dengan opsi –e. Terdapa 5 kolom : PID, TTY, STAT, TIME dan COMMAND.
Untuk menampilkan semua proses dalam format
daftar penuh, meka perintahnya adalah # ps ef | more, sehingga akan
menghasilkan tampilan sebagai berikut.
Opsi –e f akan menampilkan semua proses dalam
format daftar penuh. Jika halaman penuh terlihat prompt –More– di bagian bawah
screen, tekan q untuk kembali ke prompt perintah.
Konsep Proses Pada Sistem Operasi
Sistem operasi mengeksekusi berbagai jenis
program. Pada sistem batch program tersebut biasanya disebut dengan job, sedangkan
pada sistem time sharing, program
disebut dengan program user atau task. Beberapa buku teks menggunakan istilah job atau proses. Proses adalah program yang
sedang dieksekusi. Eksekusi proses dilakukan secara berurutan. Dalam suatu proses terdapat
program counter, stack dan daerah data. Penjadwalan merupakan kumpulan kebijaksanaan dan mekanisme di sistem
operasi yang berkaitan dengan urutan kerja yang dilakukan sistem komputer.
Proses penjadwalan yang akan dibahas disini adalah proses penjadwalan sistem
operasi Solaris dan Linux. Tujuan utama penjadwalan proses optimasi kinerja
menurut kriteria tertentu, dimana kriteria untuk mengukur dan optimasi kerja
penjadwalan.
Penjadwalan CPU adalah basis dari multi
programming sistem operasi. Dengan cara men-switch CPU diantara proses, maka
akan berakibat sistem operasi bisa membuat komputer produktif. Dalam bab ini
kami akan mengenalkan tentang dasar dari konsep penjadwalan dan beberapa
algoritma penjadwalan.
Pada sistem Operasi, terdapat 3 tipe
penjadwal berada secara bersama-sama pada sistem operasi yang kompleks, yaitu:
a. Penjadwalan Jangka Pendek
(Short Term Scheduller)
Bertugas menjadwalkan alokasi pemroses
diantara proses-proses ready di memori utama. Penjadwalan ini dijalankan setiap
terjadi pengalihan proses untuk memilih proses berikutnya yang harus
dijalankan.
b. Penjadwalan Jangka Menengah (Medium Term Scheduller)
Setelah eksekusi selama suatu waktu, proses
mungkin menunda sebuah eksekusi karena membuat permintaan layanan
masukan/keluaran atau memanggil suatu system call. Proses-proses tertunda tidak
dapat membuat suatu kemajuan menuju selesai sampai kondisi-kondisi yang
menyebabkan tertunda dihilangkan. Agar ruang memori dapat bermanfaat, maka
proses dipindah dari memori utama ke memori sekunder agar tersedia ruang untuk proses-proses
lain. Kapasitas memori utama terbatas untuk sejumlah proses aktif. Aktivitas
pemindahan proses yang tertunda dari memori utama ke memori sekunder disebut
swapping. Proses-proses mempunyai kepentingan kecil saat itu sebagai proses
yang tertunda. Tetapi, begitu kondisi yang membuatnya tertunda hilang dan
dimasukkan kembali ke memori utama dan ready.
c. Penjadwalan Jangka Panjang
(Long Term Scheduller)
Penjadwalan ini bekerja terhadap antrian
batch dan memilih batch berikutnya yang harus dieksekusi. Batch biasanya berupa
proses-proses dengan penggunaan sumber daya yang intensif (yaitu waktu
pemroses, memori, masukan/keluaran), program-program ini berprioritas rendah,
digunakan sebagai pengisi (agar pemroses sibuk) selama periode aktivitas
job-job interaktif rendah. Meskipun tiap-tiap proses terdiri dari suatu
kesatuan yang terpisah namun adakalanya proses-proses tersebut butuh untuk
saling berinteraksi. Satu proses bisa dibangkitkan dari output proses lainnya
sebagai input. Pada saat proses dieksekusi, akan terjadi perubahan status.
Status proses didefiniskan sebagai bagian dari aktivitas proses yang sedang
berlangsung saat itu. Gambar 3.1 dibawah, ditunjukkan diagram status proses.
Status proses terdiri dari :
· New, proses sedang dibuat.
· Running, proses sedang dieksekusi.
· Waiting, proses sedang menunggu
beberapa event yang akan terjadi (seperti menunggu untuk menyelesaikan
I/O atau menerima sinyal).
· Ready, proses menunggu jatah
waktu dari CPU untuk diproses.
· Terminated, proses telah selesai
dieksekusi.
Secara blog diagram, maka dapat digambarkan
sebagai berikut :
Masing-masing proses direpresentasikan oleh
Sistem Operasi dengan menggunakan Process Control Block (PCB). Informasi yang terdapat pada setiap proses
meliputi :
· Status Proses. New, ready, running, waiting dan terminated.
· Program Counter. Menunjukkan alamat berikutnya yang akan dieksekusi oleh proses
tersebut.
· CPU Registers. Register bervariasi tipe dan jumlahnya tergantung arsitektur komputer yang
bersangkutan. Register-register tersebut terdiri-atas: accumulator,
index register, stack pointer, dan register serbaguna dan beberapa
informasi tentang kode kondisi. Selama Program Counter berjalan, status
informasi harus disimpan pada saat terjadi interrupt.
· Informasi Penjadwalan CPU. Informasi tersebut berisi prioritas
dari suatu proses, pointer ke antrian penjadwalan, dan beberapa parameter penjadwalan
yang lainnya.
· Informasi Manajemen Memori. Informasi tersebut berisi nilai
(basis) dan limit register, page table, atau segment table tergantung pada
sistem memory yang digunakan oleh sistem operasi.
· Informasi Accounting. Informasi tersebut berisi jumlah CPU dan
real time yang digunakan, time limits, account numbers, jumlah job atau proses.
· Informasi Status I/O. Informasi tersebut berisi deretan I/O device
(seperti tape driver) yang dialokasikan untuk proses tersebut, deretan file
yang dibuka.
Swithing proses dari
proses satu ke proses berikutnya, ditunjukkan seperti gambar berikut ini.
2.
Kriteria Penjadwalan
Algoritma penjadwalan CPU yang berbeda akan
memiliki perbedaan properti. Untuk memilih algoritma ini harus dipertimbangkan
dulu properti-properti algoritma tersebut. Ada beberapa kriteria yang digunakan
untuk melakukan pembandingan algoritma penjadwalan CPU, antara lain:
· CPU utilization. Diharapkan agar CPU selalu dalam keadaan sibuk. Utilitas CPU
dinyatakan dalam bentuk prosen yaitu 0-100%. Namun dalam kenyataannya hanya
berkisar antara 40-90%.
· Throughput. Adalah banyaknya proses yang selesai dikerjakan dalam satu satuan
waktu.
· Turnaround time. Banyaknya waktu yang diperlukan untuk mengeksekusi proses, dari
mulai menunggu untuk meminta tempat di memori utama, menunggu di ready queue,
eksekusi oleh CPU, dan mengerjakan I/O.
· Waiting time. Waktu yang diperlukan oleh suatu proses untuk menunggu di ready
queue. Waiting time ini tidak mempengaruhi eksekusi proses dan penggunaan I/O.
· Response time. Waktu yang dibutuhkan oleh suatu proses dari minta dilayani hingga
ada respon pertama yang menanggapi permintaan tersebut.
· Fairness. Meyakinkan bahwa tiap-tiap proses akan mendapatkan pembagian waktu
penggunaan CPU secara terbuka (fair).
3.
Dispatcher
Dispatcher adalah suatu modul yang akan
memberikan kontrol pada CPU terhadap penyeleksian proses yang dilakukan selama
short-term scheduling. Fungsi-fungsi yang terkandung di dalamnya meliputi:
· Switching context;
· Switching ke user-mode;
· Melompat ke lokasi tertentu pada user program untuk memulai
program.
Waktu
yang diperlukan oleh dispatcher untuk menghentikan suatu proses dan memulai
untuk menjalankan proses yang lainnya disebut dispatch latency.
4.
Algoritma Penjadwalan
Proses memerlukan prosesor dan penjadwalan
pemakaian prosesor. Berdasarkan berbagai
ketentuan pada penjadwalan proses serentak, dapat disusun teknik penjadwalan
prosesor. Dapat dipandang semua proses serentak
itu sebagai satu kumpulan proses yang memerlukan prosesor.
Penjadwalan proses didasarkan pada sistem
operasi yang menggunakan prinsip
multiprogramming. Dengan cara
mengalihkan kerja CPU untuk beberapa proses, maka CPU akan semakin produktif. Algoritma
diperlukan untuk mengatur giliran proses-proses yang ada di ready queue yang
mengantri untuk dialokasikan ke CPU. Beberapa algoritma penjadwalan dijelaskan
sebagai berikut :
a. First Come First Saved
(FCFS) Scheduling
FCFS merupakan algoritma penjadwalan yang
paling sederhana yang digunakan dalam CPU. Dengan menggunakan algoritma ini
setiap proses yang berada pada status ready dimasukkan kedalam FIFO
queue atau antrian dengan prinsip first in first out, sesuai dengan
waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi. Kelemahan
dari algoritma ini:
· Waiting time rata-ratanya cukup lama.
· Terjadinya convoy effect, yaitu proses-proses menunggu lama
untuk menunggu proses besar yang sedang dieksekusi oleh CPU. Algoritma ini juga
menerapkan konsep non-preemptive, yaitu setiap proses yang sedang dieksekusi
oleh CPU tidak dapat di-interrupt oleh proses yang lain.
Pada algoritma ini, maka proses yang pertama
kali meminta jatah waktu untuk menggunakan CPU akan dilayani terlebih dahulu.
Pada skema ini, proses yang meminta CPU pertama kali akan dialokasikan ke CPU
pertama kali.
Misalnya terdapat tiga proses yang dapat
dengan urutan P1, P2, dan P3 dengan waktu CPU-burst dalam
milidetik yang diberikan sebagai berikut :
Gant chart dengan penjadwalan FCFS dapat
digambarkan sebagai berikut :
Waktu tunggu untuk P1 adalah 0, P2
adalah 24 dan P3 adalah 27 sehingga rata-rata waktu tunggu adalah (0 + 24
+ 27)/3 = 17 milidetik.
Apabila urutannya P2, P3 dan P1 dengan waktu
CPU-burst dalam milidetik yang diberikan sebagai berikut :
Maka Gant chart-nya dengan penjadwalan FCFS
digambarkan sebagai berikut :
Waktu tunggu untuk P1 adalah 6, P2
adalah 0 dan P3 adalah 3 sehingga rata-rata waktu tunggu adalah (6 + 0 +
3)/3 = 3 milidetik. Rata-rata waktu untuk kasus ini jauh lebih baik jika
dibandingkan dengan kasus sebelumnya.
Algoritma FCFS termasuk non-preemptive,
karena sekali CPU dialokasikan pada suatu proses, maka proses tersebut tetap
akan memakai CPU sampai proses tersebut melepaskannya (berhenti atau meminta
I/O).
b. Shortest Job First (SJF)
Scheduling
Pada algoritma ini setiap proses yang ada di ready
queue akan dieksekusi berdasarkan burst time terkecil. Hal ini
mengakibatkan waiting time yang pendek untuk setiap proses dan karena
hal tersebut maka waiting time rata-ratanya juga menjadi pendek. Ada
beberapa kekurangan dari algoritma ini yaitu:
· Susahnya untuk memprediksi burst time proses yang akan dieksekusi selanjutnya.
· Proses yang mempunyai burst time yang besar akan memiliki waiting
time yang besar pula SJF (Shortest Job First) karena yang dieksekusi terlebih dahulu
adalah proses dengan burst time yang lebih kecil.
Algoritma ini dapat dibagi menjadi dua bagian
yaitu :
· Preemptive. Jika ada proses yang sedang dieksekusi oleh CPU dan terdapat proses
di ready queue dengan burst time yang lebih kecil daripada proses yang sedang
dieksekusi tersebut, maka proses yang sedang dieksekusi oleh CPU akan
digantikan oleh proses yang berada di ready queue tersebut. Preemptive
SJF sering disebut juga Shortest-Remaining- Time-First scheduling.
· Non-preemptive. CPU tidak memperbolehkan proses yang ada di ready queue untuk
menggeser proses yang sedang dieksekusi oleh CPU meskipun proses yang baru tersebut
mempunyai burst time yang lebih kecil.
c. Priority Scheduling
Priority Scheduling merupakan algoritma
penjadwalan yang mendahulukan proses yang memiliki prioritas tertinggi. Setiap
proses memiliki prioritasnya masing-masing. Prioritas suatu proses dapat
ditentukan melalui beberapa karakteristik antara lain:
· Time limit.
· Memory requirement.
· Akses file.
· Perbandingan antara I/O burst dengan CPU burst.
· Tingkat kepentingan proses.
Pada algoritma ini terdapat 2 macam
penjadwalan, yaitu :
· Preemptive. Jika ada suatu proses yang baru datang memiliki prioritas yang lebih
tinggi daripada proses yang sedang dijalankan, maka proses yang sedang berjalan
tersebut dihentikan, lalu CPU dialihkan untuk proses yang baru datang tersebut.
· Nonpreemtive. Proses yang baru datang tidak dapat menganggu proses yang sedang
berjalan, tetapi hanya diletakkan di depan queue.
Kelemahan pada priority scheduling adalah
dapat terjadinya indefinite blocking (starvation). Solusi dari
permasalahan ini adalah aging, yaitu meningkatkan prioritas dari setiap
proses yang menunggu dalam queue secara bertahap.
d. Round Robin Scheduling
Algoritma ini menggilir proses yang ada di
antrian. Setiap proses mendapat jatah sebesar time quantum. Jika time
quantum-nya habis atau proses sudah selesai, CPU akan dialokasikan ke
proses berikutnya.
Semua proses mendapat jatah waktu yang sama
dari CPU yaitu (1/n), dan tak akan menunggu lebih lama dari (n-1)q dengan q
adalah lama 1 quantum. Jika q terlalu besar maka akan sama dengan
algoritma FCFS. Jika terlalu kecil, akan semakin banyak peralihan proses
sehingga banyak waktu terbuang.
Gambar Urutan
Kejadian Algoritma Round Robin
Konsep dasar dari
algoritma ini adalah dengan menggunakan timesharing. Pada dasarnya algoritma
ini sama dengan FCFS, hanya saja bersifat preemptive. Setiap proses mendapatkan
waktu CPU yang disebut dengan waktu quantum (quantum time) untuk
membatasi waktu proses, biasanya 1-100 milidetik. Setelah waktu habis, proses
ditunda dan ditambahkan pada ready queue. Jika suatu proses memiliki CPU burst lebih
kecil dibandingkan dengan waktu quantum, maka proses tersebut akan melepaskan
CPU jika telah selesai bekerja, sehingga CPU dapat segera digunakan oleh proses
selanjutnya. Sebaliknya, jika suatu proses memiliki CPU burst yang lebih besar
dibandingkan dengan waktu quantum, maka proses tersebut akan dihentikan
sementara jika sudah mencapai waktu quantum, dan selanjutnya mengantri kembali
pada posisi ekor dari ready queue, CPU kemudian menjalankan proses berikutnya. Jika
terdapat n proses pada ready queue dan waktu quantum q, maka setiap
proses mendapatkan 1/n dari waktu CPU paling banyak q unit waktu
pada sekali penjadwalan CPU.
Tidak ada proses yang
menunggu lebih dari (n-1)q unit waktu. Performansi algoritma
round robin dapat dijelaskan sebagai berikut, jika q besar, maka yang digunakan
adalah algoritma FIFO, tetapi jika q kecil maka sering terjadi context switch.
Misalkan ada 3 proses: P1, P2, dan P3 yang meminta pelayanan CPU dengan
quantum-time sebesar 4 milidetik, maka dapat digambarkan sebagai berikut
:
Maka Gant chart-nya dapat digambarkan sebagai
berikut :
Waktu tunggu untuk P1 adalah 6, P2
adalah 4, dan P3 adalah 7 sehingga rata-rata waktu tunggu adalah (6+4+7)/3
= 5.66 milidetik.
Algoritma Round-Robin ini di satu sisi
memiliki keuntungan, yaitu adanya keseragaman waktu. Namun di sisi lain,
algoritma ini akan terlalu sering melakukan switching seperti yang terlihat
pada Gambar berikut.
Semakin besar quantum-timenya maka switching
yang terjadi akan semakin sedikit.
Gambar Waktu quantum yang lebih
kecil meningkatkan context switch
Pada multiprogramming, selalu akan terjadi
beberapa proses berjalan dalam suatu waktu.
Sedangkan pada uniprogramming hal ini tidak akan terjadi, karena hanya
ada satu proses yang berjalan pada saat tertentu.
Konsep dasar dari multiprogramming ini
adalah: suatu proses akan menggunakan CPU sampai proses tersebut dalam status wait
(misalnya meminta I/O) atau selesai.
Pada saat wait , maka CPU akan nganggur (idle). Untuk mengatasi hal ini, maka CPU dialihkan
ke proses lain pada saat suatu proses sedang dalam wait, demikian
seterusnya.
5.
Implementasi Pada Sistem Operasi Linux
Pada sistem operasi Linux, untuk melihat
proses yang sedang terjadi, maka digunakan perintah ps. Apabila belum tahu
perintah ps itu digunakan untuk apa, maka kita bisa tanya ke library
menggunakan perintah man, kemudian diikuti nama perintahnya (#man ps), kemudian
tekan enter, seperti pada gambar berikut
ini.
Gambar Menjalankan
perintah man pada Linux 1
Sedangkan untuk menampilkan proses tree atau
memperoleh informasi tentang threads dan security info, dapat dilakukan dengan
melakukan scroll mouse ke arah bawah, sehingga akan diperoleh tampilan seperti
berikut ini.
Gambar Menjalankan perintah man pada Linux 2
Pada sistem operasi Linux Debian, untuk
melihat proses yang terjadi dapat dilakukan dengan mengetikkan perintah ps pada
terminal Linux, seperti berikut ini.
Contoh proses
pada sistem operasi Linux 1
Jika dijalankan perintah # ps –au, maka akan
diperoleh tampilan seperti berikut ini.
Gambar Contoh
proses pada sistem operasi Linux 2
Pada sistem Linux, terdapat banyak cara untuk
menangani eksekusi-eksekusi perintah. Diantaranya, diberi kesempatan untuk
membuat daftar perintah dan menentukan kapan perintah dijalankan oleh sistem.
Misalnya perintah “at” digunakan untuk memberi peluang menjalankan program
berdasarkan waktu yang ditentukan.
Contoh script pada Linux ditunjukkan pada gambar berikut ini.
Gambar Menjalankan
perintah at
Pada gambar di atas, langkah pertama adalah
membuat file pada directory home/yamta/ dengan nama belajar_linux. Perintah
untuk membuatnya adalah : #touch belajar_linux
File di atas sebagai tempat kita menyimpan
dan melihat proses. Dengan demilian, maka pada Wednesday December 11 2013 jam
13:00 akan terjadi proses ping ke IP 192.168.0.1, yang keterangan prosesnya ada
pada file /home/yamta/belajar_linux.
Untuk melihat faktor/elemen lainnya , maka
menggunakan perintah ps –u seperti gambar berikut ini
Gambar Hasil
perintah ps -u
Untuk melihat faktor/elemen lainnya, gunakan
option –u (user). %CPU adalah presentasi CPU time yang digunakan oleh proses
tersebut, %MEM adalah presentasi system memori yang digunakan proses, SIZE
adalah jumlah memori yang digunakan, RSS (Real System Storage) adalah jumlah
memori yang digunakan, START adalah kapan proses tersebut diaktifkan. Sedangkan
pada option -u yang disertai untuk mencari proses yang spesifik pemakai. Proses
diatas hanya terbatas pada proses milik pemakai, dimana pemakai teresbut
melakukan login.
Untuk menampilkan proses Parent dan Child
maka ketikkan perintah #ps –eH, sehingga akan keluar tampilan seperti berikut
ini.
Gambar Hasil
perintah ps -u
Pada gambar di atas terlihat hubungan proses
parent dan child. Setelah mengetikkan perintah ps -eH kemudian enter, maka
proses child muncul dibawah proses parent dan proses child ditandai dengan
awalan beberapa spasi. Karena pada opsi e disini untuk memilih semua proses dan
opsi H menghasilkan tampilan proses secara hierarki.
Dengan mengetikkan perintah # ps –ef, maka
akan ditampilkan gambar seperti berikut ini.
Gambar Hasil
perintah ps –ef
Untuk menampilkan semua proses pada sistem
dalam bentuk hirarki parent/child, maka dilakukan dengan mengetikkan perintah #
pstree, seperti gambar berikut ini.
Gambar Hasil
perintah pstree
Percobaan diatas menampilkan semua proses
pada sistem dalam bentuk hirarki parent/child. Proses parent di sebelah kiri
proses child. Sebagai contoh proses init sebagai parent (ancestor) dari semua
proses pada sistem. Beberapa child dari init mempunyai child. Proses login
mempunyai proses bash sebagai child. Proses bash mempunyai proses child startx.
Proses startx mempunyai child xinit dan seterusnya.
Untuk melihat semua PID, maka dilakukan
dengan mengetikkan perintah #pstree –p, sehingga akan menghasilkan tampilan
seperti berikut ini.
Untuk melihat semua PID untuk proses gunakan
opsi –p. Jadi , menampilakn semua proses pada sistem dalam bentuk hirarki
parent/child. Disini memberitahukan proses yang sedang berjalan bahwa ada
sesuatu yang harus dikendalikan. Dan berdasarkan sinyal yang dikirim ini maka
dapat bereaksi dan administrator dapat menentukan reaksi tersebut.
Untuk menampilkan proses dan ancestor, maka
dilakukan dengan mengetikkan perintah # pstree –h, sehingga hasilnya sebagai
berikut.
Untuk menampilkan semua proses (PID, TTY,
TIME dan CMD), dilakukan dengan mengetikkan perintah $ ps ax | more. Opsi a
akan menampilkan semua proses yang dihasilkan terminal (TTY). Opsi x
menampilkan semua proses yang tidak dihasilkan terminal. Secara logika opsi ini
sama dengan opsi –e. Terdapa 5 kolom : PID, TTY, STAT, TIME dan COMMAND.
Untuk menampilkan semua proses dalam format
daftar penuh, meka perintahnya adalah # ps ef | more, sehingga akan
menghasilkan tampilan sebagai berikut.
Opsi –e f akan menampilkan semua proses dalam
format daftar penuh. Jika halaman penuh terlihat prompt –More– di bagian bawah
screen, tekan q untuk kembali ke prompt perintah.
0 comments:
Post a Comment