Linux内核-进程

       进程的目的就是担当分配资源的实体,一个进程又几个用户线程程。每个线程代表一个执行流。线程的实现方法有三种:1、用户级线程;2、内核级线程;3、混合线程模型。Linux内核中的进程和线程都用相同的数据结构task_struct表示;线程是特殊的进程,共享同一地址空间、共同合作。

       进程描述符都是task_struct,包含了与进程相关的所有信息。一般来说能被调度的每个执行上下文都必须拥有自己的task_struct,即使是轻量级线程。

 

进程状态

       可执行状态(TASK_RUNNING):处于这个状态要么在CPU上执行,要么准备执行。

       可中断的睡眠状态(TASK_INTERRUPTIBLE):进程被挂起,指导某个条件变为真,产生一个硬件中断,释放进程正在等待的资源或传递一个信号把进进程唤醒,从而使等待的进程回到TASK_RUNNING。

       不可中断的睡眠状态(TASK_UNINTERRUPTIBLE):不能通过信号唤醒。

       暂停状态(TASK_STOPPED ):进程收到SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU信号进入暂停状态。

       跟踪状态( TASK_TRACED):进程的执行已由debugger程序暂停。

       僵死状态(EXIT_ZOMBIE):进程的执行被终止,但是父进程还没有发布wait4()或waitpid()系统调用来返回关于死亡进程的信息。发布wait()系统调用之前,内核不能丢弃包含在死亡进程描述符中的数据,因为父进程还需要它。

       僵死撤销状态(EXIT_DEAD):父进程刚发布wait4()或waitpid()系统调用,因而进程被删除。

 

task_struct结构

Linux用task_struct结构表示进程,2.6内核的task_struct结构相对于2.4内核有很大变化。该结构记录了进程的重要信息,与进程调度有关的信息包括:
(1)state
        进程状态由state成员变量表示。一个进程共有7种可能状态,分别是:TASK_RUNNING、TASK_INTERRUPTIBLE、TASK_UNINTERRUPTIBLE、TASK_STOPPED、TASK_TRACED、EXIT_ZOMBIE和EXIT_DEAD
(2)timestamp
        进程发生调度事件的时间(单位是 nanosecond)。
(3)prio, static_prio
        进程的优先级和静态优先级。Prio表示进程的动态优先级,与2.4内核中goodness()的计算结果相当。在0~MAX_PRIO-1之间取值(MAX_PRIO 定义为 140),其中0~MAX_RT_PRIO-1(MAX_RT_PRIO定义为100)属于实时进程范围,MAX_RT_PRIO~MX_PRIO-1属于非实时进程。数值越大,表示进程优先级越小。static_prio表示进程的静态优先级,相当于2.4内核中的nice。一个进程的初始时间片的大小完全取决于它的静态优先级。
(4)sleep_avg
        进程的平均等待时间,在0到NS_MAX_SLEEP_AVG之间取值,初值为0,相当于进程等待时间与运行时间的差值。它是动态优先级计算的关键因子,sleep_avg越大,计算出来的进程优先级也越高。
(5)interactive_credit
         该变量表示进程的交互程度。在-CREDIT_LIMIT到CREDIT_LIMIT+1之间取值,初始值为0,而后根据不同的条件加1减1,一旦该值超过CREDIT_LIMIT,即表示该进程是交互进程。
(6)array
        指向当前CPU的active就绪进程队列。
(7)run_list
        进程通过这个list_head变量连接自己到prio_array数组中queue队列,这样相同优

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值