赞
踩
这些问题是我备考操作系统过程中,详细总结的常见面试问题和答案。逐个搜索并记录下来,花了很大的精力!如果想要获取源文件的话,可以关注我的微信公众号:小梁说代码,获取嘿嘿嘿。感谢关注。
特点
功能
系统调用:应用程序主动向操作系统发出的服务请求
中断: 来自硬件设备的处理请求
系统调用 | 中断 | |
---|---|---|
源头 | 应用程序 | 外设 |
响应方式 | 同步或者异步 | 异步 |
处理机制 | 等待或者持续 | 持续,对用户是透明的 |
并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。
并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。
同步调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为
异步调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作
阻塞是指:,当试图对该文件描述符进行读写时,如果当时没有数据可读,或者暂时不可写,程序就进入等待状态,直到有东西可读或者可写为止
非阻塞是指, 如果没有数据可读,或者不可写,读写函数马上返回,而不会等待
进程是具有独立功能的程序在某个数据集合上的一次执行过程。进程是系统进行资源分配和调度的一个独立单位。
线程是进程内的一个执行实体或执行单元,是比进程更小的能独立运行的基本单位
现在都采用轮转时间片的方式去运行,当切换进程时,需要保存进程的执行现场,然后去执行下一个进程,恢复执行时,首先要恢复执行现场,才能继续执行。切换线程也是同样的道理,需要保存线程的执行现场,但是在进程内切换线程,进程的资源是共享的不用切换。
在虚拟内存那边文章里说过,程序运行时,CPU拿到的也是线性地址,需要将其转换到物理地址。这个任务交给CPU中的内存管理单元MMU负责,但是从内存中查询数据是及其缓慢的,因此每次查询时会将已经转换过的映射信息缓存到TLB中,再转换地址时先从TLB中查找,如果没有再去页表中查询。
而如果切换进程的话,TLB的缓存就会失效,而切换线程则不会影响TLB。因此这是切换进程代价比较高的一点原因。
减少程序在并发执行时所付出的时空开销,提高并发性
https://blog.csdn.net/qq_43380851/article/details/119970956
读者写者和进程共同是实现
文件系统中的文件有逻辑结构和物理结构。在逻辑结构上无非就是逻辑块0到80等等,逻辑上文件可以分为有结构和无结构,有结构可以分为定长和不定长,组织方式有顺序文件,索引文件,索引顺序文件
物理上,就是逻辑块对应一个个的磁盘块,分配方式主要有,顺序,链接(隐式和显式),索引
就是多个进程为了争夺同个资源,成为了阻塞状态。没有外力是无法进行下去的。
互斥,占有并等待,不可剥夺,循环等待
检测、恢复、预防、避免
事先破坏死锁产生的必要条件之一
银行家算法
资源剥夺,进程回滚,系统重启
至多n-1个哲学家同时进餐;检测左右两边都有筷子才能进餐;奇数哲学家先拿左边的筷子,偶数哲学家先拿右边的筷子
先进先出,最短作业优先,剩余最短作业优先,优先级,轮转,多级反馈队列
分页:
优点:内存利用率高,不会产生外部碎片。
缺点:不是划分的逻辑模块,不利于信息的共享和保护
分段:
优点:能够利用逻辑模块进行分段,利于信息的共享和保护
缺点:如果段太长,不利于管理;会产生外部碎片
虚拟内存是基于局部性的原理,将程序很快要用到部分装入内存,暂时用不到的地方就放入外存
需要完成:请求调页和页面置换两个核心功能
OPT长时间内不会访问的页面(无法实现)
FIFO先进先出
LRU最长没有访问的页面
循环时钟算法,访问位
改进型循环时钟算法,访问位和修改位,先淘汰(0,0),再淘汰(0,1),将访问位置0,再淘汰(0,0),再淘汰(0,1)
先来先服务,最短寻道作业优先,SCAN,C-SCAN,LOOK,C-LOOK
盘面和柱面
磁盘初始化:
引导块(启动分区):
磁盘初始化后写入操作系统,用来初始化内存、CPU、寄存器等工作(这些内容被写到了ROM存储器中,后来由于ROM不可修改的特性,就把启动程序放入了硬盘里面,称为引导块。ROM里面存放自举装入程序)
缓冲区就是处理CPU和其它设备速度不匹配的问题,比如说CPU和I/O。
缓冲区是一个数据块,必须为空才能写,必须写满。如果缓冲区不为空就只能读。
单缓冲区,双缓冲区,双向缓冲区,缓冲区池
缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
危害有以下两点:
1、程序崩溃,导致拒绝服务
2、跳转并且执行一段恶意代码
是操作系统运行的两种状态
用户态的cpu只能访问内存,不允许执行特权指令,不允许访问外围设备,不能独占CPU,CPU能被其它程序获取
内核态的cpu以访问任意的数据,包括外围设备,比如网卡、硬盘,cpu可以从一个程序切换到另一个程序。
为了是限制用户程序访问能力,计算机中有一些比较危险的操作,比如设置时钟、内存清理,这些都需要在内核态下完成
正常return
exit()的作用是退出当前进程,并且尽可能释放当前进程占用的资源
_exit()的作用也是退出当前进程,但是不试图释放当前进程占用的资源,而且_exit()终止进程的时候不调用atexit()、on_exit()等注册的回调函数!
atexit()、on_exit()作用都是程序退出是指定调用用户的代码(可以理解为设置回调函数),区别在于on_exit()可以为设定的用户函数设定参数。
悲观锁,乐观锁,公平锁,非公平锁,读写锁,自旋锁,自适应自旋锁
和非自旋锁的区别,它拿不到锁就阻塞等待唤醒
自旋锁:阻塞和唤醒线程都是需要高昂的开销的,如果同步代码块中的内容不复杂,那么可能转换线程带来的开销比实际业务代码执行的开销还要大
将进程根据逻辑模块进行分段,再将各段进行分页
1.保护现场
保护现场有两个含义,其一是保存程序的断点;其二是保存通用寄存器和状态寄存器的内
容。前者由中断隐指令完成(详见8.4.4节),后者由中断服务程序完成。具体而言,可在中断
服务程序的起始部分安排若干条存数指令,将寄存器的内容存至存储器中保存,或用进栈指令
(PUSH)将各寄存器的内容推入堆栈保存,即将程序中断时的“现场”保存起来。
2.中断服务(设备服务)
这是中断服务程序的主体部分,对于不同的中断请求源,其中断服务操作内容是不同的,例
如,打印机要求CPU将需打印的一行字符代码,通过接口送人打印机的缓冲存储器中(参见图573)以仕打印机打印又如,显示设各要求CPU将需显示的一屏字符代码通过接口送人显示5.23)以供打印机打印。又如,显示设备要求CPU将需显示的一屏字符代码通过接口送入显示器的显示存储器中(参见图5.18)。
3.恢复现场
这是中断服务程序的结尾部分,要求在退出服务程序前,将原程序中断时的“现场”恢复至
原来的寄存器中。通常可用取数指令或出栈指令(POP),将保存在存储器(或堆栈)中的信息这
回到原来的寄存器中。
4.中断返回
中断服务程序的最后一条指令通常是–条中断返回指令,使其返回到原程序的断点处,以信
继续执行原程序。
计算机在处理中断的过程中,有可能出现新的中断请求,此时如果CPU暂停现行的中断月
务程序,转去处理新的中断请求,这种现象称为中断嵌套,或多重中断。倘若CPU在执行中断服务程序时,对新的中断请求不予理睬,这种中断称为单重中断。这两种处理方式的中断服务程戶略有区别。图5.43(a)和图5.43(b)分别为单重中断和多重中断服务程序流程。比较图5.4
()和图5.43(h)可以发现.其区别在千“开中断”的设置时间不同。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。