1.https://zhuanlan.zhihu.com/p/23755202
这两日整理了很多编程方面的资料:教学视频、书籍资源以及实战项目全部放在了百度网盘里,资源的目录以及获取方式都放在了文末的图上,你可以直接翻至文末查看。
有过面试经历的人都知道操作系统是面试官必问的几大类型题目之一,在上一期我们已经更新另一大板块的题目常见面试题整理--数据库篇
这一期文章,我们将继续更新操作系统相关的面试题,希望可以给需要面试的、准备面试的同学一些帮助。
�
(一)请分别简单说一说进程和线程以及它们的区别。
进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的一个独立单位。
线程是进程的实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
一个进程可以有多个线程,多个线程也可以并发执行
如果你对进程或者线程不太熟悉,建议阅读:进程与线程的一个简单解释
(二)线程同步的方式有哪些?
互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。
信号量:它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。
事件(信号):通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。
经两位大大的指正,现已删除临界区。感谢:@真姬酱@安阳
如果你对线程同步的方式不太熟悉,建议阅读:线程同步的几种方式
(三)进程的通信方式有哪些?
主要分为:管道、系统IPC(包括消息队列、信号量、共享存储)、SOCKET
管道主要分为:普通管道PIPE、流管道(s_pipe)、命名管道(name_pipe)
管道是一种半双工的通信方式,数据只能单项流动,并且只能在具有亲缘关系的进程间流动,进程的亲缘关系通常是父子进程
命名管道也是半双工的通信方式,它允许无亲缘关系的进程间进行通信
信号量是一个计数器,用来控制多个进程对资源的访问,它通常作为一种锁机制。
消息队列是消息的链表,存放在内核中并由消息队列标识符标识。
信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
共享内存就是映射一段能被其它进程访问的内存,这段共享内存由一个进程创建,但是多个进程可以访问。
如果你对进程的通信方式不太熟悉,建议阅读:进程间的几种通信方式
(四)什么是缓冲区溢出?有什么危害?其原因是什么?
缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
危害有以下两点:
程序崩溃,导致拒绝额服务
跳转并且执行一段恶意代码
造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入。
如果你想深入了解缓冲区溢出,推荐阅读:缓冲区溢出攻击
(五)什么是死锁?死锁产生的条件?
在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗的讲就是两个或多个进程无限期的阻塞、相互等待的一种状态。
死锁产生的四个条件(有一个条件不成立,则不会产生死锁)
互斥条件:一个资源一次只能被一个进程使用
请求与保持条件:一个进程因请求资源而阻塞时,对已获得资源保持不放
不剥夺条件:进程获得的资源,在未完全使用完之前,不能强行剥夺
循环等待条件:若干进程之间形成一种头尾相接的环形等待资源关系
如果对死锁还不是太熟悉,建议阅读:死锁产生的原因和解锁的方法
(六)进程有哪几种状态?
就绪状态:进程已获得除处理机以外的所需资源,等待分配处理机资源
运行状态:占用处理机资源运行,处于此状态的进程数小于等于CPU数
阻塞状态: 进程等待某种条件,在条件满足之前无法执行
如果你对进程的几种状态以及中间的装换不太了解,建议阅读:进程的三种状态及转换
(七)分页和分段有什么区别?
段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的 ;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的。
段的大小不固定,有它所完成的功能决定;页大大小固定,由系统决定
段向用户提供二维地址空间;页向用户提供的是一维地址空间
段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制。
如果你对分页和分段还不太了解,建议阅读:分段和分页
(八) 操作系统中进程调度策略有哪几种?
FCFS(先来先服务),优先级,时间片轮转,多级反馈
如果你想深入的了解这几种调度策略,推荐阅读:几个常用的操作系统进程调度算法
(九)说一说进程同步有哪几种机制。
原子操作、信号量机制、自旋锁管程、会合、分布式系统
如果你想深入的了解这几种机制,推荐阅读:进程同步的几种机制
(十)说一说死锁的处理基本策略和常用方法。
解决死锁的基本方法如下:
预防死锁、避免死锁、检测死锁、解除死锁
解决四多的常用策略如下:
鸵鸟策略、预防策略、避免策略、检测与解除死锁
如果你对死锁的处理策略不是太熟悉,推荐阅读:产生死锁的原因和必要条件+解决死锁的基本方法
2.http://blog.csdn.net/hackbuteer1/article/details/6787354
1、在段页式存储管理中,其虚拟地址空间是()
A、一维 B、二维 C、三维 D、层次
答案:B
2、采用( )不会产生内部碎片(“内零头”)
A、分页式存储管理 B、分段式存储管理
C、固定分区式存储管理 D、段页式存储管理
答案:B
3、段页式管理每取一数据,要访问()次内存。
A、1 B、2 C、3 D、4
答案:C
4、分段管理提供(B)维的地址结构。
A、1B、2C、3 D、4
二维逻辑地址:段号+段内地址
分页与分段的主要区别:
1)、段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的。
2)、页的大小固定不变,由系统决定。段的大小是不固定的,它由其完成的功能决定。
3)、段式向用户提供的是二维地址空间,页式向用户提供的是一维地址空间,其页号和页内偏移是机器硬件的功能。
4)、由于段是信息的逻辑单位,因此便于存贮保护和信息的共享,页的保护和共享受到限制。
分页与分段存储管理系统虽然在很多地方相似,但从概念上讲,两者是完全不同的,它们之间的区别如下:
①页是信息的物理单位。分页的目的是实现离散分配,减少外部碎片,提高内存利用率。段是信息的逻辑单位。每一段在逻辑上是一组相对完整的信息集合。
②分页式存储管理的作业地址空间是一维的,而分段式存储管理的作业地址空间是二维的。
③页的大小固定且由系统确定,是等长的。而段的长度不定。
④分页的优点体现在内存空间的管理上,而分段的优点体现在地址空间的管理上。
5、()存储管理方式提供二维地址结构。
A、固定分区 B、分页 C、分段 D、可变分区
答案:C
6、()存储管理方式提供一维地址空间。
A、固定分区 B、分段 C、分页 D、分段和段页式
答案:A
7、下列()存储管理方式能使存储碎片尽可能少,而且使内存利用率较高。
A、固定分区 B、可变分区 C、分页管理 D、段页式管理
答案:D
8、分页管理每取一数据,要访问( )次内存。
A、1 B、2 C、3 D、4
答案:B
9、通道是一种( )。
A、I/O端口 B、数据通道 C、I/O专用处理机 D、软件工具
答案:C
10、磁盘与主机之间的数据传送方式是( )
A、无条件 B、程序查询 C、中断方式 D、DMA方式
答案:D
11、在一个请求页式存储管理中,一个程序的页面走向为4、3、2、1、3、5、4、3、2、1、5,并采用LRU算法。设分配给该程序的存储块数M分别为3和4,在该访问中发生的缺页次数F和缺页率f 是(C)
A. ①M=3,F=8、f≈67% ②M=4,F=5、f≈42%
B.①M=3,F=10、f=83% ②M=4,F=8、f≈67%
C.①M=3,F=9、f≈75% ②M=4,F=9、f≈75%
D.①M=3,F=7、f≈58% ②M=4,F=6、f=50%
12、进程和程序的本质区别是(D)
A、存储在内存和外存 B、顺序和非顺序执行机器指令
C、分时使用和独占使用计算机资源 D、动态和静态特征
13、系统感知进程的唯一实体是(C)
A、JCB B、FCB C、PCB D、SJT
14、SPOOLING技术利用于(B)
A、外设概念 B、虚拟设备概念 C、磁带概念 D、存储概念
15、(A)是直接存取设备。
A、磁盘 B、磁带 C、打印机 D、键盘显示终端
16、采用假脱机技术,将磁盘的一部分作为公共缓冲区以代替打印机,用户对打印机的操作实际上是对磁盘的存储操作,用以代替打印机部分是指()
A、独占设备 B、共享设备 C、虚拟设备 D、一般物理设备
答案:C
17、在可变分区存储管理中的移动技术优点在于()
A、增加主存容量 B、缩短访问周期 C、加速地址转换 D、集中空闲区
答案:D
18、位示图的用处为()
A、主存空间的共享 B、文件的保护和加密 C、磁盘空间的管理 D、文件目录的查找
答案:C
19、虚拟设备中,当用户作业要进入系统时,由SPOOLing系统的预输入程序将作业信息从物理输入设备上送到( )
A、内存 B、输入井 C、输出井 D、通道
答案:B
20、设在内存中有P1、P2、P3三道程序,并按照P1、P2、P3的优先次序运行,其内部计算和I/O操作时间由下图给出:
P1:计算 60ms----------------I/O 80ms-----------------计算 20ms
P2:计算 120ms--------------I/O 40ms-----------------计算 40ms
P3:计算 40ms----------------I/O 80ms-----------------计算 40ms
调度程序的执行时间忽略不计,完成这三道程序比单道运行节省的时间是(C )
A、80ms B、120msC、160msD、200ms
解析:首先P1计算60ms,然后I/O 80ms,在这80ms中,P2也同步开始计算,等P1的I/O运行完了,CPU停止P2的计算,转去做P1后期那20ms的运算,至此所花时间为60+80+20=160ms;然后CPU再去接着运算P2,40ms,然后p2I/O运行40ms,在此期间,cpu去计算p3,正好也是40ms,算完之后接着算p2的后期部分,40ms,在此期间,因为p3的前40ms已经计算完成,可以进行i/o操作,所以同时p3的i/o也开始运行,运行80ms,这80ms中,前40msCPU在算P2,后40msCPU在算P3,所以是:40+40+40+80=200ms,加上前面的160,为360ms。
而如果是单道运行,则时间花费为:60+80+20+120+40+40+40+80+40=520ms,相差为520-360=160ms ,选C
产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
2.