在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 設(shè)計(jì)應(yīng)用 > 究竟什么是上下文切換?

            究竟什么是上下文切換?

            作者: 時(shí)間:2024-12-26 來源: 收藏

            我們經(jīng)常聽到上下文切換這個(gè)詞語,但是究竟什么是上下文切換呢?

            本文引用地址:http://www.biyoush.com/article/202412/465815.htm

            640-3.jpeg

            概念

            Linux是一個(gè)多任務(wù)的操作系統(tǒng),可以同時(shí)多個(gè)任務(wù)并發(fā)執(zhí)行,任務(wù)數(shù)超過CPU核心數(shù)。當(dāng)然同一時(shí)刻在執(zhí)行的任務(wù)數(shù),最多也就只能是CPU核心數(shù),只不過CPU時(shí)間片在多個(gè)任務(wù)之間來回切換罷了。上下文切換就是為了保存任務(wù)切換時(shí)刻的基本信息,當(dāng)CPU重新執(zhí)行任務(wù)的時(shí)候可以加載上下文信息,從當(dāng)時(shí)退出的位置、狀態(tài)重新開始執(zhí)行任務(wù)。這里所說的上下文信息,既包括虛擬內(nèi)存、棧、全局變量等用戶態(tài)的資源,也包括內(nèi)核堆棧、寄存器等內(nèi)核態(tài)的資源。

            上下文包含什么信息

            一個(gè)進(jìn)程的信息包含很多,可以理解為幾個(gè)方面:CPU-狀態(tài)信息、I/O狀態(tài)信息、父子進(jìn)程信息等:

            · 進(jìn)程狀態(tài):如就緒、運(yùn)行、阻塞等,表示進(jìn)程當(dāng)前的執(zhí)行狀態(tài)。

            · 程序計(jì)數(shù)器(PC):記錄進(jìn)程下一條指令的地址。

            · 寄存器內(nèi)容:包括通用寄存器、特殊寄存器等,保存進(jìn)程切換時(shí)的 CPU 狀態(tài)。

            · 內(nèi)存管理信息:如頁面表、段表、內(nèi)存限制等,用于管理進(jìn)程的內(nèi)存分配。

            · 調(diào)度信息:如進(jìn)程優(yōu)先級(jí)、調(diào)度隊(duì)列中的位置等,用于進(jìn)程調(diào)度。

            · I/O 狀態(tài)信息:記錄進(jìn)程當(dāng)前所使用的 I/O 設(shè)備、文件描述符等。

            · 進(jìn)程標(biāo)識(shí)符(PID):唯一標(biāo)識(shí)進(jìn)程的 ID。

            · 父進(jìn)程和子進(jìn)程信息:包括父進(jìn)程 PID、子進(jìn)程鏈表等。

            · 時(shí)間信息:如進(jìn)程的啟動(dòng)時(shí)間、CPU 時(shí)間片消耗等。

            640-4.jpeg

            這些信息在內(nèi)核中是通過結(jié)構(gòu)體存儲(chǔ)的,即PCB(Process Control Block)進(jìn)程控制塊,下圖只是示意,不包含所有內(nèi)容,在進(jìn)程讓出CPU的時(shí)候,這些上下文信息會(huì)保存到內(nèi)核中,當(dāng)下次執(zhí)行的時(shí)候再從內(nèi)核中加載回來。

            640-5.jpeg

            在Linux源碼中是通過結(jié)構(gòu)體task_struct來存儲(chǔ)的:

            640-6.jpeg

            上下文切換的類型

            · 進(jìn)程上下文切換:最經(jīng)常聽到上下文切換,多個(gè)進(jìn)程并發(fā),很好理解。

            · 線程上下文切換:包含了同一個(gè)進(jìn)程內(nèi)的和不同進(jìn)程內(nèi)的,不同進(jìn)程內(nèi)的消耗等同于進(jìn)程上下文切換。

            · 中斷上下文切換:因?yàn)橥庠O(shè)控制器執(zhí)行速度通常慢于CPU,比如打印一個(gè)數(shù)據(jù)這個(gè)時(shí)候需要內(nèi)核調(diào)用顯示設(shè)備,很慢怎么辦呢?這個(gè)是時(shí)候就會(huì)觸發(fā)中斷,讓CPU先干別的進(jìn)程,等打印完成了再回來。

            分析工具

            vmstat:查看整個(gè)系統(tǒng)的上下文切換情況

            · cs(context switch)是每秒上下文切換的次數(shù)。

            · in(interrupt)則是每秒中斷的次數(shù)。

            · r(Running or Runnable)是就緒隊(duì)列的長(zhǎng)度,也就是正在運(yùn)行和等待 CPU 的進(jìn)程數(shù)。

            · b(Blocked)則是處于不可中斷睡眠狀態(tài)的進(jìn)程數(shù)。

            vmstat 1
            // ====================================
            procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
            r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
            1  0      0 1944104 1026704 24011784    0    0    12    14   10    6  1  1 98  0  0
            1  0      0 1944072 1026704 24012760    0    0     0     0 2917 5351  1  1 98  0  0
            0  0      0 1945356 1026720 24011852    0    0     0   376 3559 6155  1  1 98  0  0

            pidstat:查看具體某個(gè)進(jìn)程的上下文切換情況

            · cswch 表示每秒自愿上下文切換(voluntary context switches)的次數(shù)。

            · nvcswch 表示每秒非自愿上下文切換(non voluntary context switches)的次數(shù)。

            pidstat -w 5
            // =======================================
            Average:      UID       PID   cswch/s nvcswch/s  Command
            Average:        0        12      0.60      0.00  ksoftirqd/0
            Average:        0        13     62.48      0.00  rcu_sched
            Average:        0        14      0.40      0.00  migration/0
            Average:        0        19      0.40      0.00  migration/1
            Average:        0        25      0.40      0.00  migration/2
            Average:        0        26      0.20      0.00  ksoftirqd/2


            關(guān)鍵詞:

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