面试中有关操作系统的问题,持续更新中,,,

1、内存页面置换管理算法

FIFO:置换最旧的页面

LRU:置换掉最长时间没有使用的页面

2、临界区

假设某个系统有n个进程,{P1,P2, P3,P4..}(这些进程执行的是相同的代码生成的,即相当于同一个程序有多个实例在运行)。

那么他们存在一个临界区(一段代码)问题,在临界区中的代码代码段中,会改变同一个变量或者更新同一张表,或者写同一个文件,所以有了临界区问题。(其实就相当于使用同一个资源)

这样会造成同步问题。

解决临界区问题的方法是:代码中要有判断,进入临界区时判断一下,出临界区时释放。

也就是加锁和解锁。

3、死锁:一个进程所申请的资源被占有,他进入等待并且再也无法改变这个状态,称为死锁。

资源的申请和释放为系统调用,例如request()/release()设备,open()/close()文件,allocate()/free()内存。当申请和释放不被操作系统管理的资源时,我们通过acquire()/release()信号量来完成相关操作(和加锁、解锁差不多,都是使用时,或者说进入临界区时判断一下),或者使用java中的synchronized关键字,通过对象锁来完成。

    死锁的必要条件:(1)互斥(至少一个资源处于非共享模式(一个进程会需要多个资源)),(2)占有并等待,(3)非抢占(资源不能抢占,只能通过进程自己放),     (4)循环等待(进程A 占有资源M等待资源N,进程B占有资源N等待M)

4、使用信号量同步时很好的方法。但是我们还可以使用管程,他其实就相当于java中的阻塞队列,把所有操作共享资源的指令对象放在队列中,每次原子执行队列中的头。


5、用户模式和内核模式

运行 Windows 的计算机中的处理器有两个不同模式:“用户模式”和“内核模式”。根据处理器上运行的代码的类型,处理器在两个模式之间切换。应用程序在用户模式下运行,核心操作系统组件在内核模式下运行。多个驱动程序在内核模式下运行,但某些驱动程序在用户模式下运行。

当启动用户模式的应用程序时,Windows 会为该应用程序创建“进程”。进程为应用程序提供专用的“虚拟地址空间”和专用的“句柄表格”。由于应用程序的虚拟地址空间为专用空间,一个应用程序无法更改属于其他应用程序的数据。每个应用程序都孤立运行,如果一个应用程序损坏,则损坏会限制到该应用程序。其他应用程序和操作系统不会受该损坏的影响。

用户模式应用程序的虚拟地址空间除了为专用空间以外,还会受到限制。在用户模式下运行的处理器无法访问为该操作系统保留的虚拟地址。限制用户模式应用程序的虚拟地址空间可防止应用程序更改并且可能损坏关键的操作系统数据。

在内核模式下运行的所有代码都共享单个虚拟地址空间。这表示内核模式驱动程序未从其他驱动程序和操作系统自身独立开来。如果内核模式驱动程序意外写入错误的虚拟地址,则属于操作系统或其他驱动程序的数据可能会受到损坏。如果内核模式驱动程序损坏,则整个操作系统会损坏。

此图说明了用户模式组件与内核模式组件之间的通信。


4、

通过虚拟技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程同时使用, 通常把这种经过虚拟的设备称为虚拟设备.

为什么在操作系统中引入呢?

 虚拟架构的优势

 在虚拟架构中,用户可以把资源看成是专属于他们的,而管理员则可在企业范围内管理和优化整个资源。VMware的虚拟架构可以通过增加效率、灵活性和响应能力来降低企业的IT花费。管理一个虚拟架构可以让IT部门更快的连接和管理资源,以满足商业所需。其优势主要包括以下几个方面:

  1)35%-75% TCO 节省

  通过将整合多个物理服务器到一个物理服务器降低40%软件硬件成本;

  整合比:生产环境10-15 : 1 ,开发测试环境15-20 : 1;

  每个服务器的平均利用率从5%-15%提高到60%-80%;

  降低70-80%运营成本, 包括数据中心空间、机柜、网线,耗电量,冷气空调和人力成本。

  2)提高运营效率

  部署时间从小时级到分钟级, 服务器重建和应用加载时间从 20-40 hrs =>15-30 min, 每年节省10,000 人/小时(300台服务器);

  以前硬件维护需要之前的数天/周的变更管理准备和1 - 3小时维护窗口,现在可以进行零宕机硬件维护和升级。

  3) 提高服务水平

  助您的企业建立业务和IT资源之间的关系,使IT和业务优先级对应;

  将所有服务器作为大的资源统一进行管理,并按需自动进行动态资源调配;

  无中断的按需扩容。

5、 描述实时系统的基本特性  在特定时间内完成特定的任务,实时性与可靠性

6、简述一个Linux驱动程序的主要流程与功能。 

驱动程序module(组件,模块)的工作流程主要分为四个部分:
1、 insmod(载入) module
2、 驱动module的初始化(初始化结束后即进入“潜伏”状态,直到有系统调用)
3、 当操作设备时,即有系统调用时,调用驱动module提供的各个服务函数
4、 rmmod module
功能:就是使linux操作系统可以和外围设备通信,对设备进行操作等。
7、
<span style="font-size: 16px;">进程间通信主要包括管道, 系统IPC(包括消息队列,信号量,共享存储), SOCKET.</span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计内容: 进程死锁的检测:资源分配图的化简判断是否有死锁发生 设计要求: •建立所需的数据结构。 •从文件读取资源分配的情况(文件格式自定义)。 •编写资源分配图的化简算法。 •每化简一步,在屏幕上显示化简的当前结果。 •最后给出结论,是否死锁。如果死锁,给出死锁进程和资源。 设计思路: 程序主要涉及两个方面:进程、资源。两者通过占有和申请发生联系。因此对于每一个进程Pi,建立“占有”和“申请”的数据结构来保存与之相关联的资源(由于事先不知道进程拥有和申请的资源数,故用Vector作为数据结构)。同时记录下程序处理的总的进程数目和资源数目。对于资源,另建立两个数组res和work分别记录第i类资源的总数和当前可用数。 从文件读入资源和进程的情况时,要进行一些判断。①处理的资源和进程数目不得超过500(500已满足当前实际机器的情况)。②资源及进程的编号不得超过相应的数目也不得小于0。③资源的起始值不应该小于0。 ④起始情况下,所有进程拥有的第i资源总数不应该比其总的资源数目还要多。 由于在理论上已经证明,化简的次序不影响化简的最终结果。所以化简的过程就是不停的寻找满足条件(此进程所申请的资源全部都可以满足)的进程进行化简(即把它拥有的资源加到work数组),直到不再能找到这样的进程为止。然后检查所有的进程,如果仍有未被化简的进程,则表明死锁已经产生。此时记录下发生死锁的进程编号。然后,为进一步明确哪些进程在哪些资源上发生死锁,给定一个进程入口点采用DFS搜索和次进程相关的所有进程。 为了能在每一步化简后显示当前进程资源的状况,定义了两个画图函数。一个是根据当前资源和进程的“占有”和“申请”状况,画出整体的资源分配图。另一个是在每次化简掉一个进程时删除和它相关的所有边。 程序在VC++6.0调试、验收通过。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值