1.什么是操作系统
控制和管理整个计算机系统的硬件和软件资源,对资源进行组织、分配、调度的一组程序集合,是系统资源的管理者,最接近硬件的软件。
2.操作系统的特征是什么?
并发性:两个或者多个事件在同一时间段内发生。(并行是同一时刻执行不同多个事件,并发是同一时间段执行多个事件。)
共享性:系统中的资源可供内存中多个并发执行的进程共同使用。
虚拟性:把物理上的实体变为若干逻辑上的对应物
异步性:进程的执行并不是一贯到底的,它以不可预知的速度向前推进。
3.操作系统的功能?
①管理计算机资源,包括处理机管理、内存管理、文件管理、设备管理
②作为用户和计算机硬件系统之间的接口,提供命令接口和程序接口
③可以将逻辑改造成功能更强、使用更方便的机器,所以操作系统可以作为扩充机器。
4.CPU有哪两种状态?
内核态:运行内核程序,可以执行特权指令
用户态:运行应用程序,不可以执行特权指令
用户程序主动请求从用户态变成内核态,可以执行访管指令,也就是陷入指令。从用户态到核心态的唯一途径就是异常或者中断,访管指令也是产生一个中断事件,自愿进入核心态,这个中断叫做访管中断。
5.系统调用和使用库函数有什么区别?
系统调用是程序中能用类似函数调用的操作系统服务的集合,系统调用是通向操作系统本身的接口,是面向底层硬件的
库函数是语言或应用程序中的一部分,在用户地址空间执行,有缓冲。库函数调用则是面向应用开发的
6.中断和系统调用区别?
中断过程:中断请求 中断响应 断点保护 执行中断服务程序 断点恢复 中断返回
系统调用过程:应用程序在用户态执行时请求系统调用,中断,从用户态进入内核态,在内核态执行相应的内核代码。
中断是由外设产生, 无意的, 被动的
系统调用是由应用程序请求操作系统提供服务产生, 有意的, 主动的。要从用户态通过中断进入内核态。
7.什么是临界区,什么是临界资源?
临界资源:在一段时间内只允许一个进程访问的资源是临界资源。
临界区:访问临界资源的那段程序称为临界区
8.微内核和宏内核的概念以及区别?
宏内核:将操作系统中的主要功能模块都作为一个整体运行在核心态。
微内核:将内核中最基本的功能,比如进程管理,保留在内核中,将其他的不需要在内核态执行的功能转移到用户态执行,降低了内核的复杂性,因为需要频繁的在核心态和用户态之间进行切换,所以系统开销比较大,性能不太好。
微内核的操作系统有:Window,Mac。
宏内核的操作系统有:Unix,Linux。
9.什么是进程,进程和程序有什么区别?
为了更好的描述和控制程序的并发执行,引入了一个概念叫做进程,进程是由PCB(process control block 进程控制块)+程序段+相关数据段组成。程序是一个静态的概念,存放在磁盘里的可执行文件,是指令的集合,但是进程是动态的,是程序执行的过程。
10.进程通信的方式有哪些?
高级通信方式:
①共享存储(通信的进程之间存在一块可以直接访问的共享空间)
②消息传递(直接进行消息传递或者利用中间信箱进行传递)
③管道通信(开辟缓冲区)
④共享文件(利用操作系统提供的文件共享功能实现进程之间的通信)
低级通信方式:
PV操作(信号量机制)。
– P:wait(S)原语,申请S资源
– V:signal(S)原语,释放S资源
11.什么是线程,进程和线程的区别?
线程就是轻量级的进程,是一个基本的CPU执行单元,是被系统独立调度和分配的基本单位,但是线程自己不拥有系统资源,它与同属一个进程的其他线程共享该进程所拥有的全部系统资源。
进程作为系统资源分配的基本单元,线程独立调度的基本单元
12.为什么要引入线程?
为了更好的使多道程序并发执行,以提高系统资源利用率和系统吞吐量,增加程序的并发性。
13.什么是多线程,多线程和多任务有什么区别?
多线程:在一个程序中可以定义多个线程,并同时运行他们,每个线程可以执行不同的任务
区别:多任务是针对操作系统而言的,代表操作系统可以同时执行的程序个数;多线程是针对程序而言的,代表一个程序可以同时执行的线程个数,每个线程可以完成不同的任务。
14.进程切换的过程?
保持处理机上下文 -> 更新PCB -> 把PCB移入相应队列(就绪、阻塞) -> 选择另一个进程并更新其PCB -> 更新内存管理的数据结构 -> 恢复处理机上下文
15.三级调度是哪三级?
①作业调度,又称为高级调度,主要是把任务按一定的原则从外村调入内存。
②中级调度,又称为内存调度,将暂时不能运行的进程调至外村等待(这个时候的进程叫做挂起态)
③进程调度,又称为低级调度,按照某种方法从就绪队列中选取一个进程,将处理机分配给它
16.什么时候不可以进行进程调度?
①在处理中断的过程中②进程在操作系统内核程序临界区中(内核程序临界区是指用来访问内核的数据结构)③在其他需要完全屏蔽中断的原子操作过程中。
17.典型的进度调度算法是是什么?
①先来先服务算法 ②短作业优先算法 ③高响应比优先调度算法④时间片轮转调度⑤优先级调度算法⑥多级反馈队列调度算法(时间片轮转和优先级调度算法的综合)
18.什么是进程同步和进程互斥
同步:也叫做进程之间的直接制约关系,进程与进程之间在某些位置上需要协调他们的工作次序。
互斥:也叫做进程之间的间接制约关系,当一个进程进入一段临界区使用临界资源时,另一个进程必须等待
19.同步机制应该遵循的准则?
空闲让进,忙则等待,有限等待,让权等待
20.管程是什么?
由一组数据及对这组数据操作的定义组成的模块。同一时间只能有一个进程使用管程,即管程是互斥使用的,进程释放管程后需唤醒申请管程资源的等待队列上的进程。进程只有通过进入管程并使用管程内部的操作才能访问其中数据
21.什么是死锁?
多个进程因为争夺资源而造成一种僵局(相互等待),如果没有操作系统干预,这些进程都将会没有办法继续前进
22.死锁、饥饿和死循环有什么区别?
死锁:多个进程因为争夺资源而造成一种僵局(相互等待),如果没有操作系统干预,这些进程都将会没有办法继续前进
饥饿:一个进程长期得不到想要的资源
死循环:在进程执行的过程中,一直跳不出某个循环的现象。
23.死锁产生的原因是什么?
①对于不可剥夺系统资源的竞争 ②进程推进顺序非法(请求和释放资源的顺序不当)③信号量使用不恰当
24.死锁产生的必要条件?
互斥条件:必须互斥的对系统资源进行争抢
不剥夺条件:进程所获得的资源在未被使用完之前,不能被其他进程强行夺走,只能有进程自己来释放该资源
请求并保持条件:进程已经保持了至少一个资源,但是又提出了新的资源请求,而新资源已经被其他进程占有了,此时这个进程已经被阻塞,但是不愿意放弃手中的资源
循环等待条件:存在一种进程资源等待链,链中每个进程已经获得的资源都被链中下一个进程所请求
25.怎么对避免或者预防死锁的产生?
A.死锁预防:破坏产生死锁的四个必要条件
①破坏互斥条件:允许资源可以共享使用。例如spooling技术,把独占设备在逻辑上改在共享设备
②破坏不可剥夺条件:当请求新资源不满足的时候,必须释放手中占有的资源。
③破坏请求并保存条件:采用静态分配方法,进程在运行前一口气申请完所有它需要的全部资源
④破坏循环等待条件:采用顺序分配方法,给系统中的资源编号,规定每个进程必须按照编号递增的顺序请求资源,同类资源一次申请完
B.死锁避免:用某种算法防止系统进入不安全状态(安全状态是指系统能够按照某种进程推进顺序为每个进程分配它所需要额资源,直至能够满足每个进程对资源的最大需求,使每个进程都可以顺利完成)
26.当死锁已经产生了,怎么去解除死锁?
①资源剥夺法:挂起某些死锁进程,并且回收它的资源,以便让其他进程继续推进
②撤销进程法:强制撤销部分、甚至全部死锁进程并剥夺这些进程的资源
③进程回退法:让一个或者多个进程回退到足够回避死锁的地步
27.作业和进程的关系?
进程是系统资源的使用者,系统的资源大部嗯都是以进程为单位进行分配的,而用户使用计算机是为了实现一串相关的任务,通常把用户要求计算机完成的这一串任务叫做作业。
28.操作系统的内存管理有什么功能?为什么要进行内存管理?
功能:①对内存空间进行分配与回收 ②将程序中的逻辑地址与内存中的物理地址进行转换 ③利用虚拟存储技术对内存空间进行扩充 ④对存储进行保护
如果不对内存进行管理,容易导致内存数据的混乱,以至于限制进程的并发执行,为了更好的支持多道程序并发执行,所以必须进行内存管理。
29.c/c++程序编译流程是什么?
预处理->编译->汇编->链接
30.内存分配的管理方式有哪些?
连续分配管理方式:
①单一连续分配 ②固定分区分配 ③动态分区分配(可以按照首次适应算法–最好、最佳适应算法、最坏适应算法、邻近适应算法)
非连续分配管理方式:
①基本分页存储管理方式(把主存空间划分成大小相等且固定的块) ②基本分段存储管理方式(按照用户进程中的自然段划分逻辑空间,大小可能会不一样) ③段页式管理方式(先按照逻辑模块分段,再将各段分页)
31.什么是页表和快表,有什么作用?
页表是提供逻辑地址中的页号和内存地址中的块号对应关系的一种工具,他的作用是在动态重定位方式装入作业的时候,需要利用页表做地址转换。
快表就是放在高速缓存中的部分页表,功能和作用与页表一致。
用页表做地址转换的话,读写数据的时候,cpu需要两次访存,但是如果用快表做地址转换,有些时候cpu只需要访问一次cache(高速缓冲存储器),一次主存即可,会提高读取的速度。
32.页表中地址翻译的过程
从逻辑地址中读取页号–看页号在不在快表中–(不在快表中)查找页表–看所对应的内存号在不在cache中–(不在cache中)访问内存
33.多级页表解决了什么问题,又带来了什么问题?
多级页表解决了当逻辑空间过大的时候,页表的长度会大大增加的问题,但是采用多级页表时,一次访盘会需要多次访问内存甚至磁盘,所以会增大访存时间。
34.虚拟存储器的定义是什么
基于局部性原理,在程序执行过程中,所访问的信息不在内存中,由操作系统将所需要的部分调入内存。操作系统也可以将内存中暂时用不到的内容换到外存。从用户的角度而言,操作系统好像为用户提供了一个比实际内存大的多的存储器。
35.为什么要引入虚拟存储,虚存是怎么工作的?
实际内存不够大,需要在逻辑上扩大存储容量
虚存使用外存上的空间来扩充内存空间,通过一定的换入换出,使得整个系统在逻辑上能够使用一个远远超过其物理内存大小的内存容量。
36.虚拟存储空间的大小由什么决定?
①虚拟存储器的大小≦内存容量+外存容量之和。硬件条件规定,如果虚存的大小超过这个容量,没有足够的空间来供虚存使用
②虚拟存储器的大小≦计算机的地址位数能够容纳的最大容量,如果超过了,地址将没有办法表示,也没有办法访问到,即便硬件上满足,也浪费了地址空间
37.虚拟存储有哪几种方式?
请求分页存储管理、请求分段存储管理、请求段页式存储管理。
(请求分页存储系统建立在基本分页系统的基础上,增加了请求调页功能和页面置换的功能,硬件支持上提供了页表机制、缺页中断机制–属于内中断、地址变换机制)
38.页面置换算法包括哪几种?
①最佳置换算法(其实无法实现)
②先进先出置换算法(会产生belady异常–分配的物理块越多却也可能也会越多)
③最近最久未使用置换算法(替换的是过去一段时间内最久未被访的算法,性能较好,但是需要寄存器和栈的硬件支持)
④时钟置换算法(clock算法)(性能与开销都比较均衡,最多进行两次扫描)
或者改进型的时钟置换算法(最多四次扫描,优先淘汰没有修改过的页面,因为不用写回外存)
-注:时钟置换算法思路:
扫描时找使用位为0,就是没有使用过的缓冲区,优先替换没有使用过的缓冲区进行替换,第一遍扫描的时候,如果使用位为1,就将它改成0,如果使用位为0就进行替换。
改进的时钟置换算法思路:
将缓冲块分为4类,按照(最近没有访问没有修改0,0–最近没有被访问但是被修改了0,1–最近被访问但没有被修改1,0–最近被访问被修改)第一次扫描找(0,0)进行替换,第二次扫描找(0,1)将其修改为(0,0),第三次扫描(0,0)进行替换。
39.什么是文件系统?
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称为文件系统。文件系统包括三个部分,与文件管理有关的软件、被管理文件以及实施文件管理所需要的数据结构
40.文件的逻辑结构、目录结构、文件共享、文件保护?
41.文件系统要完成哪些功能?
①对于用户而言,要实现对文件的基本操作(包括存储、查找),还可以实现文件共享和文件保护
②对于操作系统而言,需要管理与磁盘信息交换,完成文件逻辑结构和物理结构的变换,组织文件在磁盘上的存放,采取好的文件排放顺序和磁盘调度方法来提升整个系统的性能。
42.文件的物理结构?(文件的实现方式)
文件的分配方式就是对非空闲磁盘块的管理:连续分配、连接分配、索引分配(把每个文件所有的盘块都集中安放,建立索引表)
文件存储空间管理就是对空闲磁盘块的管理:空闲表、空闲链表、位示图(利用二进制的单位记录空闲块)、成组链接(空闲表和空闲链表的结合,适合大的文件系统)
-注对文件存储空间的管理和内存管理有点像。
43.什么是FAT(File Allocation Table)?
FAT就是文件分配表,分配给文件的所有盘块号都放在FAT中,记录了文件的物理位置。
44.什么是FCB?
文件控制块,为了便于对文件进行控制和管理,在文件系统内部,给每个文件唯一地设置一个文件控制块,其中记录了文件的大小,文件所在的位置,文件修改的时间等等。
45.磁盘调度时间由什么决定?
寻找时间(就是寻找磁道的时间)+延迟时间(定位到某个扇区的时间)+传输时间(读写数据的时间。
46.磁盘调度算法?(用于优化寻道时间)
先来先服务FCFS
最短寻道时间优先SSTF
扫描算法SCAN(在磁头当前移动方向上选择与当前磁头所在的磁道距离最近的请求作为下一次服务的对象,就是在最短寻找时间优先算法的基础上规定了磁头运动的方向)
循环扫描算法C-SCAN(返回时快速移动到起始端,中途不进行任何服务)
47.怎么优化磁盘延迟时间?
①对扇区交替编号(扫完一个扇区需要短暂的处理时间才能对下一个物理块进行读写)
②对磁盘进行错位命名(因为盘面是连轴转的,大多数的存储又连续的)
③地址的编码顺序是(柱面号、盘面号、扇区号)的顺序(也是因为读取连续,少移动磁盘,只需要激活磁头的时间即可)
48.设备控制器(I/O控制器)的主要任务是什么?
①接受和识别CPU或通道发来的命令
②实现数据交换
③发现和记录设备以及自身的状态信息,供CPU处理使用
④对设备地址进行识别
49.I/O子系统的层次结构是怎么样的?
自顶向下:
用户层I/O软件(实现与用户交互的接口)
设备独立性软件(实现用户程序与设备驱动器的统一接口、设备命令、设备保护以及设备的分配和释放)
设备驱动程序(与硬件直接相关,负责具体实现系统对设备发出的操作指令)
中断处理程序(用于处理中断相关事项)
硬件设备(包括一个机械部件-就是设备本身+一个电子部件–I/O控制器)
但是I/O核心子系统只包括设备独立性软件+设备驱动程序+中断处理程序
50.什么是设备的独立性?引入设备的独立性有什么好处?
设备的独立性是指用户在编程序时使用的设备与实际设备无关,一个程序应当独立于分配给它的某类设备的具体设备,只需要在用户程序中只指明I/O使用的设备类型即可。
设备独立性的好处:
①方便用户编程
②使得程序运行不受具体机器环境的限制
③便于程序进行移植
51.什么是假脱机技术,spooling?
脱机技术:批处理阶段,用磁带完成输入输出,脱离主机的控制,只用外围控制机来控制输入输出。假脱机技术就是用软件的方式模拟脱机技术。
它缓解了设备与CPU的速度矛盾,实现了预输入,缓输出。
假脱机技术提高了I/O的速度;将独占设备改造成共享设备;实现了虚拟设备功能。
52.当处理机和外部设备速度差距较大的时候,并且此时不想让其中一方等待,有什么办法可以解决问题?
可以才采用缓冲技术来缓解处理机与外部设备速度上的矛盾,就是在某一块地方(一般为主存)设立一片缓冲区,外部设备与处理机的输入输出都需要经过缓冲区,这样外部设备和处理机之间就不需要进行互相等待。
53.I/O控制方式有哪几种?
程序直接控制方式、中断驱动控制、DMA控制(直接存储器存取)、通道控制