进程系列 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组成队列,从而形成就绪队列、阻塞队列、运行队列等