`

3、进程和线程

阅读更多

一、进程

 

  • 是一个正在执行中的程序
  • 每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元.

二、进程理解

 

  进程的概念主要有两点:

 

  第一,进程是一个实体。

 

  • 每一个进程都有它自己的地址空间,
  • 一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。
  • 文本区域存储处理器执行的代码;
  • 数据区域存储变量和进程执行期间使用的动态分配的内存;
  • 堆栈区域存储着活动过程调用的指令和本地变量。

  第二,进程是一个“执行中的程序”。

 

  • 程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
  • 进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

三、进程的特点

 

  1. 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
  2. 并发性:任何进程都可以同其他进程一起并发执行
  3. 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
  4. 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
  5. 结构特征:进程由程序、数据和进程控制块三部分组成。
  6. 多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

四、进程间的切换

 

    进行进程切换就是从正在运行的进程中收回处理器,然后再使待运行进程来占用处理器。

 

五、进程的状态

 

    进程执行时的间断性,决定了进程可能具有多种状态。事实上,运行中的进程可能具有以下三种基本状态。

 

1)就绪状态(Ready):

进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。

 

2)运行状态(Running):

进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。

 

3)阻塞状态(Blocked):

由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理机分配给该进程,也无法运行。

 

六、进程和程序的区别

 

  1. 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
  2. 程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。
  3. 进程更能真实地描述并发,而程序不能;
  4. 进程是由进程控制块、程序段、数据段三部分组成;
  5. 进程具有创建其他进程的功能,而程序没有。
  6. 同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程,也就是说同一程序可以对应多个进程。
  7. 在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单元都是进程。

七、线程

 

  1. 就是进程中的一个独立的控制单元.
  2. 线程在控制着进程的执行
  3. 一个进程中至少有一个线程
  4. 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。
  5. 一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
  6. 另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,
  7. 线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
  8. 一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。
  9. 由于线程之间的相互制约,致使线程在运行中呈现出间断性。
  10. 线程也有就绪、阻塞和运行三种基本状态。
  11. 每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身

八、常识

 

  • Java vm启动的时候会有一个进程 java.exe
  • 该进程中至少一个线程负责java程序的执行
  • 而且这个线程运行的代码存在于main方法中
  • 该线程称之为主线程
  • 扩展: 其实更细节说明jvm, jvm启动不止一个线程,还有负责垃圾回收机制的线程

 

分享到:
评论

相关推荐

    进程和线程之间的关系

    ### 进程和线程之间的关系 在计算机科学领域中,进程和线程是两个非常重要的概念,它们之间既有联系又有区别。对于初学者来说,理解进程与线程的关系至关重要,因为这有助于深入掌握操作系统的基本原理及应用。下面...

    进程与线程的生动形象理解

    3. **资源协调机制**:一方面防止进程之间和线程之间的资源冲突,另一方面允许它们共享必要的资源。 #### 四、专业视角下的进程与线程 从更专业的角度出发,进程是指并发执行的程序在执行过程中分配和管理资源的...

    进程和线程详解

    进程和线程是计算机操作系统中的两个基本概念,对于任何软件开发者,尤其是系统级或服务器端开发者来说,理解和掌握它们至关重要。下面将详细解释这两个概念,以及它们在实际应用中的作用。 首先,我们来理解“进程...

    在Windows下创建进程和线程的API

    Windows 下创建进程和线程的 API 在 Windows 操作系统中,创建进程和线程是非常重要的一步骤,对于开发者来说,掌握这方面的知识点是非常必要的。下面我们将详细介绍 Windows 下创建进程和线程的 API。 一、实验...

    进程和线程有什么区别?

    用过UNIX操作系统的读者知道进程,在UNIX操作系统中,每个应用程序的执行都在操作系统内核中登记一个进程标志,操作系统根据分配的标志对应用程序的执行进行调度和系统资源分配,但进程和线程有什么区别呢?...

    进程线程及死锁

    进程、线程、死锁和POSIX规范的系统调用 进程是操作系统中一个独立的执行单元,它拥有自己的虚拟地址空间和系统资源。线程是轻量级的进程,它共享同一个进程的虚拟地址空间和系统资源。理解进程和线程的概念对于...

    进程和线程的主要区别

    "进程和线程的主要区别" 在计算机科学中,进程和线程是两个基本概念,它们都是操作系统中非常重要的资源管理方式。进程是系统进行资源分配和调度的一个独立单位,拥有独立的地址空间,一个进程崩溃后,在保护模式下...

    最清楚的进程线程,进程和线程对比

    在操作系统中,进程和线程是两个非常核心的概念,它们代表了程序在系统中的运行状态以及运行方式。为了深入理解这两个概念,我们首先要明确什么是进程。 进程是具有一定独立功能的程序关于某个数据集合上的一次运行...

    c语言多进程多线程编程

    在计算机科学中,多进程和多线程是两种并发执行的方式,它们允许程序在同一时间处理多个任务,从而提高系统的效率和响应性。C语言作为一门底层且强大的编程语言,提供了丰富的系统调用接口来实现多进程和多线程编程...

    c++进程与线程

    在计算机科学领域,C++是一种强大的编程语言,它支持创建多进程和多线程的应用程序。进程和线程是操作系统中的基本概念,对于理解和优化软件性能至关重要。让我们深入探讨这两个概念以及它们在C++编程中的应用。 **...

    进程与线程的一个简单解释

    进程和线程是计算机系统中执行程序的基本单位,理解它们的概念和运作机制对于进行多线程编程至关重要。这里,我们将深入探讨这两个概念及其关系。 首先,让我们定义一下进程。进程可以被视为一个单独的执行单元,它...

    C#进程和线程资料集锦

    "C#进程和线程资料集锦"这一主题涵盖了进程与线程的基本概念、管理和同步技术,是C#开发者必备的知识库。 **进程与线程** 1. **进程**:进程是操作系统资源分配的基本单位,每个运行的应用程序都有一个独立的进程。...

    Xuetr0.45(暂停进程和线程运行工具)

    1.进程、线程、进程模块、进程窗口、进程内存信息查看,杀进程、杀线程、卸载模块等功能 2.内核驱动模块查看,支持内核驱动模块的内存拷贝 3.SSDT、Shadow SSDT、FSD、KBD、TCPIP、Classpnp、Atapi、Acpi、SCSI、IDT...

    进程与线程的管理 .PPT 进程、线程和优先级

    而线程则是执行的基本单元,是进程中独立的执行路径,每个进程至少有一个主线程,用于启动和执行进程的主要任务。 线程的优先级是调度的重要依据,Windows系统中,线程被分为32个优先级等级,从0到31,0表示最低...

    API之进程和线程函数

    ### API之进程和线程函数:深度解析与应用 在计算机科学中,进程和线程是执行程序的基本单位,它们的管理和控制对于操作系统以及应用程序的性能至关重要。API(应用程序编程接口)提供了各种函数来创建、管理、同步...

    MFC程序设计详细实例 第25章 进程和线程

    MFC程序设计详细实例 第25章 进程和线程MFC程序设计详细实例 第25章 进程和线程MFC程序设计详细实例 第25章 进程和线程MFC程序设计详细实例 第25章 进程和线程MFC程序设计详细实例 第25章 进程和线程MFC程序设计详细...

    进程线程及堆栈关系的总结

    ### 进程线程及堆栈关系的总结 #### 一、进程与线程的概念及其关系 **进程**是具有一定独立功能的程序在一个特定数据集合上的运行活动,是系统进行资源分配和调度的一个独立单位。进程是操作系统进行管理和调度的...

Global site tag (gtag.js) - Google Analytics