歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

Linux系統原理知識 進程切換的概念介紹

一、tast_struct結構

    它是一個數據結構,可以說,它代表了一個進程。它有很多字段,大體有一下幾種:

    標識號:進程標識、用戶標識、組標識。

    狀態: Linux的進程的四種基本狀態

    調度信息:優先級、時間片等

    進程鏈信息:父進程、子進程的指針

    文件信息:打開文件、虛擬文件系統

    上下文信息:進程的運行環境

    二、I386體系的任務管理和調度

    I386體系從硬件上支持任務間的切換。為此目的,增設了一種新段:任務狀態段(TSS),首先它和數據段、代碼段一樣也是一種段,其次它記錄了任務的狀態信息。

    與其它段一樣,也有描述它的結構:TSS描述符表,它記錄了一個TSS的信息,同時還有一個TR寄存器,它指向當前任務的TSS.任務切換的時候,cpu會將原寄存器的內容寫出到相應的TSS,同時將新TSS的內容填到寄存器中,這樣就實現了任務的切換。

    三、Linux進程切換

    Linux任務切換是通過switch_to這個宏實現的,它利用長跳指令,當長跳指令的操作數是TSS描述符的時候,就會引起CPU的任務的切換,此時,cpu將所有寄存器的狀態保存到當前任務寄存器TR所指向的TSS段(當前任務的任務狀態段)中,然後利用長跳指令的操作數(TSS描述符)找到新任務的TSS段,並將其中的內容填寫到各個寄存器中,最後,將新任務的TSS選擇符更新到TR中。這樣系統就正式開始運行新切換的任務了。上面提到的task_struct中的tss成員就是記錄TSS段內容的

Copyright © Linux教程網 All Rights Reserved