本文是《作業系統:以程式設計師的角度》第三章,本章的主題是從程式設計師的角度來理解作業系統到底是如何工作的。本篇承接上文《以發展的眼光來看到作業系統》以下為本篇目錄:
在繼續接下來的課程之前,我們需要對作業系統有乙個巨集觀上的認識,也就是我們常說的大局觀,big picture,這對於我們理解作業系統以及學習接下來的課程都是極為重要的。那我們該怎麼對作業系統有乙個巨集觀上的認識呢,要做到這一點,你需要清楚的理解,作業系統是如何工作。
你可能會想這個問題很簡單吧,在第二章《應用程式與作業系統的信使》中不是已經介紹了嗎,cpu有兩種工作模式,使用者模式(user mode)和核心模式(kernel mode),當cpu在執行我們的程式時工作在使用者模式,cpu在執行作業系統時工作在核心模式,當我們的程式需要作業系統的幫助時會呼叫系統呼叫,執行系統呼叫時cpu會從使用者模式切換到核心模式,此時作業系統開始接管整個系統,處理完使用者程式的請求後cpu從核心模式切換回使用者模式。
看到這裡有的同學可能會想也許只有當我們進行系統呼叫時作業系統才有機會執行吧,是這樣嗎?學完本章的內容你就知道答案啦。
cpu一次只能做一件事
在回答這個問題之前,我們需要知道這樣乙個事實,那就是:
在任何時刻,乙個cpu一次只能執行乙個任務
作業系統是如何啟動的
作業系統啟動過程分為bios執行和bootloader執行兩個步驟 一 bios程式執行過程 執行過程 在cpu加電之後,會把cpu所有暫存器的值設為預設值,除了cs暫存器的值改為0xffff,其他暫存器的值都為0,這樣,根據cs 和 ip的值就可以找到指令的實體地址0xffff 0x0000。這時...
C 鍵盤按鍵的操作
對於鍵盤按鍵的操作c 提供了三種方法 keydown,keypress 和keyup 三個函式分別對應的意義為 1.keypress主要用來捕獲數字 注意 包括shift 數字的符號 字母 注意 包括大小寫 小鍵盤等除了f1 12 shift alt ctrl insert home pgup de...
前端獲取作業系統 作業系統版本
在做埋點的過程中,遇到要上傳作業系統和作業系統版本的需求,如下 通過n igator.useragent獲取首先將作業系統確定為如下對映 all os 獲取當前作業系統 獲取當前作業系統 export const getos if useragent.includes mac else if use...