进程与线程

文章目录

      • 进程与线程
        • 进程
          • 什么是进程
          • 进程的组成
            • 程序段
            • 数据段
            • 程序控制块
          • 例子
        • 线程
          • 什么是线程
          • 线程的组成
            • 线程描述信息
            • 程序计数器
            • 栈内存
          • 例子
        • 进程与线程的区别

进程与线程

进程

什么是进程

​ 什么是进程呢?简单来说,进程是程序的一次启动执行。什么是 程序呢?程序是存放在硬盘中的可执行文件,主要包括代码指令和数 据。一个进程是一个程序的一次启动和执行,是操作系统将程序装入 内存,给程序分配必要的系统资源,并且开始运行程序的指令。

​ 进程与程序是什么关系呢?同一个程序可以多次启动,对应多个 进程。比如,多次打开Chrome浏览器程序,对应的就是多个Chrome进程。

进程的组成

​ 进程是程序执行和系统进行并发调度的最小单位。一般来说一个进程是由程序段、数据段和程序控制块三部分组成。进程结构图如下:

在这里插入图片描述

程序段

​ 程序段一般也被称为代码段。代码段是进程的程序指令在内存中的位置,包含需要执行指令的集合。

数据段

​ 数据段是进程的操作数据在内存中的位置,包含需要操作的数据集合。

程序控制块

​ 程序控制块(Program ControlBlock,PCB)包含进程的描述信息和控制信息,是进程存在的唯一标志。

描述信息:主要包括进程ID和进程名称,进程ID是唯一的,代表进程的身份;进程状态,比如运行、就绪、阻塞;进程优先级,是进程调度的重要依据。

调度信息:主要包括程序起始地址,程序的第一行指令的内存地址,从这里开始程序的执行;通信信息,进程间通信时的消息队列。

资源信息:主要包括内存信息,内存占用情况和内存管理所用的数据结构;I/O设备信息,所用到的I/O设备编号及相应的数据结构;文件句柄,所打开文件的信息。

进程上下文:主要包括执行时各种CPU寄存器的值、当前程序计数器(PC)的值以及各种栈的值等,即进程的环境。在操作系统切换进程时,当前进程被迫让出CPU,当前进程的上下文就保存在PCB结构中,供下次恢复运行时使用。

例子

​ Java编写的程序都运行在Java虚拟机(JVM)中,每当使用Java命 令启动一个Java应用程序时,就会启动一个JVM进程。在这个JVM进程 内部,所有Java程序代码都是以线程来运行的。JVM找到程序的入口点 main()方法,然后运行main()方法,这样就产生了一个线程,这个线 程被称为主线程。当main()方法结束后,主线程运行完成,JVM进程也 随即退出。

线程

什么是线程

​ 早期的操作系统只有进程而没有线程,随着科技的发展,CPU的性能越来越高,而且从单核CPU发展为多核CPU,为了充分发挥CPU的计算性能,提升CPU硬件 资源的利用率,同时弥补进程调度过于笨重产生的问题,进程内部演 进出了并发调度的诉求,于是就发明了线程。

​ 线程是指“进程代码段”的一次顺序执行流程。一个进程可以有一个或多个线程,各个线程之间共享进程 的内存空间、系统资源,进程仍然是操作系统资源分配的最小单位。

线程的组成

​ 线程是CPU调度的 最小单位。一个标准的线程主要由三部分组成,即线程描述信息、程序计数 器(Program Counter,PC)和栈内存。线程结构图如下:

在这里插入图片描述

线程描述信息

​ 线程的描述信息即线程的基本信息。

线程ID:线程的唯一标识,同一个进程内不同线程的ID不会重叠。

线程名称:主要是方便用户识别,用户可以指定线程的名字,如果没有指定,系统就会自动分配一个名称。

线程优先级:表示线程调度的优先级,优先级越高,获得CPU的执行机会越大。

线程状态:标识当前线程的执行状态,为新建、就绪、运行、阻塞、结束等状态中的一种。

​ 其他的一些信息,如是否为守护线程等。

程序计数器

