日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows进程与线程学习笔记(七)—— 时间片管理

發布時間:2025/3/21 windows 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows进程与线程学习笔记(七)—— 时间片管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Windows進程與線程學習筆記(七)—— 時間片管理

    • 要點回顧
    • 基本概念
    • CPU時間片
      • 分析 KeUpdateRunTime
      • 分析 KiDispatchInterrupt
    • 備用線程
    • 總結

要點回顧

  • 在上一篇中,學習了線程切換的三種方式,其中一種是時鐘中斷
  • 時鐘中斷最終會導致線程切換,但要注意不是說只要產生時鐘中斷就一定會發生線程切換
  • 基本概念

    時鐘中斷發生時,以下兩種情況會導致線程切換:

  • 當前線程的CPU時間片到期
  • 存在備用線程(KPCR.PrcbData.NextThread)
  • CPU時間片

    描述

  • 當一個新的線程開始執行時,初始化程序會在 _KTHREAD.Quantum 賦初始值,該值的大小由 _KPROCESS.ThreadQuantum 決定(觀察 ThreadQuantum 大小)
  • 每次時鐘中斷會調用 KeUpdateRunTime 函數,該函數每次將當前線程 Quantum 減少3個單位,如果減到0,則將 KPCR.PrcbData.QuantumEnd 的值設置為非0。
  • KiDispatchInterrupt 判斷時間片到期:
    調用 KiQuantumEnd (重新設置時間片、找到要運行的線程)
  • 分析 KeUpdateRunTime

    分析 KiDispatchInterrupt


    若CPU時間片到期,則跳轉至 loc_405920

    KiQuantumEnd 重新設置了時間片

    然后調用了 KiFindReadyThread,找到下一個要運行的線程

    KiQuantumEnd 結束后,若存在下一個將要運行的線程,跳轉至 loc_4058D1

    KiReadyThread 將原線程掛載到調度鏈表中

    備用線程

    總結

  • 當前線程主動調用 API:
    KiSwapThread -> KiSwapContext -> SwapContext
  • 當前線程時間片到期
    KiDispatchInterrupt -> KiQuantumEnd -> SwapContext
  • 存在備用線程
    KiDispatchInterrupt -> SwapContext
  • 總結

    以上是生活随笔為你收集整理的Windows进程与线程学习笔记(七)—— 时间片管理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。