操作系统
操作系统第二章 进程
# 进程 1. 进程控制块PCB+程序段+数据段=进程实体。(PCB时进程存在的**唯一标志**) 2. 进程时进程实体的运行过程,时系统进行资源分配和调度的独立单位(基本单位)(线程引入之前,线程引入之后调度的基本单位就是线程了)。 3. 进程的组织方式:连接方式,建立队列;索引方式,建立索引表。这两种方式各有三个指针:1、执行指针;2、就绪队列指针;3、阻塞队列指针。 4. 进程的特征
进程的特征 | 描述 |
---|
动态性 | 最基本的特征 |
并发性 | |
独立性 | 进行资源分配调度的独立单位(同上上) |
异步性 | 各进程以不可预知的速度向前推进,可能导致结果的不稳定性 |
结构性 | |
- 进程的三种状态
状态 | 描述 |
---|
运行态 | 占有CPU |
就绪态 | 具备运行条件,但没有CPU |
阻塞态 | 因等待某件事的发生而不能运行 |
创建态 | |
终止态 | |
-
进程状态的切换
![进程切换](https://i-blog.csdnimg.cn/blog_migrate/563d730b9420e0ef8bb20006178d5389.jpeg#pic_center)
-
进程控制:实现进程状态的转换。用原语进行进程控制,不可中断的操作被称为原子操作.。其中原语采用关中断和开中断实现。
-
相关原语无非三类:1:更新PCB中的信息。1:将PCB插入合适的队列。3:分配/回收资源。
动作 | 原语 |
---|
进程创建 | 创建原语 |
进程终止 | 撤销原语 |
进程阻塞/唤醒 | 阻塞原语 /唤醒原语(成对出现) |
进程切换 | 切换原语 |
- 进程通信,为了保证安全,一个进程不能直接访问另一个进程的地址空间,所以有以下三种进程通信的方式:
通信方式 | 描述 |
---|
共享存储 | 两个进程对共享空间的访问互斥。分两种:基于数据结构的共享:低级,多限制;基于存储区的共享:高级,更快。 |
管道通信 | 只能半双工通信,如需双向同时通信则需要两个管道。进程要互斥访问,未写完不能读,未读完不能写,并且读进程只能有一个 |
消息传递 | 进程间的数据交换以格式化的消息为单位,以“发送消息”/“接收消息”两个原语实现。分两种:直接通信方式,直接挂载到对方的消息队列;简介通信方式,发送到邮箱中再接收。 |
线程
- 线程控制块(TCB)。引入线程后线程就成了成调度的基本单位。线程间并发提升了并发度,同一进程内的线程切换不用切换进程环境,系统开销小。同一个进程的不同线程共享资源。
- 线程的实现方式:用户级线程,对系统透明对用户不透明。内核级线程,对两者都不透明。
- 内核级线程才是处理及分配的单位
- 多线程模型
模型类型 | 描述 | 优点 | 缺点 |
---|
多对一模型 | 多个用户线程映射到一个内核线程,每个用户进程对应一个内核级线程 | 用户线程的切换在用户空间即可完成,不需要切换到核心态,线程管理开销小,效率高 | 一个用户级线程阻塞后整个进程都阻塞,并发度低,多个线程在多核处理机上运行 |
一对一模型 | 一个用户用级线程对应一个内核级线程 | 当一个线程阻塞后,别的线程可以继续执行,并发高,可以在多核机上并行执行 | 一个用户进程占多个内核级线程,线程切换的操作在内核中完成,需要切换到核心态,故成本高 |
多对多模型 | 提供一个用户级线程到内核级线程的线程库 | | 克服了上述缺点 |
调度算法
- 处理机调度:高级调度是作业调度,面向作业,调入和调出PCB,无->创建态->就绪态。
中级调度是内存调度,当进程调到外存状态为挂起状态,butPC不会被调出。
低级调度是进程调度,从就绪队列中选择一个进程将处理及分配给他,就绪态->运行态 - 进程调度:
不能进行进程调度与切换的情况:在处理中断的过程中、在操作系统内核程序临界区、原子操作过程中。其中临界资源是一个时间段内只允许一个进程使用的资源,各进程需要互斥的访问临界资源。临界区是指访问临界资源的那段代码。
进程调度分为:非剥夺调度方式:非抢占式。剥夺调度方式:抢占式。 - 调度算法的评价:
项目 | 描述 |
---|
CPU利用率 | 忙碌时间占总时间的比例 |
系统吞吐量 | 总共完成多少作业/花的时间 |
周转时间 | 作业提供给系统到完成的间隔 |
平均周转时间 | 周转之和/作业数 |
带权周转时间 | 作业周转时间/作业实际运行的时间 |
响应时间 | 用户提交请求到首次响应的时间 |