您好,登錄后才能下訂單哦!
1一個CPU最多可以運行一個進程或者一個線程,如果是雙核的CPU最多可運行 兩個進程或兩個線程, 操作系統是多任務操作系統,他不止同時運行兩個任務,可能有很多個,如word文檔,QQ,音樂,瀏覽器,等都是一個或多個進程或線程, 如果要跑這個多個進程 每個進程都對應一個應用程序,或里面的線程, 如果有N個這樣的線程,那么一個2核的CPU 處理這樣的線程, 每一次 一個核只能掛一個線程, 這時候就涉及到調度。
2什么是調度怎么調度: OS會給每個進程或線程可調度的單元 一個叫做時間片的東西,根據線程的級別給時間片,每個CPU 執行這個線程時間是根據這個時間片決定的,然后把這個線程掛起,就是暫停,然后這個CPU的核去執行另一個線程 執行完所有線程后,回來又開始執行第一個線程或進程。 每一個線程根據時間片一次進行調度,這樣就保證了每個線程都能被執行的到, 人類是感覺不到這個暫停的,因為CPU速度是非常快的,
線程會經常休眠,強制休眠就是 時間片到了,系統給你休眠掛起, 還有就是主動休眠, 例如一個程序窗口
打開后不去動他,他就是休眠狀態。
3主動休眠: 比如說 c語言的Read讀取文件的函數 調用之后 就會主動休眠,他要等OS 從磁盤里讀取文件數據到內存,然后這個線程才會被喚醒,讀到文件,滿足他繼續往下的條件。
4阻塞與喚醒:比如一個網卡,他和OS相連 有很多的SOCKET對象,又有很多的線程,其中的線程就阻塞在這個socket對象上面, 知道OS線程讀取到網卡的數據,然后解析到這個socket對象上,這時候就會喚醒這個線程。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。