1、进程和线程的区别?解析:(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元 (2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。 (3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束 (4)线程是轻两级的进程,它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的 (5)线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源 (6)线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志17、什么是死锁?其条件是什么?怎样避免死锁? 死锁的概念:在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗地讲,就是两个或多个进程被无限期地阻塞、相互等待的一种状态。死锁产生的原因主要是:?系统资源不足;?进程推进顺序非法。产生死锁的必要条件: (1)互斥(mutualexclusion),一个资源每次只能被一个进程使用; (2)不可抢占(nopreemption),进程已获得的资源,在未使用完之前,不能强行剥夺; (3)占有并等待(holdandwait),一个进程因请求资源而阻塞时,对已获得的资源保持不放; (4)环形等待(circularwait),若干进程之间形成一种首尾相接的循环等待资源关系。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。死锁的解除与预防:理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。死锁的处理策略:鸵鸟策略、预防策略、避免策略、检测与恢复策略。3、Windows内存管理方式:段存储、页存储、段页存储解析:4、进程的几种状态?解析:(1)run(运行状态):正在运行的进程或在等待队列中对待的进程,等待的进程只要以得到cpu就可以运行 (2)Sleep(可中断休眠状态):相当于阻塞或在等待的状态 (3)D(不可中断休眠状态):在磁盘上的进程 (4)T(停止状态):这中状态无法直观的看见,因为是进程停止后就释放了资源,所以不会留在linux中 (5)Z(僵尸状态):子进程先与父进程结束,但父进程没有调用wait或waitpid来回收子进程的资源,所以子进程就成了僵尸进程,如果父进程结束后任然没有回收子进程的资源,那么1号进程将回收5、IPC通信方式?解析:(1)管道(匿名管道(pipe亲缘关系的进程通信)、命名管道(mkfifo/mknod)) (2)消息队列:是基于消息的、用无亲缘关系的进程间通信,主要函数:msgget、msgsend、msgrecv、msgctl (3)信号量:相当于一把互斥锁,通过p、v操作,主要函数:semget、semop、semctl (4)共享内存:是进程间通信速度最快的,所以用经常是集合信号量或互斥锁来实现同步,shmget、shmat、shmdt、shmctl6、什么是虚拟内存?解析:是将进程部分装入内存中,从而能实现一个很大的程序能在一个比它小的内存中运行,它的主要实现是靠程序的换进换出来实现的,因为内存中0~3G是用户使用,3~4G才是内存使用,通过映射来实现来进行逻辑地址到物理地址的映射7、虚拟地址、逻辑地址、线性地址、物理地址的区别?解析: 分段机制把一个逻辑地址转换为线性地址;接着,分页机制把一个线性地址转换为物理地址。(1)虚拟地址:虚拟内存映射出来的地址(2)逻辑地址:程序的段加偏移量形成的,C/C++程序中取地址求出来的地址就是逻辑地址(3)线性地址:是逻辑地址到物理地址的中间层,只有启动分页机制的时候才有线性地址,如果没有分页机制,那么线性地址就是物理地址(4)物理地址:是内存中实实在在存在的硬件地址,逻辑地址(启动分段)--》线性地址(启动分页)--》物理地址2、Windows下的内存是如何管理的? Windows提供了3种方法来进行内存管理:虚拟内存,最适合用来管理大型对象或者结构数组;内存映射文件,最适合用来
操作系统面试题 来自淘豆网www.taodocs.com转载请标明出处.