详解开发语言程序中的进程与线程的概念
进程
概念
-
进程和程序的区别
- 程序是静态的指令集合
- 进程是动态的程序的一次执行过程
-
进程是进程实体的运行过程,是系统资源分配和调度的基本单位
-
注意:进程之间可以是独立的,也可以是交互性的
进程实体的组成
-
PCB(面向操作系统)
- 进程标识符PID
- 用户标识符UID
- 进程优先级
- 堆栈指针
- 是进程的唯一标识,进程创建时创建,进程结束时结束
-
程序段(面向进程自己)
-
数据段(面向进程自己)
进程的状态
-
状态
- 就绪态 :无CPU,有其他所有资源
- 运行态:有CPU,有其他所有资源
- 阻塞态:无CPU,资源不全
- 创建态
- 终止态
-
状态的转换
进程通信
-
顾名思义就是进程之间的信息交换
-
共享存储
- 特点:两个进程对共享空间互斥访问,使用同步互斥工具
-
管道通信
- 管道:连接读写进程的共享文件
-
消息传递
- 消息进程提供发送/接收消息两个原语进行数据交换
线程
线程是一个基本的CPU执行单位,也是程序执行流的最小单位
引入线程目的
- 减少进程并发带来的时空开销(线程之间切换的开销很小)
- 引入之后不仅进程之间可以并发,进程内各线程也可以并发
特性和优点
-
并发系统开销降低,并发性提升
- 注意:不同进程之间的线程切换是会导致进程切换的
-
引入线程之后,线程是CPU调度的基本单位,进程仍然是资源分配的基本单位
-
多CPU的系统上,各个线程也可以分派到不同的CPU上并行执行
-
线程几乎不拥有资源(极少)
- 系统资源在进程那里
-
由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预
实现方式
-
用户级线程
- 所有的线程管理工作都是用户基于线程库在管理,操作系统看不见多线程
-
内核级线程
- 所有的线程管理工作都是操作系统负责,操作系统能看到多线程
-
多线程模型
-
一对一
- 一个用户级线程连接一个内核级线程
- 操作系统只能看得内核级线程,所以只有内核级线程才是处理机分配的基本单位
-
多对一
-
多个用户级线程连接一个内核级线程
- 优点:开销小
- 缺点:并发度低:一个线程阻塞,所有进程阻塞
-
-
多对多
-
- 读个用户连接到多个内核
-
-
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanehhi
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24