本文转载自:http://blog.csdn.net/lisuxuan_1993/article/details/41794239
《操作系统》知识点大纲
线程间通信
进程间通信
进程空间
内核态,用户态
==============================================
多线程,锁。
死锁的条件是什么?
线程与进程的区别是什么?
进程与线程两者的区别——资源分配,调度,通信
os给进程和线程都分配哪些资源?
进程间通信有哪些方式(Linux)?分别怎么实现?
现有平行的几个进程,如果其中一个进程挂了,会影响其他线程吗?一个进程有多个线程,有一个挂了,对其他线程有影响吗?为什么?
一般情况下,平行的进程之间一个挂了不会对其他进程造成影响,但是在个别操作系统中,父进程挂了也会终止子进程,这种现象称为“级联终止”。
一个进程里的一个线程挂了
关于linux的调试和VS的断点调试原理
2.Windows下的内存是如何管理的? 3.存储过程是什么?有什么用?有什么优点? 4.你知道操作系统的内容分为几块吗?什么叫做虚拟内存?他和主存的关系如何?内存管理属于操作系统的内容吗? 5.进程是一个比较重要的概念,那么进程有哪几种状态吗? 5. 说出你所知道的保持进程同步的方法? 6. OS中如何实现物理地址到逻辑地址的转换? 7. 解释一下分页式管理.
* 描述实时系统的基本特性
在特定时间内完成特定的任务,实时性与可靠性
* Windows消息调度机制是:
A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;
* Windows下的内存是如何管理的?
* 谈谈IA32下的分页机制
小页(4K)两级分页模式,大页(4M)一级
* 在IA32中一共有多少种办法从用户态跳到内核态?
通过调用门,从ring3到ring0,中断从ring3到ring0,进入vm86等等
* 网络编程中设计并发服务器,使用'多进程'与'多线程',请问有什么区别?
进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。
线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和响应时间。
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
【操作系统】--常见面试题总结
1.什么是进程(Process)和线程(Thread)?有何区别?
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
进程与应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中,而进程则是处于动态条件下由操作系统维护的系统资源管理实体。
2.Windows下的内存是如何管理的?
Windows提供了3种方法来进行内存管理:虚拟内存,最适合用来管理大型对象或者结构数组;内存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行多个进程之间共享数据;内存堆栈,最适合用来管理大量的小对象。
Windows操纵内存可以分两个层面:物理内存和虚拟内存。
其中物理内存由系统管理,不允许应用程序直接访问,应用程序可见的只有一个2G地址空间,而内存分配是通过堆进行的。对于每个进程都有自己的默认堆,当一个堆创建后,就通过虚拟内存操作保留了相应大小的地址块(不占有实际的内存,系统消耗很小)。当在堆上分配一块内存时,系统在堆的地址表里找到一个空闲块(如果找不到,且堆创建属性是可扩充的,则扩充堆大小),为这个空闲块所包含的所有内存页提交物理对象(在物理内存上或硬盘的交换文件上),这时就可以访问这部分地址。提交时,系统将对所有进程的内存统一调配,如果物理内存不够,系统试图把一部分进程暂时不访问的页放入交换文件,以腾出部分物理内存。释放内存时,只在堆中将所在的页解除提交(相应的物理对象被解除),继续保留地址空间。
如果要知道某个地址是否被占用/可不可以访问,只要查询此地址的虚拟内存状态即可。如果是提交,则可以访问。如果仅仅保留,或没保留,则产生一个软件异常。此外,有些内存页可以设置各种属性。如果是只读,向内存写也会产生软件异常。
3.Windows消息调度机制是?
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.说出你所知道的保持进程同步的方法?
进程间同步的主要方法有原子操作、信号量机制、自旋锁、管程、会合、分布式系统等。
9.Linux中常用到的命令
显示文件目录命令ls 如ls
改变当前目录命令cd 如cd/home
建立子目录mkdir 如mkdirxiong
删除子目录命令rmdir 如rmdir/mnt/cdrom
删除文件命令rm 如rm /ucdos.bat
文件复制命令cp 如cp/ucdos /fox
获取帮助信息命令man 如manls
显示文件的内容less 如less mwm.lx
重定向与管道type 如type readme>>direct,将文件readme的内容追加到文direct中
10.Linux文件属性有哪些?(共十位)
-rw-r--r--那个是权限符号,总共是- --- --- ---这几个位。
第一个短横处是文件类型识别符:-表示普通文件;c表示字符设备(character);b表示块设备(block);d表示目录(directory);l表示链接文件(link);后面第一个三个连续的短横是用户权限位(User),第二个三个连续短横是组权限位(Group),第三个三个连续短横是其他权限位(Other)。每个权限位有三个权限,r(读权限),w(写权限),x(执行权限)。如果每个权限位都有权限存在,那么满权限的情况就是:-rwxrwxrwx;权限为空的情况就是- --- --- ---。
权限的设定可以用chmod命令,其格式位:chmod ugoa+/-/=rwxfilename/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
11.makefile文件的作用是什么?
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中。makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”。一旦写好,只需要一个make命令,整个工程完全自动编译,极大地提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具。一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下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),若干进程之间形成一种首尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
死锁的解除与预防:理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。
死锁的处理策略:鸵鸟策略、预防策略、避免策略、检测与恢复策略。
找工作笔试面试那些事儿(13)---操作系统常考知识点总结
http://blog.csdn.NET/han_xiaoyang/article/details/11285485
上一节对数据库的知识做了一个小总结,实际找工作过程中,因为公司或单位侧重点不一样,考察的知识也是不尽相同的,但是作为计算机类的学生,操作系统的知识也是必不可少的,去年参加笔试面试的时候,腾讯微软阿里等公司的笔试题都或多或少对操作系统相关的知识点进行了考察。作为一个非计算机科班出生的学僧,当初并没有学这门课,略尴尬,只有临时啃书补一补了,这里给出的是一份操作系统常考知识点的总结,希望能给大家带来一些小小的帮助。
1、进程是并发过程中程序的执行过程
2、进程的特征:结构特征动态性并发性独立性异步性
3、临界区指在每个进程中访问临界资源的那段代码
4,现在操作系统中申请资源的基本单位是进程,在CPU得到执行的基本单位是线程,进程是由程序段、数据段、PCB组成的
5,对临界资源应采取互斥访问方式来实现共享
6,P.V操作是一种低级进程通信原语
7,对于记录性信号量,在执行一次P操作时,信号量的值应当减1,当其值为小于0时进程应阻塞;在执行V操作时,信号量的值应当加1;当其值小于等于0时,应唤醒阻塞队列中的进程。
8,N个进程共享某一临界资源,(n-1)~1
9,短作业优先算法,T1<T2<T3平均周转时间为:T1+2XT2/3+T3/3
10,响应比Rp=(等待时间+要求服务时间)/要求服务器时间=响应时间/要求服务时间
11思索是指多个进程在运行过程中因争夺资源,而造成的一种僵局,当进程处于这种僵局状态时,若无外力作用,他们都将无法再向前推进。
死锁的避免是根据防止系统进入不安全状态。
产生死锁的根本原因是资源分配不当和资源数量不足,发生死锁的四个必要条件是:互斥条件,请求和保持条件,不剥夺条件和环路等待条件,银行家算法用于避免死锁
12,如果系统中有N个进程,最多为(N-1)个
13,若系统采用轮转法调度进程系统采用的是剥夺式调度
14,既考虑作业等待时间,又考虑作业执行时间,的调度算法是响应比优先调度算法
15,资源的有序分配策略可以破坏死锁的“循环等待”
16,并非所有的不安全状态都必然会转为死锁状态,但当系统进图不安全按状态后变有可能进入死锁状态,
17,重定位:在作业地址空间中使用的逻辑地址变为内存物理地址
18,支持程序放在不连续内存中储存管理方法有分取式分配,分段式分配,段页式分配页式存储主要特点是不要将作业同时全部装入到主存的的连续区域
19,适合多道程序运行的存储管理中,存储保护是为了防止各道作业的相互干扰
20,采用页式存储管理时,重定位的工作由地址转换机
21,段页式存储管理中的地址映像表是每个作业或进程一张段表,每个段一张页表
22,在虚拟页式存储管理方案中,完成将页面调入内存的工作的是缺页中断处理
23,分段管理和分页管理的主要区别是分页管理有存储保护,分段管理没有
24,在股低估分区分配中,可以不同但预先固定的
25,不使用中断机构的I/O控制方式是程序I/O方式
26,spooling技术能独占设备改造成可以共享的虚拟设备
27,磁盘防伪中把数据从磁盘读出,叫做传输时间
28,共享设备指同一时间内运行多个进程同时访问的设备
29,通过软件的功能扩充,把原来独占的设备爱造成若干个可共享的设备,虚拟设备
30,DMA方式如果I/O设备不通过CPU来完成
31,设备独立性用户程序独立于具体物理设备的一种特性
32,虚拟设备一个物理设备变换成多个对应的逻辑设备
33,通道是一种特殊的处理机,通道按传递数据的方式分为:字节多路通道,数组选择通道,数组多路通道
通道涉及的数据结构是设备控制器,控制器控制块,通道控制块,系统设备表
34,磁盘高速缓冲设在内存中,目的是提高I/O磁盘速度
35,磁盘空间的地址有盘面号,柱面号,扇区号组成。访问磁盘的时间有 寻道时间,旋转等待时间,读写时间
36,将系统段用参数翻译成设备操作命令的工作由设备无关的操作系统完成
37,向设备寄存器写入控制命令由设备驱动程序完成
38,寻找设备驱动程序由设备无关的操作系统软件完成
39,设备管理的功能是设备分配,缓冲区管理和实现物理I/O设备的操作
40,根据设备的固有属性特点,设备可分为独占设备,共享设备和虚拟设备
41,引入缓冲区技术可提高处理器执行程序和设备的输入输出操作的并行程序文件管理
42,物理文件的组织方式是由操作系统确定的,文件的顺序存取是按文件的逻辑号逐一存取
43,系统通过树形目录结构来解决重名问题
44,在UNIX操作系统中,把输入输出设备看做特殊文件
45,打开文件操作的主要工作是把指定的目录复制到内存指定区域
46,文件路径名是指从根目录到该文件所经历的路径中各符号名的集合
47,按逻辑结构划分,文件主要有两类:记录是文件,流式文件,文件系统的主要目的是实现对文件的按名存取
48连续结构文件必须采用连续分配方式,而链接结构文件和索引结构文件都可采取离散分配方式
49,文件系统中,若文件的物理结构采用连续结构有关文件的物理位置的信息包括首块地址和文件长度
50,位示图可用于磁盘空间管理,在文件系统中,为实现文件保护,一般采用口令,密码和访问控制
1、进程是具有独立功能程序在某个数据集合上的一次执行过程。线程是进程内的一个执行实体或执行单元。
进程和线程的区别:
(a)不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。一个进程的线程在另一个进程内是不可见的。
(b) 在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。
2、死锁在多道程序系统中,当一组进程中的每个进程均无限期地等待被改组进程中的另一进程所占有且永远不会释放的资源,此时的系统处于死锁状态。
死锁产生的原因:
(a)系统提供的资源有限;
(b)进程推进顺序不当。
产生死锁的必要条件:互斥条件、不可剥夺条件、请求和保持条件、循环等待条件
3、执行如下访问页号序列: 1,2,3,4,1,2,5,1,2,3,4,5 试说明采用先进(1)FIFO: 9次(2)LRU:10次 (3)OPT:7次
4、什么是操作系统的基本功能?
1.处理机管理。在多道程序或多用户的情况下,要组织多个作业同时运行,就要解决对处理机分配调度策略、分配实施和资源回收等问题。
2.存储管理。存储管理的主要工作是对内部存储器进行分配、保护和扩充和管理。
3.设备管理。涉及到通道、控制器、输入输出设备的分配和管理以及设备独立性。
4.信息管理(文件系统管理) 是对系统的软件资源的管理。
5.用户接口。操作系统还为用户提供一个友好的用户接口。一般来说,操作系统提供两种方式的接口来为用户服务。
5、分级调度分为4级:
(1) 作业调度
(2) 交换调度
(3) 进程调度
(4) 线程调度。
6、试写出程序与进程的区别
(1)进程是一个动态概念,而程序是一个静态概念。
(2)进程具有并行特征,而程序不反映执行所以没有并行特征
(3)进程是竞争计算机系统资源的基本单位,而程序不反映执行也就不会竞争计算机系统资源
(4)不同的进程可以包含同一程序,只要该程序所对应的数据集不同。
7、页式管理的基本原理是什么?
(1)进程的虚拟空间被划分成长度相等的页。
(2)内存空间也按页的大小划分成长度相等的页面。
(3)采用请求调页或预调技术实现内外存储器的统一管理。
8、进程调度有哪些功能?
(1)记录系统中所有进程的执行情况。
(2)选择占有处理机的进程
(3)进行进程上下文切换
9、批处理操作系统、分时操作系统和实时操作系统的特点各是什么?
(1) 批处理操作系统的特点:成批处理,系统吞吐量高,资源利用率高,用户不能直接干预作业的执行。
(2)分时操作系统的特点:多路性、独立性、及时性、交互性。
(3)实时操作系统的特点:及时响应、快速处理;高可靠性和安全性;不要求系统资源利用率。
10、Windows下的内存是如何管理的?
Windows提供了3种方法来进行内存管理:虚拟内存,最适合用来管理大型对象或者结构数组;内存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行多个进程之间共享数据;内存堆栈,最适合用来管理大量的小对象。
Windows操纵内存可以分两个层面:物理内存和虚拟内存。
其中物理内存由系统管理,不允许应用程序直接访问,应用程序可见的只有一个2G地址空间,而内存分配是通过堆进行的。对于每个进程都有自己的默认堆,当一个堆创建后,就通过虚拟内存操作保留了相应大小的地址块(不占有实际的内存,系统消耗很小)。当在堆上分配一块内存时,系统在堆的地址表里找到一个空闲块(如果找不到,且堆创建属性是可扩充的,则扩充堆大小),为这个空闲块所包含的所有内存页提交物理对象(在物理内存上或硬盘的交换文件上),这时就可以访问这部分地址。提交时,系统将对所有进程的内存统一调配,如果物理内存不够,系统试图把一部分进程暂时不访问的页放入交换文件,以腾出部分物理内存。释放内存时,只在堆中将所在的页解除提交(相应的物理对象被解除),继续保留地址空间。
如果要知道某个地址是否被占用/可不可以访问,只要查询此地址的虚拟内存状态即可。如果是提交,则可以访问。如果仅仅保留,或没保留,则产生一个软件异常。此外,有些内存页可以设置各种属性。如果是只读,向内存写也会产生软件异常。
11、Windows消息调度机制是(C)
A)指令队列;B)指令堆栈;C)消息队列;D)消息堆栈
解析:
处理消息队列的顺序。首先Windows绝对不是按队列先进先出的次序来处理的,而是有一定优先级的。优先级通过消息队列的状态标志来实现的。首先,最高优先级的是别的线程发过来的消息(通过sendmessage);其次,处理登记消息队列消息;再次处理QS_QUIT标志,处理虚拟输入队列,处理wm_paint;最后是wm_timer。
12、描述实时系统的基本特性
在特定时间内完成特定的任务,实时性与可靠性。
所谓“实时操作系统”,实际上是指操作系统工作时,其各种资源可以根据需要随时进行动态分配。由于各种资源可以进行动态分配,因此,其处理事务的能力较强、速度较快。
13、中断和轮询的特点
对I/O设备的程序轮询的方式,是早期的计算机系统对I/O设备的一种管理方式。它定时对各种设备轮流询问一遍有无处理要求。轮流询问之后,有要求的,则加以处理。在处理I/O设备的要求之后,处理机返回继续工作。尽管轮询需要时间,但轮询要比I/O设备的速度要快得多,所以一般不会发生不能及时处理的问题。当然,再快的处理机,能处理的输入输出设备的数量也是有一定限度的。而且,程序轮询毕竟占据了CPU相当一部分处理时间,因此,程序轮询是一种效率较低的方式,在现代计算机系统中已很少应用。
程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预先安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到为响应的服务程序去处理。
轮询——效率低,等待时间很长,CPU利用率不高。
中断——容易遗漏一些问题,CPU利用率高。
14、什么是临界区?如何解决冲突?
每个进程中访问临界资源的那段程序称为临界区,每次只准许一个进程进入临界区,进入后不允许其他进程进入。
(1)如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入;
(2)任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;
(3)进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区;
(4)如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。
15、说说分段和分页
页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。
段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。
页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。
分页的作业地址空间是一维的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。
16、说出你所知道的保持进程同步的方法?
进程间同步的主要方法有原子操作、信号量机制、自旋锁、管程、会合、分布式系统等。
17、Linux中常用到的命令
显示文件目录命令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中
18、Linux文件属性有哪些?(共十位)
-rw-r--r--那个是权限符号,总共是- --- --- ---这几个位。
第一个短横处是文件类型识别符:-表示普通文件;c表示字符设备(character);b表示块设备(block);d表示目录(directory);l表示链接文件(link);后面第一个三个连续的短横是用户权限位(User),第二个三个连续短横是组权限位(Group),第三个三个连续短横是其他权限位(Other)。每个权限位有三个权限,r(读权限),w(写权限),x(执行权限)。如果每个权限位都有权限存在,那么满权限的情况就是:-rwxrwxrwx;权限为空的情况就是- --- --- ---。
权限的设定可以用chmod命令,其格式位:chmod ugoa+/-/=rwxfilename/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
19、简术OSI的物理层Layer1,链路层Layer2,网络层Layer3的任务。
网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。
链路层:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
20、什么是中断?中断时CPU做什么工作?
中断是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。
21、你知道操作系统的内容分为几块吗?什么叫做虚拟内存?他和主存的关系如何?内存管理属于操作系统的内容吗?
操作系统的主要组成部分:进程和线程的管理,存储管理,设备管理,文件管理。虚拟内存是一些系统页文件,存放在磁盘上,每个系统页文件大小为4K,物理内存也被分页,每个页大小也为4K,这样虚拟页文件和物理内存页就可以对应,实际上虚拟内存就是用于物理内存的临时存放的磁盘空间。页文件就是内存页,物理内存中每页叫物理页,磁盘上的页文件叫虚拟页,物理页+虚拟页就是系统所有使用的页文件的总和。
22、线程是否具有相同的堆栈?dll是否有独立的堆栈?
每个线程有自己的堆栈。
dll是否有独立的堆栈?这个问题不好回答,或者说这个问题本身是否有问题。因为dll中的代码是被某些线程所执行,只有线程拥有堆栈。如果dll中的代码是exe中的线程所调用,那么这个时候是不是说这个dll没有独立的堆栈?如果dll中的代码是由dll自己创建的线程所执行,那么是不是说dll有独立的堆栈?
以上讲的是堆栈,如果对于堆来说,每个dll有自己的堆,所以如果是从dll中动态分配的内存,最好是从dll中删除;如果你从dll中分配内存,然后在exe中,或者另外一个dll中删除,很有可能导致程序崩溃。
23、什么是缓冲区溢出?有什么危害?其原因是什么?
缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
危害:在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。
造成缓冲区溢出的主原因是程序中没有仔细检查用户输入的参数。
24、什么是死锁?其条件是什么?怎样避免死锁?
死锁的概念:在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗地讲,就是两个或多个进程被无限期地阻塞、相互等待的一种状态。
死锁产生的原因主要是:
(1)系统资源不足;
(2) 进程推进顺序非法。
产生死锁的必要条件:
(1)互斥(mutualexclusion),一个资源每次只能被一个进程使用;
(2)不可抢占(nopreemption),进程已获得的资源,在未使用完之前,不能强行剥夺;
(3)占有并等待(hold andwait),一个进程因请求资源而阻塞时,对已获得的资源保持不放;
(4)环形等待(circularwait),若干进程之间形成一种首尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
死锁的解除与预防:理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。
死锁的处理策略:鸵鸟策略、预防策略、避免策略、检测与恢复策略。
操作系统各大公司笔试题汇总 - Hackbuteer1的专栏
http://blog.csdn.net/hackbuteer1/article/details/6787354
1、在段页式存储管理中,其虚拟地址空间是()
A、一维 B、二维 C、三维 D、层次
答案:B
2、采用( )不会产生内部碎片(“内零头”)
A、分页式存储管理 B、分段式存储管理
C、固定分区式存储管理 D、段页式存储管理
答案:B
3、段页式管理每取一数据,要访问()次内存。
A、1 B、2 C、3 D、4
答案:C
4、分段管理提供(B)维的地址结构。
A、1 B、2 C、3 D、4
二维逻辑地址:段号+段内地址
分页与分段的主要区别:
1)、段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的。
2)、页的大小固定不变,由系统决定。段的大小是不固定的,它由其完成的功能决定。
3)、段式向用户提供的是二维地址空间,页式向用户提供的是一维地址空间,其页号和页内偏移是机器硬件的功能。
4)、由于段是信息的逻辑单位,因此便于存贮保护和信息的共享,页的保护和共享受到限制。
分页与分段存储管理系统虽然在很多地方相似,但从概念上讲,两者是完全不同的,它们之间的区别如下:
①页是信息的物理单位。分页的目的是实现离散分配,减少外部碎片,提高内存利用率。段是信息的逻辑单位。每一段在逻辑上是一组相对完整的信息集合。
②分页式存储管理的作业地址空间是一维的,而分段式存储管理的作业地址空间是二维的。
③页的大小固定且由系统确定,是等长的。而段的长度不定。
④分页的优点体现在内存空间的管理上,而分段的优点体现在地址空间的管理上。
5、()存储管理方式提供二维地址结构。
A、固定分区 B、分页 C、分段 D、可变分区
答案:C
6、()存储管理方式提供一维地址空间。
A、固定分区 B、分段 C、分页 D、分段和段页式
答案:A
7、下列()存储管理方式能使存储碎片尽可能少,而且使内存利用率较高。
A、固定分区 B、可变分区 C、分页管理 D、段页式管理
答案:D
8、分页管理每取一数据,要访问( )次内存。
A、1 B、2 C、3 D、4
答案:B
9、通道是一种( )。
A、I/O端口 B、数据通道 C、I/O专用处理机 D、软件工具
答案:C
10、磁盘与主机之间的数据传送方式是( )
A、无条件 B、程序查询 C、中断方式 D、DMA方式
答案:D
11、在一个请求页式存储管理中,一个程序的页面走向为4、3、2、1、3、5、4、3、2、1、5,并采用LRU算法。设分配给该程序的存储块数M分别为3和4,在该访问中发生的缺页次数F和缺页率f 是(C )
A. ①M=3,F=8、f≈67% ②M=4,F=5、f≈42%
B.①M=3,F=10、f=83% ②M=4,F=8、f≈67%
C.①M=3,F=9、f≈75% ②M=4,F=9、f≈75%
D.①M=3,F=7、f≈58% ②M=4,F=6、f=50%
12、进程和程序的本质区别是( D)
A、存储在内存和外存 B、顺序和非顺序执行机器指令
C、分时使用和独占使用计算机资源 D、动态和静态特征
13、系统感知进程的唯一实体是(C )
A、JCBB、FCB C、PCB D、SJT
14、SPOOLING技术利用于( B)
A、外设概念 B、虚拟设备概念 C、磁带概念 D、存储概念
15、(A)是直接存取设备。
A、磁盘 B、磁带 C、打印机 D、键盘显示终端
16、采用假脱机技术,将磁盘的一部分作为公共缓冲区以代替打印机,用户对打印机的操作实际上是对磁盘的存储操作,用以代替打印机部分是指()
A、独占设备 B、共享设备 C、虚拟设备 D、一般物理设备
答案:C
17、在可变分区存储管理中的移动技术优点在于()
A、增加主存容量 B、缩短访问周期 C、加速地址转换 D、集中空闲区
答案:D
18、位示图的用处为()
A、主存空间的共享 B、文件的保护和加密 C、磁盘空间的管理 D、文件目录的查找
答案:C
19、虚拟设备中,当用户作业要进入系统时,由SPOOLing系统的预输入程序将作业信息从物理输入设备上送到( )
A、内存 B、输入井 C、输出井 D、通道
答案:B
20、设在内存中有P1、P2、P3三道程序,并按照P1、P2、P3的优先次序运行,其内部计算和I/O操作时间由下图给出:
P1:计算 60ms----------------I/O 80ms-----------------计算 20ms
P2:计算 120ms--------------I/O 40ms-----------------计算 40ms
P3:计算 40ms----------------I/O 80ms-----------------计算 40ms
调度程序的执行时间忽略不计,完成这三道程序比单道运行节省的时间是(C)
A、80msB、120ms C、160ms D、200ms
解析:首先P1计算60ms,然后I/O 80ms,在这80ms中,P2也同步开始计算,等P1的I/O运行完了,CPU停止P2的计算,转去做P1后期那20ms的运算,至此所花时间为60+80+20=160ms;然后CPU再去接着运算P2,40ms,然后p2I/O运行40ms,在此期间,cpu去计算p3,正好也是40ms,算完之后接着算p2的后期部分,40ms,在此期间,因为p3的前40ms已经计算完成,可以进行i/o操作,所以同时p3的i/o也开始运行,运行80ms,这80ms中,前40msCPU在算P2,后40msCPU在算P3,所以是:40+40+40+80=200ms,加上前面的160,为360ms。
而如果是单道运行,则时间花费为:60+80+20+120+40+40+40+80+40=520ms,相差为520-360=160ms ,选C
产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
进程和线程的区别
线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
1.什么是进程(Process)和线程(Thread)?有何区别?
* 线程与进程的区别和联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈?
进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。
每个线程有自己的堆栈。
DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈?
以上讲的是堆栈,如果对于堆来说,每个DLL有自己的堆,所以如果是从DLL中动态分配的内存,最好是从DLL中删除,如果你从DLL中分配内存,然后在EXE中,或者另外一个DLL中删除,很有可能导致程序崩溃
进程调度
* 操作系统中进程调度策略有哪几种?
FCFS(先来先服务),优先级,时间片轮转,多级反馈
进程间通信
* 进程间通信的途径
共享存储系统
消息传递系统
管道:以文件系统为基础
* 列举几种进程的同步机制,并比较其优缺点。
原子操作
信号量机制
自旋锁
管程,会合,分布式系统
死锁
* 进程死锁的原因
资源竞争及进程推进顺序非法
* 死锁的4个必要条件
互斥、请求保持、不可剥夺、环路
* 死锁的处理
鸵鸟策略、预防策略、避免策略、检测与解除死锁