亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在各種操作系統中(PC 嵌入式等等),有很多進程(Task)是像這個樣子被創建的:

在各種操作系統中(PC 嵌入式等等),有很多進程(Task)是像這個樣子被創建的:

蕭十郎 2023-02-10 18:14:23
Create_Task(進程描述符指針, 任務名字符串, MyTask()函數, 參數個數, 參數表指針, 堆棧指針, 堆棧大小 優先級 ...)假如整個系統只創建了一個Task,而且非常簡單,只有void MyTask(){while(1);}1 這個Task的狀態會是什么? 是Running,還是Idle,Block,Wait 等等?2 書上經常說“當CPU(或者OS)發現沒有任務在執行時,會進入睡眠(或省電)模式”,“沒有任務在執行”是靠什么算法得出來的? 是看PC指針移動的活躍度?還是有別的算法?謝謝!
查看完整描述

2 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

1、沒有其他進程和MyTask爭奪資源,而它又一直不退出,所以一直在running。
2、操作系統會維護一個“任務隊列”,按照某種策略從隊列中取一個任務,給他分配了資源和時間片,就認為它是在執行的,不會去管這個任務的細節。所以只要任務隊列不為空就認為肯定有任務在執行。

查看完整回答
反對 回復 2023-02-14
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

執行用戶任務--用戶態,進入睡眠狀態--核心態,這個切換需要用戶進程“同意”嗎?進入核心態是無條件的。進入睡眠狀態前,操作系統頂多是不再接收新任務;保存任務隊列;保存running進程的參數、狀態(對操作系統來講,這些也無需關心任務細節,只要保存了當時寄存器的情形就行),以便再恢復;這些做完就可以關機了,何須再去判斷每個進程是什么狀態呢?計算機軟件系統是分層次的,每層調用上層提供的接口干好自己的事情就行,不能干涉下層的細節,舉例說,進程的狀態只是它自己需要的,操作系統做出什么舉動,不需要關心某個用戶進程是什么狀態的,它只做他該做的事情就行,比如保存寄存器狀態,保存任務隊列等。

查看完整回答
反對 回復 2023-02-14
  • 2 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號