又一個冷知識,電腦死機的時候,主機依然在運行,那麼這個過程,電腦在幹什麼呢?
“電腦死機”是十分常見的電腦問題,在我們使用電腦的時候,突然屏幕中的畫面就卡住不動了,包括鼠标點擊了也沒有任何的反應。
有的小夥伴想試着調出任務管理器,卻差點就把鍵盤上的【CTRL+ALT+DELETE】按爛。不管怎麼操作鍵盤,電腦都沒有一點反應。
最後,隻能用粗暴的方法強制按關機鍵關機重啟。
好奇,在死機的時候,電腦到底在幹什麼?
電腦的大腦是“CPU”,它的主要作用是進行運算和控制,處理着各種信息。
電腦的CPU是一根死腦筋,它是不斷地取出指令來一條條執行,直到關機方休!
所以,電腦不會那麼容易死機,除非出現這兩種情況。
一種是CPU擺爛不幹了,不再執行下一條指令。這屬于硬件死機,出現這種情況是讓用戶感到最頭疼的。不過出現的概率很低,基本上不會發生。
另外一種就是軟件方面的死機。CPU被困在了某個地方出不來,導緻無法響應用戶的輸入,本該執行的程序得不到執行電腦就和死機了一樣。
突然有個問題,我們是不是可以創建一個死循環命令讓電腦執行,故意把CPU困在裡面讓它出不去呢?
當然不行,用死循環就想把電腦搞死機是不可能的。
因為操作系統會用“中斷”進行幹預。
有了中斷的加入,CPU指令就多出了一個檢查中斷的步驟。中斷就是可以打斷CPU正常的工作,讓它去執行别處的指令程序。
我們最常見的是“時間中斷”,即便某個線程進入了死循環,在一定的時間後也要把CPU放出來,讓别的程序來接手。
另外,現在的cpu大都是多核,如果一個線程進入死循環,也有别的核可以參與系統調度呀,所以不會這麼容易就死機。
接着回到連中斷都搞不定的死機問題,cpu被困在哪裡出不來呢?
首先,中斷是有優先級的,低優先級的中斷無法打斷高優先級的中斷。
例如cpu正在執行程序,突然發生了一個中斷事件,cpu會保存當前執行的去處理這個中斷事件,然而中途又出現了一個新的中斷。在處理中斷的時候,cpu運作在一個高的優先級上,一般的中斷是無法把執行權搶過來的,所以就導緻這顆cpu沒有響應,電腦就死機了。
另外一種情況,中斷搶到了執行權,卻發現沒有線程可以調動!
比如,兩個線程a等待b,b等待a,且互相等待對方讓步,局面僵持,最後就成為“死鎖”。
“死鎖”出現在應用上,就會導緻兩個應用崩了。而出現在内核中,就會讓電腦死機:
有話要說...