为什么要引入进程概念?

多道程序环境下,为了使多个程序更好地并发执行,实现操作系统的并发性和共享性。

进程与程序的联系与区别

进程的组成

  • PCB(进程控制块)
  • 程序段
  • 数据段
  • 通用寄存器
  • 状态寄存器

PCB的组成

  • 进程描述信息
  • 进程控制和管理信息
  • 资源分配清单
  • 处理机相关信息

程序段

  • 多个进程可以共享一个程序代码段,即一个程序多次执行对应多个进程

数据段

  • 装进程的原始数据,执行中产生的中间或最终结果

进程的状态

共有5个状态

  • 创建态
  • 就绪态
  • 运行态
  • 阻塞态
  • 终止态

进程控制
操作系统有进程控制的程序段,会完成对进程的创建,撤销已有进程,实现进程状态转换等功能。我们称这个程序段为原语,它的特点是执行过程中不允许打断。

进程的创建

  • 允许一个进程创建另一个进程
  • 创建进程时会分配一个进程号,并申请一个PCB。由于PCB有限,所以可能会创建失败
  • 给进程分配资源,包括:程序段所需内存空间,数据段所需内存空间,用户栈所需内存空间
  • 初始化PCB,如设置进程优先级
  • 如果就绪队列能接纳新进程,则放入就绪队列

进程的终止

  • 正常结束
  • 异常结束
  • 外界干预

进程的阻塞和唤醒

  • 需要阻塞时执行阻塞原语(block),保护现场,修改PCB状态为阻塞态,将PCB插入等待队列
  • 需要唤醒时调用唤醒原语(wakeup),在等待队列中找到PCB,修改为就绪态,将PCB插入就绪队列

进程切换与调度
切换和调度不同,切换是指实际分配的行为,在进程间切换;调度指的是将资源分配给某进程的行为。

进程的通信
pv操作是低级通信方式,高级通信是指较高速率传输大量数据,包括下面三种方式:

  1. 共享存储:操作系统会提供一段共同的数据段内存空间,你们两一起用,但要符合P,V操作规定进行。此时读写操作隔离。
  2. 消息传递:两个进程数据段的物理地址是独立的,通过直接发消息的方式传递数据。
  3. 管道通信:使用连接读进程和写进程的pipe文件,像一条(半双工通信)输血管一样插在两个进程上。可以理解为共享存储的优化与发展,缓冲区(linux下4KB大小)(输血管)虽然只允许一边读一边写,但却可以同时进行。

为什么要引入线程

引入进程是为了多道程序更好地并发执行,增加并发程度;引入线程是为减少程序并发执行过程中产生的时间和空间上的开销,提高并发性能。

线程的概念

  • “轻量级进程”,cpu执行流的基本单位
  • 本身没有资源,但可以和其他线程共享进程资源
  • 一个进程可以创建多个线程,一个线程可以创建和撤销另一个线程
  • 同一个进程的线程可以并发执行
  • 线程也有就绪、阻塞和运行态
  • 进程是除cpu外的系统资源的单元,线程是cpu的分配单元
  • 两个线程在同一个进程里切换需要很少的时空开销

线程与进程的比较

  • 在现在的操作系统中,线程是cpu独立调度的最小单元,进程是拥有资源的最小单元
  • 线程切换可能会引起进程切换,即:在同一个进程里的线程切换不会引起线程切换,不同进程里的线程切换必然会引起进程切换。进程只能被动切换。
  • 不同进程间的线程不可见
  • 进程之间通信使用:共享内存,消息传递,管道通讯,线程之间的通信使用全局变量即可
  • 进程在执行,实际上是其下的某线程在执行

线程的组成

  • 有唯一的标识符和一个线程控制块,线程控制块记录了线程执行的寄存器和栈等现场信息
  • 多个线程可以执行一个程序,多个用户调用同一程序时会创建多个线程
  • 同一进程的多个线程共享该进程资源
  • 线程是cpu的调度单位,在单cpu计算机中,多个线程交替占用cpu;在多核多线程cpu中可以多个线程占用不同cpu,如我的电脑是6核12线程,即最多同时12个线程一起跑
  • 与进程相似,线程的生命周期也是创建、等待、就绪、执行、终止状态
  • 由于线程切换不一定会切换进程,所以可以提高系统的并发性

线程的实现

有两种线程实现方式

  • 用户级线程

  • 内核级线程


    对应关系

  • 目前主要用第一种

