1
QUEUE / ANTREAN
Pertemuan 7
QUEQUE
Queue atau antrean adalah suatu bentuk khusus dari list linier, dengan operasi
penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi
belakang (REAR) dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya, yang disebut sisi depan (FRONT)
dari list
QUEQUE
Jadi untuk antrean Q = [Q1, Q2, … … , Qn] FRONT(Q) = Q1 dan REAR(Q) = Qn
QUEQUE
Istilah yang digunakan dalam Queue :
FRONT(QUEUE)
Posisi elemen depan / teratas dari antrean
REAR(QUEUE)
Posisi elemen Belakang / terbawah dari antrean
NOEL(QUEUE)
Operator yang berfungsi untuk mengetahui jumlah elemen dalam antrean
FIFO
Operasi dari antrean (pertama masuk pertama keluar)
QUEQUE
Operasi yang dapat dilakukan terhadap Queue/antrean:
CREATE(QUEUE)
Operasi yang berfungsi untuk membuat antrean menjadi kosong
ISEMPTY(QUEUE)
Operasi yang berfungsi untuk mengetahui kondisi elemen dalam antrean apakah kosong atau tidak. Hasilnya bertype boolean.
INSERT(ELEMEN, QUEUE)
Operasi yang berfungsi untuk memasukkan elemen ke dalam antrean.
REMOVE(QUEUE)
Operasi untuk mengeluarkan elemen dari antrean.
QUEQUE
QUEQUE
PENYAJIAN QUEQUE
Antrean dapat disajikan di dalam komputer
dalam berbagai cara. Biasanya dengan
menggunakan one way list (linier list) ataupun menggunakan array.
Bila tidak disebutkan maka antrean akan
disajikan dalam bentuk array queue, dengan
dilengkapi dua variabel penunjuk. FRONT, berisi lokasi dari elemen depan dan REAR, berisi lokasi dari elemen belakang.
Bila nilai FRONT = NULL, menunjukan bahwa
QUEQUE
QUEQUE
Dapat kita lihat bahwa pada setiap kali
penghapusan, nilai lokasi FRONT akan bertambah 1. Untuk setiap kali pemasukan elemen, nilai REAR akan bertambah 1. Hal ini berakibat bahwa setelah pemasukkan elemen ke n (berawal dari antean
hampa), maka lokasi Queue(n) telah diduduki.
Disini mungkin saja tidak sebanyak n elemen ada dalam antrean (karena sudah dilakukan beberapa penghapusan).
ARRAY SIRKULAR
Untuk melakukan pemasukkan berikutnya, yakni
memasukkan elemen, kita dapat menggunakan lokasi Queue(1), demikian seterusnya. Dalam hal ini, kita menggunakan array sirkular, yakni bahwa Queue(1) datang sesudah Queue(n). berdasarkan asumsi ini, maka REAR adalah 1.
Secara yang sama, jika FRONT = n dan kita
akan melakukan penghapusan, maka sekarang FRONT adalah 1 bukan n + 1.
ARRAY SIRKULAR
Antrean yang disimpan dalam array
dengan 5 lokasi memory sebagai array sirkular.
ARRAY SIRKULAR
DEQUE
Deque merupakan bentuk variasi dari struktur
data antrean / queue. Struktur data tersebut
adalah deque (Deck atau Dequeue) dan antrean berprioritas (Priority Queue).
Deque adalah suatu list linier atau linear list
yang penambahan dan penghapusan elemennya dapat dilakukan pada kedua sisi ujung list tetapi tidak dapat dilakukan ditengah – tengah list.
Dengan definisi tersebut maka deque dapat disebut sebagai Queue Ganda atau Double
DEQUE
Penyajian deque adalah dengan array sirkular
atau array putar Deque. Disini kita
menggunakan dua pointer atau penunjuk, LEFT dan RIGHT yang berturut – turut menunjukkan pada sisi kiri dan sisi kanan dari deque.
Kita senantiasa mengasumsikan bahwa elemen
deque berurut dari kiri ke kanan. Pengertian
sirkular timbul karena elemen deque(1) berada sesudah elemen deque(n) dari array.
Kondisi LEFT = NULL untuk menyatakan bahwa
DEQUE
Selain deque yang kita sebutkan sebelumnya, masih ada 2 model variasi deque.
Deque Input terbatas
Suatu deque yang membatasi pemasukkan elemen hanya pada satu ujung dari list, sementara
penghapusan elemen boleh dilakukan pada kedua ujung list.
Deque Output terbatas
Suatu deque yang hanya memperbolehkan
penghapusan elemen pada salah satu ujung, tetapi memperbolehkan pemasukkan elemen pada kedua
DEQUE
Komplikasi yang dapat timbul dalam proses deque :
Terjadi Overflow, yakni pada saat suatu
elemen dimasukkan ke dalam deque yang sudah terisi penuh.
Terjadi Underflow, yakni bila suatu elemen
harus dihapus dari deque yang sudah hampa.
ANTREAN BERPRIORITAS
Antrean berprioritas adalah himpunan
elemen yang setiap elemennya telah diberikan sebuah prioritas dan urutan proses penghapusan elemen adalah berdasarkan aturan berikut :
Elemen yang prioritasnya lebih tinggi,
diproses lebih dahulu dibandingkan
dengan elemen yang prioritasnya lebih rendah.
ANTREAN BERPRIORITAS
Dua elemen dengan prioritas yang sama,
diproses sesuai dengan urutan mereka sewaktu dimasukkan ke dalam priority Queue.
ANTREAN BERPRIORITAS
Suatu prototype dari antrean berprioritas adalah
sistem time sharing. Disini program dengan prioritas yang lebih tinggi diproses terlebih
dahulu dan sejumlah program dengan prioritas yang sama akan membentuk queue yang
standar.
KERJA PROSESSOR
ANTREAN BERPRIORITAS
PRIORITAS : Mendahului pada antrian proses PREEMPSI : Menyerupai prioritas, proses di
bagian belakang antrian akan segera beralih ke bagian paling depan dari antrian itu.
Bahkan lebih dari itu, jika prosessor sedang bekerja, maka preempsi menghentikan kerja prosessor, mengeluarkan pekerjaan di dalam prosessor itu
PENJADWALAN PROSESSOR
Pertama Tiba Pertama Dilayani (PTPD)
ada juga yang menyebutnya dengan First Come First Served (FCFS) atau juga First In First Out (FIFO) merupakan
penjadwalan tanpa prioritas dan tanpa preempsi, merupakan proses serentak tersusun dalam antrian murni.
Pada PTPD proses yang tiba lebih dahulu
akan dilayani lebih dahulu. Kalau proses itu tiba pada waktu yang sama, maka
pelayanan dilaksanakan berdasarkan urutan mereka dalam antrian. Tidak
menjadi soal apakah lama proses mereka singkat atau lama, untuk dilayani oleh
prosessor. Proses di antrian belakang
harus menunggu sampai semua proses di depannya rampung dilaksanakan.
Proses Terpendek Dipertamakan (PTD)
disebut juga Shortest Job First (SJF)
merupakan penjadwalan dengan prioritas tanpa preempsi. Dasar prioritas adalah
pendeknya proses. Makin pendek proses makin tinggi prioritasnya.
Langkah pertama yang kita lakukan
adalah penentuan urutan prioritas
berdasarkan pendeknya proses yang
dilayani. Langkah kedua adalah penentuan saat tertentu, proses mana yang perlu
dilayani oleh prosessor.
Sekalipun urutan prioritas sudah
ditentukan, namun proses yang tiba lebih dahulu yang akan diproses terlebih dahulu dengan prioritas proses yang terpendek.
Proses Terpendek Dipertamakan Preempsi
(PTDP) disebut juga Preemptive Shortest Job First (PSJF) merupakan penjadwalan dengan prioritas dan dengan preempsi, Prioritas didasarkan kepada pendeknya sisa proses. Makin pendek sisa proses makin tinggi prioritasnya.
Kita menggunakan dua langkah untuk
melihat pelaksanaan penjadwalan ini.
Pertama, kita perhatikan saat proses tiba atau saat proses rampung. Kedua kita
hitung lama sisa proses yang lebih pendek dari sisa proses pada proses yang sedang dikerjakan, maka atas dasar preempsi,
proses yang sedang dikerjakan dikeluarkan dari prosessor.
Rasio Penalti Tertinggi Dipertamakan
(RPTD) disebut juga Highest Penalty Ratio Next (HPRN) termasuk kategori
penjadwalan dengan prioritas tanpa
Preempsi. Dasar prioritas adalah besarnya nilai rasio penalti.
Pada RPTD proses pendek pada bagian
belakang antrian akan mengalami banyak penundaan sedangkan pada RPTD proses
panjang akan mengalami banyak penundaan. Penjadwalan RPTD tetap mendahulukan
proses pendek, namun prioritas proses panjang akan turut meningkat melalui
peningkatan rasio penaltinya. Prioritas Proses panjang yang lama tertunda itu akan dapat menyusul prioritas proses pendek.
Rumus rasio penalti adalah T/t. Dalam hal
ini lama tanggap T adalah jumlah lama tunggu atau antri (waktu sia – sia) s
dengan lam aproses t. Sehingga rumus rasio penalti menjadi :
Rp = (s + t) / t
Puat Gelang (PG) disebut juga Round Robin (RR) merupakan penjadwalan tanpa prioritas tetapi
dengan preempsi.
Penjadwalan Puat Gelang dilakukan bergiliran berdasarkan antrian (tanpa prioritas), prosessor melayani sejenak setiap proses. Secara berturut – turut proses yang telah dilayani prosessor dan
belum rampung akan kembali ke akhir antrian yang ada pada saat itu, sehingga penggiliran ini berputar seperti gelang. Hanya proses yang telah rampung terlayani yang meninggalkan prosessor dan antrian itu.
Waktu sejenak yang digunakan oleh
prosessor untuk melayani setiap proses itu dikenal sebagai kuantum waktu. Dengan mengubah - ubah nilai kuantum waktu, kita menemukan hasil layanan yang
berbeda terhadap antrian proses yang sama.
35