进程与线程

来源:互联网 发布:网络综合布线设计图 编辑:程序博客网 时间:2024/05/16 10:16

什么是进程?

进程:指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体

结构

结构特征:进程由程序、数据和进程控制块三部分组成。


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
结构

结构特征:进程由程序、数据和进程控制块三部分组成。


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
结构

结构特征:进程由程序、数据和进程控制块三部分组成。


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
结构

结构特征:进程由程序、数据和进程控制块三部分组成。


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
结构

结构特征:进程由程序、数据和进程控制块三部分组成。


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
结构

结构特征:进程由程序、数据和进程控制块三部分组成。


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
进程的组成:

程序、数据、进程控制块(PCB)


进程的创建时机:

是指操作系统创建一个新的进程。UNIX系统用fork()系统调用,而windows系统用CreatProcess()。进程创建的时机有:

(1)系统初始化。系统的调度进程创建init进程。
(2)执行中的进程调用了fork()系统函数。程序中有fork()函数。
(3)用户登录,用户命令请求创建进程。例如:用户双击一个图标。
(4)一个批处理作业初始化。大型机、高性能计算机用户提交一个课题,则系统建立作业控制块,在作业调度后在系统内存中创建进程。
怎么创建进程?

状态:


进程的特征
 1、结构特征
    通常的程序是不能并发执行的。为使程序(含数据)能独立运行,应为之配置一进程控制块,即PCB(Process Control Block);而由程序段、相关的数据段和PCB三部分便构成了进程实体。在许多情况下所说的进程,实际上指进程实体,所谓创建进程,实质上是创建进程实体中的PCB。
 2、动态性
    进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征。动态性还表现在:“它由创建而产生,由调度而执行,由撤销而消亡”。可见,进程实体有一定的生命期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的。
 3、并发性
    多个进程实体同存于内存中,且能在一段时间内同时运行。并发性是进程的重要特征,同时也是OS的重要特征。引入进程的目的也正是为了使其进程实体能和其他进程实体并发执行;而程序(没有建立PCB)是不能并发执行的。
 4、独立性
    独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行。
 5、异步性
    进程按各自独立的、不可预知的速度向前推进,或说进程实体按异步方式运行。

进程控制块(PCB)

PCB是进程存在的惟一标志。当系统创建一个新进程时,就为它建立了一个PCB;进程结束时又回收其PCB,进程消亡。系统将所有的PCB组织成若干个链表(或队列),存放在操作系统中专门开辟的PCB区内。

调度算法

实时系统中:FIFO(First Input First Output,先进先出算法),SJF(Shortest Job First,最短作业优先算法),SRTF(Shortest Remaining Time First,最短剩余时间优先算法)。
交互式系统中:RR(Round Robin,时间片轮转算法),HPF(Highest Priority First,最高优先级算法),多级队列,最短进程优先,保证调度,彩票调度,公平分享调度。


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
调度算法

实时系统中:FIFO(First Input First Output,先进先出算法),SJF(Shortest Job First,最短作业优先算法),SRTF(Shortest Remaining Time First,最短剩余时间优先算法)。
交互式系统中:RR(Round Robin,时间片轮转算法),HPF(Highest Priority First,最高优先级算法),多级队列,最短进程优先,保证调度,彩票调度,公平分享调度。


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
调度算法

实时系统中:FIFO(First Input First Output,先进先出算法),SJF(Shortest Job First,最短作业优先算法),SRTF(Shortest Remaining Time First,最短剩余时间优先算法)。
交互式系统中:RR(Round Robin,时间片轮转算法),HPF(Highest Priority First,最高优先级算法),多级队列,最短进程优先,保证调度,彩票调度,公平分享调度。


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
调度算法

实时系统中:FIFO(First Input First Output,先进先出算法),SJF(Shortest Job First,最短作业优先算法),SRTF(Shortest Remaining Time First,最短剩余时间优先算法)。
交互式系统中:RR(Round Robin,时间片轮转算法),HPF(Highest Priority First,最高优先级算法),多级队列,最短进程优先,保证调度,彩票调度,公平分享调度。


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
PCB不但可以记录进程的属性信息,以便操作系统对进程进行控制和管理,而且PCB标志着进程的存在,

PCB包括以下三类信息:进程标识信息;处理器状态信息;进程控制信息。


进程通信:

管道即无名管道:半双工、单向传输、只能父子进程使用。

有名管道即命名管道:半双工、允许无亲缘关系的进程使用

消息队列:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

信号:信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

共享内存:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

套接字:它可用于不同及其间的进程通信。


线程:

线程是进程中的一个实体,作为系统调度和分派的基本单位Linux下的线程看作轻量级进程。
线程的性质:
1.线程是进程内的一个相对独立的可执行的单元。若把进程称为任务的话,那么线程则是应用中的一个子任务的执行。
2.由于线程是被调度的基本单元,而进程不是调度单元。所以,每个进程在创建时,至少需要同时为该进程创建一个线程。即进程中至少要有一个或一个以上的线程,否则该进程无法被调度执行。
3.进程是被分给并拥有资源的基本单元。同一进程内的多个线程共享该进程的资源,但线程并不拥有资源,只是使用他们。
4.线程是操作系统中基本调度单元,因此线程中应包含有调度所需要的必要信息,且在生命周期中有状态的变化。
5.由于共享资源【包括数据和文件】,所以线程间需要通信和同步机制,且需要时线程可以创建其他线程,但线程间不存在父子关系。

