当前位置: 首页 > web >正文

进程与线程详细介绍

目录

一 进程概念

二 进程的组成

2.1 PCB

2.2 数据段

2.3 程序段

三 进程的五大特点

四 进程的创建与销毁

五 线程概念

六 线程特征

七 进程与线程的区别与联系

 区别

 联系


一 进程概念

进程是程序的一次执行过程,是操作系统进行资源分配和调度的基本单位。

一个程序至少有一个进程,一个进程至少有一个线程
每个进程有独立的内存空间和系统资源,一个进程的错误不会影响其他进程。 

二 进程的组成

2.1 PCB

PCB:进程控制块。进程存在的唯一标识。用来描述进程的属性信息

当进程被创建时,操作系统为其创建 PCB,当进程结束时,会回收其 PCB。

 进程控制块 PCB 一般包含如下四类信息:

        进程描述信息:用来让操作系统区分各个进程,当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的 “身份证号”— PID(ProcessID,进程 ID)。另外,进程描述信息还包含进程所属的用户 ID(UID)

        进程控制和管理信息:记录进程的运行情况。比如 CPU 的使用时间、磁盘使用情况、网络流量使用情况等。

        资源分配清单:记录给进程分配了哪些资源。比如分配了多少内存、正在使用哪些 I/O 设备、正在使用哪些文件等。

        CPU 相关信息:进程在让出 CPU 时,必须保存该进程在 CPU 中的各种信息,比如各种寄存器的值。用于实现进程切换,确保这个进程再次运行的时候恢复 CPU 现场,从断点处继续执行。这就是所谓的保存现场信息。

2.2 数据段

一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果,即进程运行过程中的各种数据(比如程序中定义的变量)。

2.3 程序段

程序段就是能被进程调度时程序调度到CPU执行的程序代码段(指令序列)。注意,程序可被多个进程共享,即多个进程可以运行同一个程序。同时挂三个 QQ 号,会对应三个 QQ 进程,它们的 PCB、数据段各不相同,但程序段的内容都是相同的(都是运行着相同的 QQ 程序)

三 进程的五大特点

动态性:进程是程序的一次执行过程,有着创建,活动,暂停,终止等过程。具有一定生命周期 。是动态的产生,变化和消亡的。动态性是最基本的特征

并发性:多个进程实体同时存在内存中。能在一段时间内同时运行。重要特征。引入进程的目的就是为了使程序能与其他进程的程序并发执行,提高资源利用率

独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单元。

异步性:由于进程的相互制约,使得进程具有执行的间断性,即进程按各自独立的、不可预知的速度走走停停、何时开始何时暂停何时结束不可预知的性质,就会导致执行结果的不可再现性,为此在操作系统中必须配置相应的进程同步机制。

结构性:每个进程都配置一个PCB对其进行描述。从结构上看,进程实体是由程序段、数据段和进程控制块三部分组成的。

四 进程的创建与销毁

创建: 通常通过 fork() 系统调用创建子进程。fork() 会复制父进程的地址空间和资源到子进程。

销毁: 进程可以通过 exit() 终止自身,父进程可以通过 wait() 等待子进程的终止。

五 线程概念

同一进程中的线程共享资源,一个线程的错误可能会影响其他线程

线程是程序执行流的最小单元。一个进程可以包含多个线程,这些线程共享进程的资源(如内存空间、文件描述符等),但每个线程有其独立的执行路径和线程上下文(如寄存器状态、栈等)。线程是操作系统调度的基本单位,它允许程序在并发执行时更加灵活和高效。

引入线程增加并发度。线程成为了程序执行流的最小单位。

可以把线程理解“轻量级进程”。
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。
引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)
引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。

线程库完成了对线程的管理工作

