操作系统面试之——程序、进程、线程

上一篇 / 下一篇  2012-08-23 10:16:31 / 个人分类:杂谈

51Testing软件测试网 \ ~5@2d:]3P(G|O e

  1、程序和进程

)_z7j#}7q2{x0

s0S0nQ8_!_0  进程由两个部分组成:1)操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。2)地址空间。它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。51Testing软件测试网#}8_2sM$aJ0\ZQk r

 51Testing软件测试网6Y&f5e~!Gz1o;nt

定义

T/m Vf6u$R0

使用系统运行资源情况51Testing软件测试网%~}|;rV"FP6q

程序51Testing软件测试网&O+sKSB C.M]sN?#zm

计算机指令的集合,它以文件的形式存储在磁盘上。程序是静态实体passive Entity),在多道程序系统中,它是不能独立运行的,更不能与其他程序并发执行。51Testing软件测试网km6k(}2sF ^k_

不使用【程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源】。

*nC \\#k(}]5B\0

 

2j.YB1A e#lJ0

进程

BiFmY0

通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。

'x3j.OCm5A0

定义:进程是进程实体(包括:程序段、相关的数据段、进程控制块PCB)的运行过程,是系统进行资源分配和调度的一个独立单位。

qU$YY e6y;Q0

使用【进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源。】

t1o#W@Z-A_0

  2、进程与线程

