考研系列-操作系统:第二章、进程与线程

思维导图

一、进程与线程相关概念

1.进程的组成

程序:是静态的,就是存放在磁盘的可执行文件,是一系列指令的集合

进程:动态的,是程序的一次执行过程。同一个程序执行多次会对应多个进程。

程序段、相关数据段和PCB三部分构成进程实体,也叫进程映像。

PCB是进程存在的唯一标志!!!

这里区分一下:进程映像(进程实体)是静态的,进程是动态的,进程时间上讲是由每时每刻的进程映像构成的。

2.进程的特征

3.进程的状态和状态转换

重要!!!区分主动、被动行为

4.进程的组织

(1)链接方式(大多数操作系统使用的方式)

(2)索引方式

5.进程控制-用原语来实现

创建、终止、阻塞+唤醒、切换

6.进程通信(三种高级方式)

进程间通信(IPC,inter process communication):两个进程之间产生数据交换

(1)共享存储

申请一块共享内存区,多个进程都可以对这个内存区访问

(2)消息传递

直接通信方式:点名道姓的消息传递

间接通信方式:以"信箱"作为中间实体进行消息传递

(3)管道通信

管道本质上是一种文件,注意管道方式是半双工通信,某一时段只能实现单向传输

只要管道非空,读进程就可以从管道读数据,只要管道不满,写进程就可以向管道写数据。

生产者-消费者方式进行通信

数据在管道内是先进先出的,本质上是一个循环队列。

管道机制必须提供三方面的协调能力:互斥、同步、确定对方的存在

7.线程和多线程模型

线程的实现方式:用户级线程、内核级线程

用户级线程和内核级线程并无本质区别,只是执行的特权级不一样,用户级线程进入内核后就变成了内核级线程

https://zhuanlan.zhihu.com/p/585490229

很多语言提供了强大的线程库,可以实现线程的创建、销毁、调度等功能

组合级线程:结合上面两个优点,详细结构见下面多线程模型的多对多模型

多线程模型

多对一模型:所有线程对应一个内核级线程,一个内核级线程只能分配在一个处理器上,所以这样的结构在多核处理器上不能实现多处理器并发执行程序。

一个进程可能对应多个内核级线程,只有所有的内核级线程运行的代码逻辑都阻塞时,进程才会阻塞

目前使用的三种主要线程库:POSIX Pthreads、Windows API、Java。

2022大纲新增考点↓

8.线程的状态与转换

9.线程的组织与控制

控制就是让线程在状态之间来回切换

第二遍又做错了!!!

资源调度和分派是指的处理器资源!!!

代码和赋值变量在正文段,未赋值和实参传递值在栈段 动态分配在堆区

这个记住就行

针对唤醒是指使用wakeup原语:将阻塞态进程转化为就绪态

这个注意!!!子进程和父进程都有独立的地址空间,不能同时对同一个临界资源使用,比如打印机

父进程和子进程有自己独立的地址空间,可以并发执行

主程序调用子程序只能是串行执行

还要考虑创建、终止原语!!不能只考虑唤醒和阻塞原语

先来先执行的策略X,时间片轮转调度算法

10.习题总结

(一)选择题

阻塞态是等待I/O操作的结果,等完成I/O操作后变为就绪态

某进程退出临界区,进程完成临界资源的使用,由阻塞态要唤醒变为就绪态

临界资源:

(二)简答题

1.进程和程序之间可以形成一对一、一对多、多对一、多对多的关系,请分别举例说明在什么情况下会形成这样的关系?

注意一对多并不是指的多线程,多线程是对于一个程序内多个线程执行多个任务来说的。

2.父进程创建子进程和主程序调用主程序有何不同?

3.为何进程之间的通信必须借助于操作系统内核功能?简单说明进程通信的几种主要方式?

4.什么是多线程?多线程与多任务有什么区别?

二、处理机调度

1.调度的基本概念

