当前位置:网站首页>进程与线程
进程与线程
2022-08-02 17:57:00 【liebecl】
进程与线程概述
不管是基于windows,linux还是其他平台,或者C还是java等编程语言,都会最后得到运行的程序,都会使用到进程与线程。
程序是一种静态概念,是保存在磁盘上的一系列文件。
进程是一种动态概念,是运行中的程序,是资源分配的最小单元,一个程序包括一个或多个进程。
线程是CPU运算调度的最小单元,也可以当做轻量级的进程,一个进程可以包含一个或者多个线程。
进程
进程概述
多进程是指操作系统能同时运行多个任务(程序)。
每个进程都有独立的代码和数据空间(进程上下文)。
进程间通信
管道(pipe)及有名管道(named pipe):管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
信号(signal):信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的。
消息队列(message queue):消息队列是消息的链接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息。
共享内存(shared memory):可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。
信号量(semaphore):主要作为进程之间及同一种进程的不同线程之间得同步和互斥手段。
套接字(socket):这是一种更为一般得进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。
线程
多线程是指在同一程序中有多个顺序流在执行。
线程与进程的关系和区别
火车类比
引用知乎作者:biaodianfu
进程=火车,线程=车厢
线程在进程下行进(单纯的车厢无法运行)。
一个进程可以包含多个线程(一辆火车可以有多个车厢)。
不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)。
同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)。
进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)。
进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)。
进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)。
进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。(比如火车上的洗手间)-“互斥锁”。
进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”。
过程
进程和线程都会经历:创建,就绪,运行,阻塞和终止。
数据组成
各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。一个标准的线程由线程ID,当前指令指针PC,寄存器和堆栈组成。而进程由内存空间(代码,数据,进程空间,打开的文件)和一个或多个线程组成。
————
2022/07/29
家中
边栏推荐
- 监控易火星版即将亮相:分布式运维帮助TOP3000大企业跨越管理鸿沟
- 灵动微电子发布低功耗 MM32L0130 系列 MCU 产品
- 记一次 .NET 某工控自动化控制系统 卡死分析
- SQL Alias Aliases
- MySQL基本操作和基于MySQL基本操作的综合实例项目
- 从技术全景到场景实战,透析「窄带高清」的演进突破
- Smart Microelectronics Releases Low-Power MM32L0130 Series MCU Products
- How to deal with security risks posed by machine identities
- Open Source Summer | [Cloud Native] DevOps (5): Integrating Harbor
- golang刷leetcode 字符串(4)逆波兰式
猜你喜欢
一朵“云“如何带来产业新变革
vulnhub W34kn3ss: 1
衡量软件产品质量的 14 个指标
通信大学生走向岗位,哪些技能最实用?
How can services start smoothly under tens of millions of QPS
LeetCode 1947. 最大兼容性评分和(状态枚举DP)
玩转云端 | 天翼云对象存储ZOS高可用的关键技术揭秘
LeetCode 2349. 设计数字容器系统(SortedSet)
NeRF: The Secret of 3D Reconstruction Technology in the Popular Scientific Research Circle
Interviewer: can you talk about optimistic locking and pessimistic locks
随机推荐
研发运营一体化(DevOps)能力成熟度模型
【秒杀办法】根据二叉树的先序遍历、中序遍历、后序遍历快速创建二叉树
How to build a quasi-real-time data warehouse?
POE交换机全方位解读(下)
Interviewer: can you talk about optimistic locking and pessimistic locks
LeetCode 2333. 最小差值平方和(贪心)
面试官:可以谈谈乐观锁和悲观锁吗
DevOps之代码检查
记一次 .NET 某工控自动化控制系统 卡死分析
知识点滴 - 什么是iAP2 (上)
CUDA+Pycharm-gpu版本+Anaconda安装
golang刷leetcode 经典(5)设计哈希集合
LeetCode 2336. 无限集中的最小数字(SortedSet)
数据治理:数据集成和应用模式的演进
55.【sort函数的升序降序】
常用随机变量的数学期望和方差
MySQL基本操作和基于MySQL基本操作的综合实例项目
E-Surfing Cloud 4.0 Distributed Cloud Enables Digital Transformation of Thousands of Industries
Taking advantage of cloud-network integration, e-Surfing Cloud has paved the way for digital transformation for government and enterprises
大事务故障案例