最近最常考内容
往年题:
年份 | 链接 |
2022 | |
2021 | |
2020 | ㅤ |
2019 | |
2018 | ㅤ |
基本概念
- 多道程序设计。
- 分时系统。
- 操作系统结构(宏内核、微内核、模块化、虚拟机)。
- 特权指令、访管指令、Trap指令。
- 系统调用。
进程管理
- 进程状态与转换
- 线程、多线程
- 进程调度算法及甘特图、评价
- 银行家算法和安全性算法
- 进程映像
- 进程同步和互斥
- 死锁原因、处理策略、判断死锁
- 进程的创建和终止
内存管理
- 系统颠簸,是什么,为什么,怎么办
- 全局/局部置换,固定/可变分配的理解
- 换页算法及评价
- 设计页表地址结构
- 快表与多级页表
文件管理
- 调用
open()
经历的过程
- 文件的物理存储方式(连续分配、链接分配、索引分配)
I/O管理
- I/O子系统三种方式
- 空闲空间管理方案
- 设备驱动
- 磁盘调度算法
分章考点
- 第一章
- 中断:硬中断,软中断,中断的作用
- 计算机操作系统的发展历史:多道程序设计,分时操作系统,实时操作系统
- 并发和并行的区别
- 模式:用户态和核心态;特权指令,访管指令,陷入指令、广义指令等
- 第二章
- 系统调用
- 操作系统的结构(简单结构、分层方法、微内核、模块化、虚拟机)
- 第三章
- 进程和线程的定义
- 进程状态转换图(重要,应知必会)
- 调度程序(短期, 中期,长期调度)
- 第四章
- 进程和线程的定义
- 用户级线程和内核级线程的定义和比较
- 第五章
- 调度算法[FCFS、SJF、抢占式SJF、优先级、RR、最高响应比、多级队列](非常重要,应知必会)
- 抢占式调度和非抢占式调度
- 第六章
- 临界区和信号量的定义
- 同步和互斥的定义
- 信号量如何处理同步互斥问题[哲学家就餐问题,信号量问题的求解](非常重要,应知必会)
- 第七章
- 死锁定义
- 产生的条件
- 解决方案(死锁避免、死锁预防)
- 银行家算法(重要)
- 资源分配图
- 第八章
- 逻辑地址和物理地址绑定
- 内存分配方式
- 分页管理、分页机制、单级页表和多级页表及其设计方案、快表机制(非常重要,应知必会)
- 第九章
- 局部性原理与缺页中断
- 掌握几种替换页选择方法:最佳算法、先进先出、 最近最久未使用,能给出页面替换序列和次数(非常重要,应知必会)
- 系统颠簸[现象描述、产生原因、解决办法](非常重要,应知必会)
- 第十章
- 文件系统的定义及其基本概念
- 文件共享
- 文件基本操作[打开文件]
- 第十一章
- FCB 定义以及FCB 与文件之间的关系
- 分配方法[连续分配、链接分配、索引分配,各种分配方法的优缺点](重要)
- 空闲空间管理(重要)
- 第十二章
- RAID
- 磁盘调度算法 [PCFS、SSTF、SCAN 、C-SCAN、 LOOK、C-LOOK](非常重要,应知必会)
- 第十三章
- I/O 控制方式的轮询方式,中断方式,DMA 方式
- 两种方式接口:阻塞 (同步)、非阻塞(异步)
典型题目
进程调度算法
进程同步
银行家算法/安全性算法
资源分配图检查死锁
内存分页置换算法
多级页表计算
磁盘调度算法
问答题
问题:
- 请结合操作系统对资源和程序的管理和分配,阐述中断的作用?
- 我们一直强调操作系统要充分利用硬件资源,有时操作系统也会违背这个原则, 请举例并说明理由。
- 什么是IPC?
- 什么是并发?
- 什么是Time Sharing System?
- 什么是xx指令?
- 什么是虚拟机?
- 什么是对换技术?
- 解释可执行程序从外存调入后,运行,结束的全过程,并具体描述这当中发生了什么事?
- 什么是Critical Section?
- 什么是Race Condition?
- 请解释在给定文件地址的条件下,使用open()系统调用的过程中在系统中增加文件描述符的全部执行过程(操作系统发生了什么样的变化和发生这种变化的流程),请问操作系统是如何实现多个用户对同一个文件的访问和操作的?
- 用户给出文件名,文件系统如何找到他的FCB?
- 什么是设备驱动程序?
- xxx
回答:
- 操作系统的主要任务是控制和管理计算机系统的硬件和软件资源,以提供给用户和其他软件方便的接口和环境。操作系统需要充分利用硬件资源, 但有时也会违背这个原则。例如,当操作系统需要保护计算机系统的安全时,它可能会限制对某些硬件资源的访问,以防止恶意软件或用户对系统造成损害。此外,当操作系统需要保证某些应用程序的稳定性时,它可能会限制对某些硬件资源的访问,以避免应用程序崩溃或出现其他问题。因此,在某些情况下,操作系统可能会违背充分利用硬件资源的原则,以保证计算机系统的安全性和稳定性。
- IPC英文全称"Instruction Per Clock",翻译过来就是每个时钟的指令,即CPU每一时钟周期内所执行的指令多少。这个公式最初是由英特尔提出的:CPU性能=IPC*频率(MHz时钟频率)。参考https://zhuanlan.zhihu.com/p/283389215。
- 并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。参考https://blog.csdn.net/scarificed/article/details/114645082。
- 特权指令、访管指令、陷入指令、广义指令。参考https://blog.csdn.net/qq_41904414/article/details/108522943。
- 第一种是”虚拟主机”的概念,第二种是”运行环境‘的概念。这两种概念是不同的。
- “虚拟机“在作“虚拟主机“讲的时候,指的是操作系统内安装另一个操作系统。你如在Windows里,你可以装一个VMWare,然后在VMWare里安装一个Ubuntu Linux。
- “虚拟机”在做“运行环境“讲的时候,指的是操作系统被安装一个支持其他软件包运行的软件。最明显的例子就是Java虚拟机〞
- 短期调度执行的频率最高。短期调度在内存作业中选择就绪执行的作业,并为他们分配 CPU。中期调度作为一种中等程度的调度程序,尤其被用于分时系统,一个交换方案的实施,将部分运行程序移出内存,之后,从中断处继续执行,从而改善进程组合或者因内存要求的改变引起了可用内存的过度使用而需要释放内存。长期调度确定哪些作业调入内存以执行.它们主要的不同之处是它们的执行的频率。短期调度必须经常调用一个新进程,由于在系统中,长期调度处理移动的作业时,并不频繁被调用,可能在进程离开系统时才被唤起。
- 进程中访问临界资源的一段代码。
- 计算机运行过程中,并发、无序、大量的进程在使用有限、独占、不可抢占的资源,由于进程无限,资源有限,产生矛盾,这种矛盾称为竞争(Race)由于两个或者多个进程竞争使用不能被同时访问的资源,使得这些进程有可能因为时问上推进的先后原因而出现问题,这叫做竞争条件(Race Condition)
- Mutex(互斥):两个或多个进程彼此之问没有内在的制约关系,但是由于要抢占使用某个临界资源(不能被多个进程同时使用的资源,如打印机,变量)而产生制约关系。
- Synchronization(同步):两个或多个进程彼此之问存在内在的制约关系(前一个进程执行完,其他的进程才能执行),如严格轮转法。
竞争条件分为两类:
- 当用户对一个文件实施操作时,每次都要从检索目录开始。为了避免多次重复地检索目录,大多数操作系统要求,在文件使用之前通过系统调用open被显式地打开。操作系统维护一个包含所有打开文件信息的表(打开文件表)。所谓“打开”,是指调用
open
根据文件名搜索目录,将指明文件的属性(包括该文件在外存上的物理位置),从外存复制到内存打开文件表的一个表日中,并将该表目的编号(也称索引) 返回给用户。当用户再次向系统发出文件操作请求时,可通过索引在打开文件表中查到文件信息,从而节省再次搜索目录的开销。当文件不再使用时,可利用系统调用close
关闭它,操作系统将会从打开文件表中删除这一条目。
在多个不同进程可以同时打开文件的操作系统中,通常采用两级表:每个进程表和整个系统表。每个进程表根据它打开的所有文件,表中存储的是进程对文件的使用信息。系统打开文件表包含文件相关信息,如文件在磁盘的位置、访问日期和大小。一旦有进程打开了一个文件, 系统表就包含该文件的条目。当另一个进程执行调用
open
时,只不过是在其进程打开表中增加一个条目,并指向系统表的相应条目。通常,系统打开文件表为每个文件关联一个打开计数器 (Open Count),以记录多少进程打开了该文件。每个关闭操作close
使count
递减,当打开计数器为0时,表示该文件不再被使用,并且可从系统打开文件表中删除相应条目。文件名不必是打开文件表的一部分,因为一旦完成对FCB在磁盘上的定位,系统就不再使用文件名。对于访问打开文件表的索引1,UNX称之为文件描达符,而Windows称之为文件句柄。
因此,只要文件末被关闭,所有文件操作就通过打开文件表来进行。
- sdadsa
- 设备驱动程序是一个允许高级(High level)计算机软件(computer software) 与硬件(hardware)交互的程序,这种程序创建了一个硬件与硬件,或硬件与软件沟通的接口,经由主板上的总线(bus)或其它沟通子系统(subsystem) 与硬件形成连接的机制,这样的机制使得硬件设备(device)上的数据交换成为可能。
或者:硬件直接相关,负责实现系统对设备发出的操作指令。驱动I/O设备工作的驱动程序。每一类设备配置一个设备驱动程序,是I/O进程和设备控制器之间的通信程序,封装了设备的具体差别,将接受到的抽象I/O请求转换为具体请求后发送给设备控制器