处理机调度是指对处理机进行分配,即从就绪队列中按照一定的算法(公平、高效的原则)选择一个进程并将处理机分配给它运行,以实现进程的并发执行。

处理机调度是多道程序操作系统的基础,是操作系统设计的核心问题

2.调度的三个层次

增加挂起态的目的是:为了降低主存的负担,将部分进程调出内存

3.调度算法评价指标

(1)CPU利用率

(2)系统吞吐量

(3)周转时间

(4)等待时间

(5)响应时间

4.进程调度的的实现

内核临界区和普通临界区的比较:

处理机切换的情况:被迫和主动引出进程调度的方式

进程切换

5.两种线程调度

(1)用户级线程调度

由于内核并不知道线程的存在,所以内核还是和以前一样,选择一个进程,并给予时间控制。由进程中的调度程序决定哪个线程运行。

(2)内核级线程调度

内核选择一个特定的线程运行,通常不用考虑线程属于哪个进程。对被选择的线程赋予一个时间片,如果超过了时间片,就会强制挂起该线程。

用户级线程调度在进程中完成,花费时间少,内核级线程调度需要完整的上下文切换,在内核中完成,所以花费时间多。

6.调度算法

先来先服务FCFS

短作业优先(包括非抢占式和抢占式)

高响应比优先(HRRN)

时间片轮转调度算法(属于抢占式算法)

优先级调度算法

非抢占式:

抢占式:

多级反馈队列调度算法

多级队列调度算法

7.习题总结

进程切换往往在调度完成后立刻发生,它要求保存原进程当前断点的现场信息,恢复被调度进程的现场信息。现场切换时,操作系统内核将原进程的现场信息推入当前进程的内核堆栈来保存,并更新堆栈指针。内核完成从新进程的内核栈中装入新进程的现场信息、更新当前运行进程的空间指针、重设PC寄存器等相关工作后,开始运行新的进程。

**调度和切换的区别:**调度是指决定资源分配给哪个进程的行为,是一种决策;而切换是指实际分配的行为,是执行行为。一般来说先有的资源调度,然后有的进程切换。

(一).选择题

第二遍又做错了!!

(二).简答题

1.为什么多级反馈队列调度算法能较好地满足各类用户的需要?

**这里注意:**两道作业系统就是说只能有两个作业同时存在内存中,其他的暂时放在外存里,等待某一个调入CPU执行完成后,使用某一规则(算法)将一个作业调入内存,然后这两个作业再按照进程调度算法安排哪个被调入CPU执行。

这里注意,到达时间的不同,被插入序列的位置不同,**这个地方有坑,**做题要注意

相关推荐
444A4E11 小时前
深入解析 Linux 进程状态:从 task_struct 双链表到 R/S/D/Z 状态的内核奥秘
linux·操作系统
望获linux1 天前
【Linux 基础知识系列】第二篇-Linux 发行版概述
linux·数据库·postgresql·操作系统·开源软件·rtos·嵌入式软件
code monkey.1 天前
【寻找Linux的奥秘】第八章:进程控制
linux·操作系统·进程
Maỿbe3 天前
线程安全问题的成因
线程
潇-xiao3 天前
Linux系统-基本指令(3)
linux·笔记·操作系统
望获linux5 天前
实时操作系统革命:实时Linux驱动的智能时代底层重构
linux·运维·重构·操作系统·开源软件·嵌入式软件
EQUINOX15 天前
MIT 6.S081 2020Lab5 lazy page allocation 个人全流程
操作系统
望获linux7 天前
工业RTOS生态重构:从PLC到“端 - 边 - 云”协同调度
linux·人工智能·自动化·操作系统·开源软件·制造·嵌入式软件
眸生8 天前
自制操作系统day7(获取按键编码、FIFO缓冲区、鼠标、键盘控制器(Keyboard Controller, KBC)、PS/2协议)
c语言·汇编·计算机外设·操作系统·计算机组成原理·寄存器