OS学习笔记-11(清华大学慕课)进程与线程
为什么要引入进程概念?
多道程序环境下,为了使多个程序更好地并发执行,实现操作系统的并发性和共享性。
进程与程序的联系与区别
进程的组成
- PCB(进程控制块)
- 程序段
- 数据段
- 通用寄存器
- 状态寄存器
PCB的组成
- 进程描述信息
- 进程控制和管理信息
- 资源分配清单
- 处理机相关信息
程序段
- 多个进程可以共享一个程序代码段,即一个程序多次执行对应多个进程
数据段
- 装进程的原始数据,执行中产生的中间或最终结果
进程的状态
共有5个状态
- 创建态
- 就绪态
- 运行态
- 阻塞态
- 终止态
进程控制
操作系统有进程控制的程序段,会完成对进程的创建,撤销已有进程,实现进程状态转换等功能。我们称这个程序段为原语,它的特点是执行过程中不允许打断。
进程的创建
- 允许一个进程创建另一个进程
- 创建进程时会分配一个进程号,并申请一个PCB。由于PCB有限,所以可能会创建失败
- 给进程分配资源,包括:程序段所需内存空间,数据段所需内存空间,用户栈所需内存空间
- 初始化PCB,如设置进程优先级
- 如果就绪队列能接纳新进程,则放入就绪队列
进程的终止
- 正常结束
- 异常结束
- 外界干预
进程的阻塞和唤醒
- 需要阻塞时执行阻塞原语(block),保护现场,修改PCB状态为阻塞态,将PCB插入等待队列
- 需要唤醒时调用唤醒原语(wakeup),在等待队列中找到PCB,修改为就绪态,将PCB插入就绪队列
进程切换与调度
切换和调度不同,切换是指实际分配的行为,在进程间切换;调度指的是将资源分配给某进程的行为。
进程的通信
pv操作是低级通信方式,高级通信是指较高速率传输大量数据,包括下面三种方式:
- 共享存储:操作系统会提供一段共同的数据段内存空间,你们两一起用,但要符合P,V操作规定进行。此时读写操作隔离。
- 消息传递:两个进程数据段的物理地址是独立的,通过直接发消息的方式传递数据。
- 管道通信:使用连接读进程和写进程的pipe文件,像一条(半双工通信)输血管一样插在两个进程上。可以理解为共享存储的优化与发展,缓冲区(linux下4KB大小)(输血管)虽然只允许一边读一边写,但却可以同时进行。
为什么要引入线程
引入进程是为了多道程序更好地并发执行,增加并发程度;引入线程是为减少程序并发执行过程中产生的时间和空间上的开销,提高并发性能。
线程的概念
- “轻量级进程”,cpu执行流的基本单位
- 本身没有资源,但可以和其他线程共享进程资源
- 一个进程可以创建多个线程,一个线程可以创建和撤销另一个线程
- 同一个进程的线程可以并发执行
- 线程也有就绪、阻塞和运行态
- 进程是除cpu外的系统资源的单元,线程是cpu的分配单元
- 两个线程在同一个进程里切换需要很少的时空开销
线程与进程的比较
- 在现在的操作系统中,线程是cpu独立调度的最小单元,进程是拥有资源的最小单元
- 线程切换可能会引起进程切换,即:在同一个进程里的线程切换不会引起线程切换,不同进程里的线程切换必然会引起进程切换。进程只能被动切换。
- 不同进程间的线程不可见
- 进程之间通信使用:共享内存,消息传递,管道通讯,线程之间的通信使用全局变量即可
- 进程在执行,实际上是其下的某线程在执行
线程的组成
- 有唯一的标识符和一个线程控制块,线程控制块记录了线程执行的寄存器和栈等现场信息
- 多个线程可以执行一个程序,多个用户调用同一程序时会创建多个线程
- 同一进程的多个线程共享该进程资源
- 线程是cpu的调度单位,在单cpu计算机中,多个线程交替占用cpu;在多核多线程cpu中可以多个线程占用不同cpu,如我的电脑是6核12线程,即最多同时12个线程一起跑
- 与进程相似,线程的生命周期也是创建、等待、就绪、执行、终止状态
- 由于线程切换不一定会切换进程,所以可以提高系统的并发性
线程的实现
有两种线程实现方式
用户级线程
内核级线程
对应关系目前主要用第一种
OS学习笔记-11(清华大学慕课)进程与线程相关推荐
- Python学习笔记__10.4章 进程VS线程
# 这是学习廖雪峰老师python教程的学习笔记 1.概览 我们介绍了多进程和多线程,这是实现多任务最常用的两种方式.现在,我们来讨论一下这两种方式的优缺点 要实现多任务,通常我们会设计Master- ...
- 计算机操作系统学习笔记 第二章、进程与线程
文章目录 1 进程和线程 1.1 进程的概念和特征 1.1.1 进程的概念 1.1.2 进程的特征 1.2 进程的状态与转换 1.3 进程的组织 1.4 进程控制 1.5 进程通信 1.5.1 共享存 ...
- 【OS学习笔记】三十七 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----主引导扇区代码
本文是以下几篇文章对应的主引导扇区代码汇编代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 保护模式 ...
- 【OS学习笔记】三十二 保护模式九:分页机制对应的汇编代码之---内核代码
本片文章是以下两篇文章: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 对应的内核汇编代码. ;代码清单16-1;文件名 ...
- 【OS学习笔记】二十八 保护模式八:任务切换对应的汇编代码之内核代码
本汇编代码对应以下两篇文章对应的内核汇编代码: OS学习笔记]二十六 保护模式八:任务门-任务切换 [OS学习笔记]二十七 保护模式八:任务切换的方法之----jmp与call的区别以及任务的中断嵌套 ...
- 【OS学习笔记】十六 保护模式四:进入保护模式与在保护模式下访问内存的汇编代码
本文记录的是之前四篇文章所对应的汇编代码.四篇文章分别是: [OS学习笔记]十二 现代处理器的结构和特点 [OS学习笔记]十三 保护模式一:全局描述符表(GDT) [OS学习笔记]十四 保护模式二:段 ...
- 【OS学习笔记】二十五 保护模式七:任务和特权级保护对应的汇编源代码
本汇编代码是以下两篇文章讲解的内容的内核代码; [OS学习笔记]二十三 保护模式七:保护模式下任务的隔离与任务的特权级概念 [OS学习笔记]二十四 保护模式七:调用门与依从的代码段----特权级保护 ...
- 点云学习笔记11——VoxelNet算法+代码运行
点云学习笔记11--VoxelNet算法+代码运行 一.算法分析 摘要 介绍 相关工作 1.2. 贡献 2.VoxelNet 2.1.特征学习网络 2.1.1 特征学习网络 二.代码复现 2.1.环境 ...
- SurfaceFlinger学习笔记(三)之SurfaceFlinger进程
概述 本系列是基于android Q 即android10 SurfaceFlinger学习笔记(一)应用启动流程 SurfaceFlinger学习笔记(二)之Surface SurfaceFling ...
最新文章
- 热议:大脑功能磁共振数据不可靠?杜克大学教授对自己15年的工作提出质疑...
- Github之深入解析Ruby Gems缓存
- 工作55:对v-model的理解
- 凯斯西储大学计算机工程排名,[转载]凯斯西储大学排名及世界排名【研究生】...
- 用面包分析数学定律,数学老师成网红
- Android 系统性能优化(57)---MTK 平台开关机、重启时间优化
- Redis学习-string数据类型
- 华为、海康--硬件工程师面经
- 软考程序员资源免费分享
- Abbexa CDAN1 siRNA使用说明书
- 计算机脚本发生错误,我的电脑开机后显示当前页面的脚本发生错误?
- 人生杂感随笔-观佛教与道教(六道轮回)
- 【cs231n学习笔记(2017)】—— 神经网络激活函数
- threejs学习笔记:贴图实现木地板效果
- 斑马标签打印机蛋疼的打印错误处理方法
- ci发什么音标_单词发[ci]的单词有哪些,音标和中文又是什么?
- 发布、发版、上线流程
- Unity3d与iOS交互开发—接入平台SDK必备技能
- Win10的两个实用技巧系列之设置鼠标指针、红警玩不了怎么办?
- 浅谈对transforms.ToTensor()和transforms.Normalize()函数的理解
热门文章
- acm-(辗转相除法、丢番图方程)2020 China Collegiate Programming Contest Qinhuangdao Site I. Interstellar Hunter
- Windows平台视频显示问题
- 前端面试题及答案(一)
- cad工具箱详细讲解_正确使用AutoCAD插件CAD工具箱如何使用?
- 项目、习惯以及Todolist的区别
- 一文尽览阿里小程序云应用!你想知道的都在这里!
- 《软技能》读书笔记——自我营销篇
- dis的前缀单词有哪些_前缀dis-(dif-,di-) = apart;to undo;lack of,to remove;not
- 【Unity技术积累】人物移动 坦克式移动 WASD 动画
- [java8] Stream流