进程与线程详细介绍

目录

一 进程概念

二 进程的组成

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.mzph.cn/pingmian/79798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在服务器后台运行Python脚本,并配置虚拟环境与GPU支持

使用Conda虚拟环境在服务器后台运行Python脚本,并检查GPU分配 在服务器开发环境中,我们需要确保Python脚本运行在指定的Conda虚拟环境中,并且确认是否正确分配了GPU资源。本文将通过一个完整的start.sh脚本,完成以下功能&#xff…

前端取经路——工程化渡劫:八戒的构建之道

大家好,我是老十三,一名前端开发工程师。前端工程化就像八戒的钉耙,看似简单却能降妖除魔。在本文中,我将带你探索前端工程化的九大难题,从模块化组织到CI/CD流程,从代码规范到自动化测试,揭示这些工具背后的核心原理。无论你是初学者还是资深工程师,这些构建之道都能帮…

Ubuntu 安装 Keepalived

Keepalived 是什么 Keepalived 是一个用于实现高可用性(High Availability, HA)的服务,是一款基于 VRRP 协议的高可用软件,常用于主备切换和虚拟IP漂移,在服务故障时自动实现故障转移。 Keepalived 的核心功能 功能说…

DHCP理解

文章目录 DHCP理解DHCP的核心作用DHCP默认端口DHCP的工作原理(4个步骤)图示说明(含中继代理)DHCP Discover(客户端发现阶段)DHCP Offer(服务器提供阶段)DHCP Request(客户…

云计算-容器云-部署CICD-jenkins连接gitlab

安装 Jenkins 将Jenkins部署到default命名空间下。要求完成离线插件的安装,设置Jenkins的登录信息和授权策略。 上传BlueOcean.tar.gz包 [root@k8s-master-node1 ~]#tar -zxvf BlueOcean.tar.gz [root@k8s-master-node1 ~]#cd BlueOcean/images/ vim /etc/docker/daemon.json…

AI 大模型新浪潮:从 DeepSeek-Prover 到 Qwen3,再到 DeepSeek-R2,迈向自动推理的新时代20250507

🧠 AI 大模型新浪潮:从 DeepSeek-Prover 到 Qwen3,再到 DeepSeek-R2,迈向自动推理的新时代 🚀 引言:大模型,不止是语言处理器,而是思维建构者 在 2025 年春天,我们见证了…

观察者模式(Observer Pattern)详解

文章目录 1. 什么是观察者模式?2. 为什么需要观察者模式?3. 观察者模式的核心概念4. 观察者模式的结构5. 观察者模式的基本实现简单的气象站示例6. 观察者模式的进阶实现推模型 vs 拉模型6.1 推模型(Push Model)6.2 拉模型(Pull Model)7. 观察者模式的复杂实现7.1 在线商…

前端代码规范详细配置

以下是现代前端项目的完整代码规范配置方案,涵盖主流技术栈和自动化工具链配置: 一、基础工程配置 1. 项目结构规范 project/ ├── src/ │ ├── assets/ # 静态资源 │ ├── components/ # 通用组件 │ ├── layouts/ …

Missashe考研日记-day34

Missashe考研日记-day34 1 专业课408 学习时间:3h学习内容: 今天是学习I/O管理第二小节的内容,听了课也做了题,这是操作系统倒数第二节知识了,还差最后一节就完结了。知识点回顾: 1.I/O核心子系统&#x…

Milvus 向量数据库详解与实践指南

一、Milvus 核心介绍 1. 什么是 Milvus? Milvus 是一款开源、高性能、可扩展的向量数据库,专门为海量向量数据的存储、索引和检索而设计。它支持近似最近邻搜索(ANN),适用于图像检索、自然语言处理(NLP&am…

算力经济模型研究:从云计算定价到去中心化算力市场设计

引言:算力商品化的双重革命 在H800 GPU集群的算力供给能力突破2.3 EFLOPS的今天,算力定价机制正经历从"资源租赁"到"动态市场"的范式转变。传统云计算定价模型(如AWS按需实例)的静态价格机制已难以适应大模型…

[D1,2] 贪心刷题

文章目录 摆动序列最大子数组合买卖股票跳跃游戏跳跃2 摆动序列 不像是贪心,只要抓住摆动这个点,前一个上升,那下一个就要下降,记录上一次的状态为1的话,那下一次就要更新为-1,如果上一次为1,这…

Spring Boot操作MongoDB的完整示例大全

以下是基于Spring Boot操作MongoDB的完整示例大全&#xff0c;涵盖增删改查、聚合查询、索引、事务等核心功能&#xff1a; 一、基础CRUD操作 1. 环境配置 依赖配置&#xff08;pom.xml&#xff09; <dependency><groupId>org.springframework.boot</groupId…

【实战教程】零基础搭建DeepSeek大模型聊天系统 - Spring Boot+React完整开发指南

&#x1f525; 本文详细讲解如何从零搭建一个完整的DeepSeek AI对话系统&#xff0c;包括Spring Boot后端和React前端&#xff0c;适合AI开发入门者快速上手。即使你是编程萌新&#xff0c;也能轻松搭建自己的AI助手&#xff01; &#x1f4da;博主匠心之作&#xff0c;强推专栏…

Linux系统基本指令和知识指南

一、Linux系统简介 Linux是一种自由和开放源代码的类UNIX操作系统&#xff0c;由林纳斯托瓦兹在1991年首次发布。它以稳定性、安全性和灵活性著称&#xff0c;广泛应用于服务器、嵌入式系统和个人计算机。 Linux主要特点&#xff1a; 开源免费 多用户、多任务 良好的安全性…

【计算机视觉】OpenCV实战项目:Long-Exposure:基于深度学习的长时间曝光合成技术

Long-Exposure&#xff1a;基于深度学习的长时间曝光合成技术 项目概述与技术背景项目核心功能技术原理 环境配置与安装硬件要求建议详细安装步骤可选组件安装 实战应用指南1. 基础使用&#xff1a;视频转长曝光2. 高级模式&#xff1a;自定义光轨合成3. 批量处理模式 技术实现…

TikTok 矩阵账号运营实操细节:打造爆款矩阵

在 TikTok 的流量版图里&#xff0c;打造 TikTok 矩阵账号能显著提升影响力与吸粉能力。而借助 AI 工具&#xff0c;更可为 TikTok 矩阵运营效率的提升赋能&#xff0c;让运营如虎添翼。下面就为大家详细讲讲其中的实操细节&#xff0c;并结合一些伪代码示例辅助理解。 一、矩…

互联网大厂Java求职面试:分布式系统中向量数据库与AI应用的融合探索

互联网大厂Java求职面试&#xff1a;分布式系统中向量数据库与AI应用的融合探索 面试开场&#xff1a;技术总监与郑薪苦的“较量” 技术总监&#xff08;以下简称T&#xff09;&#xff1a;郑薪苦先生&#xff0c;请简单介绍一下你在分布式系统设计方面的经验。 郑薪苦&…

【每日八股】学习 RocketMQ Day2:进阶(一)

文章目录 复习昨日内容为什么要使用消息队列为什么选择 RocketMQRocketMQ 的优缺点&#xff1f;谈谈你对 RocketMQ 的理解&#xff1f;消息队列有哪些类型&#xff1f;RocketMQ 采用哪种消息队列模型&#xff1f;消息的消费模式了解吗&#xff1f;了解 RocketMQ 的基本架构吗&a…

探索智能体开发新边界:Cangjie Magic开源平台体验与解析

文章目录 每日一句正能量前言一、Cangjie Magic的核心技术&#xff08;一&#xff09;Agent DSL架构&#xff08;二&#xff09;原生支持MCP通信协议&#xff08;三&#xff09;智能规划功能 二、实际应用场景&#xff08;一&#xff09;智能客服系统&#xff08;二&#xff09…