​ 在线程的结构中,程序计数器很重要,它记录着线程下一条指令的代码段内存地址。

栈内存

​ 在线程的结构中,占内存是代码段中局部变量的存储空间,为线程所独立拥有,在线程之间不共享。在JDK1.8中,每个线程在创建是默认被分配1MB大小的栈内存。栈内存和堆内存不同,栈内存不受垃圾回收器管理。

例子

​ Java程序的进程执行过程就是标准的多线程的执行过程。每当使 用Java命令执行一个class类时,实际上就是启动了一个JVM进程。理 论上,在该进程的内部至少会启动两个线程,一个是main线程,另一 个是GC(垃圾回收)线程。实际上,执行一个Java程序后,线程数量远远不止两个,达到了18个之 多。

进程与线程的区别

  1. 线程是“进程代码段”的一次顺序执行流程。一个进程由一个或多个线程组成,一个进程至少有一个线程。
  2. 线程是CPU调度的最小单位,进程是操作系统分配资源的最小单位。线程的划分尺度小于进程,使得多线程程序得并发性高。
  3. 线程是出于高并发得调度诉求从进程内部演进而来的。线程的出现既充分发挥了CPU的计算性能,又弥补了进程调度过于笨重的问题。
  4. 进程之间是相互独立的,但进程内部的各个线程之间并不完全独立。各个线程之间共享进程的方法区内存、堆内存、系统资源(文件句柄、系统信号等)。
  5. 切换速度不同,线程上下文切换比进程上下文切换要快得多。所以有的时候线程也称为轻量级进程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3416.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C#进阶】C# 集合类

序号系列文章16【C#进阶】C# 索引器17【C#进阶】C# 委托18【C#进阶】C# 事件文章目录前言1、集合类是什么2、动态数组(ArrayList)3、压缩数组(BitArray)4、哈希表(Hashtable)5、队列(Queue&…

【数据结构】链表OJ题

目录面试题 02.04 分割链表剑指 Offer II 027 回文链表160 相交链表141 环形链表142 环形链表 II138 复制带随机指针的链表面试题 02.04 分割链表 定义lesshead和greaterhead链接小于和大于等于k的值分别设置哨兵位和尾节点指针最后将两表去除哨兵位再链接 struct ListNode* p…

内存泄漏和内存溢出的区别

参考答案 内存溢出(out of memory):指程序在申请内存时,没有足够的内存空间供其使用,出现 out of memory。内存泄露(memory leak):指程序在申请内存后,无法释放已申请的内存空间,内存泄露堆积会导致内存被…

论文解读:PP-LiteSeg: A Superior Real-Time Semantic Segmentation Model

发表时间:2022 论文地址:https://arxiv.org/abs/2204.02681 项目地址:https://github.com/PaddlePaddle/PaddleSeg PP-LiteSeg,一个新的轻量级实时语义分割任务模型,在分割精度和推理速度之间实现了一种最先进的权衡…

JVM垃圾回收机制

文章目录JVM垃圾回收机制如何确定该对象是垃圾引用计数可达性分析如何释放对象常用策略JVM垃圾回收机制 以对象为单位来进行回收 如何确定该对象是垃圾 Java 中使用 可达性分析方法 Python 中时使用 引用计数方法 引用计数 使用额外的计数器,来记录某个对象有多少个…

【致敬未来的攻城狮计划】连续打卡第4天+物联网操作系统概述

