第二章操作系统进程与线程

一、进程的概念组成特征

        程序的概念:静态的,存放在磁盘内的可执行文件,一系列的指令集合
        进程的概念:动态的,程序的执行过程
        进程创建时,会被操作系统分配一个唯一的、不重复的编号
                进程实体(进程映像)的组成:PCB、程序段、数据段
                进程控制块(PCB):
                        进程存在的唯一标志,进程创建时分配,进程结束时被回收
                                1、进程标识符(PID)、用户标识符(UID)
                                2、进程控制管理信息
                                3、资源分配清单 
                                4、处理机相关信息
                进程的特征:动态性(最基本特征)、并发性、独立性、异步性、结构性

二、进程的状态转换

进程的三种基本状态:运行、就绪、阻塞

进程的状态:
        创建态:进程正在被创建—资源分配,初始化PCB
        就绪态:创建完成具备运行条件,由于没有空闲CPU暂时不能运行(只缺CPU的资源就可以运行)
        运行态:在CPU上正在运行的进程
        阻塞态:由于某种资源的等待,等待某个事件的发生,进程无法继续向下执行终止态:进程执行结束,或者不可修复的错误

        PS:运行态=>阻塞态是进程由于资源不足主动请求等待阻塞态=>就绪态是被动等待资源的获取,阻塞态不能直接进入运行态,就绪态也不能直接转换为阻塞态
        进程PCB中会有一个state变量表示进程当前的状态,如1是创建态 2 是就绪态。。。。

三、进程的控制

        进程控制:实现进程的状态转换—由原语(一气呵成,不可中断)实现(关中断和开中断实现)
        进程的创建:
                1、创建原语:申请PCB 、分配所需资源、初始化、将PCB插入就绪队列
                2、引起创建的事件:用户登录、作业调度、提供服务、应用请求
        进程的撤销:
                
1、撤销原语:找到进程PCB、若PCB正在运行,立即剥夺CPU,将CPU分配给其他进程、终止所有子进程、将资源归还父进程或者操作系统、删除PCB
                2、引起终止的事件:正常结束、异常结束、外界干预
        进程的阻塞
                1、阻塞原语:找到PCB、保护运行现场、更改信息为阻塞态、暂停运行、插入道等待队列
                2、引起原因:等待某种资源分配,需要等待其他进程合作完成工作
        进程的唤醒:
                
1、唤醒原语:找到PCB 、从等待队列移除、改成就绪态、插入就绪队列等待调度
                2、引起原因:等待事件发生(阻塞与唤醒要成对存在)
        进程的切换:(更改两个进程的状态)
                1、切换原语:将运行环境存入PCB、移入相应队列,选择另一个进程执行,更新其PCB,根据PCB恢复运行环境
                2、引起原因:进程时间片到、有更高优先级进程到达、进程主动阻塞,进程终止

四、进程通信

        什么是进程通信(IPC):进程之间产生的数据进程的交互需要操作系统的支持,各进程之间内存地址相互独立(出于安全考虑)
        共享存储:基于数据结构的共享,基于存储区的共享(为了避免出错,访问共享存储区是互斥访问的)以格式化的消息为单位,通过操作系统提供的原语进行数据交换直接通信方式、间接通信方式
        消息头(信箱通信方式):发送进程ID 接受进程ID 消息长度等信息
        管道通信:数据流动是单向的 一个进程向另一个进程发送管道大小固定,管道写满后写入将被堵塞,读空后读将被阻塞

五、线程的概念

        什么是线程:程序执行的最小单位,基本CPU执行单元。(增加进程的并发性)引入线程后,进程是资源分配的基本单位,线程是调度的基本单位进程并发的同时,线程也可以并发,同时系统开销降低

        线程的属性:
                
1、处理机调度单位,多CPU计算机中,各线程可占有不同CPU
                2、同一个进程中,线程共享进程资源
                3、线程几乎不拥有系统资源
                4、不同进程中线程切换会引起进程切换
                5、同一进程中线程切换不会引起进程切换
                6、同一进程内线程之间通信无需操作系统干涉

六、线程的实现方式、多线程模型

        用户级线程:通过线程库实现线程管理工作,在用户态下完成,无需操作系统干预(操作系统意识不到线程的存在)(就是从用户视角看得到的线程)

        优点:线程切换不需要切换到核心态,系统开销小,效率高
        缺点:一个用户级线程被阻塞,整个进程被阻塞,并发性不高,多线程不可在多处理机上并行运行

        内核级线程:操作系统来管理,切换时需要变态,必须内核态下切换(操作系统内核能看到的线程)(处理机分配的单位)

        优点:一个被阻塞后,其他线程仍可运行,并发能力强,可在多处理机上并行执行
        缺点:管理成本高,开销大,线程切换需要操作系统内核来完成

        一对一模型:一个用户级线程映射到一个内核级线程,一一对应

        优点:一个被阻塞,别的可以继续执行,并发能力强,可多处理机并行运行
        缺点:一个用户进程程占用多个内核线程,管理成本高,开销大,线程切换需要操作系统内核来完成



        多对一模型:多个用户级线程映射到一个内核级线程,一个进程只分配一个内核级线程

        优点:用户级线程切换在用户态就可进行,操作系统开销小,效率高
        缺点:一个被阻塞后整个进程都被阻塞,并发性不高,多线程不可在多处理机上并行运行


        多对多模型:N个用户级线程映射到M个内核级线程,每个进程对应M个内核级线程(N≥M)

        优点:克服多对一了并发度

  • 75
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值