1、linux 进程要素
程序是放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体,执行中的程序叫做进程,是动态的实体。
进程四要素:
有一段程序供其执行;
有进程专用的内核空间堆栈;
有task_struct 数据结构,即“进程控制块”;
有独立的用户空间;
linux进程状态:
(1)、TASK_RUNNING :进程正在被CPU执行,或者已经准备就绪,随时可
以执行。当一个进程刚被创建时,就处于
TASK_RUNNING状态。
(2)、TASK_INTERRUPTIBLE :处于等待中的进程,待等待条件为真时被唤醒,也
可以被信号或者中断唤醒。
(3)、TASK_UNINTERRUPTIBLE :处于等待中的进程,待资源有效时唤醒,但不可
以由其它进程通过信号(signal)或中断唤醒
(4)、TASK_KILLABLE :Linux2.6.25新引入的进程睡眠状态,原理类似
于TASK_UNINTERRUPTIBLE,但是可以被
致命信号(SIGKILL)唤醒。
(5)、TASK_TRACED :正处于被调试状态的进程
(6)、TASK_DEAD :进程退出时(调用do_exit),所处的状态。
......
2、linux进程调度
2.1、调度策略
SCHED_NORMAL(SCHED_OTHER): 普通的分时进程
SCHED_FIFO : 先入先出的实时进程
SCHED_RR: 时间片轮转的实时进程
SCHED_BATCH: 批处理进程
SCHED_IDLE: 只在系统空闲时才能够被调度执行的进程
2.2、调度时机
2.3、调度步骤
Schedule函数工作流程如下:
1). 清理当前运行中的进程;
2). 选择下一个要运行的进程;
3). 设置新进程的运行环境;
4). 进程上下文切换 。