1.1操作系统的概念、功能、特征
1.什么是操作系统?操作系统是系统资源的管理者,向上层提供方便易用的服务,操作系统是软件,同时也是最接近硬件的软件。
2.操作系统的功能:处理机管理(比如CPU处理进程),存储器管理(比如程序相关数据放到内存中),文件管理(比如找文件,打开文件等),设备管理(比如将摄像头设备分配给进程)
3.操作系统的目标:安全、高效
4.操作系统向上层提供服务:如果要直接和底层交互就要使用二进制,但二进制很不友好。加入操作系统可以将我们的易懂的指令翻译成二进制代码(编程语言)。
5.有哪些服务:GUI(图形化用户界面)。联机(交互式)命令接口:比如:time系统会显示时间,我输入一条命令,系统执行一条。脱机(批处理)命令接口:把一系列命令保存到bat文件中,一次执行一堆。
程序接口:通过系统调用来使用程序接口。比如printf函数会调用系统和显示相关的功能。
6.操作系统实现对硬件机器的拓展。把cpu、内存、显示器、键盘等合理的组织起来,实现更多更复杂的功能。
7.操作系统的四个特性:并发、共享、虚拟、异步
并发和共享是两个最基本的特征,二者互为存在条件。
(1)并发:
并发:多个事件在同一时间间隔内发生。宏观上是同时的,微观上是交替发生的。
并行:多个事件同时发生。这个是真的同时了。
单核CPU同一时刻只能执行一个程序,各个程序并发进行。
多核CPU可同时执行多个:比如4核CPU可并行执行4个程序。
(2)共享:
系统中的资源可供多个并发执行的进程共同使用。
互斥共享方式:一个时间段只允许一个进程访问。(视频聊天摄像头只能分配给一个进程,只能跟一个人视频)
同时共享方式:允许一个时间段多个进程同时(类似于并发)访问。(同时发送多个文件,微观上看交替访问硬盘读取数据)
如果失去了并发性,只能有一个程序运行,那也就不需要共享了,毕竟只有一个。
如果失去了共享性,只能一个程序读数据,那另一个也执行不了,也就不能并发了。
(3)虚拟:
把一个物理上的实体转变为若干个逻辑上的对应物。
4GB电脑打开了4G的GTA和256M的QQ等,实际上4GB内存用户看来远大于4GB。
空分复用技术:虚拟存储
时分服用技术:虚拟处理器
没有并发性就谈不上虚拟性。
(4)异步:
进程的执行不是一贯到底,而是走走停停(一个任务不是一次性完成的)。
系统只有有并发性,才可能有异步性。(如果没有并发就一次执行完了)
1.2操作系统的发展与分类
手工操作阶段:打孔写代码,很慢
单道批处理:内存只能运行一个程序,大量时间空闲
多道批处理:(操作系统正式诞生)不能调试程序
分时操作系统:可以与计算机进行交互了
实时操作系统:可优先处理紧急任务(硬实时(导弹,自动驾驶,必须严格执行),软实时(不太及时也可以))
1.3操作系统的运行机制
1.程序是如何运行的?
编程语言把我们写的逻辑翻译成cpu能看懂的二进制指令。
指令:cpu能识别、执行的最基本的命令。本节指令指二进制指令,不是ls、cd之类的
2.内核程序:操作系统
应用程序:qq之类的应用软件
3.特权指令:如内存清零。
非特权指令:加减法之类的指令。
4.cpu有两种状态:内核态和用户态
处于内核态时,运行的是内核程序,可以执行特权指令(又叫管态)
处于用户态,运行的是应用程序,只能执行非特权指令(又叫目态)
程序状态寄存器(PSW)一个二进制位1表示内核态,0表示用户态
5.内核态和用户态的切换
内核态->用户态:执行一个修改PSW标志位的特权指令,内核让出cpu使用权。
用户态->内核态:由中断引发,硬件自动完成。
6.中断是内核夺回cpu使用权的唯一途径。
7.内中断(异常):
试图在用户态下执行特权指令。执行除法操作除数为0(非法指令)。会引发中断信号。
应用程序想请求操作系统内核的服务,会执行陷入指令,该指令会引发一个内部中断信号。
8.外中断(狭义的中断):
时钟中断,时钟部件每过一会就会给CPU发送一个时钟中断信号。
IO设备发来的中断信号。
9.异常:
陷入:陷入指令引发,应用程序故意引起
故障:由错误条件引起,可能被内核程序修复,修复完会把CPU使用权还给应用程序。比如缺页故障
终止:致命错误,内核程序无法修复,会直接终止应用程序。比如除数为零。
10.不同的中断信号,需要不同的中断处理程序。Cpu检测到中断信号,会去查中断向量表,找到对应中断处理程序的位置。
11.什么是系统调用?
可以看作一个特殊的函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
12.系统调用和库函数的区别?
有些库函数涉及系统调用:创建新文件
有些库函数不需要:取绝对值等数学运算
13.为什么系统调用是必须的?
比如同一时间,用wps和word打印,两个进程交替发送数据内容会混在一起。
用内核对共享资源进行统一的管理,就不会出现这种情况。
14.什么功能要用系统调用来实现?
设备管理、文件控制、进程控制、进程通信、内存管理
凡是要用到共享资源的都需要系统调用。
15.系统调用的过程?
传递系统调用参数--执行陷入指令(用户态)--执行相应的内请求核程序处理系统调用(核心态)--返回
1.4操作系统的体系结构
1.大内核:时钟管理+中断处理+原语+进程管理、存储器管理、设备管理
微内核:时钟管理+中断处理+原语(不可再分的)
2.操作系统内核需要运行在内核态,操作系统的非内核功能运行在用户态。
3.如果应用程序请求操作系统的服务,涉及进程管理、存储管理、设备管理;大内核只需要两次CPU状态的转换,微内核则需要六次CPU状态的转换。CPU状态的转换有成本,频繁CPU状态的转换会降低系统性能。
1.5操作系统引导
1.操作系统的引导:开机的时候,如何让操作系统运行起来。
2.在可看到的磁盘之外,在所有磁盘之前会留出一部分区域,叫主引导记录(MBR)。包含了磁盘引导程序和分区表(每一个盘每一个分区都占多大空间)。
3.C盘中有一部分存放引导记录(PBR)负责找到启动管理器,还有一本分存根目录和其他部分。
4.操作系统引导过程
- CPU从一个特定的主存地址开始,取指令,执行ROM引导程序(先进性硬件自检,再开机)
- 将磁盘的第一块-主引导记录读入内存(由ROM的自举程序),执行磁盘引导程序,扫描分区表
- 从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序。
- 从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成开机的一系列动作。
1.6虚拟机
- 传统的计算机一台物理设备只能运行一个操作系统。
- 虚拟机:将一台物理机器虚拟为多台物理机器,每个虚拟机都可以独立运行一个操作系统。虚拟机管理程序(VMM)
- 第一类VMM直接运行在硬件之上;第二类VMM运行早宿主的操作系统上(比如VirtualBOX)。