fbpx
维基百科

上下文交換

上下文交換(英語:context switch),又稱環境切換,電腦術語,是一個儲存和重建CPU的狀態 (內文),因此令多個进程(process)可以分享單一CPU資源的計算過程。要交換CPU上的进程時,必需先行儲存目前进程的狀態,再將欲執行的进程之狀態讀回CPU中。 [1]

开销

上下文切换通常是计算密集型的,操作系统中的许多设计都是针对上下文切换的优化。在进程间切换需要消耗一定的时间进行相关的管理工作——包括寄存器和内存映射的保存与读取、更新各种内部的表等等。处理器或者操作系统不同,上下文切换时所涉及的内容也不尽相同。比如在Linux内核中,上下文切换需要涉及寄存器、栈指针、程序计数器的切换,但和地址空间的切换无关(虽然进程在进行上下文切换时也需要做地址空间的切换)[2][3]用户态线程之间也会发生类似的上下文切换,但这样的切换非常轻量。

交換时机

有三種可能的情況會發生上下文交換,分別為:

多工

最常見的,在一些排程(scheduling)算法內,其中行程有時候需要暫時離開CPU,讓另一個行程進來CPU運作。在先佔式多工系統中,每一個行程都將輪流執行不定長度的時間,這些時間段落稱為时间片。如果行程並非自願讓出CPU(例如執行I/O操作時,行程就需放棄CPU使用權),當時限到時,系統將產生一個定時中斷,作業系統將排定由其它的行程來執行。此機制用以確保CPU不致被較依賴處理器運算的行程壟斷。若無定時中斷,除非行程自願讓出CPU,否則該行程將持續執行。對於擁有較多I/O指令的行程,往往執行不了多久,便需要讓出CPU;而較依賴處理器的行程相對而言I/O操作較少,反而能一直持續使用CPU,便形成了壟斷現象。

中斷處理

在接受到中斷(Interrupt)的時候,CPU必須要進行上下文交換。

用戶态或者内核态的交換

用戶態和内核态交換發生的時候,並不需要進行上下文交換;並且用戶態和kernel mode的交換本身並不是一個上下文交換。不過,根據作業系統的不同,有時候會在此時進行一次上下文交換的步驟。

上下文交換:具體步驟

在一次交換中,第一個行程的狀態要被紀錄在某個地方,這樣當排程器(scheduler)要回到這個行程時,才可以重建這個行程並且繼續運算。

這裡所謂「行程的狀態」,包含了這個行程使用的所有暫存器(register),特別是程式計數器;加上所有作業系統可能需要的特定資料。這些資料一般以名為行程控制表(process control block,PCB)的資料結構儲存起來。

上下文交換:由軟體或硬體實現

上下文交換可分為主要由軟體實現或由硬體實現。部分中央處理器,比如Intel 80386[4]或同系列更高階的處理器,就具備支持上下文交換的硬體設計。

