恶补《操作系统》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、共享存储 (分配共享空间,且互斥(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.mzph.cn/diannao/2836.shtml

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

相关文章

Uptime Kuma 使用指南:一款简单易用的站点监控工具

我平时的工作会涉及到监控,而站点是一个很重要的监控项。项目上线后,我们通常会将站点监控配置到云平台上,以检测各站点的连通性。但随着项目不断增多,云平台上的配额就有点捉急了。针对这个情况,我们可以试试这个开源…

设计模式——状态模式19

状态模式是一种行为设计模式, 允许一个对象在其内部状态改变时改变它的行为,对象看起来好像修改了它的类。状态模式的核心是状态与行为绑定,不同的状态对应不同的行为。 设计模式,一定要敲代码理解 状态行为抽象 //在某种状态下&…

【网安小白成长之路】9.sql注入操作

🐮博主syst1m 带你 acquire knowledge! ✨博客首页——syst1m的博客💘 🔞 《网安小白成长之路(我要变成大佬😎!!)》真实小白学习历程,手把手带你一起从入门到入狱🚭 &…

SpringBoot整合七牛云实现图片的上传管理

唠嗑部分 各位小伙伴大家好,我是全栈小白,今天我们来分享一下SpringBoot如何整合七牛云存储实现图片的上传与存储 首先我们来说说图片存储,在项目中图片几乎是必不可少的,那么大家会选择怎样存储呢,当然有几种方案 …

Science Robotics 美国斯坦福大学研制了外行星洞穴探测机器人

月球和火星上的悬崖、洞穴和熔岩管已被确定为具有地质和天体生物学研究理想地点。由于其隔绝特性,这些洞穴提供了相对稳定的条件,可以促进矿物质沉淀和微生物生长。在火星上,这些古老的地下环境与火星表面可能适合居住时几乎没有变化&#xf…

JSP合同信息管理系统

毕业设计(论文) 题 目: JSP合同信息管理系统 学 校: 专 业: 年 级: 姓 名…

Day16-Java进阶-线程通信线程生命周期线程池单例设计模式

1. 线程通信 1.1 线程通信介绍 1.2 两条线程通信 package com.itheima.correspondence;public class CorrespondenceDemo1 {/*两条线程通信*/public static void main(String[] args) {Printer1 p new Printer1();new Thread(new Runnable() {Overridepublic void run() {syn…

【亲测有用】idea2024.1中前进后退按钮图标添加

idea更新后,前进后退按钮消失了,现在说下怎么设置 具体操作如下: 1、选择 File / Settings(windows版),或者Preferences(mac版) 2、打开 Appearance & Behavior 并选择 Menus and Toolbars 3、选择右侧的 “Main toolbar lef…

Python中pyside2出现的pyside2 qt platform plugin could be in错误及其解决方法

系统平台:Win10 64bit python版本: python 3.8 使用pip install pyside2安装 pyside2 这是找不到QT平台的插件,这是环境变量QT_QPA_PLATFORM_PLUGIN_PATH出现错误 具体解决方法: 我们可以在每一段程序开始之前设定环境变量&…

虚幻引擎5 Gameplay框架(一)

GamePlay概论与打包和批处理脚本 GamePlay简介与创建项目 GamePlay框架:用于设计游戏规则,组织和管理游戏核心逻辑、规则以及交互的一套结构化体系。 Default Pawn Class:定义角色行为逻辑,接收玩家控制器的输入,一般…

【R语言】组合图:散点图+箱线图+平滑曲线图+柱状图

用算数运算符轻松组合不同的ggplot图,如图: 具体代码如下: install.packages("devtools")#安装devtools包 devtools::install_github("thomasp85/patchwork")#安装patchwork包 library(ggplot2) library(patchwork) #p1是…

[ACTF2020 新生赛]Upload--BUUCTF

题: 第一步:上传php文件,他提示,只能上传jpg、png、gif 第二步:使用bp抓上传jpg文件的包,在修改文件后缀名为phtml 修改前 修改后 第三步:进行放过,在访问浏览器 得到:U…

第07-4章 网络层详解

7.1 网络层协议 IP协议ARP(地址解析协议)RARP(反向地址解析协议)ICMP(互联网控制消息协议) 7.2 IP协议详解 7.2.1 IP协议功能 寻址和路由传递服务(不可靠,尽最大努力&#xff0c…

线性代数基础1向量

1、向量是什么 1.1、向量的定义 在数学中,向量(也称为欧几里得向量、几何向量、矢量),指具有大小和方向的量。它可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度:代表向量的…

Rust腐蚀服务器定制地图开服

Rust腐蚀服务器定制地图开服 大家好我是艾西一个做服务器租用的网络架构师。Rust腐蚀这个游戏有很多的插件mod作者,在地图制作这一块也是一样,有些好玩的地图可能大家在map网站找到了但是不知道怎么操作设置那么今天艾西给大家说下特定定制地图怎么弄。…

嬴图| ISO/IEC-GQL国际图语言标准发布,图技术开启新纪元

GQL作为继SQL之后的第二个数据库查询语言国际标准,近日正式发布。这标志着图技术开启新纪元——图时代即将到来! 同时,这也预示着将有越来越多的组织采用“图”来解决各种复杂问题,更意味着SQL系统与负载将逐渐转向GQL&#xff0…

2024最新SSL证书在线申请系统源码 | 支持API接口 支持在线付费 二开优化版

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 2024最新SSL证书在线申请系统源码 | 支持API接口 支持在线付费 二开优化版 最新SSL证书在线申请系统源码 | 支持API接口 SSL证书保证网络安全的基本保障。向您介绍我们的在线生成SSL…

Ubuntu20.04安装 mysql8.0.32

检查删除原有的mysql(可以不做,自己记录) 1、 下载 MySQL :: Download MySQL Community Server (Archived Versions) wget https://cdn.mysql.com/archives/mysql-8.0/mysql-server_8.0.32-1ubuntu20.04_amd64.deb-bundle.tar 2、解压到指定目录下 tar xvf mysq…

GDPU Java 天码行空9

(一)实验目的 1、掌握JAVA中异常类型及其特点; 2、重点掌握异常的处理方法; 3、能创建自定义异常处理方法; 4、掌握文件操作方法。 (二)实验内容和步骤 1、try catch finally 如果catch里面有…

vue封装请求、合并js、合并多个js

vue封装请求、合并js、合并多个js 作为一个后端开发,写前端时发现,每次导入api接口都会有一堆代码,像下面这样: import {footprintList, footprintDelete} from /api/userApi.js import {addressList} from /api/userApi.js impor…