[心得] multi-tasking的觀念

看板ASM (組合語言)作者 (brotherD)時間6年前 (2018/11/21 11:34), 6年前編輯推噓3(308)
留言11則, 4人參與, 6年前最新討論串1/1
比喻得很爛請幫忙改正~ 有一個人格分裂症的少女,身體裡住著6種人格。 每個人格(task)在少女的記憶裡(memory)都有"各自的"記憶空間(stack),可以用來放置 上次操控該少女時的狀態(cpu status register)。 如果"沒有用各自"的stack來放cpu status register,會發生這種事: A人格看影片看到一半 -> (切換成B人格) -> B: 幹???我怎麼在看影片? 我要去大便! -> (切換成A人格) -> A: 咦???我怎麼在大便? 這樣子不行,每個人格都混在一起了,不是獨立的,且也沒有辦法把自己的事做完。 所以當要切換成B人格的時候,A人格必須把當前狀態(cpu status register)存回自己的 stack,好讓B人格也把上次操作少女的狀態load進少女(這樣B才知道上次自己做到哪裡) ,這個行為就是context switch 所以這就是為什麼每個task都要有自己的stack啦~ 然後OS會負責分配每個人格什麼時候該出現(scheduler),以及要出現多久(time quantum) (PS:每個task的stack中,有一個register是用來放"上次做到哪裡",這樣子scheduler就 可以把該register的值抓近來放在CPU的program counter中,好讓每個task可以知道從哪 邊開始繼續往下做,其實這個register就是使用者自定義的program counter啦~) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.216.18 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1542771288.A.D7C.html ※ 編輯: zzss2003 (118.163.216.18), 11/21/2018 11:35:43

11/22 03:07, 6年前 , 1F
這是不是該po在grad-probask板上
11/22 03:07, 1F
我也不知道欸哈哈,只是當初這個問題卡我卡很久,上PTT跟網路查也查不到什麼所以然, 搞懂後想說分享給大家知道一下 ※ 編輯: zzss2003 (118.163.216.18), 11/22/2018 09:54:45

11/23 09:17, 6年前 , 2F
其實就是把系統主頻的離散時間降頻給好幾個task用
11/23 09:17, 2F

11/23 09:18, 6年前 , 3F
這樣真的會比較快嗎?平均分配給各個task的頻率是一樣的
11/23 09:18, 3F

11/23 09:21, 6年前 , 4F
但各個task耗得時間又不同...
11/23 09:21, 4F

11/24 05:56, 6年前 , 5F
multi-task從task得到時脈總合上看是比不多工少,因為還要
11/24 05:56, 5F

11/24 05:56, 6年前 , 6F
扣掉overhead。但是有多工能力,在軟體寫作上增加許多便利
11/24 05:56, 6F

11/24 05:56, 6年前 , 7F
,是單工比不上的
11/24 05:56, 7F

11/26 05:45, 6年前 , 8F
其實沒那麼複雜,就一個人要打很多工而已
11/26 05:45, 8F

11/26 09:23, 6年前 , 9F
推樓上,本質其實都是單工,但單工是ㄧ個人在一間公司,
11/26 09:23, 9F

11/26 09:24, 6年前 , 10F
有很多項任務要處理,multi-task就是ㄧ個人要到各個公司
11/26 09:24, 10F

11/26 09:25, 6年前 , 11F
處理不同的事情XD
11/26 09:25, 11F
文章代碼(AID): #1RzD9Ory (ASM)
文章代碼(AID): #1RzD9Ory (ASM)