开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(http://yyds.recan-li.cn)和 瑞萨MCU (https://www.renesas.cn/cn/zh) 联合发起的「 致敬未来的攻城狮计划 」的第 4 天,点击查看活动计划详…

【Vue3】用Element Plus实现列表界面

🏆今日学习目标:用Element Plus实现列表界面 😃创作者:颜颜yan_ ✨个人格言:生如芥子,心藏须弥 ⏰本期期数:第四期 🎉专栏系列:Vue3 文章目录前言效果图目录简介修改vite…

基于springboot框架实现心理健康心灵治愈交流平台【源码+论文】展示

基于springboot框架实现心灵心理健康 【源码论文】开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Ma…

CSS 7种居中效果实现原理与案例

目录 1.标准盒子居中 2.定位-绝对定位实现居中 3.表格方式实现垂直居中 4.弹性盒子:实现垂直居中 5.通过行高line-height实现垂直居中 6.变形定位实现居中 7.网格实现垂直居中 1.标准盒子居中 不需要设置display,只能实现水平居中 效果&#xff1…

代码随想录算法训练营第五十二天| ● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300.最长递增子序列 看完题后的思路 dp[i] [0,i]子数组中,以nums[i]结尾的子序列的长度 dp[i]dp[j]1 j从i-1向0遍历,在所有nums[j]<nums[i]中dp[j]最大 初始化 dp[0]1 代码 class Solution {public int lengthOfLIS(int[] nums) {if (nums.length0){return 0;}int[] dpne…

Gateway服务网关

Spring Cloud Gateway为微服务架构提供一种简单有效的统一的 API 路由管理方式。Gateway网关是所有微服务的统一入口。网关的核心功能特性&#xff1a;请求路由和负载均衡&#xff1a;一切请求都必须先经过gateway&#xff0c;但网关不处理业务&#xff0c;而是根据某种规则&am…

vue3自定义svg图标组件

可参考&#xff1a; 未来必热&#xff1a;SVG Sprites技术介绍 懒人神器&#xff1a;svg-sprite-loader实现自己的Icon组件 在Vue3项目中使用svg-sprite-loader 前置知识 在页面中&#xff0c;虽然可以通过如下的方式使用img标签&#xff0c;来引入svg图标。但是&#xff0c;…

架构的容错性设计

面对程序故障&#xff0c;我们该做些什么 “容错性设计”&#xff08;Design for Failure&#xff09;是微服务的另一个核心原则&#xff0c;也是架构反复强调的开发观念的转变。 流量治理 流量治理所要解决的问题 1.某一个服务的崩溃&#xff0c;会导致所有用到这个服务的…

Unity --- 三维数学 --- Vector类 --- 向量部分

1.注意每一个数字都表示一段有向位移 --- 有方向的距离 1.从尾到头那一段称为向量的模长 --- magnitude (direction对应的是向量的方向) 2.一个向量有大小 -- 模长(magnitude) &#xff0c; 有方向&#xff08;direction&#xff09; 1.向量的模长等于各分量的平方和的平方根…

IO流你了解多少

IO流你了解多少 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff0c;目前在某公…

国产化大趋势下学习linux的必要性

由于国际上的一些国家的制裁和威胁。最近几年国产化大趋势慢慢的兴起&#xff0c;我们国产化硬件的需求越来越大。对国产操作系统的需求也越来越多&#xff0c;那么我们一直用的Windows系统为什么不用了呢&#xff1f;众所周知的原因&#xff0c;不管是最新的Windows11还是正值…

【Python入门第三十六天】Python丨文件写入

写入已有文件 如需写入已有的文件&#xff0c;必须向 open() 函数添加参数。 “a” - 追加 - 会追加到文件的末尾“w” - 写入 - 会覆盖任何已有的内容 实例 打开文件 “demofile2.txt” 并将内容追加到文件中&#xff1a; f open("demofile2.txt", "a&qu…

主动学习相关论文、代码

文章目录Object Detection2019Learning Loss for Active LearningAn Adaptive Supervision Framework for Active Learning in Object Detection2021Active Learning for Deep Object Detection via Probabilistic ModelingMultiple Instance Active Learning for Object Detec…

STM32数据搬运工DMA

DMA的概念DMA&#xff0c;全称为&#xff1a;Direct Memory Access&#xff0c;即直接存储器访问。DMA 传输方式无需 CPU 直接控制传输&#xff0c;也没有中断处理方式那样保留现场和恢复现场的过程&#xff0c;通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路&#xff…

Linux进程概念—环境变量

Linux进程概念—环境变量1.孤儿进程2.环境变量2.1常见环境变量2.2查看环境变量方法2.3在环境变量中添加2.4和环境变量相关的命令2.5环境变量的组织方式2.6命令行参数&#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f68…