六 线程特征

  1. 轻量级

    • 线程是轻量级的执行单元,创建、切换和销毁线程的开销比进程小得多。

    • 线程共享进程的资源,因此不需要像进程那样分配独立的内存空间和系统资源。

  2. 并发性

    • 线程支持并发执行,多个线程可以在同一个进程中同时运行。

    • 并发性使得程序可以更高效地利用多核处理器,提高程序的性能。

  3. 共享资源

    • 同一进程中的多个线程共享进程的资源,如内存空间、文件描述符等。

    • 这种共享机制使得线程之间的通信和同步更加高效,但也增加了线程之间的竞争和冲突。

  4. 独立性

    • 每个线程有其独立的执行路径和线程上下文,包括程序计数器(PC)、寄存器状态和栈。

    • 线程的执行是独立的,一个线程的执行不会直接影响其他线程的执行。

  5. 异步性

    • 线程的执行顺序和速度是不可预测的,取决于操作系统的调度策略和系统资源的可用性。

    • 异步性使得程序的运行更加灵活,但也增加了程序设计的复杂性。

七 进程与线程的区别与联系

计算机的核心是cpu,他承担了所有计算任务,单个cpu一次只能运行一个任务,也就是说任意时刻cpu总是运行一个进程(任务),其他进程属于非运行状态。一个任务可以由多个线程协同来完成。进程的空间是可以由线程共享的,每个线程都可以使用这些共享内存,但是有些共享内存只能有一个线程使用,这代表一个线程使用这些共享内存时,其他线程必须等他结束才能使用。为了防止使用时其他线程进入,我们可以给它加一把锁,叫互斥锁mutex。防止多个进程与线程同时读写某一块内存区域

 区别

1. 进程是程序的一次执行过程,是操作系统进行资源分配和调度的基本单位。每个进程都有独立的内存空间,系统资源等

线程是进程的一个执行单元,是操作系统能进行调度的最小单位。同一进程中的多个线程共享进程的资源

2. 每个进程都有独立的内存空间,系统资源如文件描述符,信号处理等。进程之间的资源是隔离的

同一进程中的线程共享进程的资源。线程之间的资源共享更加高效

3. 创建和销毁进程的开销大,线程的开销小

4. 进程之间的通信需要通过进程通信ipc机制,如管道,消息队列,共享内存等,通信开销大

同一进程中的线程可以共享内存直接通信,开销小,线程之间的通信更加高效

5. 每个进程都有独立的内存空间和系统资源,一个进程的错误不会影响其他进程

同一进程中的线程共享资源,一个线程的错误可能会影响其他线程

6. 操作系统调度的基本单位是进程

线程是操作系统调度的最小单位,调度的粒度更小,可以更高效的利用多核处理器

 联系

1. 线程是进程的一部分

一个进程可以包含多个线程,线程的生命周期依赖于进程的生命周期。线程的创建和销毁必须在进程的上下文中进程

2. 共享资源

共享机制使得线程之间的通信和同步更加高效

3. 进程和线程都可以并发执行

http://www.xdnf.cn/news/4580.html

相关文章:

  • 如何使用 QuickAPI 连接 PostgreSQL 数据库并将PostgreSQL数据发布成API?
  • 嵌入式开发学习日志Day15
  • AI恶魔之眼使用说明书
  • Spring Bean 的创建流程
  • 分布式id的两大门派!时钟回拨问题的解决方案!
  • 单调栈原理
  • vtkSmartPointer<vtkPolyData> 常用的函数方法
  • Spring Boot 多数据源事务管理
  • async/await的另一种食用方法
  • vue-quill-editor的失焦事件
  • 分布式架构详解
  • #黑马点评#(一)登录功能
  • 数字化转型-4A架构之应用架构
  • 鸿蒙编译boost
  • 浅谈微前端沙箱机制
  • 报表分析报告怎么写?零基础掌握报表分析三要素!
  • canal mysqltomysql增加同步的库操作
  • 96、数图求解(整数规划建模求解)
  • 分布式-Redis分布式锁
  • 如何用FastMCP快速开发自己的MCP Server?
  • 2024ccpc【上海+陕西】
  • Windows远程桌面实现之十七:基于浏览器的文件和目录传输(一)
  • 解决 win11 连接共享打印机,报错 0x00000709 问题
  • Analytics Service 对生产环境性能的影响
  • Spring-博客系统项目
  • 动态规划之回文串问题
  • 第7章-3 维护索引和表
  • 添加地形与自定义地形
  • HTML基础2-空元素,元素属性与页面的结构
  • livedata使用,完整的livedata的Demo