现在的位置: 首页 > 综合 > 正文

进程管理

2017年08月25日 ⁄ 综合 ⁄ 共 1454字 ⁄ 字号 评论关闭

进程:执行中的一个程序,它是动态的实体。、

操作系统原理: 进程是进程调度和资源分配的基本单位,线程是进程调度的基本单位。

进程四要素:

          1.有一段程序供其执行。这段程序不一定要某个进程所有,可以与其它进程共用。

           2.有进程专用的内核空间堆栈。

           3.在内核中有一个task_struct 结构,我们通常称为进程控制块。有了这个结构进程才能成为内核调度的基本单位。进程和线程都有这个结构。

          4.有独立的用户空间。

              有独立的用户空间--------Y----进程

               有用户空间-----Y---用户线程

                    -----N--内核线程

在linux中,线程,进程都使用struct task_struct 来表示,它 包含大量描述进程,线程的信息,其中比较重要的有:

pid_t pid;

进程号,最大值10亿。

volatile long state 进程状态

1-TASK_RUNNING

        进程正在被cpu执行,或者准备就绪,随时可以执行。当一个进程被创建时,就处于此状态。对应操作系统原理中的就绪和执行。

2-TASK_INTERRUPTIBLE

     处于等待中的进程,待等待条件为真时被唤醒,也可以被信号或者中断唤醒。

      对应操作系统原理中的阻塞。linux中把阻塞分为几种阻塞。

3-TASK_UNINTERRUPTIBLE

    处于等待中的进程,待资源有效时唤醒,但不可以由其它进程通过信号signal或中断唤醒。

4-TASK_STOPPED

      进程终止执行。当接受到SIGSTOP SIGSTP等信号时,进程进入该状态,接受到SIGCONT信号后,进程重新回到TASK_RUNNING。

5-TASK_KILLABLE

被SIGKILL唤醒。

6-TASK_TRACED

正处于被调试状态的进程。

7-TASK_DEAD

进程退出时(调用do_exit)state字段被设置为该状态。

int exit_state进程退出时的状态。

EXIT_ZOMBIE(僵死进程)

表示进程的执行被终止,但是父进程还没有发布外waitpid()系统调用来收集有关死亡的进程信息。

EXIT_DEAD(僵死撤销状态)

表示进程的最终状态。父进程已经使用waitpid()系统调用来收集信息,因此进程将由系统删除。

struct mm_struct *mm

进程用户空间描述指针,内核线程该指针为空。

unsigned int policy

进程的调度策略

int prio

优先级

int static _prio

静态优先级

struct sched_rt_entity rt;

rt->time_slice

时间片,进程的缺省时间片与进程的静态优先级相关。

创建进程--用户空间--fork   vfork

调度---从就绪的进程中选出最适合的一个来执行。

SCHED_NORMAL:普通的分时进程。

SCHED_FIFO:先入先出的实时进程

SCHED_RR:时间片轮转的实时进程

SCHED_BATCH:批处理进程

SCHED_IDLE:只在系统空闲时才能够被调度执行的进程。

撤销进程--exit()

调度类:

CFS调度类(kernel/sched_fair.c中实现)用于以下调度策略SCHED_NORMAL.SCHED_BATCH.SCHED_IDLE.

实时调度类(kernel/sched_rt.c中实现)用于SCHED_RR SCHED_FIFO



抱歉!评论已关闭.