成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

電腦死機的時候,CPU到底在做什么?

系統 其他OS
操作系統之所以能夠掌控全局,就得益于它啟動時給CPU安插的一系列的中斷處理函數(比如我們最常見的時鐘中斷),好讓操作系統能周期性的收回CPU的執行權,調度別的線程來執行。

大家好,我是軒轅。

前幾天,讀者群里有人聊起了一個問題:計算機為什么死機,死機的時候CPU在干什么?

我想起之前寫過這方面的文章,想著估計有不少新粉沒有看過,就挖個墳給大家看看,這個有趣又能漲知識的問題。

電腦死機,應該每個接觸計算機的小伙伴都經歷過吧。

尤其是早些年,電腦配置還沒現在這么高的時候,多開幾個重量級應用程序,死機就能如約而至,就算你把鍵盤上的CTRL+ALT+DELETE按爛了,任務管理器也出不來,最后只能默默含淚長按關機按鈕,強制關機。

那么,你有沒有想過,電腦在死機的時候,它到底在干嘛呢?

眾所周知,計算機的核心中樞是中央處理器CPU。上過計算機基礎課程的同學都被教導過:CPU是一根筋死腦筋,只知道不斷的取出指令來一條條執行,直到關機方休。

所以理論上,死機分為兩種,一種是CPU罷工不干了,不再執行下一條指令了,這屬于硬件死機,不過這種情況基本不會發生。

更多的是軟件層面的死機,也就是CPU被困在了某個地方出不來了,導致本該執行的程序得不到執行,看起來就是死機了一般。

聰明的你可能馬上想到,如果寫一個死循環,把CPU陷在里面出不去,是不是就能死機了?比如這樣:

void dead_loop() {
  while (1) {
    ...
  }
}

你可以試一下,會發現為CPU降溫的風扇可能會轉起來,但計算機依舊能正常工作,并沒有死機。

死循環,CPU不是應該一直在這里轉圈嗎?難道不會死機?

這就不得不提到一個概念:中斷。

中斷

中斷這個概念,絕對是計算機史上最偉大的發明之一。

中斷,顧名思義,用于打斷CPU正常的工作,讓它去執行別處的指令程序。

操作系統之所以能夠掌控全局,就得益于它啟動時給CPU安插的一系列的中斷處理函數(比如我們最常見的時鐘中斷),好讓操作系統能周期性的收回CPU的執行權,調度別的線程來執行。

所以,即便你某個線程進入了死循環,在你的時間片用完之后,也得乖乖交出CPU,讓別的程序來執行。

想用一個死循環就把電腦搞死機,那自然是不可能的。

其實想來也是,如果這么容易就給你搞死機了,那這操作系統也太菜了吧,新手如果剛學編程,還不得一天強制重起電腦十幾回?

退一萬步講,就算不考慮中斷的影響,現在的CPU大都是多核,一個線程進入死循環,但還有別的核可以參與系統調度,也依然不會死機。

那么回到開始的問題,那到底CPU被困在了哪里出不來,連中斷都拿它沒辦法呢?

其實有兩種情況:

1、中斷確實拿它沒辦法

很多人都知道中斷的概念,但很多人不知道,中斷也是有優先級的。

這很容易理解,比如CPU正在執行程序,突然發生了一個中斷事件。CPU保存好當前執行的上下文,轉頭去處理這個中斷事件,但剛處理到一半兒,這時又有一個新的中斷事件來了,那CPU怎么辦?要不要響應?

所以中斷也有優先級之分,低優先級的中斷無法打斷高優先級的中斷。

有了這個前提來試想一下,如果由于操作系統內核代碼寫的不當,在處理某個中斷的時候陷入了死循環,比如自旋鎖,會發生什么?

因為在處理中斷的時候,CPU運行在一個很高的優先級上,一般的中斷是無法把執行權搶過去的,這就導致這顆CPU核心成為了“植物人”,怎么叫它都沒反應了。

2、中斷能搶到CPU,但發現沒有線程可以調度

程序員們對死鎖這個概念應該不陌生,兩個線程A等待B,B等待A,兩個線程互相等待對方讓步(釋放鎖),形成僵持局面,最后成為死鎖。

如果死鎖發生在應用層面,那問題不大,最多就是兩個程序死了。但如果發生在內核呢?

比如在Windows操作系統內核中,就有大量的全局性的鎖,一個不小心造成死鎖,其他想要的線程都得進入等待隊列,那就涼涼了。

引用一段另一位大神Tim Chen的描述(我覺得特別形象):

責任編輯:武曉燕 來源: 編程技術宇宙
相關推薦

2019-09-15 19:11:14

CPU操作系統空閑

2025-01-17 10:49:44

數字化轉型數字化企業管理

2018-02-02 08:55:47

LinuxCPU

2009-03-12 11:08:00

技術顧問職場雜談

2013-11-04 11:05:34

Windows 8.1問題

2023-12-18 16:02:04

OpenAI人工智能

2020-10-29 11:08:06

CPUMySQL數據庫

2022-07-06 15:07:47

React開發

2015-11-03 15:22:31

CDO大數據首席數據官

2021-08-26 11:09:51

systemdLinux

2021-08-26 13:55:45

systemdLinux目標

2017-08-24 10:00:05

SDWANGoogle網絡

2018-03-02 10:38:42

2020-12-23 13:26:53

代碼麻省理工學院語言

2021-11-18 21:09:50

流批場景引擎

2013-02-22 09:59:22

移動醫療創業公司

2012-11-27 10:17:04

2020-12-03 08:25:10

Nginx

2016-04-05 10:21:25

大數據元數據數據分析

2023-06-11 17:02:24

數字化轉型數字經濟
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线综合网 | 国产十日韩十欧美 | 一级免费a | 免费簧片视频 | 久久精品久久久久久 | av高清| 一区二区在线视频 | 国产我和子的乱视频网站 | 亚洲午夜小视频 | 中文字幕av网 | 国产精品久久久久久一级毛片 | 中文字幕乱码亚洲精品一区 | 成人福利网 | 99精品欧美一区二区三区综合在线 | 欧美日批 | 狠狠干美女 | 欧美视频第二页 | 黄色毛片一级 | 欧美日韩精品区 | 一级黄色毛片免费 | 久久精品亚洲成在人线av网址 | 日日骚av| 福利久久 | 国产精品高清在线 | 伊人久久综合影院 | 水蜜桃亚洲一二三四在线 | 亚洲国产高清高潮精品美女 | 亚洲成av人片在线观看 | 在线免费国产 | 亚洲国产成人精品在线 | 伊人免费观看视频 | 欧美极品视频 | 91麻豆蜜桃一区二区三区 | 欧美国产精品一区二区三区 | 色久伊人| 国产中文区二幕区2012 | 高清视频一区二区三区 | 日韩中文欧美 | 91九色视频 | 欧美色综合一区二区三区 | 一区二区蜜桃 |