Halaman

Selasa, 04 Mei 2010

Multiprogramming

Multiprogramming Melayani banyak program yang tidak ada hubungannya satu sama lain dan dijalankan sekaligus dalam satu komputer yang sama.

Melayani banyak program yang tidak ada hubungannya satu sama lain dan dijalankan sekaligus dalam satu komputer yang sama.

Pelaksanaan instruksi yang diterapkan adalah:
- program dimuat ke dalam memori,
- program dijalankan sampai mengakses perangkat I/O,
- berpindah (switch) ke pekerjaan lain,
- langkah tersebut berulang terus menerus,
- untuk proses perpindahan (switching), dilaksanakan oleh software

A. Status Proses Dalam Multiprogramming.

Meskipun setiap proses merupakan Entitiy yang berdiri sendiri, dan masing-masing memiliki program Counter dan status internal, beberapa proses sering kali harus berinteraksi dengan proses yang lain. Keluaran dari suatu proses dapat menjadi masukan bagi proses yang lain. Jika proses yang sedang menunggu masukan tidak menemukan masukan yang dikehendaki, proses tersebut diblok sampai masukan tersedia.
Pada saat proses diblok, secara logika proses tersebut tidak dapat dilanjutkan karena menuggu masukan yang belum tersedia. Dapat terjadi bahwa proses yang Ready dan dapat di-run terpaksa harus dihentikan karena sistem operasi arus mengalokasikan CPU ke proses lain untuk sementara waktu.
Proses dapat berada pada status berikut:

1) Submitt:
Proses baru saja dikirimkan oleh user dan masih menunggu untuk dilayani.
2) Running:
Proses benar-benar menggunakan CPU pada saat itu.
3) Ready:
Proses berhenti sementara untuk memberikan kesempatan pada proses lain untuk menggunakan CPU.
4) Blocked:
Proses tidak dapat di-Run sampai terjadi kejadian eksternal yang sesuai (misalkan selesainya operasi input/output atau telah tersedianya data input).
5) Finished:
Proses telah dilaksanakan secara sempurna.

Di antara status Running, Ready dan Blocked, hanya terdapat 4 kemungkinan perubahan status, yaitu:
1) Running ke Blocked:
Terjadi jika proses diblok, karena menunggu masukan atau menunggu selesainya aktivitas I/O.
2) Running ke Ready:
Terjadi jika Process Scheduler menghentikan proses yang sedang running untuk memberikan kesempatan pada proses lain menggunakan CPU.
3) Blocked ke Ready:
Terjadi jika ada kejadian eksternal yang menyebabkan proses dapat dijalankan kembali. Misalnya datangnya input atau selesainya suatu aktifitas I/O.
4) Ready ke Running:
Terjadi jika proses siap untuk menggunakan CPU dan masukan yang sesuai untuk proses tersebut telah tiba.

B. Penjadwalan Proses (CPU) Dalam Multiprogramming.

Penjadwalan CPU berhubungan dengan masalah penentuan proses dalam antrian yang akan diberikan CPU. Terdapat beberapa algoritma penjadwalan yang dapat digunakan, masing-masing dengan sifat-sifat khasnya sendiri. Dalam memilih algoritma yang akan dipakai dapat digunakan bermacam kriteria untuk membandingkan suatu algoritma dengan algoritma yang lain.
Kriteria yang digunakan dalam perbandingan dapat menyebabkan perbedaan dalam penentuan algoritma yang akan dipilih. Kriteria-kriteria tersebut meliputi:

1) Pemanfaatan CPU.
Biaya CPU yang mahal menuntut pemakai untuk selalu memberikan pekerjaan kepada CPU sehingga kalau dimungkinkan maka dibuat kondisi yang sedemikian rupa dimana CPU tidak memiliki waktu luang. Dalam sistem susungguhnya, pemanfaatan CPU berkisar antara 40% sampai 90%.

2) Throughput.
Untuk mengukur beban pekerjaan CPU, salah satu cara adalah dengan menghitung jumlah job yang diselesaikan setiap satuan waktu tertentu, yang disebut Throughput. Untuk job yang lama, kecepatannya mungkin satu job per jam, sedangkan untuk transaksi pendek dapat mencapai 10 job per detik.

