了解什么是进程线程
说明
本文通过参考《计算机操作系统》(第四版)进行总结
正文
进程的概述
在并发环境下,操作系统为了控制和管理进程,为每个程序都配置了一个专门的数据结构—–进程控制块(Process Control Block PCB)。 利用PCB来描述进程的基本情况和活动过程。这样,由程序段、相关的数据段和PCB三部分便构成了进程实体(又称进程映像)。
进程的定义
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程的特征
- 动态性 进程的实质是进程实体的执行过程,因此,动态性是进程最基本的特征
- 并发性
- 独立性
- 异步性
进程的基本状态及转换
进程共有五种状态
创建状态 (缺资源,没有完成创建工作时的状态)
创建进程的步骤:首先由进程申请一个空白的PCB,并向PCB中填写用于控制和管理进程的信息;然后为该进程分配运行时所必须的资源;最后,把该进程转入就绪状态并插入就绪队列之中。如果进程所需资源不能得到满足,比如系统无足够的内存使进程无法装入其中,此时创建工作没有完成,进程无法被调度运行,此时进程所处的状态称为创建状态。就绪状态
进程已分配到除CPU以外的所有必要资源,在就绪队列等待分配CPU时的状态执行状态
进程已得到CPU,其程序正在执行的状态阻塞状态
指正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行时的状态- 终止状态
当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终结权的进程所终结,它将进入终止状态
五种状态转化图
进程同步
两种形式的制约关系
- 间接相互制约关系
竞争共享资源,多个进程必须对临界资源(一段时间内只允许一个进程访问的资源)进行互斥访问
- 直接相互制约关系
进程为完成同一项任务而相互合作产生的制约关系
进程的同步机制
- 硬件同步机制
- 信号量同步机制 (P/ V操作)
- 管程机制
经典的进程同步问题:生产者–消费者问题 哲学家进餐问题 读者–写者问题
进程通信
进程通信的类型
共享存储器系统
在共享存储器系统中,相互通信的进程共享某些数据结构或共享存储区,进程之间能够这些空间进行通信管道通信系统
指用于连接一个读进程和一个进程以实现它们之间通信的一个共享文件,又叫pipe文件消息传递系统
指以格式化的消息(message)为单位,将通信的数据封装在消息中,并利用操作系统提供的一组通信命令(原语),在进程间进行消息传递,完成进程间的数据交换客户机–服务器系统
主要实现方法分为三类:套接字、远程过程调用和远程方法调用
进程调度
进程调度方式
- 非抢占方式
- 抢占方式
抢占的原则:1)优先权原则 2)短进程优先原则 3)时间片原则
进程调度算法
轮转(round robin,RR)调度算法
优先级调度算法
多队列调度算法
多级反馈队列(multileved feedback queue)调度算法
线程的概述
为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性,在操作系统中引入了线程
线程与进程的比较
调度的基本单位
在引入线程的OS中,线程作为调度和分派的基本单位。更好的并发性
拥有资源
进程作为系统中拥有资源的一个基本单位。线程本身不用有系统资源,而是仅有一点必不可少的、能保证独立运行的资源。线程共享所属进程的资源。独立性
同一进程中的不同线程间的独立性要比不同进程间的独立性低得多系统开销
系统创建或撤销进程得开销远大于线程得开销支持多处理机系统
线程的实现
实现方式
- 内核支持线程KST(Kernel Supported Threads)
- 用户级线程ULT(User Level Threads)
- 组合方式
三种不同的模型:多对一 一对一 多对多