OS学习笔记-11(清华大学慕课)进程与线程相关推荐

  1. Python学习笔记__10.4章 进程VS线程

    # 这是学习廖雪峰老师python教程的学习笔记 1.概览 我们介绍了多进程和多线程,这是实现多任务最常用的两种方式.现在,我们来讨论一下这两种方式的优缺点 要实现多任务,通常我们会设计Master- ...

  2. 计算机操作系统学习笔记 第二章、进程与线程

    文章目录 1 进程和线程 1.1 进程的概念和特征 1.1.1 进程的概念 1.1.2 进程的特征 1.2 进程的状态与转换 1.3 进程的组织 1.4 进程控制 1.5 进程通信 1.5.1 共享存 ...

  3. 【OS学习笔记】三十七 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----主引导扇区代码

    本文是以下几篇文章对应的主引导扇区代码汇编代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 保护模式 ...

  4. 【OS学习笔记】三十二 保护模式九:分页机制对应的汇编代码之---内核代码

    本片文章是以下两篇文章: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 对应的内核汇编代码. ;代码清单16-1;文件名 ...

  5. 【OS学习笔记】二十八 保护模式八:任务切换对应的汇编代码之内核代码

    本汇编代码对应以下两篇文章对应的内核汇编代码: OS学习笔记]二十六 保护模式八:任务门-任务切换 [OS学习笔记]二十七 保护模式八:任务切换的方法之----jmp与call的区别以及任务的中断嵌套 ...

  6. 【OS学习笔记】十六 保护模式四:进入保护模式与在保护模式下访问内存的汇编代码

    本文记录的是之前四篇文章所对应的汇编代码.四篇文章分别是: [OS学习笔记]十二 现代处理器的结构和特点 [OS学习笔记]十三 保护模式一:全局描述符表(GDT) [OS学习笔记]十四 保护模式二:段 ...

  7. 【OS学习笔记】二十五 保护模式七:任务和特权级保护对应的汇编源代码

    本汇编代码是以下两篇文章讲解的内容的内核代码; [OS学习笔记]二十三 保护模式七:保护模式下任务的隔离与任务的特权级概念 [OS学习笔记]二十四 保护模式七:调用门与依从的代码段----特权级保护 ...

  8. 点云学习笔记11——VoxelNet算法+代码运行

    点云学习笔记11--VoxelNet算法+代码运行 一.算法分析 摘要 介绍 相关工作 1.2. 贡献 2.VoxelNet 2.1.特征学习网络 2.1.1 特征学习网络 二.代码复现 2.1.环境 ...

  9. SurfaceFlinger学习笔记(三)之SurfaceFlinger进程

    概述 本系列是基于android Q 即android10 SurfaceFlinger学习笔记(一)应用启动流程 SurfaceFlinger学习笔记(二)之Surface SurfaceFling ...

最新文章

  1. 热议:大脑功能磁共振数据不可靠?杜克大学教授对自己15年的工作提出质疑...
  2. Github之深入解析Ruby Gems缓存
  3. 工作55:对v-model的理解
  4. 凯斯西储大学计算机工程排名,[转载]凯斯西储大学排名及世界排名【研究生】...
  5. 用面包分析数学定律,数学老师成网红
  6. Android 系统性能优化(57)---MTK 平台开关机、重启时间优化
  7. Redis学习-string数据类型
  8. 华为、海康--硬件工程师面经
  9. 软考程序员资源免费分享
  10. Abbexa CDAN1 siRNA使用说明书
  11. 计算机脚本发生错误,我的电脑开机后显示当前页面的脚本发生错误?
  12. 人生杂感随笔-观佛教与道教(六道轮回)
  13. 【cs231n学习笔记(2017)】—— 神经网络激活函数
  14. threejs学习笔记:贴图实现木地板效果
  15. 斑马标签打印机蛋疼的打印错误处理方法
  16. ci发什么音标_单词发[ci]的单词有哪些,音标和中文又是什么?
  17. 发布、发版、上线流程
  18. Unity3d与iOS交互开发—接入平台SDK必备技能
  19. Win10的两个实用技巧系列之设置鼠标指针、红警玩不了怎么办?
  20. 浅谈对transforms.ToTensor()和transforms.Normalize()函数的理解

热门文章

  1. acm-(辗转相除法、丢番图方程)2020 China Collegiate Programming Contest Qinhuangdao Site I. Interstellar Hunter
  2. Windows平台视频显示问题
  3. 前端面试题及答案(一)
  4. cad工具箱详细讲解_正确使用AutoCAD插件CAD工具箱如何使用?
  5. 项目、习惯以及Todolist的区别
  6. 一文尽览阿里小程序云应用!你想知道的都在这里!
  7. 《软技能》读书笔记——自我营销篇
  8. dis的前缀单词有哪些_前缀dis-(dif-,di-) = apart;to undo;lack of,to remove;not
  9. 【Unity技术积累】人物移动 坦克式移动 WASD 动画
  10. [java8] Stream流