操作系统面试问题

一.Windows下的内存是如何管理的?

  • 虚拟内存:适合用来管理大型对象或者结构数组
  • 内存映射文件:适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行多个进程之间共享数据
  • 内存堆栈《适合用来管理大量小对象

Windows操纵内存的两个层面:物理内存和虚拟内存
物理内存由系统管理,不允许应用程序直接访问,应用程序可见的只有一个2G的地址空间,而内存分配只是通过对进行的。每个进程都有自己磨人堆,当一个堆创建后,就通过虚拟内存操作保留了相应大小的地址块(不占有实际的内存,系统消耗很小)。当在堆上分配一块内存时,系统在堆的地址表里找到一个空闲块(如果找不到,且堆创建属性是可扩充的,则扩充堆大小),为这个空闲块所包含的所有内存页提交物理对象(在物理内存上或硬盘的交换文件上),这时就可以访问这部分地址。提交时,系统将对所有进程的内存统一调配,如果物理内存不够,系统试图把一部分进程暂时不访问的页放入交换文件,以腾出部分物理内存。释放内存时,只在堆中将所在的页解除提交(相应的物理对象被解除),继续保留地址空间。

如果要知道某个地址是否被占用/可不可以访问,只要查询此地址的虚拟内存状态即可。如果是提交,则可以访问。如果仅仅保留,或没保留,则产生一个软件异常。此外,有些内存页可以设置各种属性。如果是只读,向内存写也会产生软件异常。

二.实时系统基本特征:

实时系统指操作系统工作时,其各种资源可以根据需要随时进行动态分配。

  • 因此其处理事务的能力较强,速度较快
  • 在特定时间内完成特定任务,有实时性和可靠性

三.进程同步:

主要任务:是对多个相关进程在执行次序上进行协调,以便并发执行的诸进程间能有效的共享资源和相互合作,从而使程序的执行具有可再现性。

同步机制遵循原则:

  • 空闲让进
  • 忙则等待:保证对临界区的互斥访问
  • 有限等待:有限的时间内等待
  • 让权等待:当进程不能进入自己的临界区时,应该释放处理机,以免陷入忙等

四.进程间的通信是如何实现的?

进程通信是指进程之间的信息交换,对于用信号量进行的进程间的互斥和同步,由于其所交换的信息量少儿被归结为低级通信。

高级进程通信:用户可以利用操作系统所提供的一组通信命令传送大量的数据的通信方式。OS隐藏了进程通信的实现细节,即通信过程对用户是透明的

高级通信机制:

  • 共享存储器系统(存储器中划分的共享存储区):实际操作中对应的是“剪贴板”(剪贴板实际上是系统维护管理的一块内存区域)的通信方式,比如举例如下:word进程按下ctrl+c,在ppt进程按下ctrl+v,即完成了word进程和ppt进程之间的通信,复制时将数据放入到剪贴板,粘贴时从剪贴板中取出数据,然后显示在ppt窗口上。

  • 消息传递系统:进程间的数据交换以消息(message)为单位,当今最流行的微内核操作系统中,微内核与服务器之间的通信,无一例外地都采用了消息传递机制。应用举例:邮槽(MailSlot)是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输。邮槽是一种单向通信机制,创建邮槽的服务器进程读取数据,打开邮槽的客户机进程写入数据。

  • 管道通信系统:(管道即:连接读写进程以实现他们之间通信的共享文件(pipe文件,类似先进先出的队列,由一个进程写,另一进程读))。实际操作中,管道分为:匿名管道、命名管道。匿名管道是一个未命名的、单向管道,通过父进程和一个子进程之间传输数据。匿名管道只能实现本地机器上两个进程之间的通信,而不能实现跨网络的通信。命名管道不仅可以在本机上实现两个进程间的通信,还可以跨网络实现两个进程间的通信。

五.死锁:

在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗地讲,就是两个或多个进程被无限期地阻塞、相互等待的一种状态。

产生死锁的必要条件:

  • 互斥:一个资源每次只能被一个进程使用
  • 不可抢占:进程已获得的资源,在未使用完之前,不能强制剥夺
  • 占有并等待:一个进程因请求资源而被阻塞时,对已获得的资源保持不放
  • 环形等待:若干进程之间形成一种首尾相接的循环等待资源关系

死锁的解除与预防:理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。

死锁的处理策略:鸵鸟策略、预防策略、避免策略、检测与恢复策略。

六.什么是临界区?如何解决冲突?

每个进程中访问临界资源的那段程序称为临界区,每次只准许一个进程进入临界区,进入后不允许其他进程进入。

  • 如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入
  • 任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;
  • 进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区
  • 如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。

七.分段和分页:

页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。

段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。

页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。

分页的作业地址空间是一维的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。

八.什么是中断?中断时CPU做什么工作?

中断是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。

九.OS组成部分?什么叫虚拟内存?

操作系统的主要组成部分:进程和线程的管理,存储管理,设备管理,文件管理。

虚拟内存是一些系统页文件,存放在磁盘上,每个系统页文件大小为4K,物理内存也被分页,每个页大小也为4K,这样虚拟页文件和物理内存页就可以对应,实际上虚拟内存就是用于物理内存的临时存放的磁盘空间

十.简术OSI的物理层Layer1,链路层Layer2,网络层Layer3的任务:

  • 网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。
  • 链路层:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
  • 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输

十一.什么是缓冲区溢出?有什么危害?其原因是什么?

缓冲区溢出:指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。

危害:在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。

造成缓冲区溢出的主原因:程序中没有仔细检查用户输入的参数。

原文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值