Saya merasa sulit untuk membedakan secara jelas antara Multiprogramming dan Multitasking.
Sumber utama saya adalah Wikipedia , tetapi artikel WP tampaknya sedikit berselisih dengan beberapa sumber yang kurang memiliki reputasi (seperti profesor perguruan tinggi saya).
Ketika saya membaca WP, multiprogramming adalah cara dasar untuk meningkatkan throughput CPU, dengan pengalihan konteks ketika sebuah proses menunggu untuk I / O.
Multiprogramming tidak memberikan jaminan bahwa suatu program akan berjalan tepat waktu. Memang, program pertama mungkin berjalan sangat baik selama berjam-jam tanpa perlu akses ke perangkat.
Cooperative Time-sharing , sinonim dengan Cooperative Multitasking , merupakan peningkatan pada multiprogramming (yang tidak identik). Konteks CPU-switch secara teratur untuk memberikan kesan eksekusi simultan, tetapi proses masih diperlukan untuk menghasilkan - dan program yang dirancang buruk dapat membuat kelaparan seluruh sistem.
Preemptive Multitasking mengambil kontrol penjadwalan yang lebih agresif, mengutamakan beberapa proses di atas yang lain, dll.
- Apakah gambaran umum ini benar? Jika tidak apakah itu karena WP salah atau karena saya membaca WP salah?
- Mengapa beberapa sumber tampaknya mengacaukan multi-program dan multi-tugas?
Jawaban:
Mereka kurang lebih identik. Multiprogramming lebih digunakan ketika satu CPU terlibat, yang sedang beralih dari satu proses ke yang lain, proses yang resiging dalam memori secara bersamaan. Seiring datang utas, dan itu tidak beralih di antara program lagi ...
Prosesor, khususnya jalur intel, memiliki mekanisme untuk multitasking sejati (interupsi timer, instruksi istimewa) sejak setidaknya 80286. M68000 yang digunakan pada Mac pertama adalah prosesor dengan kapasitas multitaking penuh. Ini bukan perkembangan terbaru dalam arsitektur. Perhatikan bahwa sistem berbagi pertama kali menukar program pengguna masuk dan keluar, dan dengan demikian tidak benar-benar multiprogram dalam arti memiliki beberapa program dalam memori pada saat yang sama.
Idenya adalah untuk memiliki beberapa program yang berada di memori secara bersamaan, sehingga ketika seseorang menghasilkan CPU (dengan menyelesaikan atau menunggu) ada yang lain siap untuk menggunakan CPU, sehingga meningkatkan pemanfaatan CPU (dan seperti yang dapat Anda pertimbangkan setiap CPU meledak menjadi mempersiapkan penggunaan I / O, tingkatkan penggunaan secara keseluruhan). Ini memberikan hasil yang lebih baik (penting dalam sistem batch).
Seiring waktu berbagi, beberapa pengguna interaktif terhubung ke mesin. Gagasan yang sama, simpan program mereka di sekitar tetapi beralih di antara mereka cukup cepat sehingga mereka memiliki ilusi "memiliki komputer untuk diri mereka sendiri". Membutuhkan pengatur waktu yang mengganggu CPU untuk menghindari monopoli.
Pada mesin pribadi tidak ada banyak insentif untuk menjalankan beberapa program sekaligus, setidaknya pada awalnya (satu pengguna di depan mesin sangat terbatas tidak berharap banyak). Ketika mesin tumbuh, cara untuk mengatasi ini dan memungkinkan beberapa program sekaligus tanpa mengubah sistem operasi banyakadalah "multitasking kooperatif", di mana setiap program seharusnya menghasilkan secara berkala ke sistem operasi untuk memilih yang lain untuk dijalankan. Karena program yang melakukan ini dalam kontrol penuh, ia dapat memilih untuk melakukan ini ketika tidak ada yang bisa dikacaukan oleh orang lain. Tak perlu dikatakan, sebuah program "lupa" untuk memenuhi tugasnya untuk menghasilkan mendapat dorongan yang menarik dalam kinerja ... sistem Mac awal bekerja dengan cara ini, dan untuk alasan di atas ini tidak bertahan terlalu lama. Pada embedded system tanpa atau hanya sistem operasi yang belum sempurna, dan serangkaian program yang dikontrol ketat berjalan, ini tentu saja merupakan opsi yang ataktif.
sumber
Perbedaan antara Multitasking dan Multiprogramming? Multi tasking adalah ekstensi logis dari pemrograman multi. Klasik dalam lingkungan multi pemrograman, lebih dari satu pengguna berbagi cpu dan cpu dengan cepat beralih dari satu pengguna ke yang lain, memberikan transparansi lengkap satu sama lain. Dalam multitasking, pengguna diganti dengan program yaitu lebih dari satu program berbagi cpu dan cpu dengan cepat beralih dari satu program ke program lainnya. Sebenarnya perangkat lunak yang berada di disk adalah program. Ketika dimasukkan ke dalam RAM untuk dieksekusi dikenal sebagai proses atau tugas dan ketika berada di dalam CPU dan mengeksekusi, dikenal sebagai utas. Jadi multiprograaming pada dasarnya untuk multi-pengguna, dan multitasking adalah untuk pengguna tunggal dengan banyak program. Karena sebagian besar OS modern mendukung keduanya, sehingga mereka sering mengeja secara bergantian.
sumber
Ada banyak perbedaan antara multitasking dan multiprogramming.
Multitasking menjalankan lebih dari satu tugas sekaligus. Misalnya, Anda mendengarkan lagu, mencetak kertas, dan mengetik di MS-Word secara bersamaan.
Saat multiprogramming, dalam tipe OS ini, kami meningkatkan pemanfaatan CPU menggunakan buffering dan spooling. Dalam eksekusi berurutan, CPU duduk diam setelah menjalankan suatu program dan memuat program berikutnya dari memori utama. Selama operasi i / o cpu juga duduk idel, CPU juga duduk idle, tetapi menggunakan lingkungan multi-pemrograman, CPU beralih ke program berikutnya dan memprosesnya. Ini adalah teknik yang digunakan dengan bantuan buffering dan spooling.
sumber