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

embedded/2024/9/24 12:18:06/

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、共享存储 (分配共享空间,且互斥(PV操作)

  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. 多对一模型

nULT映射到1KLT

优点:开销小,效率高

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

  1. 一对一模型

nULT映射到nKLT

优点:并发能力很强

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

  1. 多对多模型

nULT映射到mKLT上(n>=m

中和以上两种优缺点


http://www.ppmy.cn/embedded/12983.html

相关文章

HTML+JS俄罗斯方块小游戏

俄罗斯方块 效果图部分代码领取源码下期内容预报 效果图 部分代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>俄罗斯方块</title><style type"text/css">.MainFrame{border: 1px solid burl…

java+idea+mysql采用医疗AI自然语言处理技术的3D智能导诊导系统源码

javaideamysql采用医疗AI自然语言处理技术的3D智能导诊导系统源码 随着人工智能技术的快速发展&#xff0c;语音识别与自然语言理解技术的成熟应用&#xff0c;基于人工智能的智能导诊导医逐渐出现在患者的生活视角中&#xff0c;智能导诊系统应用到医院就医场景中&#xff0c…

聊聊路径规划算法(二)——图搜索法

图搜索法通过利用已有的环境地图和版图中的障碍物等数据信息建立&#xff0c;由起点至结束点的可行路线。一般分为深度最优和广度最优二种走向。深度优先算法优先拓展搜索深度较大的节点&#xff0c;因此能够更迅速的获得下一个可行路径&#xff0c;不过深度优先算法获取的第一…

第九章 更复杂的光照

Unity的渲染路径 渲染路径决定了光照是如何应用到Unity Shader中的,需要为每个Pass指定它的渲染路径。 完成上面的设置后,我们可以在每个Pass中使用标签来指定该Pass使用的渲染路径。 指定渲染路径是我们和Unity的底层渲染引擎的一次重要的沟通。 前向渲染路径 前向渲染路…

抽象工厂模式设计实验

【实验内容】 楚锋软件公司欲开发一套界面皮肤库&#xff0c;可以对 Java 桌面软件进行界面美化。为了保护版权&#xff0c;该皮肤库源代码不打算公开&#xff0c;而只向用户提供已打包为 jar 文件的 class 字节码文件。用户在使用时可以通过菜单来选择皮肤&#xff0c;不同的…

2024-04-23 linux 查看内存占用情况的命令free -h和cat /proc/meminfo

一、要查看 Linux 系统中的内存占用大小&#xff0c;可以使用 free 命令或者 top 命令。下面是这两个命令的简要说明&#xff1a; 使用 free 命令&#xff1a; free -h这将显示系统当前的内存使用情况&#xff0c;包括总内存、已用内存、空闲内存以及缓冲区和缓存的使用情况。…

Ubuntu+Systemd服务+实现开机自启

1.创建一个新的 systemd 服务文件 现在随便一个地方创建txt文档 如果想要启动sh脚本&#xff0c;就把下面的代码输入到txt文档中 [Unit] DescriptionRun Python script on specific executable run Afternetwork.target[Service] Typesimple ExecStart/home/tech/run_on_exe…

解码数据世界:统计学入门与应用指南

引言 统计学可以被定义为研究数据的科学&#xff0c;它涉及到数据的收集、分析、解释和呈现。其目标是从数据中提取有意义的信息&#xff0c;并使用这些信息来做出推断与决策。 统计学主要分别以下几个主要领域&#xff1a; 描述性统计&#xff1a;使用图表、图形和其他工具…