程序-进程-线程

来源:互联网 发布:js div切换滑动门效果 编辑:程序博客网 时间:2024/05/20 04:28

一 程序与线程

     1)程序是一个静态概念,是一组指令的集合,是一种静态概念。而进程是程序及其数据执行的过程是一个动态的概念。

      2)进程是一个执行过程。能够动态的创建和消亡,具有一定的生命周期。而程序 是一组 代码的集合,永久纯在可长期保存。

     3)从静态的角度考虑,进程有程序块,数据和pcb三部分组成,而程序是一组有序的指令集合

二 进 程

1.为什么要引入进程:

       在多道程序同时运行的背景下,程序之间需要共享系统资源,这样就会导致各程序在执行过程中出现相互制约的关系,程序的执行就会表现出间断性的特性。这些特性都是在程序的执行过程中发生的,是动态的过程。而传统的程序本身是一组指令的集合,是一个静态的概念,无法描述在内存的执行情况,即我们无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其他执行程序的关系,因此,程序这个静态概念已不能如实反映程序并发执行的特征。为了深刻描绘程序动态执行过程的性质乃至更好地支持和管理多道程序的并发执行,人们引入了进程概念。

2.进程的定义及组成

      进程是一个具有独立功能程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序代码本身,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。 

       一个进程实体由程序段、相关数据段和PCB三部分构成,其中PCB是标志一个进程存在的唯一标识,程序段是进程运行的程序代码,数据段则存储程序运行过程中相关的一些数据。

3.进程如何解决问题

      进程把能够识别程序运行状态的一些变量存放在PCB中,通过这些变量系统能够更好地了解进程的状况,并在适当的时候进行进程的切换,以避免一些资源的浪费,甚至划分更小的调度单位——线程来提高系统的并发度。进程把能够识别程序状态的一些变量放在PCB中,通过这些变量系统能更好的了解程序的状态,并在合适的时候进行状态的切换和资源的分配,以避免资源的浪费。甚至会划分成更小的调度单元线程来提高系统的并发度。

4.进程的状态

  1.创建状态:创建进程,类似于变量的申明。
  2.就绪状态:进程获得除处理机以外的所有资源
  3.运行状态:进程获得处理机资源,并在处理机上运行
  4.阻塞状态: 进程因等待某个资源而处于暂停状态
  5.结束状态:进程在系统中消失结束,分为正常结束,异常退出

5.进程状态的转换

  1.就绪->运行:经过处理机的调度,就绪进程获得到处理机资源。

  2.运行->就绪:时间片用完,或者在可剥夺系统中有更高优先级进程进入。

  3.运行->阻塞:进程需要的某个资源还没准备好

  4.阻塞->就绪:进程需要的资源已准备好

三 线程

1.什么是线程

      线程是进程内的一个可执行单元,也是进程的可调度实体。一个进程能拥有多个线程。但一个线程只能属于一个进程。一个进程中的多个线程共享该线程的资源和数据。但线程拥有自己独立的堆栈。这些堆栈是其私有的。因此线程是处理机处理调度的基本单位。

2.为什么要引入线程

1、便于调度

2、线程共享进程的数据和代码,相比进程需要通过显示才能通信更加的简便快捷,启动和切换速度更快。

3、具有高并发性,可以启动多个线程执行程序中的不同部分。

4、充分利用处理器的功能,让每一个处理器上运行不同的线程。实现程序的高度并发。


3.进程和线程的区别

1.一个进程可拥有多个线程,而一个线程只能属于一个进程
2.进程是资源分配的基本单位,而线程是处理器资源调度的基本单位。一个进程里的所有线程工享该进程的数据和代码。
3.线程 执行过程容易协作和同步,而进程需要消息通信机制进行同步
4.线程划分尺度更小,并发性更高
5.线程共享进程资源时有自己私有的堆栈
6.线程不能单独执行。但线程有程序的执行入口,执行序列,出口。线程要组合成进程才能执行。

  


0 0
原创粉丝点击