操作系统系统笔记整理

操作系统

前言

本篇文章的内容结合了哈工大李治军老师操作系统课程,王道考研操作系统的资料以及学习了B站CodeSheep的一次知识梳理,并且为了便于理解学习,增加了个人的一些解释。总之,概括而言对于开发人员来说,操作系统需要下四个方面进行学习:进程/线程;并发/锁;内存管理与调度;I/O原理,本文也将围绕这几点逐渐深入。

一、常用术语总结

名词 概念
PCB 进程控制块(PCB Process Control Block),系统中存放、管理和控制进程信息的数据结构称为
TCB 线程控制块
FCB 文件控制块
PID 进程ID(Process ID)
PSW 程序状态字寄存器,用于存放PC、IR等的信息
PC 程序计数器,存放下一条指令地址
IR 指令寄存器,存放到当前进行的指令
半双工 半双工和全双工是计算机网络中的概念,意思是通讯同一时间只允许一方发送数据(对讲机)
全双工 通信允许两方向上同时传输数据(电话)
P操作 来自荷兰语proveren,代表wait原语,通常使用P(S)代替wait(S)
V操作 来自荷兰语verhogen,代表原语signal,通常使用V(S)代替signal(S)
用户态 一般的操作系统对执行权限进行分级,分别为用保护态和内核态。用户态相较于内核态有较低的执行权限,很多操作是不被操作系统允许的,从而保证操作系统和计算机的安全。
内核态 内核态相当于一个介于硬件与应用之间的层,可以进行硬件的调度、使用,可以执行任何cpu指令,也可以引用任何内存地址,包括外围设备, 例如硬盘, 网卡,权限等级最高。
用户态内核态切换 三种情况下,用户态会转换到内核态,系统调用、程序异常(例如/0,内存资源耗尽等)、来自外围设备的中断
系统调用/程序接口 用户程序通过系统调用的方式才能对硬件进行使用,或者说操作系统将使用硬件的接口提供给用户程序
中断 中断是操作系统内核程序夺取cpu的唯一途径,或者说用户程序调用内核代码的唯一途径,因为在一般情况下,操作系统会将cpu使用权交给应用程序。

二、进程、线程

在进程、线程这一章节除了会讲进程、线程的概念,也会穿插,并发,锁。

2.1 进程

进程由PCB(进程控制块)组成,包含了PID、资源分配情况、进程运行情况。

对用户而言,我们能看到一个个PID,而对操作系统而言,底层需要处理的是一个个PCB

下图是通过任务管理器的用户视角下的进程。

在这里插入图片描述

2.1.1 进程控制

进程控制相关的原语:创建、终止、阻塞、唤醒、切换。也就是说我们通过原语进行进程控制,原语的执行具有原子性,不允许被中断,原语的实现可以通过“关中断指令”和“开中断指令”实现。

进程状态:运行态,就绪态,阻塞态

进程状态转换的条件:

运行 -> 阻塞 等待I/O或事件完成

运行 -> 就绪 进程的CPU时间片用完

就绪 -> 运行 获得了CPU的时间片

阻塞 -> 就绪 I/O或事件完成

下图为进程控制的流程图。

在这里插入图片描述

2.1.2 进程的组织形式

在一个系统中,通常有数十、数百乃至数千个PCB。为了能对他们加以有效的管理,应该用适当的方式把这些PCB组织起来。

进程的组织形式分为两种:链接式和索引式

在这里插入图片描述

根据进程状态的不同,创建不同的索引表,可以通过指针可以通过索引表指到个PCB。

在这里插入图片描述

2.1.3 程序的执行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VX347d1F-1606404338289)(操作系统.assets/屏幕截图 2020-09-23 181006.png)]

程序的状态字寄存器 PSW用来存放两类信息:一类是体现当前指令执行结果的各种状态信息,如有无进位(CY位),有无溢出(OV位)等;另一类是存放控制信息,如允许中断(IF位),跟踪标志(TF位)等。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UXDtOa3X-1606404338292)(操作系统.assets/屏幕截图 2020-09-23 181023.png)]

相较于程序,进程是动态的而程序是静态的

2.1.4 进程通信

进程通信是指进程之间的信息交换。进程是分配系统资源的单位,因此各个进程拥有的内存地址相互独立,为了保证安全,一个进程不能直接访问另一个进程的地址空间,为了实现进程通信,操作系统提供了以下方法

进程通信方法:共享存储、信号量、消息队列/信箱、管道通信、套接字(这个在计算机网络有涉及相关知识,可以把套接字理解为一个窗口)

共享存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DYPkQ2gg-1606404338293)(操作系统.assets/屏幕截图 2020-09-23 211625.png)]

消息传递

通过原语控制,进程1发送消息到消息缓冲队列或者信箱中,进程2从消息队列或者信箱中接收消息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FdUDqzUU-1606404338294)(操作系统.assets/屏幕截图 2020-09-23 211822.png)]

管道通信

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hnja55Ba-1606404338295)(操作系统.assets/屏幕截图 2020-09-23 212152.png)]

2.2 线程

进程是资源分配的基本单位,线程是调度的基本单位,往往一个进程包含多个线程。线程并发,系统开销小,不需要切换系统资源。

线程可以分为用户级线程和内核级线程,早期如Unix只支持进程,不支持线程,所以当时的线程是由"线程库"实现的,用户将进程分为多个线程,放入线程库,但操作系统仍然是按照进程进行处理的。

这种用户级线程是由程序负责管理的,包括进行切换。这种切换方式开销小,效率高,但下图当一个用户级线程被阻塞后,整个进程都将会被阻塞

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t9yv0EID-1606404338296)(操作系统.assets/屏幕截图 2020-09-24 081549.png)]

多线程模型

内核级线程是由操作系统完成调度的。

将n个用户级线程映射到m个内核级线程上( n >= m),优点是克服了多对一模型并发度不高的缺点,又克服了一对一模型中一个用户进程占用太多内
核级线程,开销太大的缺点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcBnYCVw-1606404338297)(操作系统.assets/屏幕截图 2020-09-24 081838.png)]

2.3 进程调度

2.3.1 三种调度方式

调度的产生是因为系统资源有限,没办法同时处理所有进程,需要特定的规则分配执行顺序,从而有了调度

操作系统调度层次分为三类:高级调度、中级调度、低级调度。

高级调度:从外存的后备作业中挑选一个(多个),建立相应的PCB,获得竞争处理的权力。

后面会讲到的虚拟内存技术出现后,为了提高系统的利用率和吞吐量,会将暂时等待的进程挂起到外存。

中级调度:能够决定哪个被挂起的进程重新回到内存

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值