Apa perbedaan antara Multiprogramming dan Multitasking

10

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.

  1. Apakah gambaran umum ini benar? Jika tidak apakah itu karena WP salah atau karena saya membaca WP salah?
  2. Mengapa beberapa sumber tampaknya mengacaukan multi-program dan multi-tugas?
jsj
sumber
1
"dengan beberapa sumber yang kurang memiliki reputasi (seperti profesor perguruan tinggi saya)" - oh sayang. Saya harap dia lebih memiliki reputasi daripada Wikipedia, yang memiliki banyak konten setengah jadi di CS.
Raphael
"multiprogramming" tampaknya lebih merupakan pendekatan historis. multitasking modern memang terkait dengan pemblokiran IO tetapi hanya salah satu faktor yang digunakan untuk menyulap proses. Selain itu hampir semua multitasking modern adalah pendahuluan dengan dukungan dari CPU (yang tidak selalu memiliki dukungan bertahun-tahun yang lalu dan proses berperilaku baik seharusnya memanggil metode menunggu berbasis OS yang mendukung kerja sama).
vzn
2
@Raphael, Anda bisa membantu seluruh dunia dengan memanggangnya dengan sempurna.
vonbrand
1
@vonbrand saya mencoba, tetapi sayangnya ada cukup banyak ahli setengah matang untuk melakukan konter upaya tersebut.
Raphael
@ Raphael, dan kerumunan itu tidak muncul di sini juga?
vonbrand

Jawaban:

9

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.

vonbrand
sumber
artikel WP tampaknya menyiratkan bahwa multiprogramming tidak memiliki memori virtual, yang bertentangan dengan multitasking (sistem). Secara historis itu mungkin benar, tetapi apakah definisi itu ortogonal?
didierc
1
Kami memiliki IBM S / 370 multiprogram di sini di tahun 70-an, dan itu pasti tidak memiliki memori virtual (saya ingat itu memiliki disk yang hanya digunakan untuk spooling). Memori virtual memungkinkan Anda untuk memiliki lebih banyak program dalam RAM terbatas (karena Anda hanya menyimpan bagian-bagian yang "paling sering digunakan"), bahkan pemanfaatan yang lebih baik seperti itu. Jadi ya, saya anggap mereka benar-benar mandiri; tetapi dalam praktiknya hari ini Anda tidak akan menemukan satu tanpa yang lain. Kecuali mungkin di router WiFi atau ponsel Anda ...
vonbrand
Baik. Saya juga berpikir begitu. Sistem tertanam memang sering kurang memiliki perlindungan memori yang tepat, saya sadar akan hal itu. Namun demikian, dengan program berperilaku baik itu seharusnya tidak menjadi masalah. Itu tentu saja, tergantung pada vendor program.
didierc
@dierier ortogonal? maksud Anda benar-benar eksklusif?
jsj
2

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.

Rajesh Amarnath
sumber
0

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.

Vikash Jangra
sumber