您的位置:首页 > 其它

操作系统基本知识

2016-03-12 13:59 218 查看
什么是进程Process和线程Thread的区别

进程间通讯的方式

什么是线程同步什么是进程同步
线程同步

进程同步

什么是死锁造成死锁的条件

进程的状态

1 、什么是进程(Process)和线程(Thread)的区别?

作业是向计算机提交任务的任务实体

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是由系统进行资源分配和调度的一个基本单位

线程是进程的一个实体,是CPU**处理剂调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。**

一个进程可以拥有多个线程,多个线程也可以并发执行。并且进程可以不依赖于线程而单独存在,而线程则不然。

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

进程的作用与定义:是为了提高CPU的执行效率,为了避免因等待而造成CPU空转以及其他计算机硬件资源的浪费而提出来的。为了提高程序并发执行,以提高资源利用率和系统吞吐量

线程的引入:例如,有一个Web服务器要进程的方式并发地处理来自不同用户的网页访问请求的话,可以创建父进程和多个子进程的方式来进行处理,但是创建一个进程要花费较大的系统开销和占用较多的资源。除外,这些不同的用户子进程在执行的时候涉及到进程上下文切换,上下文切换是一个复杂的过程。所以,为了减少进程切换和创建的开销,提高执行效率和节省资源,人们在操作系统中引入了”线程(thread)”的概念。

2 、进程间通讯的方式

进程通信,是指进程之间的信息交换(信息量少则一个状态或数值,多者则是成千上万个字节)。因此,对于用信号量进行的进程间的互斥和同步,由于其所交换的信息量少而被归结为低级通信

所谓高级进程通信指:用户可以利用操作系统所提供的一组通信命令传送大量数据的一种通信方式。操作系统隐藏了进程通信的实现细节。

高级通信机制可归结为三大类:

(1)共享存储器系统(存储器中划分的共享存储区);实际操作中对应的是“剪贴板”(剪贴板实际上是系统维护管理的一块内存区域)的通信方式

例如:word进程按下ctrl+c,在ppt进程按下ctrl+v,即完成了word进程和ppt进程之间的通信,复制时将数据放入到剪贴板,粘贴时从剪贴板中取出数据,然后显示在ppt窗口上。

(2)消息传递系统:首先在一个进程中创建一个消息队列,然后再往消息队列中写数据,而另一个进程则从那个消息队列中取数据。

需要注意的是,消息队列是用创建文件的方式建立的,如果一个进程向某个消息队列中写入了数据之后,另一个进程并没有取出数据,即使向消息队列中写数据的进程已经结束,保存在消息队列中的数据并没有消失,也就是说下次再从这个消息队列读数据的时候,就是上次的数据!!!

(3)管道通信系统(管道:连接读写进程以实现他们之间通信的共享文件(pipe文件,类似先进先出的队列,由一个进程写,另一进程读))。实际操作中,管道分为:匿名管道、命名管道。

匿名管道是一个未命名的、单向管道,通过父进程和一个子进程之间传输数据。匿名管道只能实现本地机器上两个进程之间的通信,而不能实现跨网络的通信。

命名管道不仅可以在本机上实现两个进程间的通信,还可以跨网络实现两个进程间的通信。

几种方式的比较:

信号量:不能传递复杂消息,只能用来同步

管道:速度慢,容量有限

消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题。

共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了一块内存的。

3 、什么是线程同步?什么是进程同步

线程同步

线程同步指多个线程同时访问某资源时,采用一系列的机制以保证同时最多只能一个线程访问该资源。线程同步是多线程中必须考虑和解决的问题,因为很可能发生多个线程同时访问(主要是写操作)同一资源,如果不进行线程同步,很可能会引起数据混乱,造成线程死锁等问题;

要实现同步操作,必须要获得每个线程对象的锁,如果其他线程想获得该对象的锁,只能进入等待队列等待,只有当拥有该线程对象锁的线程退出临界区后,锁才会被释放,等待队列中优先级高的才能获得该锁,进入共享代码区。

线程同步的方式及比较:

方式含义缺点适用
临界区从程序代码的角度来控制线程的并发性1.因为在等待进入关键代码段时无法设定超时值,所以其很容易进入死锁状态。2.不能跨进程使用。单个进程中线程间的同步(同步速度快)
事件(信号)所有内核对象中最基本的速度较慢(相比用户模式实现线程同步)多个进程间的各个线程间实现同步
互斥量采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以可以保证公共资源不会同时被多个线程访问同上同上
信号量它允许多个线程同一时刻访问同一资源,但是需要限制同一时刻访问此资源的最大线程数目同上同上

进程同步

进程同步的主要任务:是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作.

  同步机制遵循的原则:

  (1)空闲让进;

  (2)忙则等待(保证对临界区的互斥访问);

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

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

4 、什么是死锁,造成死锁的条件

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

死锁产生的原因主要是:系统资源不足;多个进程推进顺序不合理。

死锁的必要条件:

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

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

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

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

处理死锁的策略:

忽略该问题。例如鸵鸟算法,该算法可以应用在极少发生死锁的情况下。传说中,鸵鸟看到危险就把头深埋地下,这是显然是一种很消极的策略。

检测死锁并且恢复。

通过对资源有序分配,以避免循环等待的“环路”发生。

通过破坏死锁的必要条件,来防止死锁的产生。

5 、进程的状态

运行状态(Running):当一个进程正在处理机上运行时。

就绪状态(Ready):一个进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行.

等待状态又称阻塞状态(Blocked):一个进程正在等待某一事件而暂停运行时。如等待某资源,等待输入/输出完成。

创建状态(NEW):一个进程正在被创建,还没被转到就绪状态之前的状态。

结束状态(Exit):一个进程正在从系统中消失时的状态,这是因为进程结束或由于其他原因所导致。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: