进程和线程的区别和联系

前言

(18条消息) 进程调度的基本过程_Y君的进化史的博客-CSDN博客一文中,我们初步了解了关于进程的知识,本文重点讲解进程和线程的区别和联系。

一个线程就是一个"执行流"。


目录

前言

一、组织方式

二、包含关系

三、区别(面试常考)

结语


一、组织方式

在前文中,我们学习了PCB这个进程控制块,操作系统使用双向链表来组织PCB。

PCB中包含一些属性,使得PCB在底层是用一个结构体实现的。

在Windows系统上,描述进程和线程是用不同的结构体,也就是进程是使用PCB,但是线程不是。

在Linux系统上,进程和线程都是使用PCB这个结构体。

二、包含关系

一个进程在创建时,会自动生成一个线程,也就是说,每个进程至少包含一个线程,即主线程

同时,一个PCB对应一个线程,也就是多个PCB对应一个进程。

在同一个进程的多个PCB里,内存指针(虚拟地址空间(内存资源))、文件描述符表(硬盘资源)都是相同的。

不同线程,也就是不同PCB中,上下文、状态、优先级、记账信息等都是不同的。

三、区别(面试常考)

  1. 进程包含线程。每个进程至少有一个线程存在,即主线程。
  2. 都是实现并发编程的方式,但线程比进程更轻量。创建线程比创建进程更快,销毁线程比销毁进程更快,调度线程比调度进程更快。
  3. 操作系统创建进程,要给进程分配资源,进程是系统分配资源的基本单位 。操作系统创建线程,是要在CPU上调度执行,线程是系统调度执行的基本单位
  4. 进程具有独立性,每个进程都有自己的虚拟空间,彼此之间不会相互影响,进程的独立性导致系统的稳定性上升。同一个进程的线程之间共用一份地址空间,一个线程出现异常,会导致整个进程异常结束,多个线程之间容易相互影响

结语

这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位🔎点赞👍评论收藏⭐,谢谢!!!

相关推荐
IT笔记4 分钟前
【Rust】Rust Match 模式匹配详解
java·开发语言·rust
我才是银古42 分钟前
构建 Java GIS 工具库:从碎片化 API 到统一抽象的设计实践
java·gis·geotools·gdal·esri
TPBoreas1 小时前
配置信息防泄露方案:.env 环境隔离详解(dotenv-java)
java·开发语言
敲代码的嘎仔1 小时前
实习日志day6--实习日志day6--title命名规范化&businessType纠正&补充缺失的@Log注解&报警与通信模块补充&产出阶段总结文档
java·开发语言·人工智能·git·python·实习·大二
编程(变成)小辣鸡2 小时前
Spring事务失效场景
java·后端·spring
极客先躯3 小时前
高级java每日一道面试题-2026年03月30日-实战篇[Docker]-如何监控容器的网络流量?
java·运维·docker·容器·prometheus·高级面试
tachibana23 小时前
hot100 翻转二叉树(226)
java·数据结构·算法·leetcode
brave_zhao3 小时前
nginx的进程架构
java·学习·nginx
兰令水3 小时前
leecodecode【面试150】【2026.7.9打卡-java版本】
java·数据结构·leetcode·面试·职场和发展
禾高网络3 小时前
互联网医院|AI 互联网医院成品开发系统
java·大数据·人工智能·小程序