本科生操作系统原理学习记录
学习记录全家桶
第一章 绪论
1.1 什么是操作系统
1.1.1 操作系统定义
是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,从而提供给用户和其他软件方便的接口和环境。
1.1.2 操作系统的目标
运行用户程序 核心目标
更高效的使用计算机 面向系统
更方便使用计算机 面向用户
1.1.3 冯诺依曼
运算器、控制器、存储器、输入设备、输出设备
1.1.4 中断过程
中断:当出现需要时,CPU暂时停止当前程序的执行,
中断信号:外部设备通过IO操作发送给CPU的信号
中断向量:中断程序的入口地址
中断过程:
- CPU执行一条指令时,外设向CPU发出中断请求
- CPU在满足响应的情况下,发出中断响应信号,
- CPU关闭中断,不再受理另一个设备的中断
- CPU寻找中断请求源(哪一个设备),并保存CPU自己的程序计数器(PC)等内容
- CPU根据中断号转移到处理该中断源的中断服务程序
- CPU处理结束,恢复现场信息,开放中断,并返回到原来被中断的主程序的下一条指令
1.2 操作系统的类型
1.2.1 简单批处理系统
实现了自动化作业调度
可以在无需人工干预的条件下运行作业
简单批处理系统的核心是一个常驻监控程序 (Monitor)
- 控制作业运输
- 调度作业运行
- 自动从一个运行完的作业转换到下一个作业
作业运行过程:
CPU和I/O操作交替进行,一上一下 CPU脉冲 I/O 脉冲
从字面上理解,就是一批一批的处理任务的一种系统,严格的定义,就是指用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。这种采用批量处理作业技术的操作系统称为批处理操作系统。简单地理解就是我手中有一大堆作业(相当一个程序)要运行,我一个一个的放入内存中执行效率会很慢,因为我要人为的去装载程序(早期的机器会把程序写到磁带中,然后人为地放到专门处理程序的机器中),所以我一次性放一批的作业,让操作系统自己去运行它,而我不需要干涉,这样我就省了很多力气
如下图
1.2.2 多道程序系统
- 在管理程序控制下相互穿插运行
- 使得CPU和IO可以并行运行
- 由不同控制器控制的设备也可以并行操作,而由相同的控制器控制的设备一般不可以并行操作
- 总有一个作业可以被执行
- 当一个作业被阻塞是,OS切换到另一个作业
目的:
使得CPU和设备在所有时间内尽可能忙碌,从而提高CPU和设备的利用率,充分发挥计算机系统部件的并行性。
并行:两个或者多个作业在同一时刻运行
并发:两个或者多个作业在同一时间间隔内依次运行
1.2.3 分时系统
多道程序设计的延伸
一个进程可以被多个用户使用,
时间片:把一段CPU的时间按照固定单位进行分割,每个分割得到的时间段称为一个时间片
分时的策略:
在一段时间内,每个作业依次轮流运行一个时间片。这样可以使得每个作业都获得较短的响应时间,从而满足交互作业的要求。遵循分时策略的联机多用户交互式的操作系统就是分时系统
1.2.4 分时和批处理的区别
从他们的定义我们大概可以总结出: 批处理系统没有人机交互,而分时系统允许多个用户同时使用 批处理系统中允许程序长时间地占用CPU,而分时系统不允许
问题:
多道程序按不按时间片来分配时间 ,
时间片时在分时系统中提出的概念,
多道程序没有时间片的概念
1.3 操作系统的操作
用户模式和内核模式
由硬件提供模式位
特权指令:可能引起系统崩溃的指令,只能运行在内核模式
用户程序需要用到特权指令怎么办?
解决办法:系统调用(System call)
视为软件中断 (trap) 中断源不一样 interrupt 硬件中断
1.4 操作系统的功能
1.4.1 I/O和内存保护
I/O保护:
防止用户程序执行非法 I/O
解决方法:所有 I/O指令都是特权指令
用户程序通过系统调用进行I/O操作
内存保护:
1.4.2 定时器
如果操作系统不能获得CPU控制权,就无法管理系统
- 用户程序死循环
- 用户程序不调用系统调用
解决方法:定时器
- 在一段时间之后发生中断,CPU控制权返回操作系统
- 固定时间和可变时间定时器
- 利用时钟和计数器实现
1.4.3 进程管理
操作系统核心目标:运行程序
进程:运行中的程序
CPU/进程管理:对CPU进行管理
1.4.4 内存管理
程序运行必须的存储设备
CPU只能直接访问寄存器、高速缓存
1.4.5 文件管理
解决信息在计算机中存储问题
以文件为单位,以目录为组织方式构建文件系统
文件放在外存上面
I/O设备管理
关键:设备无关性(独立性)
内容:设备驱动 设备管理
课后思考
还有哪些特权指令?
什么时候调用特权指令?
什么是操作系统中的双模态?引入双模态有什么好处?
操作系统的双模态为用户模式和内核模式,应用程序在用户模式下运行,核心操作系统组件在内核模式下运行
用户模式