Kacam.net看開網

計算機系統

一次上下文切换,贵在哪

切换的成本主要不是保存寄存器 —— 那是什么?

複製提示詞,選一家接著聊 —— 它會當面試官逐幕問你,而不是把答案倒給你。

手機上裝了對應 App 的,系統會直接開 App。微信裡點不開外部 App,得先用瀏覽器打開。

複製走的那段末尾帶著判卷用的底牌,別自己先讀 —— 自己推出來過才算學到。

「切换有开销」人人会说,但开销在哪、量级是多少就开始分人了。直接成本(保存现场、跑调度器)只有一两微秒,真正贵的是切完之后缓存全冷、新线程要重新捂热的那几十微秒。

想明白这一点,「线程池该开多大」「协程凭什么便宜」「为什么任务粒度太小时多线程反而更慢」就都是它的推论。

最后一幕问怎么在线上看:自愿切换和非自愿切换特别高,分别说明什么。

★★★★☆ · 約 30 分鐘 · 主考:直接成本 vs 间接成本、线程池该开多大、协程凭什么便宜

這一份練的是

排程與切換 快取與快取行 延遲數量級

練過沒有

登入之後可以記下「這道題我練過」,下次回來看得到是哪天練的。

練過的人寫的心得

還沒有人寫。練完之後,說說你和模型聊出了什麼 —— 哪一幕被問住了,哪個結論你後來改了。

登入之後可以寫心得。

怎麼用

這一批是學習型的:它會引導你,不會追到你說不出話為止。卡住時它先問你卡在哪一層(沒聽過 / 知道但不明白為什麼 / 明白但用不上),再決定給什麼;同一個點引導兩次還不通才直接講,講完要你用自己的話複述一遍。

它會一直逼你算數:答「有開銷」「比較快」會被打斷。說得出結論說不出數字,就是背的 —— 這批練的就是這個。

怎麼開始

  1. 挑一份,點開它,把提示詞複製走。
  2. 新開一個空對話貼進去,什麼都別說,等它問第一個問題。
  3. 準備好被追問數量級:幾奈秒、幾微秒、差幾倍。答不上來就說不知道,它會記一筆然後繼續。

中途隨時能喊的四個口令

  • 跳过 立刻進下一幕
  • 换个说法 這一處換個角度再講一遍
  • 直说吧 講完整答案,然後要我複述
  • 复盘 立刻跳到收尾,輸出復盤卡片

三條坑

  • 末尾的底牌別自己先讀 —— 那一欄「常見的想錯」寫的就是每一問的答案。
  • 別急著拋名詞。說出「這是 TLB miss」很容易,說出它比缺頁快多少才算會。
  • 它開始誇你的時候,提醒它看「不許誇我」那條。引導不等於哄。

想補數量級感先做「隨機讀」和「首位元組」;線上排查用得上的是「malloc」「TCP 卡住」「上下文切換」;寫多執行緒程式做「重排序」和「偽共享」。