个人向错题相关部分整理,涵盖真题、模拟、课后习题等。
第一章 计算机系统概述
第二章 进程管理
第三章 内存管理
第四章 文件系统
第五章 IO管理
- 多任务操作系统,具有并发和并行(运行在多CPU,但不是必须)的特点、需要实现对共享资源的保护。
- 执行系统调用过程,操作系统与硬件完成操作。
-
2022-31
-
发生系统调用时,CPU 执行陷入 (Trap) 指令,检测到“内中断”后,由CPU 负责保存断点(PC)和程序状态字,并将 CPU 模式改为内核态; 然后执行操作系统内核的系统调用入口程序,该内核程序负责保存通用寄存器的内容,再调用某个特定的系统调用服务例程。
-
- 与宏内核相比,微内核具有更高的可靠性、安全性和可扩展性,但性能更差。
- 操作系统引导
-
-
操作系统启动的过程包括以下步骤:
- ①加电自检(Power-On Self-Test,POST):计算机开机后,硬件会进行自检,包括检测内存、硬盘、显示器等设备是否正常。
- ②BIOS自检:BIOS(Basic Input/Output System)是计算机的基本输入输出系统,它会读取启动设备中的第一个扇区,并执行其中的引导程序。
- ③引导程序加载:引导程序会加载操作系统的内核程序,并将控制权交给操作系统。
- ④内核初始化:操作系统内核初始化后,会加载设备驱动程序和其他必要的系统程序。
- ⑤用户环境启动:操作系统会启动用户环境,提供给用户使用的图形界面或命令行界面。
-
- 操作系统提供运行环境?
操作系统通过切换CPU运行模式、提供中断和异常机制、给用户程序提供系统调用接口间接访问硬件、对程序的链接和装入并管理程序运行时的内存映像等多种手段来提供程序运行的环境,实现程序的隔离、保护、交互和管理,具体做法如下。
①CPU运行模式:操作系统通过CPU的特权级别来实现对程序的保护和隔离。当CPU处于内核模式时,能够执行特权指令,对计算机进行完全的控制,只有操作系统内核才能运行在这个级别。当CPU处于用户模式时,程序只能访问受限的资源,不能直接访问硬件设备和操作系统内核的数据结构。
②中断和异常:中断和异常是操作系统实现对外部事件和程序运行错误的处理的重要手段。当程序遇到错误或者需要响应外部事件时,操作系统会通过中断或者异常来暂停程序的执行,转而执行相应的处理程序。中断和异常的处理程序通常需要在内核模式中,可以访问操作系统内核的数据结构和硬件资源。
③系统调用:系统调用是程序与操作系统交互的接口。程序可以通过系统调用请求操作系统提供各种服务,例如文件读写、网络通信、进程管理等。操作系统会在内核模式下执行相应的服务,并将结果返回给程序。系统调用通常需要一定的系统调用号码和参数传递机制来实现。
④程序的链接和装入:程序的链接和装入是操作系统实现程序运行的关键步骤。程序通常需要经过编译、链接、装入等过程才能运行。操作系统负责将程序从磁盘中加载到内存中,并进行地址转换、重定位等操作。操作系统还需要为程序分配内存空间、设置程序的环境变量等。在多任务环境中,操作系统还需要为每个任务分配独立的内存空间,实现进程间的隔离和保护。
⑤程序运行时的内存映像:程序运行时,操作系统会为程序分配一块独立的内存空间,并将程序加载到内存中。程序可以在这段内存空间中执行,并与其他程序和操作系统隔离。操作系统还会为程序维护一些运行时状态信息,例如程序计数器、栈指针、数据段地址等。程序运行时的内存映像通常是操作系统实现程序隔离和保护的重要手段之一。 - 虚拟机技术
-
-
虚拟机技术可以实现隔离的、独立的计算机系统环境,主要是通过外核(Hypervisor)来实现的。外核是一种运行在物理计算机硬件之上的虚拟化管理软件,它可以实现多个虚拟机系统之间的隔离和资源分配。具体地说,外核通过以下几个方面来实现虚拟机的隔离和独立性:
- ①CPU虚拟化:外核可以通过CPU虚拟化技术,向虚拟机系统提供一个虚拟的CPU环境,让虚拟机系统可以运行自己的操作系统和应用程序。外核会拦截虚拟机系统对CPU的操作,并进行相应的转换和处理,保证虚拟机系统可以独立运行,而不会影响物理计算机的其他部分。
- ②内存虚拟化:外核可以为每个虚拟机系统分配独立的内存空间,并进行内存地址转换和管理。虚拟机系统可以独立地运行和使用自己的内存,而不会影响其他虚拟机系统或物理计算机的内存。
- ③I/O虚拟化:外核可以为每个虚拟机系统分配独立的I/O资源,例如磁盘、网络、图形显示等。虚拟机系统可以独立地运行和使用自己的I/O资源,而不会影响其他虚拟机系统或物理计算机的I/O。
- ④文件系统虚拟化:外核可以为每个虚拟机系统分配独立的文件系统,让虚拟机系统可以独立地管理自己的文件和目录。虚拟机系统可以在自己的文件系统中创建、读取和删除文件,而不会影响其他虚拟机系统或物理计算机的文件系统。
-
-
互斥访问原则:
-
- B×操作系统不知道用户级线程的存在,用户级线程的控制块一般存放在用户空间的数据结构中,由用户空间的线程库来管理。
- 操作系统只为每个进程建立一个PCB。
- 当一个进程创建一个内核级线程时,OS会为该线程分配一个线程控制块,并将其加入内核的线程管理数据结构中,
- 用户级线程的切换只在用户空间完成,切换效率高。
- B×操作系统不知道用户级线程的存在,用户级线程的控制块一般存放在用户空间的数据结构中,由用户空间的线程库来管理。
-
- III时间片用完则进入就绪队列等待重新调度,优先级最高的进程获得处理机资源,从就绪态变为执行态。
- 唤醒应当是从阻塞态就绪态。
- III时间片用完则进入就绪队列等待重新调度,优先级最高的进程获得处理机资源,从就绪态变为执行态。
-
信号量大题注意是否规定只能使用signal()和wait()。
-
死锁是多个进程因为竞争资源⽽造成的⼀种互相等待
- 系统资源的竞争、进程推进顺序非法
互斥条件 | • 多个线程不能同时使⽤同⼀个资源 |
不剥夺条件 | • 进程A已经拥有资源1,在⾃⼰使⽤完之前不能被其他进程获取 |
请求并保持条件 | • 进程A已经有资源1,想申请资源2,但是资源2被进程B持有,进程A处于等待状态,但是进程A不释放资源1 |
循环等待条件 | • 两个线程获取资源的顺序构成了环形链 |
-
死锁预防
-
死锁避免
- 安全算法、银行家算法
- 不会限制用户申请资源的顺序
-
死锁检测和死锁解除
- 资源分配图不可简化
- 死锁解除
-
管道通信(2014)
- 普通管道是单向通信,要实现双向通信,需要定义两个方向相反的管道。
- 管道大小通常为内存的一页,大小并不是受磁盘容量大小的影响。
- 管道读写都可能被阻塞。(满时不能写,空时不能读;注意读操作是一次性的)
- 一个管道可能有多个进程对其进行读写操作,但可能出现数据冲突,所以要实现互斥操作,保证每一次只有一个进程对其进行读操作或写操作。
-
动态分区内存管理算法,注意空闲分区链的排序方法。最佳适应是分区大小从小到大。区别首次适应。
-
加快虚实地址转换:增大TLB容量、让页表常驻内存。(2014)
虚拟地址与物理地址
其实虚拟地址与物理地址中最重要的就是MMU,如果把物理内存看成数组的形式,字节对应的唯一地址就说物理地址
MMU也就是内存管理单元,核心内容是负责虚拟地址到物理地址的转换,程序访问物理地址需要CPU通过总线请求后从内存读写数据,MMU作为翻译虚拟地址的核心构件,承载着对应的转换任务,并且为了加速翻译引入了TLB(转址旁路缓存)
TLB为MMU的核心内部单元,下图有完整的Hellow word程序第一条指令的转移过程
-
文件控制块中的二进制位串表示文件权限,而这个位串是这个文件持有的,需要规定所有用户类别的访问权限。
-
提高文件访问速度:
- 提前读
- 为文件分配连续的簇
- 延迟写
- (先将写数据写入缓冲区,置延迟写标志,当缓冲区需要再次被分配出去时才将缓冲区写入磁盘,减少磁盘访问次数)
- 采用磁盘高速缓存(减少磁盘访问次数)
- SSTF最短寻道时间优先算法总是选择(每次选最近)调度当前磁头所在磁道距离最近的磁盘。
- IO软件层次结构
- 驱动程序与IO控制方式有关,初始化设备是由驱动程序完成的。
用户层 I/O软件 | • ⽤户通过统⼀的接⼝发送命令 • 如发送read命令 |
设备独立性软件 | • 对⽤户的命令进⾏解析(逻辑设备名到物理设备名转换) • 如解析read命令 |
设备驱动程序 | • 负责执⾏OS发出的I/O命令,针对不同的硬件将命令解析为指令 (负责具体实现OS发出的命令或通过设备状态寄存器读取设备的状态) (处理键盘输入,将字符从键盘控制器读入系统缓冲区) • 若更换物理设备,只需要修改设备驱动程序,不需要修改应⽤程序 • 如将解析好的read命令转换为指令 • 如计算磁盘的柱⾯号,磁头号,扇区号 |
中断处理程序 | • 中断正在运⾏的进程,转⽽执⾏⽤户命令 • 如中断当前进程,执⾏相关指令 |
- SPOOLing技术
- 输入井和输出井。这是在磁盘上开辟的两大存储空间。输入井是模拟脱机输入时的磁盘设备,用于暂存I/0设备输入的数据,输出井是模拟脱机输出时的磁盘,用于暂存用户程序的输出数据。
- 输入缓冲区和输出缓冲区。为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区: 输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存从输出共送来的数据,以后再传送给输出设备;
- 输入进程SPi和输出进程SPo。这里利用两个进程来模拟脱机/0时的外围控制机。其中,进程SPi模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,直接从输入井读入内存,进程SPo模拟脱机输出时的外围控制机,把用户要求输出的数据先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上