OS概述
OS复习:OS概述
目录
虚拟化、并发化、持久化
- OS概述:概念、特征、批处理、分时实时、中断和系统调用
- 进程:
- 内存管理:
- 文件系统:
- IO设备:
鉴于本人大二上在没有先修计组的前提下,稀里糊涂的选了操作系统,所以基础和考研跨考的同学相当。离期末考还有一个月,选择速通
若想认真学习OS的同学,建议先修计组,参考jyy老师的课
第一章: OS基本概述
1.1 基本概念
OS是控制管理系统软硬件,合理阻止调度计算机的工作与资源分配,为用户和软件提供方便接口与环境的程序几何、
OS也是状态机
特征
并发和共享是操作系统基本特征;
并发:同一时间间隔执行多个任务;通过CPU分时实现,多道程序交替运行
共享:互斥共享、同时访问(分时共享)
虚拟: 将逻辑上的映射到计算机硬件实体,常见有虚拟处理器,虚拟存储器(内存管理),虚拟设备(IO设备)
异步 :由于资源有限,进程的执行并不是一贯到底,走走停停,拥有不可预知速度
目标和功能:
作为资源管理者
我们OS接下来四章学习内容就是围绕以下展开
进程管理:运行多个进程时,进程何时创建?何时撤销?何时管理?如何避免冲突?如何合理共享?所以我们要解决的问题包括:进程控制、同步、通信、死锁的处、处理机的调度
存储器管理:为了多道程序提供良好环境,提高内存利用率;我们要考虑:内存分配与回收,地址映射、内存保护与共享和内存扩充
- 文件管理:计算机信息以文件形式存在,我们需要考虑:文件存储空间怎么管理?目录管理?文件读写的管理和保护
- IO设备管理:设备管理要完成用户IO请求,方便用户使用各种设备,提高设备利用率;主要包括:缓冲管理,设备分配,设备处理和虚拟设备
以上工作都有OS完成,用户无需关注
作为用户与计算机硬件系统的接口
用户想要操纵硬件运行程序,OS也相应提供了接口:命令接口和程序接口
命令接口
联机控制和脱机控制方式:联机就是用户和OS强交互,你说一句,计算机反馈一句;脱机又称批处理接口,你列清单,计算机逐条完成并反馈
程序接口
GUI最终就是通过调用程序接口实现的
实现对资源的扩充
OS将裸机改造成功能更强、使用更方便的机子
1.2 OS的分类
- 手工操作:
- 批处理:单道批处理和多道批处理
单道批处理
将一批作业以脱机方式输入磁带,并在系统上配上监督程序
内存始终保持一道作业,是自动的(无需人工干预),有序的,单道性
但是这样造成高速CPU等待低速IO完成,CPU将会摸鱼很长一段时间。这是我们不允许的,应该狠狠压榨CPU,所以为了让CPU提高利用率和吞吐量,我们走多道程序
多道批处理
提交的所有作业放在外存上排成一个队列,我们采用一定算法调度这些作业放入内存。这些作业将穿插得共享CPU和IO设备:比方说A进程请求IO操作暂停运行,我们让CPU跑B进程,通过中断机制实现;
总而言之,我们要让计算机各部门都忙起来,不能有空闲时间
分时OS
将处理器分成很短时间片,按时间片轮流将处理器分配给各联机作业使用。
A进程我给你了5单位的时间片,没完成?不用做了,下学期再来吧;我们让B进程来
分时OS可以让多个用户通过终端同时共享一台机子;所以我们要确保独立性,不能A修改了B的内容,不能A发了请求,反馈了B的结果
分时OS不同多道批处理,这里我们更强调人机交互
实时OS
当你要发射导弹了,你不能导弹任务没完成,时间片切到另一个任务。这种情况下,我们需要硬实时系统,这些紧急任务不需要时间片排队,这就是实时操作系统
网路OS和分布式OS
网络OS为了让网络中各个计算机结合;、
分布式OS:分布性和并行性。与网络OS不同的是,分布式OS中若干计算机相互协同完成同一任务
1.3 OS运行环境
CPU运行模式
CPU执行两种程序:内核程序,用户应用程序;那么执行这两种性质程序,需要不同级别的指令
特权指令:IO、关中断、内存清零,存取用于内存保护的寄存器,送PSW到程序状态字寄存器等的指令
非特权指令:用户直接使用,不涉及内核
又把CPU运行分为用户态和核心态(尼玛的,为什么翻译不统一,什么目态,管态,内核态都有:sweat_smile:);注意应用程序向操作系统请求服务时通过访管指令,访管指令是非特权的
OS最底层是一些和硬件关联特紧密的,时钟管理,中断处理,设备驱动;其次则是进程管理,存储器管理和设备管理
时钟管理
时钟第一功能就是计时,向用户提供标准时间
第二呢,就是通过时钟中断机制,实现进程的切换;比方说,在分时OS中,采用时间片轮转调度,那我们就需要给任务设置DDL;而批处理系统通过时钟管理来衡量一个作业的运行程度
中断机制
我们之前提到为了提高CPU利用率,要让CPU在IO操作期间执行其他指令,这就需要中断;但现代OS远不止于此,不做详细介绍
中断机制有一部分属于内核,负责保护和恢复中断现场信息,转移控制权到相关处理程序。这样可以减少中断处理时间,提高系统并行处理能力
原语
没懂为啥这么翻译,经典看不懂中文,来看英格利什,atomic Operation:原子操作?
就像物质一直分割到最小单位一样,计算机程序也一样分割到最小的程序就是原语。原语是一气呵成的,不能中断
所以重点在atomic,原子性,不可分的
它是最接近底层,硬件的部分
具有原子性,操作只能一气呵成
运行时间短暂,调用频繁
如何定义原语?关中断。什是关中断?让某段程序不可分割完成后才能进行中断;(关中断应该是关闭中断的意思,服了)
中断和异常
我们想从用户态走向内核态时,只能通过中断或者异常
中断(Interruption):
也称外中断,来自CPU执行指令外部的事件。通常用于信息输入和输出;比如IO结束中断和时钟中断;
中断分为可屏蔽的,不可屏蔽;前者通过INTR线发出中断请求,改变屏蔽字可以实现多重中断,使中断更加灵活;后者使通过NMI线发出中断请求,通常是紧急的硬件故障;
异常(Exception):
内中断,CPU执行指令内部事件。比如程序非法操作码,地址越界,运算溢出,虚拟系统缺页以及专门的陷入指令;异常自然是不可屏蔽的
Exception分为故障(Fault)、自陷(Trap)和终止(Abort)。故障比如非法操作码,缺页故障,除数为0,运算溢出;自陷,用户态调用内核程序;终止,使得CPU无法继续执行硬件故障,控制器出错、存储器校验错;、
中断和异常是怎么处理的?
用户i条指令-> 检测异常-> 打断执行异常或中断处理->若解决,回到i+1或i指令;若无法解决,终止程序
注意中断程序和主程序是独立的,没有从属关系
系统调用
按功能分:
- 设备管理
- 文件管理
- 进程控制
- 进程通信
- 内存管理
系统调用处理过程:
- 将系统调用号和参数压入堆栈;调用指令,执行陷入指令,从用户态转向内核态,再由系统内核和硬件保护被中断现场,将PC和PSW以及通用寄存器内容压入堆栈
- 通过分析系统调用类型,转入相应系统调用子程序,通过系统调用号找到system call 的处理子程序入口
陷入指令,将CPU使用权主动交给内核程序,内核调用相应处理;
总而言之,用户不能直接执行对系统影响很大的操作,一定是要请求操作系统代理执行内核操作,这样保证了系统稳定性和安全性
1.4 操作系统结构
单内核:系统主要功能模块作为一个整体运行
微内核:内核最基本功能留在内核,其余就移动到用户态;移出的操作系统代码根据分层划分为若干服务程序,相互独立,交互要走位内核通信。
它里面有啥?
- 与硬件相关的
- 基本功能
- 客户和服务器间的通信
原本存放在内核中 的进程管理服务,虚拟存储器管理等待都被放在微内核外的一组服务器中实现。他们在微内核架构里 ,是作为进程的,运行在用户态,客户与服务器通过微内核的消息传递机制实现交互
这样好处是:可靠,其中在核外的某一操作系统模块崩溃,不会影响另一模块;实现解耦
特点:
- 扩展和灵活
- 可靠和安全
- 可移植
- 分布式计算
然而微内核需要频繁在用户态和核心态转换,执行开销较大,性能不高。
1.4 操作系统引导
笔者在折腾Linux深受bios苦,经常调引导
- 激活CPU;CPU读取ROM里Boot程序,将指令寄存器设置为BIOS第一条指令,开始执行BIOS
- 硬件自检:BIOS在内存最开始空间构建中断向量表。然后通电自检,硬件是否有故障
- 加载带有OS的因公安
- 加载主引导记录
- 扫描硬盘分区表,加载硬盘活动分区
- 加载分区引导记录(PBR)
- 加载启动管理器:此时,MBR中的引导程序将控制权交给GRUB(如果使用的是GRUB作为启动管理器)。GRUB将展示一个启动菜单,允许用户选择要启动的操作系统(如Linux、Windows等)。GRUB也可以在启动前修改内核参数等设置。
- 加载操作系统