• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            那誰的技術博客

            感興趣領域:高性能服務器編程,存儲,算法,Linux內核
            隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
            數(shù)據(jù)加載中……

            linux內核V2.6.11學習筆記(3)--switch_to宏

            這一節(jié)可以很長,也可以很短.要寫長是因為這里有不少細節(jié)可以寫,要寫短是因為如果不關注細節(jié),而只關注基本的原理,那么幾句話就可以說完了.
            坦白的說,細節(jié)部分我還沒有完全吃透,即使是<<深入理解Linux內核>>一書,講到這部分也費了不少篇幅.因為我在第一遍閱讀時閱讀速度要盡可能的加快,一些不太明白的細節(jié)暫且放過去,等精讀第一遍完畢了再繼續(xù)深入,所以我選擇了長話短說.

            switch_to宏用于進程切換,給定了前一個進程結構體指針prev,以及需要切換到的進程結構體指針next,從prev切換到next.
            但是,實際上,switch_to宏有三個參數(shù),除了上面說的兩個參數(shù)之外,還有一個last參數(shù).而且使用switch_to宏的時候傳入的prev和last都是同一個值,比如會這么調用這個宏:
            switch_to(prev,next,prev).

            這是為什么呢?

            考慮一種場景,進程A切換到進程B,因為每個進程的空間是不同的,所以在切換之前,進程A的空間里prev=A,next=B,last=A.
            一段時間之后,需要切換回到進程A,假設當前進程是C,那么對于C而言prev=C,next=A,last=C.

            對比前后兩種場景:
            進程A切換前:prev=A,next=B,last=A
            進程C切換前:prev=C,next=A,last=C

            這時開始從進程C切換到進程A,注意到在切換之前switch_to宏將prev存放到了eax寄存器中,也就是在進程C切換到進程A之前,eax=C
            切換之后,很顯然,來到了進程A的空間,因此prev,next,last指針要回到進程A被切換出去之前的指向,因此prev=A,next=B,last=A,而eax的數(shù)據(jù)保持不變.
            在switch_to宏返回之前,將eax寄存器的數(shù)據(jù)存放到last中,因此,last=eax=C.
            此時,也就是進程A被切換回來之后,prev=A,next=B,last=C

            從上面的分析可以看出,實際上,prev指向的是進程切換之前被切換走的進程指針,而last指向的是切換之后從哪個進程切換過來的.
            兩者的意義并不一樣,只不過是在切換之后原先的prev無用了,可以用于保存切換之后是從哪個進程切換過來的,所以才會出現(xiàn)調用switch_to宏時prev和last相同的情況.

            posted on 2009-04-19 10:16 那誰 閱讀(4152) 評論(1)  編輯 收藏 引用 所屬分類: linux kernel

            評論

            # re: linux內核V2.6.11學習筆記(3)--switch_to宏[未登錄]  回復  更多評論   

            這里簡單的說eax起了一個把進程C內核堆棧內容復制到進程A內核堆棧的作用。而last完全可以沒有,直接填一個"=a"(prev)就可以了,因為在宏展開后實質上就是這樣的。這里用last只不過是為了便于理解。注意,在宏里面,出現(xiàn)last的地方實質上就是prev。
            2009-04-19 16:11 | Stephen
            亚洲国产精品久久久久网站 | AV狠狠色丁香婷婷综合久久| 久久精品日日躁夜夜躁欧美| 无码国内精品久久人妻蜜桃| 色欲综合久久躁天天躁蜜桃| 久久99国产综合精品| 久久精品国产色蜜蜜麻豆| 久久精品国产AV一区二区三区| 久久亚洲精品人成综合网| 国产精品免费久久久久久久久 | 久久久久人妻精品一区二区三区 | 久久性生大片免费观看性| 2021国内久久精品| 久久国产精品久久| 国内精品久久国产| 青青草国产精品久久久久| 久久婷婷五月综合色奶水99啪| 久久综合九色综合97_久久久| 欧美亚洲国产精品久久| 国内精品久久久久久麻豆| 麻豆一区二区99久久久久| 精品久久人人做人人爽综合| 久久人人爽人人爽人人片av高请| 日韩影院久久| 久久精品国产亚洲一区二区三区| 热re99久久6国产精品免费| 亚洲午夜精品久久久久久app| 欧美亚洲另类久久综合| www.久久热.com| 久久不见久久见免费视频7| 熟妇人妻久久中文字幕| 中文字幕日本人妻久久久免费| 亚洲欧美成人久久综合中文网| 国产精品欧美久久久久无广告 | 日韩人妻无码精品久久免费一| 中文精品久久久久人妻| 久久夜色精品国产| 久久天天躁狠狠躁夜夜av浪潮| 久久久久亚洲AV成人网| 久久影院久久香蕉国产线看观看| 99热成人精品免费久久|