absmiddle 說明


[問題] coma.bbs@bbs.ncku (coma): 多工是 Multi-tasking? Multi-thread? Win95 是那種? 及其差別? [解答] EightCloud.bbs@firebird.cs.ccu (嵐雲): 多工是指 multi-tasking, 指同時能執行多個工作. 而同時, 是指使用者看起來好像同時, 實際上是只有一個 CPU, 而分成許多的小段時 間, 分給不同的工作執行. 一般所謂的 "假"多工, 是指必須要應用程式的配合, 主動放棄控制權才能切換到其它 的程式, 而 "真" 多工, 則是 OS 能夠主動切換工作, 不需要應用程式的配合. multi-thread 則和 多工 沒什麼關係. 傳統的程式, 是以 process 為執行單位, 每個 process 有自己的 addess space, 系 統資源等等, 產生新的 process, 或是在 process 之間 做 context switch, 對 OS 而言, 這些動作的 overhead 都是很大的, 所以才會有 thread 的產生. 在 multithread 中, 一個 process 堨i以有多個 thread, 這些 thread 共用同一個位 址空間, 系統資源等, 產生一個新的 thread, 和在 thread 之間 context switch overhead 都降的蠻低的. 而 thread 與 thread 之間的切換, 也可能是 preemptive (如 NT/OS2/Win95) scheduling, 也可能是 nonpreemptive (如 舊的 SunOS 的 user mode thread). 對於 Win3.1, 我比較喜歡把它視為 只有一個 process (所有共用一個 addess space) , 但是是 multithread (一個 thread 是一個 window), 而採 nonpreemptive scheduling.
上一層目錄