一道面试题:操作系统常见面试题总结

简介:

FROM:qitian0008(http://blog.csdn.net/qitian0008/article/details/7887168)

1什么是进程Process和线程Thread有何区别

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体是CPU调度和分派的基本单位它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源只拥有一点在运行中必不可少的资源如程序计数器一组寄存器和栈但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程同一个进程中的多个线程之间可以并发执行。

进程与应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中而进程则是处于动态条件下由操作系统维护的系统资源管理实体。

2Windows下的内存是如何管理的

Windows提供了3种方法来进行内存管理虚拟内存最适合用来管理大型对象或者结构数组内存映射文件最适合用来管理大型数据流通常来自文件以及在单个计算机上运行多个进程之间共享数据内存堆栈最适合用来管理大量的小对象。

Windows操纵内存可以分两个层面物理内存和虚拟内存。

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

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

3Windows消息调度机制是?

A.指令队列B.指令堆栈C.消息队列D.消息堆栈

答案C

处理消息队列的顺序。首先Windows绝对不是按队列先进先出的次序来处理的而是有一定优先级的。优先级通过消息队列的状态标志来实现的。首先最高优先级的是别的线程发过来的消息通过sendmessage其次处理登记消息队列消息再次处理QS_QUIT标志处理虚拟输入队列处理wm_paint最后是wm_timer。

4描述实时系统的基本特性

在特定时间内完成特定的任务实时性与可靠性。

所谓“实时操作系统”实际上是指操作系统工作时其各种资源可以根据需要随时进行动态分配。由于各种资源可以进行动态分配因此其处理事务的能力较强、速度较快。

5中断和轮询的特点

对I/O设备的程序轮询的方式是早期的计算机系统对I/O设备的一种管理方式。它定时对各种设备轮流询问一遍有无处理要求。轮流询问之后有要求的则加以处理。在处理I/O设备的要求之后处理机返回继续工作。尽管轮询需要时间但轮询要比I/O设备的速度要快得多所以一般不会发生不能及时处理的问题。当然再快的处理机能处理的输入输出设备的数量也是有一定限度的。而且程序轮询毕竟占据了CPU相当一部分处理时间因此程序轮询是一种效率较低的方式在现代计算机系统中已很少应用。

程序中断通常简称中断是指CPU在正常运行程序的过程中由于预先安排或发生了各种随机的内部或外部事件使CPU中断正在运行的程序而转到为响应的服务程序去处理。

轮询——效率低等待时间很长CPU利用率不高。

中断——容易遗漏一些问题CPU利用率高。

6什么是临界区如何解决冲突

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

(1) 如果有若干进程要求进入空闲的临界区一次仅允许一个进程进入

(2) 任何时候处于临界区内的进程不可多于一个。如已有进程进入自己的临界区则其它所有试图进入临界区的进程必须等待

(3) 进入临界区的进程要在有限时间内退出以便其它进程能及时进入自己的临界区

(4) 如果进程不能进入自己的临界区则应让出CPU避免进程出现“忙等”现象。

7说说分段和分页

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

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

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

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

8说出你所知道的保持进程同步的方法?

进程间同步的主要方法有原子操作、信号量机制、自旋锁、管程、会合、分布式系统等。

9Linux中常用到的命令

显示文件目录命令ls        如ls

改变当前目录命令cd        如cd /home

建立子目录mkdir           如mkdir xiong

删除子目录命令rmdir       如rmdir /mnt/cdrom

删除文件命令rm            如rm /ucdos.bat

文件复制命令cp            如cp /ucdos /fox

获取帮助信息命令man      如man ls

显示文件的内容less        如less mwm.lx

重定向与管道type          如type readme>>direct将文件readme的内容追加到文direct中

10Linux文件属性有哪些共十位

-rw-r--r--那个是权限符号总共是- --- --- ---这几个位。

第一个短横处是文件类型识别符-表示普通文件c表示字符设备characterb表示块设备blockd表示目录directoryl表示链接文件link后面第一个三个连续的短横是用户权限位User第二个三个连续短横是组权限位Group第三个三个连续短横是其他权限位Other。每个权限位有三个权限r读权限w写权限x执行权限。如果每个权限位都有权限存在那么满权限的情况就是-rwxrwxrwx权限为空的情况就是- --- --- ---。

权限的设定可以用chmod命令其格式位chmod ugoa+/-/=rwx filename/directory。例如

一个文件aaa具有完全空的权限- --- --- ---。

chmod u+rw aaa给用户权限位设置读写权限其权限表示为- rw- --- ---

chmod g+r aaa(给组设置权限为可读其权限表示为- --- r-- ---

chmod ugo+rw aaa给用户组其它用户或组设置权限为读写权限表示为- rw- rw- rw-)

如果aaa具有满权限- rwx rwx rwx。

chmod u-x aaa去掉用户可执行权限权限表示为- rw- rwx rwx

如果要给aaa赋予制定权限- rwx r-x r-x命令为

chmod u=rwx,go=rx aaa

11makefile文件的作用是什么

一个工程中的源文件不计其数其按类型、功能、模块分别放在若干个目录中。makefile定义了一系列的规则来指定哪些文件需要先编译哪些文件需要后编译哪些文件需要重新编译甚至于进行更复杂的功能操作。因为makefile就像一个Shell脚本一样其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”。一旦写好只需要一个make命令整个工程完全自动编译极大地提高了软件开发的效率。make是一个命令工具是一个解释makefile中指令的命令工具。一般来说大多数的IDE都有这个命令比如Delphi的makeVisual C++的nmakeLinux下GNU的make。可见makefile都成为了一种在工程方面的编译方法。

12简术OSI的物理层Layer1链路层Layer2网络层Layer3的任务。

网络层通过路由选择算法为报文或分组通过通信子网选择最适当的路径。

链路层通过各种控制协议将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。

物理层利用传输介质为数据链路层提供物理连接实现比特流的透明传输。

13什么是中断中断时CPU做什么工作

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

14你知道操作系统的内容分为几块吗什么叫做虚拟内存他和主存的关系如何内存管理属于操作系统的内容吗

操作系统的主要组成部分进程和线程的管理存储管理设备管理文件管理。虚拟内存是一些系统页文件存放在磁盘上每个系统页文件大小为4K物理内存也被分页每个页大小也为4K这样虚拟页文件和物理内存页就可以对应实际上虚拟内存就是用于物理内存的临时存放的磁盘空间。页文件就是内存页物理内存中每页叫物理页磁盘上的页文件叫虚拟页物理页+虚拟页就是系统所有使用的页文件的总和。属于。

15线程是否具有相同的堆栈dll是否有独立的堆栈

每个线程有自己的堆栈。

dll是否有独立的堆栈这个问题不好回答或者说这个问题本身是否有问题。因为dll中的代码是被某些线程所执行只有线程拥有堆栈。如果dll中的代码是exe中的线程所调用那么这个时候是不是说这个dll没有独立的堆栈如果dll中的代码是由dll自己创建的线程所执行那么是不是说dll有独立的堆栈

以上讲的是堆栈如果对于堆来说每个dll有自己的堆所以如果是从dll中动态分配的内存最好是从dll中删除如果你从dll中分配内存然后在exe中或者另外一个dll中删除很有可能导致程序崩溃。

16什么是缓冲区溢出有什么危害其原因是什么

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

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

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

17什么是死锁其条件是什么怎样避免死锁

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

死锁产生的原因主要是 系统资源不足‚ 进程推进顺序非法。

产生死锁的必要条件

(1)互斥mutualexclusion一个资源每次只能被一个进程使用

(2)不可抢占nopreemption进程已获得的资源在未使用完之前不能强行剥夺

(3)占有并等待hold andwait一个进程因请求资源而阻塞时对已获得的资源保持不放

(4)环形等待circularwait若干进程之间形成一种首尾相接的循环等待资源关系。

这四个条件是死锁的必要条件只要系统发生死锁这些条件必然成立而只要上述条件之一不满足就不会发生死锁。

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

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

目录
相关文章
|
17天前
|
存储 Unix 程序员
面试题:Ctrl + C在不同操作系统下的应用
字节跳动面试题:Ctrl + C在不同操作系统下的应用
35 1
|
1月前
|
SQL 存储 Oracle
Oracle 面试题及答案整理,最新面试题
Oracle 面试题及答案整理,最新面试题
73 0
|
1月前
|
消息中间件 存储 负载均衡
RocketMQ 面试题及答案整理,最新面试题
RocketMQ 面试题及答案整理,最新面试题
149 4
|
13天前
|
存储 缓存 安全
兄弟面试了百度,面试题分享一波
兄弟面试了百度,面试题分享一波
35 0
|
1月前
|
SQL 监控 大数据
DataGrip 面试题及答案整理,最新面试题
DataGrip 面试题及答案整理,最新面试题
69 0
|
1月前
|
监控 jenkins 持续交付
Jenkins 面试题及答案整理,最新面试题
Jenkins 面试题及答案整理,最新面试题
127 0
|
1月前
|
存储 开发框架 .NET
C# 面试题及答案整理,最新面试题
C# 面试题及答案整理,最新面试题
44 0
|
1月前
|
存储 安全 API
Swift 面试题及答案整理,最新面试题
Swift 面试题及答案整理,最新面试题
97 0
|
1月前
|
存储 安全 Java
Android 面试题及答案整理,最新面试题
Android 面试题及答案整理,最新面试题
82 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL 面试题及答案整理,最新面试题
MySQL 面试题及答案整理,最新面试题
93 0