3) Turnaround Time.
Dari sudut pandang suatu job, mungkin yang paling penting adalah lamanya waktu penyelesaian job itu. Selang waktu dari saat penyerahan job sampai waktu penyelesaian disebut Turnaround Time, yang meliputi juga waktu tunggu untuk memasuki memori, waktu tunggu di antrian, pengerjaan di CPU, dan pelaksanaan proses I/O.

4) Waiting Time (Waktu Tunggu).
Sebagai alternatif Turnaround Time, dapat digunakan Waktu Tunggu di antrian untuk setiap job. Waktu Tunggu ini tidak termasuk waktu pelaksanaan tugas I/O.

5) Response Time (Waktu Tanggap).
Seringkali suatu proses dapat mengeluarkan hasil yang relatif lebih cepat daripada waktu penyelesaian proses tersebut. Bersamaan dengan pengeluaran itu, proses tersebut dapat melanjutkan perhitungan hasil baru selanjutnya. Waktu yang dihitung sejak mulai dari penyerahan suatu permintaan sampai respons (tanggapan) pertama diperoleh pemakai tersebut Response Time.

Lima buah algoritma yang akan ditelaah untuk penjadwalan CPU, antara lain:

1) First Come First Serve (FCFS).
Algoritma ini merupakan algoritma yang paling sederhana. Proses yang meminta CPU lebih dulu akan dilayani CPU lebih dahulu pula. Implementasi FCFS mudah diatur dengan antrian FIFO (First In First Out). Ketika proses memasuki antrian, proses ini disambungkan dengan ekor dari antrian dan menjadi ekor yang baru. Jika CPU sedang bebas tugas, maka CPU akan dialokasikan untuk proses yang berada di awal antrian. Proses tersebut lalu dikeluarkakn dari antrian.
2) Shortest Job First (SJF).
Shortest Job First menelaah setiap job berdasarkan lamanya waktu CPU untuk pengerjaan proses berikutnya. Ketika CPU siap dipakai, maka akan diberikan kepada job yang memiliki waktu pengerjaan paling sedikit. Jikaa dua job mempunyai waktu pengerjaan yang sama, FCFS digunakan, berarti yang datang lebih dulu akan dilayani.
Shortest Job First telah terbukti optimal dalam hal perolehan waktu tunggu rata-rata yang paling minimum dari beberapa job. Keadaan ini dicapai dengan memindahkan job pendek dalam antrian sebelum job yang panjang sehingga mengurangi waktu tunggu job pendek lebih banyak daripada penambahan waktu tunggu dari job panjang.
Kesulitan dengan Shortest Job First adalah dalam hal yang berkaitan dengan penentuan lamanya pengerjaan job yang masuk berikutnya. Salah satu cara yaitu dengan mendorong pemilik job (tertama untuk job panjang) agar memperkirakan lamanya waktu yang dibutuhkan untuk menyelesaikan jobnya.

3) Shortest Remaining Time First (SRTF).
Algortima penjadwalan ini hampir serupa dengan Shortest Job First, tetapi berbeda dalam hal penambahan metode penundaan job. Dalam SJF job yang sudah masuk ke dalam CPU jika ada job dalam antrian yang memiliki waktu penyelesaian yang lebih kecil.
Algoritma SRTF adalah algoritma Preemptive, yaitu algoritma dimana job-job yang sedang dijalankan secara logik dapat ditunda untuk sementara waktu untuk memberikan kesempatan waktu CPU kepada job-job lainnya. Jadi, dari luar sistem job-job tersebut tampak seolah-seolah sedang dikerjakan bersama-sama.

4) Round Robin.
Algoritma Penjadwalan Round Robin sebetulnya dirancang untuk sistem Time-sharing, dimana job-job diberikan satuan waktu yang sama, disebut Time Quantum ini berkisar antara 10 sampai 100 milidetik. Queue (Antrian) dibuat secara sirkular kemudian skeduler akan mengelilingi antrian ini sambil mengalokasikan CPU kepada setiap proses/job selama waktu quantum tadi.
Implementasi penjadwalan Round Robin dilakukan dengan antrian FIFO. Job baru ditambahkan ke ekor antrian. Job di kepala antrian dikirim ke CPU, setelah itu ada dua kemungikinan, waktu proses job kurang dari waktu quantum, ataupun lebih dari waktu quantum. Dalam kemungkinan pertama, job sendiri yang meninggalkan CPU sebelum waktunya habis. Sedangkan kemungkinan kedua, job akan dikeluarkan oleh sistem operasi dari CPU dan diletakkan di akhir (ekor) antrian.

