进程系列 3-1
进程的基本概念
进程的控制
进程的同步
进行同步的经典问题
进程通信
线程
进程
可以运行起来的可执行程序,就是一系列的指令序列,是程序的一次执行
进程的组成
程序段:程序的代码,即一系列的指令 数据段:存放程序运行产生、使用的数据、变量
进程和进程实体的区别:
进程实体:PCB+数据段+程序段,又名》》进程映像 进程是进程实体的运行过程,是系统资源调度的一个独立单位
程序和进程的区别:
进程强调动态性,在内存中 程序是静态性,在外存中
进程的特征
动态性:进程是程序的一次产生,有动态的产生与消亡 并发性:与其他进程一起执行 独立性:进程是独立运行的,是系统进行资源分配和调度的最小单位 异步性:由于进程之间的相互制约,让各个进程之间按照各自的方向运行,不能停止在等待一个进程
进程的状态(三个)
执行:占有着cpu,运行 就绪:可以运行,但是因为其他进行在运行而暂时不允许 阻塞:缺少运行的条件,而无法运行
进程的新的状态(5个 单挂起)
创建状态:进程已经创建,但是没有被os接纳为可执行进程 执行:占有着cpu,运行 就绪:可以运行,但是因为其他进行在运行而暂时不允许 阻塞:缺少运行的条件,而无法运行 终止状态:不能在执行了,存留了状态码和计时统计数据。 挂起状态:进程被交换到外存,状态变为挂起状态
进程的新的状态(7个 双挂起)
执行状态:当一个进程在处理机上运行时,则称该进程处于运行状态。 新建状态:进程刚创建,但还不能运行,OS还没有把它加到可执行进程组中,通常是还没有加载到主存中的新进程。 退出状态:OS从可执行进程组中释放出的进程,或者是因为它自身停止了,或者是因为某种原因被取消。 活跃就绪:指进程在主存并可被调度的状态。 静止就绪:等待时间片的过程太长,将活跃就绪状态的进程挂起到外存 活跃阻塞:进程在执行态,因为没有资源等,进入阻塞状态等待 静止阻塞:阻塞时间太长,将该进程挂起到外存
*处理机包括中央处理器,主存储器,输入-输出接口,加接外围设备就构成完整的计算机系统
挂起的原因:(为什么引入挂起状态)
进程全部阻塞,处理机空闲,于是腾出空间,让新的进程进来,所以将内存的堵塞的进程放出去 操作系统的需要 终端用户请求 父进程的需求 系统负荷过重,内存空间紧张
进程的开始到结束的基本结束
程序生成:预编译》编译》汇编》链接转化为目标文件
程序转换为进程:
内核将程序代码和数据读入内存,为程序分配内存空间 内核为进程分配进程标识符PID和其他资源 内核为进程保存PID以及相应的状态信息,把进程放到运行队列中等待执行,程序转化为进程后就可以***作系统的 调度程序调度执行了
进程的创建
进程创建有两种方式:由操作系统创建,由父进程创建 系统启动时,操作系统会创建一些进程,他们承担着管理和分配系统资源的任务,这些进程通常被叫做系统进程 系统允许一个进程创建子进程,从而形成进程树结构 整个Linux系统的所有进程也是一个树形结构 除了0号进程是由系统创建的,其他进程都是由他们的父进程创建的
关于进程的创建函数fork:
pid_t fork(void) 1.对于父进程,fork函数返回子进程的PID 2.对于子进程,fork函数返回0 3.如果创建出错,则fork函数返回-1
PCB
包含操作系统对该进程进行管理所需要的信息,在程序运行的时候,会为进程创建 第二定义:为了描述和控制进程的运行,系统为每个进程定义了一个数据结构
PCB包括的内容
进程标识符:用来唯一的标识一个进程 内部标识符:唯一的数数字标识符,pid 外部标识符:创建者自己使用数字和字母创建, 处理机状态 由处理机的寄存器的内容组成,用来恢复断点状态 进程调度信息 进程状态 进程优先级 事件:由就绪变成阻塞状态发生的事情,即阻塞原因 进程调度需要的信息 进程控制信息 程序和数据地址:指进程的程序和数据所在的外存或内存地址,方便在调度的时候,找到资源和程序 资源清单:除了cpu以外,进程所需要的资源和已经分配到的资源 链接指针:下一个PCB的地址 进程同步和通信机制
PCB的组织方式
1)线性表方式:不论进程的状态如何,将所有的PCB连续地存放在内存的系统区。这种方式适用于系统中进程数目不多的情况。 2)索引表方式:该方式是线性表方式的改进,系统按照进程的状态分别建立就绪索引表、阻塞索引表等。 3)链接表方式:系统按照进程的状态将进程的PCB组成队列,从而形成就绪队列、阻塞队列、运行队列等