概念
- 动态性是进程的最基本特征
- 进程是资源分配和接受调度的单位
- 各进程以不可知的速度前进,可能导致运行结果的不确定性
- PCB是进程存在的唯一标志
- 注意
- 进程的管理者(操作系统)所需的数据都在PCB中
- 程序本身的运行所需的数据在程序段和数据段中
状态与转换
- 注意单核双核
进程间通信
- 管道通信
- 写满时不能再写;读空时不能再读
- 未写满时不能读;未读空时不能写
- 一个管道半双工通信,双向通信要俩管道
- 设置一个特殊的共享文件(管道),其实就是一个缓冲区
- 各进程互斥访问管道
- 共享存储
- 王道书上说管道是其优化和发展,感觉错的,肯定共享存储是最吊的
- 互斥地访问共享空间
- 两种方式
- 基于数据的(低级)
- 基于存储区的共享(高级)
- 消息传递
- 传送结构化的消息(消息头/消息体)
- 系统提供__发送接收原语__
- 两种方式
- 直接通信方式:消息挂到接收方的消息队列
- 简介(信箱)通信方式:消息先发到中间体(信箱)
线程概念及实现
概念
- 线程可以相同的代码,也可以用不同的代码
- 进程的地址空间相互独立,某进程内的线程对于其他进程不可见
线程的实现
- 用户级线程
- 线程的管理工作由应用程序通过线程库来完成的
- 不请求系统服务,在用户态下就完成线程切换
- 操作系统意识不到用户级线程的存在
- 优缺点
- 切换在用户空间完成,不需要切换到核心态,管理的开销小
- 某个用户级线程被阻塞,整个进程都会阻塞,并发度不高,多个线程不可在多核处理机上并行运行
- 因为在操作系统上还是以进程运行的
- 内核级线程
- 线程的管理由操作系统完成
- 线程的切换需要CPU变态,即切换到核心态
- 操作系统可以意识到内核级线程的存在
- 操作系统会为每个内核级线程建立相应的TCB,通过TCB对线程进行管理
- 优缺点
- 优点:当一个线程被阻塞的时候,别的线程还可以继续执行,并发能力强;多线程可以在多核处理机上并发执行
- 一个用户进程会占用多个内核级线程,线程的切换由操作系统完成,需要切换到核心态因此线程的管理成本高,开销大
- 多线程模型
- 这种多对一的线程是无法__并行__运行的
- 这个进程被分配了多个内核级线程时,如果在多核情况下,这些内核级线程肯定可以__并行__运行
- 但是考试中提到多对一模型则默认一个进程只被分配一个内核级线程
- 但是考试中提到多对一模型则默认一个进程只被分配一个内核级线程
- 内核级线程可以运行任意一个有映射关系的用户级线程代码,只有两个内核级线程中正在运行的代码逻辑都阻塞时,这个进程才会阻塞