科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道Linux系统原理知识 进程切换的概念介绍

Linux系统原理知识 进程切换的概念介绍

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

I386体系从硬件上支持任务间的切换。为此目的,增设了一种新段:任务状态段(TSS),首先它和数据段、代码段一样也是一种段,其次它记录了任务的状态信息。

作者:korn 来源:赛迪网 2008年4月14日

关键字: 系统安全 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段内容的。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章