CPU 上下文切換之理論篇(上)

CPU 上下文切換之理論篇(上)

  • 1.什麼是上下文?
    答:上下文是由CPU寄存器和程序計數器組成

  • 2.CPU爲什麼進行上下文切換?
    答:CPU上下文切換,是保證Linux系統正常工作的核心功能之一

  • 3.什麼是CPU上下文切換?
    答:CPU上下文切換,就是先把前一個任務的CPU上下文保存起來,然後加載新任務的上下文到這些寄存器和程序計數器中,最後跳轉到程序計數器所指的新位置,運行任務

  • 4.什麼是cpu寄存器?
    答:cpu寄存器是cpu內置很小、但速度極快的內存

  • 5.什麼是程序計數器?
    答:是用來存儲CPU正在執行的指令位置、或者即將執行的下一條指令位置

  • 6.cpu保存的上下文會存儲在哪裏?
    答:存儲在系統內核中

  • 7.操作系統管理的任務是什麼?
    答:進程和線程

  • 8.cpu上下文切換有哪些場景?
    答:進程上下文切換、線程上下文切換、中斷上下文切換

  • 9.ring0和ring3分別是什麼?
    答:ring0是內核態、ring3是用戶態

  • 10.特權模式切換是通過什麼進行完成的?
    答:系統調用

  • 11.特權模式切換的步驟是什麼?
    答:CPU寄存器裏原來的用戶指令需要先保存起來,爲了執行內核態代碼,CPU寄存器需要更新爲內核態指令的新位置,最後跳轉到內核運行內核任務

  • 12.一次特權模式切換髮生了幾次CPU上下文切換?
    答:2次

  • 13.什麼是進程上下文切換?
    答:是指從一個進程切換到另一個進程

  • 14.進程上下文切換與特權模式切換有什麼區別?
    答:進程上下文切換,是指一個進程切換到另一個進程
    特權模式切換是一直運行同一個進程

  • 15.什麼時候會切換進程上下文?
    答:只有在進程調度時,才需要切換上下文

  • 16.進程在什麼時候纔會被調度到 CPU 上運行?
    答:
    (1)當某個進程時間片耗盡
    (2)進程在系統資源不足時
    (3)當進程通過sleep主動掛起時
    (4)當有優先級更高的進程運行時

  • 17.什麼是進程?
    答:進程是調度的基本單位

  • 18.什麼是線程?
    答:線程是資源擁有的基本單位

  • 19.線程與進程最大的區別是什麼?
    答:
    (1)當進程只有一個線程時,可以認爲進程等於線程
    (2)當進程擁有多個線程時,這些線程會共享相同的虛擬內存和全局變量等資源。這些資源上下文切換時是不需要修改的

  • 20.線程上下文切換有哪幾種情況?
    答:前後線程不屬於同一進程、前後線程屬於同一進程

  • 21.什麼是中斷上下文切換?
    答:爲了快速響應硬件事件,中斷處理會打斷進程的正常調度和執行

注:有哪些減少上下文切換的技術用例?
答:數據庫連接池(複用連接)、合理設置應用的最大進程,線程數、直接內存訪問DMA、零拷貝技術

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章