程式切換(上下文切換)
多工作業系統是怎麼實現執行遠大於CPU 數量的任務個數的?當然,這些任務實際上並不是真的在同時執行,而是因為系統通過時間片分片演算法,在很短的時間內,將CPU 輪流分配給它們,造成多工同時執行的錯覺。
為了控制程式的執行,核心必須有能力掛起正在CPU 上執行的程式,並恢復以前掛起的某個程式的執行。這種行為被稱為程式切換。
什麼叫上下文?
在每個任務執行前,CPU 都需要知道任務從哪裡載入、又從哪裡開始執行,也就是說,需要系統事先幫它設定好CPU 暫存器和程式計數器(Program Counter),這個叫做CPU 的上下文。
而這些儲存下來的上下文,會儲存在系統核心中,並在任務重新排程執行時再次載入進來。這樣就能保證任務原來的狀態不受影響,讓任務看起來還是連續執行。
在切換上下文的時候,需要完成一系列的工作,這是一個很消耗資源的操作。
相關文章
- goroutine 上下文切換Go
- goroutine上下文切換機制Go
- 多執行緒上下文切換執行緒
- 結合中斷上下文切換和程式上下文切換分析Linux核心的一般執行過程Linux
- 小程式 tab切換
- Linux CPU 上下文切換的故障排查Linux
- 小程式標籤切換
- Weblogic產品模式切換與JVM切換Web模式JVM
- 微信小程式-uniapp-切換tab時資料列表如何切換?微信小程式APP
- 小程式切換主題配色
- 切換 PHP 版本PHP
- ubuntu切換源Ubuntu
- Git分支切換Git
- MMM切換原理
- oracle dataguard 切換Oracle
- asm 磁碟切換ASM
- 切換IP地址
- 切換java版本Java
- Linux 效能優化之 CPU 篇 ----- 上下文切換Linux優化
- 多執行緒的代價及上下文切換執行緒
- 小程式標籤頁切換效果
- GCC 多版本切換GC
- iOS 切換鍵盤iOS
- Redis主從切換Redis
- DG的切換操作
- valet 切換 PHP 版本PHP
- (九)主題切換
- lnmp 切換PHP版本LNMPPHP
- ios 卡片切換效果iOS
- ubuntu切換java版本UbuntuJava
- IP地址切換工具
- wordpress語言切換
- git命令-切換分支Git
- mac php版本切換MacPHP
- switchable圖片切換
- 再談特性切換
- MySQL主從切換MySql
- mongodb 切換wiredtigerMongoDB