Saya membaca bahwa DOS adalah OS satu-tugas.
Tetapi jika versi lama Windows (juga termasuk Windows 95?) Hanyalah pembungkus DOS, bagaimana Windows dapat berjalan sebagai OS multitasking?
windows
multitasking
Arkonix
sumber
sumber
print
utilitas untuk Windows 2.1-3.0, atau ansi.sys dari MS-DOS 5.0), bahkan setelah 12 bulan yang dinyatakan akhir dari Masa tenggang kehidupan. Hanya saja tidak semudah dijelajahi seperti dokumentasi produk aktif, Anda harus spesifik dalam pencarian Anda.Jawaban:
Windows 95
Windows 95 jauh lebih dari "hanya pembungkus" untuk MS-DOS . Mengutip Raymond Chen:
Windows 95 benar-benar terhubung / mengesampingkan hampir semua MS-DOS, menjaganya sebagai lapisan kompatibilitas sambil melakukan semua pekerjaan berat itu sendiri. Ini juga menerapkan multitasking preemptive untuk program 32-bit.
Pra-Windows 95
Windows 3.x dan yang lebih tua kebanyakan 16-bit (dengan pengecualian Win32s, lapisan kompatibilitas yang menjembatani 16 dan 32, tapi kami akan mengabaikannya di sini), lebih bergantung pada DOS, dan hanya menggunakan multitasking kooperatif - itu yang tidak memaksa program berjalan untuk beralih; mereka menunggu program yang sedang berjalan untuk menghasilkan kontrol (pada dasarnya, katakan "saya sudah selesai" dengan memberitahu OS untuk menjalankan program berikutnya yang sedang menunggu).
Arsitektur Windows 3.x
Adapun bagaimana program Windows awal akan menghasilkan kontrol:
sumber
Semua DOS akan melihat aplikasi tunggal ini (Windows atau lainnya) berjalan, yang akan melewati kontrol tanpa keluar. Secara teori, preemptive multitasking mungkin dapat diimplementasikan di atas DOS dengan menggunakan jam waktu nyata dan gangguan perangkat keras untuk secara paksa memberikan kontrol kepada penjadwal. Seperti komentar Tonny , ini sebenarnya dilakukan oleh beberapa OS yang berjalan di atas DOS.
386 mode yang disempurnakan?
Catatan: ada beberapa komentar tentang 386 mode Windows 3.x yang ditingkatkan menjadi 32-bit, dan mendukung preemptive multitasking.
Ini adalah kasus yang menarik. Untuk meringkas posting blog yang ditautkan , 386 mode yang ditingkatkan pada dasarnya adalah hypervisor 32-bit, yang menjalankan mesin virtual. Di dalam salah satu mesin virtual itu menjalankan mode standar Windows 3.x, yang melakukan semua hal yang tercantum di atas.
MS-DOS juga akan berjalan di dalam mesin-mesin virtual, dan tampaknya mereka sebelumnya multitasked - sehingga tampaknya 386 peningkatan mode hypervisor akan berbagi irisan waktu CPU antara mesin virtual (salah satunya berjalan normal 3.x dan yang lain menjalankan MS -DOS), dan masing-masing VM akan melakukan hal sendiri - 3.x akan bekerja sama multitask, sementara MS-DOS akan menjadi tugas tunggal.
MS-DOS
DOS sendiri adalah single-tasking di atas kertas, tetapi memang memiliki dukungan untuk program TSR , yang akan tetap berada di latar belakang sampai dipicu oleh gangguan hardware. Jauh dari multitasking sejati, tetapi juga tidak sepenuhnya memiliki tugas tunggal.
Semua pembicaraan tentang bit-ness ini? Saya bertanya tentang multitasking!
Yah, sebenarnya sedikit-ness dan multitasking tidak saling bergantung. Seharusnya dimungkinkan menerapkan mode multitasking apa pun dalam bit-ness. Namun, perpindahan dari prosesor 16-bit ke prosesor 32-bit juga memperkenalkan fungsionalitas perangkat keras lain yang bisa membuat multitasking preemptive lebih mudah untuk diimplementasikan.
Juga, karena program 32-bit adalah baru, lebih mudah untuk membuatnya bekerja ketika mereka dipaksa keluar - yang mungkin telah merusak beberapa program 16-bit lama.
Tentu saja, ini semua spekulasi. Jika Anda benar-benar ingin tahu mengapa MS tidak menerapkan preemptive multitasking di Windows 3.x (386 mode yang disempurnakan meskipun demikian), Anda harus bertanya kepada seseorang yang bekerja di sana.
Juga, saya ingin memperbaiki asumsi Anda bahwa Windows 95 adalah hanya pembungkus untuk DOS;)
sumber
Itu terus menjalankan satu program, yang disebut windows. Yang satu itu menyebarkan waktu CPU (dan sumber daya lainnya) antara berbagai program.
Pertimbangkan analogi ini:
Anda memiliki kantor yang hanya dapat memiliki satu orang pada saat itu (orang itu disebut tuan atau Nona DOS). Orang itu mengerjakan satu hal pada saat itu. Misalnya telepon satu orang dan mulai mengobrol 24/7 dengannya.
Sekarang Anda ganti orang itu dengan Tuan sekretaris. (windows). Ini akan menelepon seseorang dan berbicara sepanjang waktu dengannya (masih satu tugas). Kemudian setelah beberapa waktu orang lain akan berkata, "Saya sudah bicara cukup untuk saat ini. Bicaralah dengan orang lain dan telepon saya kembali sedikit".
Pak sekretaris akan memanggil orang lain. Obrolan dengan yang itu sampai orang itu mengatakan hal yang sama. Kemudian ia akan memanggil orang berikutnya sampai pada akhir daftar orang untuk diajak bicara. Pada saat itu akan dimulai lagi di atas.
Jika Anda menambahkan banyak prosesor, prosesnya menjadi semakin rumit. :)
sumber
Dalam sistem operasi modern, sistem operasi mengontrol semua sumber daya perangkat keras, dan aplikasi yang berjalan disimpan dalam kotak pasir. Aplikasi tidak diizinkan untuk mengakses memori yang tidak dialokasikan oleh OS untuk aplikasi itu, dan tidak dapat secara langsung mengakses perangkat keras di komputer. Jika akses perangkat keras diperlukan, aplikasi harus berkomunikasi melalui driver perangkat.
OS dapat menegakkan kontrol ini, karena memaksa CPU untuk masuk ke mode terlindungi .
DOS, di sisi lain, tidak pernah memasuki mode terproteksi, tetapi tetap dalam mode nyata *. Dalam mode nyata, aplikasi yang berjalan dapat melakukan apa saja yang diinginkan, misalnya mengakses perangkat keras secara langsung. Tetapi aplikasi yang berjalan dalam mode nyata juga dapat memberitahu CPU untuk masuk ke mode terlindungi.
Dan bagian terakhir ini memungkinkan aplikasi seperti Windows 95 untuk memulai lingkungan multi-threaded meskipun pada dasarnya diluncurkan dari DOS.
DOS (Disk Operating System), afaik, tidak lebih dari sistem manajemen file. Ini menyediakan sistem file, mekanisme untuk menavigasi sistem file, beberapa alat, dan kemungkinan untuk meluncurkan aplikasi. Itu juga memungkinkan beberapa aplikasi tetap tinggal, misalnya driver mouse dan emulator EMM. Tapi itu tidak berusaha untuk mengontrol perangkat keras di komputer seperti OS modern.
* Ketika DOS pertama kali dibuat pada tahun 70-an, mode terproteksi tidak ada dalam CPU. Tidak sampai prosesor 80286 di pertengahan 80-an yang dilindungi mode menjadi bagian dari CPU.
sumber
Sebelum Windows 3.x yang merupakan versi pertama untuk aplikasi DOS multitask, ada program seperti DesqView yang bisa melakukan hal yang sama. Jika seseorang mis menjalankan tiga sesi DOS sekaligus, maka DesqView akan membuat empat mesin virtual. Tiga sesi DOS masing-masing akan berpikir bahwa mereka "memiliki" seluruh mesin, kecuali bahwa tidak satu pun dari mereka yang benar-benar melakukan file I / O. Sebagai gantinya, versi DOS yang berjalan di setiap sesi akan ditambal sehingga akan meneruskan permintaan file I / O ke sesi khusus, yang didedikasikan untuk tujuan itu. Karena perangkat keras mode teks PC akan terus menampilkan konten area memori sebagai karakter; DesqView dapat membiarkan setiap sesi memiliki layar virtual sendiri dengan memetakan rentang 0xB8000-0xB9FFF setiap sesi ke area RAM sendiri, dan secara berkala menyalin area aplikasi saat ini ke buffer layar fisik. Dukungan grafis jauh lebih sulit, karena 256 ribu RAM pada papan display dikontrol menggunakan 64K ruang alamat, beberapa register I / O, dan beberapa perangkat keras "menarik" yang mengharuskan hal-hal untuk dibaca dan ditulis dalam urutan tertentu. Dalam mode teks, ketika aplikasi menulis sesuatu ke buffer teks ditulis, DesqView dapat menetapkan bendera yang menunjukkan itu harus disalin ke tampilan pada centang waktu berikutnya; hanya penulisan pertama ke buffer teks dalam centang waktu tertentu yang membutuhkan intervensi DesqView; semua yang lain akan dikonsolidasikan ke tick timer berikutnya. karena 256 ribu RAM pada papan display dikontrol menggunakan ruang alamat 64K, beberapa register I / O, dan beberapa perangkat keras "menarik" yang mengharuskan hal-hal untuk dibaca dan ditulis dalam urutan tertentu tertentu. Dalam mode teks, ketika aplikasi menulis sesuatu ke buffer teks ditulis, DesqView dapat menetapkan bendera yang menunjukkan itu harus disalin ke tampilan pada centang waktu berikutnya; hanya penulisan pertama ke buffer teks dalam centang waktu tertentu yang membutuhkan intervensi DesqView; semua yang lain akan dikonsolidasikan ke tick timer berikutnya. karena 256 ribu RAM pada papan display dikontrol menggunakan ruang alamat 64K, beberapa register I / O, dan beberapa perangkat keras "menarik" yang mengharuskan hal-hal untuk dibaca dan ditulis dalam urutan tertentu tertentu. Dalam mode teks, ketika aplikasi menulis sesuatu ke buffer teks ditulis, DesqView dapat menetapkan bendera yang menunjukkan itu harus disalin ke tampilan pada centang waktu berikutnya; hanya penulisan pertama ke buffer teks dalam centang waktu tertentu yang membutuhkan intervensi DesqView; semua yang lain akan dikonsolidasikan ke tick timer berikutnya. DesqView dapat mengatur bendera yang menunjukkan bahwa itu harus disalin ke tampilan pada centang waktu berikutnya; hanya penulisan pertama ke buffer teks dalam centang waktu tertentu yang membutuhkan intervensi DesqView; semua yang lain akan dikonsolidasikan ke tick timer berikutnya. DesqView dapat mengatur bendera yang menunjukkan bahwa itu harus disalin ke tampilan pada centang waktu berikutnya; hanya penulisan pertama ke buffer teks dalam centang waktu tertentu yang membutuhkan intervensi DesqView; semua yang lain akan dikonsolidasikan ke tick timer berikutnya.
Sebaliknya, mode grafik virtualisasi akan membutuhkan DeskView untuk menjebak setiap orang menulis untuk menampilkan memori atau register I / O. Mengingat bahwa ini akan memperlambat memori menulis dengan faktor sekitar 100, dan program grafis harus menulis lebih banyak data daripada program teks, virtualisasi real-time dari sebagian besar perangkat lunak grafis tidak praktis. Sebaliknya, grafik ditangani dengan memiliki aplikasi non-latar depan yang mencoba melakukan jeda grafis sampai menjadi aplikasi latar depan, dan kemudian memberikannya kontrol penuh atas layar. Ketika kontrol beralih ke aplikasi lain, DesqView akan mencoba membuat salinan status semua register grafik dan kemudian beralih. Setelah beralih kembali ke aplikasi grafis, DesqView akan memulihkan keadaan yang disimpan.
Di satu sisi, aplikasi DOS non-grafis multi-tasking lebih mudah daripada aplikasi Windows multi-tasking karena ada sedikit sumber daya bersama, dan aplikasi tidak harus berinteraksi satu sama lain. Di Windows, sebaliknya, penting untuk menangani hal-hal seperti clipboard, atau kemungkinan bahwa satu jendela program dapat bergerak sedemikian rupa untuk mengaburkan yang lain. Windows 95 adalah versi pertama Windows yang dapat mengatasi keterbatasan seperti itu dengan memasukkan hal-hal seperti sistem windowing yang dapat mengakomodasi memiliki area layar menjadi tidak tersedia saat kode berusaha menarik ke sana (dengan efek bahwa gambar akan ditutup-tutupi) ).
sumber
Multitasking tidak lebih dari ilusi menjalankan aplikasi secara bersamaan. Ini dianggap sebagai eksekusi simultan di ujung Anda, tetapi sebenarnya proses A, B dan C berbagi waktu CPU dalam urutan ini: A, B, C, A, B, C, A, B ... mereka hanya menghidupkan dan sangat cepat. Tidak ada dua proses yang benar-benar berjalan pada saat yang bersamaan.
Jadi, sangat mungkin untuk membuat MS-DOS multitask dengan membuatnya menghentikan satu proses, menjalankan proses selanjutnya untuk waktu yang singkat, menghentikan sementara proses itu, melompat kembali ke yang pertama, dan seterusnya.
Multitasking hanyalah fitur pintar yang dikembangkan ketika CPU mulai cukup cepat untuk terus berputar melalui proses ini dan membuatnya tampak serempak bagi pengguna akhir.
Bagi mereka yang ingat, game masih dijalankan di DOS4GW karena Windows terlalu lambat.
sumber
Meskipun hanya bisa fokus pada satu tugas, apa yang akan dilakukannya adalah langkah sederhana dengan cepat berpindah dari satu tugas ke tugas lainnya. Dengan cara ini tampaknya itu multitasking, tetapi sebenarnya hanya berfokus pada 1, lalu yang lain, lalu yang lain, dll.
sumber
Satu hal yang saya tidak lihat disebutkan di sini yang agak menarik:
Windows 3.0 bukanlah sistem multitasking yang pre-emptive, melainkan kooperatif seperti semua versi MacOS hingga OS X - Satu aplikasi harus kembali dari panggilan sebelum aplikasi lain dapat mengambil tindakan apa pun.
Namun, sebagai komentator mengingatkan saya, aplikasi DOS memiliki banyak tugas. Ini karena mereka tidak ditulis ke "Kooperatif" multi-tugas (Ini harus selalu dibangun ke dalam sistem yang menggunakannya).
Pada saat itu ada program yang disebut TSR (Terminate-Stay Resident) yang menggantikan driver perangkat saat ini. Driver ini akan berjalan secara independen - umumnya pada utas mereka sendiri dengan memasukkan diri mereka ke dalam salah satu pengendali acara OS. Windows umumnya tidak tahu tentang mereka, mereka berlari di level yang lebih rendah.
Ini bukan benar-benar aplikasi windows, tetapi mereka adalah bagaimana semua aktivitas threading terjadi sebelum windows 3.1 seperti driver printer, driver com, dll.
Meskipun windows 3.1 multi-tasking, DOS tidak, tetapi Windows 3.1 hanya mendorong dos keluar dari jalan dan mengambil alih ketika dimulai (Saat itu Anda sering memulai windows dari DOS prompt).
sumber
Pertanyaan bagus. Dalam MS-DOS, kernel bersifat monolitik, artinya hanya menangani satu tugas pada satu waktu, dibandingkan dengan kernel modern baru yang diimplementasikan pada Windows 9x dan versi saat ini. Anda dapat melihat lebih lanjut di sini .
sumber