恶补《操作系统》2_1——王道学习笔记

2操作系统-进程

2.1_1 进程的定义、组成、组织方式、特征

组成:PCB(进程存在唯一的标志),程序段,数据段

组织方式:链接方式,指针指向不同的队列;索引方式,索引表

特征:动态性、并发性、独立性、异步性、结构性

2.1_2 进程的状态与转换

(1)状态:

  1. 运行状态:占有CPU,并在CPU上运行,单核只能一个进程(双核两个)(CPU√,其它资源√)
  2. 就绪状态:已经具备运行条件,但是没有空闲的CPU,暂时不能运行(CPUX,其它资源√)
  3. 阻塞状态:等在某个事件的发生,暂时不能运行(CPUX,其它资源X)
  4. 创建状态:创建PCB,程序段,数据段
  5. 终止状态:回收内存,程序段,数据段,撤销PCB

(2)进程状态间的转换(图,且只能这样转化)

  1. 创建态->就绪态
  2. 就绪态->运行态
  3. 运行态->就绪态
  4. 运行态->中止态(比如数组越界)
  5. 运行态->阻塞态(主动)
  6. 阻塞态->就绪态(被动)

2.1_3 进程控制

1 基本概念:

  1. 什么是进程控制?

答:实现各种进程状态转换。

  1. 为什么进程控制要一气呵成?

答:就绪和堵塞是两个队列指针,转换状态时要至少进行两个操作才能完成,如果中途中断,会导致信息不一致。

  1. 如何实现进程控制?

答:用"原语"实现一气呵成,因为原语可以用"关中断指令",就不会检查是否有中断指令了,自然是一气呵成的执行下去。

  1. 原语做的事情:
    1. 更新PCD中的信息
    2. 将PCD插入合适的队列
    3. 分配/回收资源

2 进程控制相关的原语

(1)进程的创建:

  1. 创建原语:申请空白PCB、为新进程分配所需资源、初始化PCB、将PCB插入就绪队列
  2. 引起进程创建的事件:用户登录、作业调度、提供服务、应用请求

(2)进程的终止:

  1. 撤销原语:终止进程,删除PCB
  2. 引起进程中止的事件:正常结束、异常结束、外界干预

(3)进程的阻塞:

  1. 阻塞原语:运行态->阻塞态
  2. 引起进程阻塞的事件:需要等待系统分配某种资源、需要等待相互合作的其他进程完成工作

(4)进程的唤醒:

  1. 唤醒原语:阻塞态->就绪态
  2. 引起进程唤醒的事件:等待的事件发生

(5)进程的切换

  1. 切换原语:更新PCB
  2. 引起进程切换的事件:当前进程事件片到、有更高优先级的进程到达、当前进程主动阻塞、当前进程终止

2.1_4 进程通信(IPC)

概念:两个进程之间的数据交互,如软件之间的一键分享

1、共享存储 (分配共享空间,且互斥(P、V操作)

  1. 基于数据结构的共享:固定分配(低级通信)
  2. 基于存储区的共享:划分存储区(高级通信),不管你具体怎么用这个存储区

2、消息传递

数据交换以格式化的消息为单位,格式化的消息=消息头+消息体

  1. 直接通信方式(直接点名发给谁,消息直接挂载到接受队列)
  2. 间接通信方式(间接利用信箱(中间人)发送消息)

3、管道通信(pipe)

    1. 管道/共享文件/内存缓冲区/循环队列
    2. 只能实现半双工通信
    3. 互斥地访问(没写满,不能读,反之同理)
    4. 写满/读空------堵塞

2.1_5 线程概念

  1. 什么是线程,为什么要引入线程?

答:线程是一个基本的CPU执行单元,也是程序执行流的最小单位,进一步提高了系统的并发度

  1. 引入线程机制后,有什么变化?
  1. 资源分配、调度:进程是资源分配的基本单位,线程是调度的基本单位
  2. 并发性:各线程间也能并发,提升了并发度
  3. 系统开销:可以只在进程中切换,减小了CPU切换环境的系统开销
  1. 线程有哪些重要的属性?
  1. 线程是处理机调度的基本单位
  2. 多CPU计算机中,各个线程可占用不同的CPU
  3. 每个线程都有一个线程ID、线程控制块(TCB)
  4. 线程也有就绪、阻塞、运行三种基本状态
  5. 线程几乎不拥有系统资源(系统资源都在进程中)
  6. 同一进程的不同线程间共享进程的资源
  7. 由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预
  8. 同一进程中的线程切换,不会引起进程切换
  9. 不同进程中的线程切换,会引起进程切换
  10. 切换同进程内的线程,系统开销很小
  11. 切换进程,系统开销较大

2.1_6线程的实现方式和多线程模型

1、线程的实现方式

  1. 用户级线程(ULT):由应用管理,从用户的视角看能看到的线程。

优点:管理不用涉及到CPU转换态,故线程管理系统开销小效率高

缺点:当其中一个用户级被堵塞,其他都会被堵塞,进而整个进程都会被堵塞。

  1. 内核级线程(KLT):由操作系统管理,从操作系统内核视角看能看到的线程。内核级线程才是处理机分配的单位。

2、多线程模型

  1. 多对一模型

n个ULT映射到1个KLT

优点:开销小,效率高

缺点:容易阻塞,并发度不高

  1. 一对一模型

n个ULT映射到n个KLT

优点:并发能力很强

缺点:占用成本高,开销大

  1. 多对多模型

n个ULT映射到m个KLT上(n>=m)

中和以上两种优缺点

相关推荐
二哈赛车手17 分钟前
新人笔记---Spring AI的Advisor以及其底层机制讲解(涉及源码),包含一些遇见的Spring AI的Advisor缺陷问题的解决方案
java·人工智能·spring boot·笔记·spring
red_redemption1 小时前
自由学习记录(181)
学习
wuxinyan1231 小时前
大模型学习之路007:RAG 零基础入门教程(第四篇):生成侧核心技术与大模型集成
人工智能·学习·rag
阿豪只会阿巴2 小时前
【没事学点啥】TurboBlog轻量级个人博客项目——Turbo Blog 项目学习与上线指南
开发语言·python·学习·状态模式
Slow菜鸟2 小时前
Docker 学习篇(三)| Docker安装指南(Linux版)
linux·学习·docker
Tutankaaa2 小时前
知识竞赛软件SaaS版 vs 本地部署
人工智能·经验分享·笔记·学习
小仙女的小稀罕2 小时前
培训要点写不完不会整理?规范培训转待办可这样操作
大数据·人工智能·学习·自然语言处理·语音识别
许长安2 小时前
RPC 异步调用基本使用方法:基于官方helloworld-async 示例
c++·经验分享·笔记·rpc
Wallace Zhang3 小时前
SimpleFOC源码学习10(v2.3.2) - 电流传感器CurrentSense.cpp与CurrentSense.h
驱动开发·stm32·学习·电流环·simplefoc·foc电机控制
sheeta19984 小时前
苍穹外卖Day12笔记
笔记