进程 ======================================== 概念 ---------------------------------------- 进程是程序处于一个执行环境中在一个数据集上的运行过程,它是系统进行资源分配和调度的一个可并发执行的独立单位。 状态 ---------------------------------------- 进程一般存在7种基础状态:D-不可中断睡眠、R-可执行(TASK_RUNNING)、S-可中断睡眠、T-暂停态、t-跟踪态(TASK_TRACED)、X-死亡态、Z-僵尸态。 不可中断睡眠态。位于这种状态的进程处于睡眠中,并且不允许被其他进程或中断)打断。因此这种状态的进程,是无法使用kill杀死的。这种状态一般由I/O等待(比如磁盘I/O、网络I/O、外设I/O等)引起,出现时间非常短暂。 可执行态。这种状态的进程都位于CPU的可执行队列中,正在运行或者正在等待运行。 可中断睡眠态。这种状态的进程虽然也处于睡眠中,但是是允许被中断的。这种进程一般在等待某事件的发生,而被挂起。系统中大部分进程都处于S态。SLEEP态进程不会占用任何CPU资源。 暂停与跟踪态。这种两种状态的进程都处于运行停止的状态,暂停态进程会释放所有占用资源。 僵尸态的进程实际上已经结束了,但是父进程还没有回收它的资源(比如进程的描述符、PID等)。僵尸态进程会释放除进程入口之外的所有资源。 死亡态。进程的真正结束态,这种状态一般在正常系统中无法被捕获到。 进程创建 ---------------------------------------- Linux有几种进程创建方式,一种是通过fork()系统调用创建进程,一种是在用户级通过pthread库中的pthread_create()创建线程,一种在内核级通过kthread_create()创建。 作业调度算法 ---------------------------------------- - 先来先服务(FCFS) 有利于长作业而不利于短作业。 - 短作业优先(SJF) 较短的作业平均等待时间 ,较大的系统吞吐率。 - 响应比高优先(HRN) 求等待时间与执行时间两者时间之比。相对等待时间长优先。 - 优先级调度 作业的紧急程度、资源要求、类别等。 组成 ---------------------------------------- - 进程控制块(PCB) - 进程执行的程序(code) - 进程执行时所用的数据 - 进程执行时使用的工作区 进程调度 ---------------------------------------- - 先来先服务(FIFO)调度算法 - 时间片轮转法 - 优先级调度算法 - 多级反馈队列调度算法 - 实时系统调度策略 进程间通信 ---------------------------------------- - 消息通信 - 共享存储区 - 管道通信