參考資料

  1. ^ Silberschatz, Abraham; Peter Baer Galvin, Greg Gagne. Operating System Principles 7. John Wiley & Sons (Asia) Pte Ltd. ISBN 0-4717-2595-1. 
  2. ^ IA-64 Linux Kernel: Design and Implementation, 4.7 Switching Address Spaces (页面存档备份,存于互联网档案馆
  3. ^ Operating Systems, 5.6 The Context Switch, p. 118 (页面存档备份,存于互联网档案馆
  4. ^ . [2010-02-05]. (原始内容存档于2010-02-18). 

外部連結

  • Context Switching(页面存档备份,存于互联网档案馆) - at OSDev.org
  • - by The Linux Information Project (LINFO)
  • - from the Microsoft Developer Network (MSDN)

上下文交換, 此條目需要編修, 以確保文法, 用詞, 语气, 格式, 標點等使用恰当, 2018年1月6日, 請按照校對指引, 幫助编辑這個條目, 幫助, 討論, 交换重定向至此, 关于, 交换, 的其它含义参见交换, 消歧义, 英語, context, switch, 又稱環境切換, 電腦術語, 是一個儲存和重建cpu的狀態, 內文, 因此令多個进程, process, 可以分享單一cpu資源的計算過程, 要交換cpu上的进程時, 必需先行儲存目前进程的狀態, 再將欲執行的进程之狀態讀回cpu中, 目录, 开销,. 此條目需要編修 以確保文法 用詞 语气 格式 標點等使用恰当 2018年1月6日 請按照校對指引 幫助编辑這個條目 幫助 討論 交换重定向至此 关于 交换 的其它含义参见交换 消歧义 上下文交換 英語 context switch 又稱環境切換 電腦術語 是一個儲存和重建CPU的狀態 內文 因此令多個进程 process 可以分享單一CPU資源的計算過程 要交換CPU上的进程時 必需先行儲存目前进程的狀態 再將欲執行的进程之狀態讀回CPU中 1 目录 1 开销 2 交換时机 2 1 多工 2 2 中斷處理 2 3 用戶态或者内核态的交換 3 上下文交換 具體步驟 4 上下文交換 由軟體或硬體實現 5 參考資料 6 外部連結开销 编辑上下文切换通常是计算密集型的 操作系统中的许多设计都是针对上下文切换的优化 在进程间切换需要消耗一定的时间进行相关的管理工作 包括寄存器和内存映射的保存与读取 更新各种内部的表等等 处理器或者操作系统不同 上下文切换时所涉及的内容也不尽相同 比如在Linux内核中 上下文切换需要涉及寄存器 栈指针 程序计数器的切换 但和地址空间的切换无关 虽然进程在进行上下文切换时也需要做地址空间的切换 2 3 用户态线程之间也会发生类似的上下文切换 但这样的切换非常轻量 交換时机 编辑有三種可能的情況會發生上下文交換 分別為 多工 编辑 最常見的 在一些排程 scheduling 算法內 其中行程有時候需要暫時離開CPU 讓另一個行程進來CPU運作 在先佔式多工系統中 每一個行程都將輪流執行不定長度的時間 這些時間段落稱為时间片 如果行程並非自願讓出CPU 例如執行I O操作時 行程就需放棄CPU使用權 當時限到時 系統將產生一個定時中斷 作業系統將排定由其它的行程來執行 此機制用以確保CPU不致被較依賴處理器運算的行程壟斷 若無定時中斷 除非行程自願讓出CPU 否則該行程將持續執行 對於擁有較多I O指令的行程 往往執行不了多久 便需要讓出CPU 而較依賴處理器的行程相對而言I O操作較少 反而能一直持續使用CPU 便形成了壟斷現象 中斷處理 编辑 在接受到中斷 Interrupt 的時候 CPU必須要進行上下文交換 用戶态或者内核态的交換 编辑 當用戶態和内核态交換發生的時候 並不需要進行上下文交換 並且用戶態和kernel mode的交換本身並不是一個上下文交換 不過 根據作業系統的不同 有時候會在此時進行一次上下文交換的步驟 上下文交換 具體步驟 编辑在一次交換中 第一個行程的狀態要被紀錄在某個地方 這樣當排程器 scheduler 要回到這個行程時 才可以重建這個行程並且繼續運算 這裡所謂 行程的狀態 包含了這個行程使用的所有暫存器 register 特別是程式計數器 加上所有作業系統可能需要的特定資料 這些資料一般以名為行程控制表 process control block PCB 的資料結構儲存起來 上下文交換 由軟體或硬體實現 编辑上下文交換可分為主要由軟體實現或由硬體實現 部分中央處理器 比如Intel 80386 4 或同系列更高階的處理器 就具備支持上下文交換的硬體設計 參考資料 编辑 Silberschatz Abraham Peter Baer Galvin Greg Gagne Operating System Principles 7 John Wiley amp Sons Asia Pte Ltd ISBN 0 4717 2595 1 引文使用过时参数coauthors 帮助 IA 64 Linux Kernel Design and Implementation 4 7 Switching Address Spaces 页面存档备份 存于互联网档案馆 Operating Systems 5 6 The Context Switch p 118 页面存档备份 存于互联网档案馆 存档副本 2010 02 05 原始内容存档于2010 02 18 外部連結 编辑Context Switching 页面存档备份 存于互联网档案馆 at OSDev org Context Switch Definition by The Linux Information Project LINFO Context Switches from the Microsoft Developer Network MSDN 取自 https zh wikipedia org w index php title 上下文交換 amp oldid 71425240, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。