溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

進(jìn)程線程的調(diào)度阻塞喚醒

發(fā)布時(shí)間:2020-07-29 14:28:08 來源:網(wǎng)絡(luò) 閱讀:1232 作者:超級(jí)極客 欄目:編程語言

1Cpu線程調(diào)度

1一個(gè)CPU最多可以運(yùn)行一個(gè)進(jìn)程或者一個(gè)線程,如果是雙核的CPU最多可運(yùn)行 兩個(gè)進(jìn)程或兩個(gè)線程, 操作系統(tǒng)是多任務(wù)操作系統(tǒng),他不止同時(shí)運(yùn)行兩個(gè)任務(wù),可能有很多個(gè),如word文檔,QQ,音樂,瀏覽器,等都是一個(gè)或多個(gè)進(jìn)程或線程, 如果要跑這個(gè)多個(gè)進(jìn)程 每個(gè)進(jìn)程都對(duì)應(yīng)一個(gè)應(yīng)用程序,或里面的線程, 如果有N個(gè)這樣的線程,那么一個(gè)2核的CPU 處理這樣的線程, 每一次 一個(gè)核只能掛一個(gè)線程, 這時(shí)候就涉及到調(diào)度。

2什么是調(diào)度怎么調(diào)度: OS會(huì)給每個(gè)進(jìn)程或線程可調(diào)度的單元 一個(gè)叫做時(shí)間片的東西,根據(jù)線程的級(jí)別給時(shí)間片,每個(gè)CPU 執(zhí)行這個(gè)線程時(shí)間是根據(jù)這個(gè)時(shí)間片決定的,然后把這個(gè)線程掛起,就是暫停,然后這個(gè)CPU的核去執(zhí)行另一個(gè)線程 執(zhí)行完所有線程后,回來又開始執(zhí)行第一個(gè)線程或進(jìn)程。 每一個(gè)線程根據(jù)時(shí)間片一次進(jìn)行調(diào)度,這樣就保證了每個(gè)線程都能被執(zhí)行的到, 人類是感覺不到這個(gè)暫停的,因?yàn)镃PU速度是非??斓?
線程會(huì)經(jīng)常休眠,強(qiáng)制休眠就是 時(shí)間片到了,系統(tǒng)給你休眠掛起, 還有就是主動(dòng)休眠, 例如一個(gè)程序窗口
打開后不去動(dòng)他,他就是休眠狀態(tài)。

3主動(dòng)休眠: 比如說 c語言的Read讀取文件的函數(shù) 調(diào)用之后 就會(huì)主動(dòng)休眠,他要等OS 從磁盤里讀取文件數(shù)據(jù)到內(nèi)存,然后這個(gè)線程才會(huì)被喚醒,讀到文件,滿足他繼續(xù)往下的條件。

4阻塞與喚醒:比如一個(gè)網(wǎng)卡,他和OS相連 有很多的SOCKET對(duì)象,又有很多的線程,其中的線程就阻塞在這個(gè)socket對(duì)象上面, 知道OS線程讀取到網(wǎng)卡的數(shù)據(jù),然后解析到這個(gè)socket對(duì)象上,這時(shí)候就會(huì)喚醒這個(gè)線程。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI