- 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、零拷貝技術