线程机制的优点:
多线程运行在同一个进程的相同的地址空间内,和采用多进程相比有以下优点:
1.创建和撤销线程的开销较之进程要少。创建线程时只需要建立线程控制表相应的表目,或有关队列,而创建进程时,要创建PCB表和初始化,进入有关进程队列,建立它的地址空间和所需资源等。
2.CPU在线程之间开关时的开销远比进程要少得多。因开关线程都在同一地址空间内,只需要修改线程控制表或队列,不涉及地址空间和其他工作。
3.线程机制也增加了通讯的有效性。进程间的通讯往往要求内核的参与,以提供通讯机制和保护机制,而线程间的通讯是在同一进程的地址空间内,共享主存和文件,无需内核参与。

线程的创建方式:

http://blog.csdn.net/longshengguoji/article/details/41126119

线程的创建以及启动:

http://liuyuru.iteye.com/blog/810649

线程同步的四种方式:

临界区、事件、互斥量、信号量

线程同步的实现方法


信号量的PV操作

三、进程和线程的区别
(1)调度:
        在传统的操作系统中,CPU调度和分派的基本单位是进程。而在引入线程的操作系统中,则把线程作为CPU调度和分派的基本单位,进程则作为资源拥有的基本单位,从而使传统进程的两个属性分开,线程编程轻装运行,这样可以显著地提高系统的并发性。同一进程中线程的切换不会引起进程切换,从而避免了昂贵的系统调用,但是在由一个进程中的线程切换到另一进程中的线程,依然会引起进程切换。
 
(2)并发性:
      在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间也可以并发执行,因而使操作系统具有更好的并发性,从而更有效地提高系统资源和系统的吞吐量。例如,在一个为引入线程的单CPU操作系统中,若仅设置一个文件服务进程,当它由于某种原因被封锁时,便没有其他的文件服务进程来提供服务。在引入线程的操作系统中,可以在一个文件服务进程设置多个服务线程。当第一个线程等待时,文件服务进程中的第二个线程可以继续运行;当第二个线程封锁时,第三个线程可以继续执行,从而显著地提高了文件服务的质量以及系统的吞吐量。


(3)拥有资源:
      不论是引入了线程的操作系统,还是传统的操作系统,进程都是拥有系统资源的一个独立单位,他可以拥有自己的资源。一般地说,线程自己不能拥有资源(也有一点必不可少的资源),但它可以访问其隶属进程的资源,亦即一个进程的代码段、数据段以及系统资源(如已打开的文件、I/O设备等),可供同一个进程的其他所有线程共享。


(4)独立性:
        在同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多。这是因为

为防止进程之间彼此干扰和破坏,每个进程都拥有一个独立的地址空间和其它资源,除了共享全局变量外,不允许其它进程的访问。但是同一进程中的不同线程往往是为了提高并发性以及进行相互之间的合作而创建的,它们共享进程的内存地址空间和资源,如每个线程都可以访问它们所属进程地址空间中的所有地址,如一个线程的堆栈可以被其它线程读、写,甚至完全清除。


(5)系统开销:

       由于在创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等。因此,操作系统为此所付出的开销将显著地大于在创建或撤消线程时的开销。类似的,在进程切换时,涉及到整个当前进程CPU环境的保存环境的设置以及新被调度运行的CPU环境的设置,而线程切换只需保存和设置少量的寄存器的内容,并不涉及存储器管理方面的操作,可见,进程切换的开销也远大于线程切换的开销。此外,由于同一进程中的多个线程具有相同的地址空间,致使他们之间的同步和通信的实现也变得比较容易。在有的系统中,现成的切换、同步、和通信都无需操作系统内核的干预。


(6)支持多处理机系统:
       在多处理机系统中,对于传统的进程,即单线程进程,不管有多少处理机,该进程只能运行在一个处理机上。但对于多线程进程,就可以将一个进程中的多个线程分配到多个处理机上,使它们并行执行,这无疑将加速进程的完成。因此,现代处理机OS都无一例外地引入了多线程。
进程和线程的区别

(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
(4)二者均可并发执行.


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
进程和线程的区别

(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
(4)二者均可并发执行.


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
进程和线程的区别

(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
(4)二者均可并发执行.


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
进程和线程的区别

(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
(4)二者均可并发执行.


作者: fengsehng
链接:http://www.imooc.com/article/11011
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
区别简洁版:


问题:

FAQ: WINDOS进程间通信与LINUX进程间通信的关系?
  答: 事实上,WINDOS的进程通信大部分移植于UNIX, WINDOS的剪贴板,文件映射等都可从UNIX进程通信的共享存储中找到影子.

FAQ: 进程间通信与线程间通信之间的关系?
  答: 因为WINDOWS运行的实体是线程, 狭义上的进程间通信其实是指分属于不同进程的线程之间的通讯.而单个进程之间的线程同步问题可归并为一种特殊的进程通信.它要用到内核支持的系统调用来保持线程之间同步. 通常用到的一些线程同步方法包括:Event, Mutex, 信号量Semaphore, 临界区资源等.

参考:http://www.cnblogs.com/ransw/p/4150432.html

http://www.imooc.com/article/11011

http://blog.csdn.net/yanxiaolx/article/details/51763372

原创粉丝点击