5) Preemptive Priority.
Harus diperhatikan bahwa penjadwalan selalu dikelola dengan prioritas, baik rendah ataupun tinggi. Job dengan prioritas yang sama ada dalam penjadwalan FCFS. Algoritma penjadwalan Shortest Job First adalah bentuk khusus dari penjadwalan Prioritas yang umum karena SJF dapat dijalankan dengan prioritas menurut nilai yang dihitung dari kebalikan (perkirakan) waktu penyelesaian job.
Prioritas-prioritas biasanya dalam bentuk bilangan yang telah ditetapkan sebelumnya. Walaupun demikian masih belum ada kesepakatan apakah suatu angka kecil memang menunjukkan prioritas yang rendah. Prioritas dapat dihitung baik secara ienternal maupun eksternal. Prioritas yang terdefinisi secara internal menggunakan ukuran kuantitas, seperti batas waktu, kebutuhan memori, jumlah file yang dibukanya, ataupun perbandingan antara waktu I/O dengan waktu CPU, dan lain-lain. Prioritas eksternal ditentukan oleh kriteria di luar sistem operasi, misalnya jumlah iuran yang dibayar untuk pemakaian komputer, bagian yang mensponsori kerja, bahkan mungkin saja faktor-faktor politis juga.
Masalah utama dengan algoritma penjadwalan Prioritas adalah penahanan (blocking) takterbatas atau lebih dikenal starvation. Starvation muncul jika suatu job telah siap untuk dijalankan (sedang menunggu CPU) tetapi tidak pernah diberi kesempatan untuk menyelesaikan jobnya karena prioritasnya rendah. Pemecahan masalah ini adalah Aging (untuk selanjutnya disebut pemetaan). Pemetaan adalah teknik yang menaikkan secara berkala prioritas job yang sudah lama menunggu di dalam sistem. Misalnya untuk kisaran prioritas antara 0 (rendah) sampai 127 (tinggi), prioritas job yang menuggu dapat dinaikkan 1 setiap 15 menit . Sehingga walaupun prioritas job semula adalah 0, namun suatu saat mampu pula mencapai prioritas tertinggi dan akhirnya dijalankan oleh CPU.
Walaupun sesungguhnya suatu sistem dapat memiliki beberapa buah CPU, dalam pembahasan selanjutnya untuk penyederhanaan hanya akan disediakan satu CPU untuk pengerjaan beberapa job.

Multiprocessor/Paralel System


Komputer ini memiliki lebih dari satu processor. Akibatnya meningkatkan jumlah suatu proses yang dapat diselesaikan dalam satu unit waktu (pertambahan throughput ). Perlu diingat hal ini tidak berarti daya komputasinya menjadi meningkat sejumlah prosesornya. Yang meningkat adalah jumlah pekerjaan yang bisa dilakukannya dalam waktu tertentu.
Uang yang terpakai lebih sedikit karena prosesor -prosesor terdapat dalam satu komputer dan dapat membagi peripheral(ekonomis) seperti disk dan catu daya listrik.
Jika satu processor mengalami suatu gangguan, maka proses yang terjadi masih dapat berjalan dengan baik karena tugas prosesor yang terganggu diambil alih oleh prosesor lain.
Hal ini dikenal dengan istilah Graceful Degradation . Sistemnya sendiri dikenal bersifat fault tolerant atau fail-soft system .

Ada dua jenis multiprocessor system yaitu Symmetric MultiProcessing (SMP) dan Asymmetric MultiProcessing (ASMP). Dalam SMP setiap prosesor menjalankan salinan identik dari sistem operasi dan banyak job yang dapat berjalan di suatu waktu tanpa pengurangan performance. Sementara itu dalam ASMP setiap prosesor diberikan suatu tugas yang spesifik. Sebuah prosesor bertindak sebagai Master processor yang bertugas menjadwalkan dan mengalokasikan pekerjaan pada prosesor lain yang disebut slave processors . Umumnya ASMP dipake pada sistem yang besar.


0 komentar:

Posting Komentar