:Y$OL A;mJ$\p_0

  如果说操作系统引入进程的目的是为了提高程序并发执行,以提高资源利用率和系统吞吐量。那么操作系统中引入线程的目的,则是为了减少进程并发执行过程中所付出的时空开销,使操作系统能很好的并发执行。51Testing软件测试网&[S [4B-v"z s6p|

  进程process定义了一个执行环境,包括它自己私有的地址空间、一个句柄表,以及一个安全环境;线程则是一个控制流,有他自己的调用栈call stack,记录了它的执行历史。

BZc^*}1`*bg'] S0

   线程由两个部分组成:1)线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。2)线程堆栈,它用于维护线程 在执行代码时需要的所有参数和局部变量。当创建线程时,系统创建一个线程内核对象。该线程内核对象不是线程本身,而是操作系统用来管理线程的较小的数据结 构。可以将线程内核对象视为由关于线程的统计信息组成的一个小型数据结构。

fy%DeB}h@0

  进程与线程的比较如下:

i*O@*F+k.v\n/i/E/A(e0

比较

5z\h8`9`f0

进程

cxD9Bc OH0

线程

f Ro0UE0

活泼性51Testing软件测试网d9A`2y CS+[;r(P

不活泼(只是线程的容器)51Testing软件测试网 TV'SMA g8uj

活泼

HQ}2a*Ty/L0

地址空间51Testing软件测试网n?r@*iZ/B%P

系统赋予的独立的虚拟地址空间(对于32位进程来说,这个地址空间是4GB

f1SZ%}]w s0

在进程的地址空间执行代码。线程只有一个内核对象和一个堆栈,保留的记录很少,因此所需要的内存也很少。因为线程需要的开销比进程少

MHarlP0

调度

d(|8_?2U8E2n:Z6@0

仅是资源分配的基本单位51Testing软件测试网m/hifF3O2sc({S

独立调度、分派的基本单位

l'V$G7Q-a@6G!k0

并发性51Testing软件测试网#h*S-f vs1j#wv

仅进程间并发(传统OS

+IW;G'f-d}jEBX0

进程间、线程间并发

l,c9K1DJ"B0

拥有资源51Testing软件测试网.W+v;_#t'Snyn e,w

资源拥有的基本单位51Testing软件测试网,n0po#VdT+T;f

基本上不拥有资源

.hm$ce(C,xdJ'|tt0

系统开销

Y7E5?/p-q0|8Q0

创建、撤销、切换开销大51Testing软件测试网 r(CU/{0i@w u

仅保存少量寄存器内容,开销小。51Testing软件测试网.{u"G,YTL9XSzAlyS

  3、进程同步51Testing软件测试网m dd,Y+J lvV]

  进程同步的主要任务:是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。51Testing软件测试网#a?b#\0\;T#TT

  同步机制遵循的原则:51Testing软件测试网$DK*` Ib8j

  (1)空闲让进;

6[Z?WXZ n1@qO0

  (2)忙则等待(保证对临界区的互斥访问);51Testing软件测试网W&IX(C1t-a

  (3)有限等待(有限代表有限的时间,避免死等);

G(^] p!O G5GNo2F0

  (4)让权等待,(当进程不能进入自己的临界区时,应该释放处理机,以免陷入忙等状态)。

6}'D:l'c!a+k*t3F x0

  由于进程同步产生了一系列经典的同步问题“生产者-消费者”问题,“哲学家进餐”问题,“读者-写者”问题。

g F9~6cf+t&v0

hc5Sp"X7V0  4、进程间的通信是如何实现的?51Testing软件测试网"c+n"h/IK"O

51Testing软件测试网k9WZ}._

  进程通信,是指进程之间的信息交换(信息量少则一个状态或数值,多者则是成千上万个字节)。因此,对于用信号量进行的进程间的互斥和同步,由于其所交换的信息量少而被归结为低级通信。51Testing软件测试网R!j6a2H.Z)?&^

'wC R4@1A2]%No0  所谓高级进程通信指:用户可以利用操作系统所提供的一组通信命令传送大量数据的一种通信方式。操作系统隐藏了进程通信的实现细节。或者说,通信过程对用户是透明的。51Testing软件测试网2vtkc3oa|.s

2oo&n g%l$d,if!g0  高级通信机制可归结为三大类:

!sC._9A{ Y*f+z051Testing软件测试网 o4gU!cQ"D.W5if

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

0cU6j;mOd1d/q0C0  (2)消息传递系统(进程间的数据交换以消息(message)为单位,当今最流行的微内核操作系统中,微内核与服务器之间的通信,无一例外地 都采用了消息传递机制。应用举例:邮槽(MailSlot)是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输。邮槽是一种单向通信机制,创 建邮槽的服务器进程读取数据,打开邮槽的客户机进程写入数据。51Testing软件测试网:m/Qg7p.i%}1`+H

51Testing软件测试网SBqL5rl

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

51Testing软件测试网WH _1L!A+I/JwBG){

 

-Y.e4j1QB0

同一机器两个进程间通信51Testing软件测试网?Swo)l

跨网络通信

{+q\;z!c4~0

剪贴板Clipboard

*j+?N7p{.Kbz&Ds0

可以

N VA6hk"mNk0

不可以51Testing软件测试网(e|C eip#F

匿名管道Pipe

TY3m.|^0

可以51Testing软件测试网~&k3vFGC8MZo

不可以

+~'P7NB;l(I#oK0

命名管道(点对点单一通信,数据量可较大)Namedpipe

x%ggb m:UP0

可以

6C)r,^&@:G0

可以

oN:Tg/VGa N7F9[y0

邮槽(一对多,数据量较小,424字节以下)Mailslot

;Wx2`$};D8|}0

可以51Testing软件测试网*D2[ @e/fD0?n

可以

R_ o3|`T yt)f0

  5、线程同步

{,TI!^"r[Rm5z0

  根据用户模式及内核模式下的同步方式的不同,分类及对比如下:

0y,t M.nEXFAW;v0

*n(RXfX4NY"Vq0

 

YEj-N*ss2T0

内核对象/51Testing软件测试网1~_'RKPOy

非内核对象51Testing软件测试网6c,_+L%li$c{e/fSKu

含义51Testing软件测试网$\6b.QXe1S.V9K

缺点

i&o$Xo%r!w0

适用51Testing软件测试网tI)LS&ny9MV-^C

关键代码段(临界区)CriticalSection

:nkon b0

非内核对象,工作用户方式下,为用户模式对象

a5X-tRs-q$~0

从程序代码的角度来控制线程的并发性51Testing软件测试网|G$J3h [~:[ D_

1.因为在等待进入关键代码段时无法设定超时值,所以其很容易进入死锁状态。2.不能跨进程使用。51Testing软件测试网C)~9f8x'i

单个进程中线程间的同步(同步速度快)51Testing软件测试网'^0KD+Ykdn

事件对象Event

TY"R:fF!~0

内核对象51Testing软件测试网g"EKA ` P

所有内核对象中最基本的。

Wi~T'G?ey u0

速度较慢(相比用户模式实现线程同步)

P-}9w7Xj4_0

多个进程间的各个线程间实现同步

2d q*G\,B/H)cK3G(V0

互斥对象Mutex51Testing软件测试网 ^c;WVM~8}6~

内核对象51Testing软件测试网,r y*DC;e"Z

代表对一个资源的独占式访问

f~j*m1iS0

信号量

U/M3U6CvT n0

Semaphore

SCX3Pe%JW0

内核对象

H&U|g{ p2d i(@0

使用计数器来控制程序对一个共享资源的访问

@,Hy0N7DX`-v:Y0

TAG:

wdlcoke的个人空间 引用 删除 wdlcoke   /   2012-08-23 15:34:34
-1
 

评分:0

我来说两句

Open Toolbar