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

news2024/10/6 1:38:30

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.coloradmin.cn/o/1619319.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习】yolo-World,数据标注,zeroshot,目标检测

仓库:https://github.com/AILab-CVC/YOLO-World 下载权重: 仓库下载和环境设置 下载仓库:使用以下命令从 GitHub 上克隆仓库: git clone --recursive https://github.com/AILab-CVC/YOLO-World.git创建并激活环境&#xff1a…

VMmark 4 - 虚拟化平台基准测试

VMmark 4 - 虚拟化平台基准测试 VMmark is a free tool used to measure the performance and scalability of virtualization platforms. 请访问原文链接:VMmark 4 - 虚拟化平台基准测试,查看最新版。原创作品,转载请保留出处。 作者主页…

GPT与GAN结合生成图像——VQGAN原理解析

1、前言 这篇文章,我们讲VQ_GAN,这是一个将特征向量离散化的模型,其效果相当不错,搭配Transformer(GPT)或者CLIP使用,达到的效果在当时可谓是令人拍案叫绝! 原论文:Tam…

栈和队列-介绍与实现(超级!!!详解-C语言)

目录 栈 栈的介绍 栈的概念 栈的结构 栈的实现 初始化栈 StackInit 销毁栈 StackDestroy 入栈 StackPush 出栈 StackPop 获取栈顶元素 StackTop 检查栈是否为空 StackEmpty 获取栈中有效元素个数 StackSize 队列 队列的介绍 队列的概念 队列的结构 队列的应用 队列的实现 …

LabVIEW与Modbus协议的多点温度监控系统

LabVIEW与Modbus协议的多点温度监控系统 随着工业自动化和智能化水平的不断提升,对于现场监控技术的需求日益增长。开发了一种基于LabVIEW与Modbus协议的多点温度监控系统,实现高效、准确的温度数据采集、处理和显示,以及数据存储功能&#…

【IR 论文】Google 对通过 prompt LLM 做 Query Expansion 的工作

论文:Query Expansion by Prompting Large Language Models ⭐⭐⭐ Google Research, arxiv:2305.03653 论文速读 之前我在论文笔记 Query2doc 中介绍了信息检索(IR)以及 Query Expansion 的相关背景知识。 本篇文章是 Google 发表的关于对…

Maven:配置与使用指南1

https://mvnrepository.com Maven 1.maven简介 不同模块的jar包以及同时设计的功能的微小变化版本; 真实的开发环境:我们将我们的源代码在服务器上重新编译重新打包,工程升级维护过程繁琐 1.Maven是一个项目管理工具,将项目开…

SpringBoot xxl-job 任务调度

首先官网下载xxl-job的源代码,然后切换到jdk8,等Maven下载依赖 执行mysql的脚本,修改连接配置,启动admin站点 默认地址 http://localhost:8080/xxl-job-admin/ 先新增一个任务执行器,指向未来任务代码的站点 然后在…

数学建模完整版

模型与适用题型 微分方程传染病预测模型 神经网络 层次分析法 粒子群算法 matlab 优劣解距离法

计算机组成原理—数据的表示和运算

二进制:2进1 八进制里的1位对应二进制里的三位 重点:转换为10进制

git常见命令(成长版)

ps:所谓成长版就是后续可能还会添加命令: 1.删除本地分支: git branch -d 分支名 2.拉取代码后默认master分支,切换到线上其他分支: (1)查看线上所有分支: git branch -a &#…

比特币之路:技术突破、创新思维与领军人物

比特币的兴起是一段充满技术突破、创新思维和领军人物的传奇之路。在这篇文章中,我们将探讨比特币发展的历程,以及那些在这一过程中发挥重要作用的关键人物。 技术突破与前奏 比特币的诞生并非凭空而来,而是建立在先前的技术储备之上。在密码…

贪心算法-活动安排问题和背包问题

实验6贪心算法-活动安排问题和背包问题 实验目的: 理解贪心算法的基本思想运用贪心算法解决实际问题 实验内容: 采用贪心方法编程实现以下问题的算法 1.如何安排下列活动使得使用的活动场所最少,并给出具体的安排方法。 活动 a b c …

全新Storm Core API管理系统源码 免授权版

全新Storm Core API管理系统源码 免授权版 本系统为API系统,实现了api集成等基础功能,以后可能会更新key调用api,或者实现付费功能,敬请期待,前端模板均无加密,用户可自行二开,具体请看图 测试环境:PHP7.2+MySQL5.6 访问:http://你的域名/install 进行安装 伪静态…

AIGC实战——基于Transformer实现音乐生成

AIGC实战——基于Transformer实现音乐生成 0. 前言1. 音乐生成的挑战2. MuseNet3. 音乐数据3.1 巴赫大提琴组曲数据集3.2 解析 MIDI 文件3.3 分词3.4 创建训练数据集 4. MuseNet 模型4.1 正弦位置编码4.2 多输入/输出 5. 音乐生成 Transformer 的分析6. 多声部音乐分词6.1 网格…

含匹配扰动的多智能体领航跟随一致性Matlab仿真

文章目录 [TOC](文章目录) 前言一、问题描述二、基于LQR的观测器和控制器设计1.观测器设计2.控制器设计 三、数值仿真四、参考文献总结 前言 ​本文探讨了带有匹配扰动的多智能体领航跟随一致性控制方法,并提供了相应的Matlab仿真代码。 具体的设计步骤如下&#…

Algorius Net Viewer 2024.2.1 (Windows) - 网络可视化、管理、监控和清点

Algorius Net Viewer 2024.2.1 (Windows) - 网络可视化、管理、监控和清点 Comprehensive software product for visualizing, administering, monitoring, and inventorying computers network of any level 请访问原文链接:Algorius Net Viewer 2024.2.1 (Windo…

【动态规划】C++ 子序列问题(递增子序列、数对链、定差子序列、斐波那契子序列...)

文章目录 1. 前言2. 例题最长递增子序列 3. 算法题3.1_摆动序列3.2_最长递增子序列的个数3.3_最长数对链[3.4_ 最长定差子序列](https://leetcode.cn/problems/longest-arithmetic-subsequence-of-given-difference/description/)3.5_最长的斐波那契子序列的长度3.6_最长等差数…

剪画APP动漫AI工具|短剧轻松变动漫,开辟出海新方向

近期,剪画全新升级“AI动漫”功能,让创作者们打开全新的视频创作方式。 这个功能把我们的短剧作品快速转化为动漫风格,非常精准和细腻 在剪画将AI动漫功能升级后,越来越多的使用者将短剧变身成动漫效果发布到平台后,…

Git 保姆级教程(一):Git 基础

一、获取 Git 仓库 通常有两种获取 Git 项目仓库的方式: 1. 将尚未进行版本控制的本地目录转换为 Git 仓库; 2. 从其它服务器克隆 一个已存在的 Git 仓库。 两种方式都会在你的本地机器上得到一个工作就绪的 Git 仓库。 1.1 git init(本地…