【操作系统】24王道考研笔记——第二章 进程与线程

news2024/9/9 0:32:32

第二章 进程与线程

一、进程与线程

1.进程的概念

程序:是静态的,就是个存放在磁盘里的可执行文件,如:QQ.exe。

进程:是动态的,是程序的一次执行过程,如:可同时启动多次QQ程序

引入进程的概念,以便更好地描述和控制程序的并发进行,实现操作系统的并发性和共享性(最基本的两个特征)

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

PCB是进程存在的唯一标志:(进程控制块)

操作系统需要对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中。

image.png

进程的组成:

image.png

PCB是给操作系统用的,程序段、数据段是给进程自己用的

进程的特征:

image.png

2.进程的状态转换

进程的状态:

image.png

一个进程从运行态变成阻塞态是主动的行为,而从阻塞态变成就绪态势别动的行为,需要其他相关进程的协助。

进程的组织方式:

image.png

总结:

image.png

3.进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。

简化理解:反正进程控制就是要实现进程状态转换

image.png

在操作系统,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,是一个不可分割的基本单位。(原子性)

image.png

进程的创建:

image.png

进程的终止:

image.png

进程的阻塞和唤醒:

image.png

进程的切换:

image.png

总结:

image.png

如何实现:

image.png

4.进程通信

进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。各个进程可使用操作系统内核提供的同步互斥工具(如P、V操作)

共享存储:

image.png

消息传递:

image.png

  • 直接通信方式:image.png
  • 间接通信方式:(信箱)image.png

管道通信:

image.png

  • 写进程往管道写数据,即便管道没被写满,只要管道没空,读进程就可以从管道读数据
  • 读进程从管道读数据,即便管道没被读空,只要管道没满,写进程就可以往管道写数据

总结:

image.png

5.线程和多线程模型

引入线程的原因:

image.png

引入线程后的变化:(与进程比较)

image.png

线程的属性:

image.png

线程的实现方式:(以下三种)

用户级线程:image.png

内核级线程:image.png

组合方式:上述两种方式的结合

多线程模型:

  • 多对一image.png
  • 一对一image.png
  • 多对多image.png

总结:

image.png

线程的状态转换:(大致与进程相似)

image.png

二、处理机调度

1.调度的概念、层次

调度:当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。

调度的三个层次:

高级调度(作业调度)。按一定的原则从外存的作业后备队列中挑选一个作业调入内存,并创建进程。每个作业只调入一次,调出一次。作业调入时会建立PCB,调出时才撤销PCB。

低级调度(进程调度/处理机调度)—— 按照某种策略从就绪队列中选取一个进程,将处理机分配给它。进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。

中级调度(内存调度)——按照某种策略决定将哪个处于挂起状态的进程重新调入内存。一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高。

联系、对比:

image.png

总结:

image.png

2.调度的目标

即调度算法的评价指标

CPU利用率:

image.png

系统吞吐量:

image.png

周转时间:

image.png

image.png

等待时间:

image.png

响应时间:响应时间,指从用户提交请求到首次产生响应所用的时间。

3.进程调度的时机

即切换与过程调度方式

临界区:

image.png

进程调度时机:

image.png

进程调度方式:

image.png

进程切换以及过程

image.png

4.调度器、闲逛进程

调度器:

image.png

调度程序的处理对象:

image.png

闲逛进程:

image.png

5. 调度算法

先来先服务:

image.png

短作业优先:

image.png

image.png

高响应比优先:

image.png

三者对比:

image.png

时间片轮转:

image.png

优先级调度:

image.png

多级反馈队列调度:

image.png

三者对比:

image.png

多级队列调度算法:

image.png

三、同步与互斥

1. 进程同步与互斥

image.png

image.png

2.进程互斥的实现

软件实现:

image.png

硬件实现:

中断屏蔽方法:

image.png

TestAndSet指令:

image.png

Swap指令:

image.png

3.互斥锁

image.png

image.png

4.信号量机制

image.png

整型信号量

image.png

记录型信号量

image.png

总结

image.png

信号量的值 = 这种资源的剩余数量(信号量的值如果小于0,说明此时有进程在等待这种资源)

  • P( S ) —— 申请一个资源S,如果资源不够就阻塞等待
  • V( S ) —— 释放一个资源S,如果有进程在等待该资源,则唤醒一个进程

实现进程互斥:

image.png

实现进程同步:

image.png

总结:

image.png

5.管程

image.png

image.png

6.经典问题

生产者消费者问题:

image.png

多生产者多消费者问题:

image.png

吸烟者问题:

image.png

读者写者问题:

image.png

哲学家进餐问题:

image.png

四、死锁

1.概念

image.png

2.预防死锁

破坏死锁产生的条件

3.避免死锁

安全序列

image.png

使用银行家算法

image.png

4. 检测和解除死锁

死锁的检测:

image.png

死锁的解除:

image.png

主要参考:王道考研课程
后续会持续更新考研408部分的学习笔记,欢迎关注。
github仓库(含所有相关源码):408数据结构笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/888875.html

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

相关文章

stable diffusion基础

整合包下载:秋叶大佬 【AI绘画8月最新】Stable Diffusion整合包v4.2发布! 参照:基础04】目前全网最贴心的Lora基础知识教程! VAE 作用:滤镜微调 VAE下载地址:C站(https://civitai.com/models…

目录扫描工具—dirsearch使用指南

一:工具简介 dirsearch是一个基于Python3的命令行工具,旨在对web服务器中的目录和文件进行暴力破解,既暴力扫描页面结构,包括网页中的目录和文件。 下载地址: 1: https://github.com/maurosoria/dirsear…

2023河南萌新联赛第(六)场:河南理工大学-L 阴晴不定的大橘学长

2023河南萌新联赛第(六)场:河南理工大学-L 阴晴不定的大橘学长 https://ac.nowcoder.com/acm/contest/63602/L?&headNavacm 文章目录 2023河南萌新联赛第(六)场:河南理工大学-L 阴晴不定的大橘学长题…

【RP2040】香瓜树莓派RP2040之仿真调试

本文最后修改时间:2022年08月23日 01:57 一、本节简介 本节以树莓派pico开发板为例,介绍如何使用一个pico作为仿真器,给另一个pico仿真调试代码。 二、实验平台 1、硬件平台 1)树莓派pico开发板 ①树莓派pico开发板*2 ②micr…

网络通信原理传输层TCP三次建立连接(第四十八课)

ACK :确认号 。 是期望收到对方的下一个报文段的数据的第1个字节的序号,即上次已成功接收到的数据字节序号加1。只有ACK标识为1,此字段有效。确认号X+1SEQ:序号字段。 TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的…

使用 Ansible Galaxy 安装角色

使用 Ansible Galaxy 安装角色 使用 Ansible Galaxy 和要求文件 /home/curtis/ansible/roles/requirements.yml 。从以下 URL 下载角色并安装到 /home/curtis/ansible/roles : http://rhgls.area12.example.com/materials/haproxy.tar 此角色的名称应当为 balancer …

layui下拉框select 弹出层在最外层

出现问题如图所示 想要的效果是如下 这样的效果只需一行代码就能解决 .layui-layer-page .layui-layer-content{overflow: visible!important;}

生信豆芽菜-差异基因富集分析

网址:http://www.sxdyc.com/enrichmentEnrich 该工具使用R 语言的clusterProfiler包对关键基因集进行GO和KEGG富集分析,注意这个的关键基因集可以是差异基因,WGCNA的module基因,也可以是表型相关的基因集 1、数据准备 准备一个基因…

关于统一事件管理,一定有你想知道的(二)

本文部分内容来源于布博士----擎创科技资深产品专家 哈喽~又见面啦~ 上期内容我们说到了事件以及事件管理,戳这里一键恢复上期精彩内容:关于统一事件管理,一定有你想知道的(一) 这期主要带大家看看事件管理是怎么运用…

spring官方文档浅翻译(1)

文章目录 IOC容器IOC容器和beans的介绍实例化 BeanBeanFactory:ApplicationContext 容器概述配置元数据实例化容器组合基于xml的配置元数据使用容器 bean的概述命名bean别名的使用 实例化bean构造函数实例化静态工厂实例化实例工厂方法bean 在运行时的实际类型 依赖…

学习笔记|基于Delay实现的LED闪烁|模块化编程|SOS求救灯光|STC32G单片机视频开发教程(冲哥)|第八集:实现LED闪烁(下)

文章目录 2 函数的使用1.函数定义(需要带类型)2.函数声明(需要带类型)3.函数调用 3 新建文件,使用模块化编程新建xxx.c和xxx.h文件xxx.h格式:调用头文件验证代码调用:完整的文件结构如下&#x…

使用 RHEL 系统角色

使用 RHEL 系统角色 安装 RHEL 系统角色软件包,并创建符合以下条件的 playbook /home/curtis/ansible/selinux.yml : 在所有受管节点上运行 使用 selinux 角色 将角色配置为以强制执行状态使用SELinux yum install rhel-system-roles.noarch su - curti…

七夕送礼指南:这几款礼物不仅颜值高而且非常实用

七夕又被称为“乞巧节”,相传这一天是牛郎织女一年一度的相会日,所以在这个浪漫的节日里,很有多的恋人也会不远万里来相见,在这个浪漫的日子里,送礼物是表达心意和爱意的重要方式,那么,面对琳琅…

前端练手小项目--自定义时间(html+css+js)

自定义时间 写文章的因 关于要写这篇文章的原因 是记录在工作上遇到的困难需求,是希望能给大家提供一些解决问题的思路 接下来我描述这个需求的多样性,难点在哪。 勾选勾选框开始时间与结束时间默认显示昨天与今天。取消勾选框开始时间与结束时间清空。…

element+vue 表格行拖拽功能

解决方案 使用 sortable.js 步骤一&#xff1a; 安装 npm install vuedraggable步骤二&#xff1a;引入 import Sortable from sortablejs;步骤三&#xff1a; el-table 添加row-key属性&#xff0c;外层包一层 sortableDiv <div class"sortableDiv"> 拖…

IDEA【java.sql.SQLSyntaxErrorException: ORA-00904: “P“.“PRJ_NO“: 标识符无效】

IDEA报错如下&#xff1a; 2023-08-17 11:26:15.535 ERROR [egrant-biz,b48324d82fe23753,b48324d82fe23753,true] 24108 --- [ XNIO-1 task-1] c.i.c.l.c.RestExceptionController : 服务器异常org.springframework.jdbc.BadSqlGrammarException: ### Error queryin…

Docker 的基本概念和优势,在应用程序开发中的实际应用。

Docker是一个开源的容器化平台&#xff0c;让开发者能够轻松地打包、运输和运行应用程序。其基本概念包括&#xff1a; 镜像(Image)&#xff1a;一个镜像是一个只读的软件包&#xff0c;它包含了运行应用所需的所有代码、库文件、环境变量和配置文件等。 容器(Container)&…

docker之简介与安装

环境配置问题 没有虚拟机&#xff0c;我们往往是打包代码发给对方&#xff0c;然后让对方安装相应的环境&#xff0c;比如node、数据库&#xff0c;要是配置不同&#xff0c;项目很有可能无法运行&#xff0c;还会报错&#xff0c;如果多个人想要运行这份代码&#xff0c;那还得…

手撸一个简单的Tomcat,延伸`SpringMvc`的原理

为什么写这篇文章 一直以来都说tomcat是用的java写的&#xff0c;但是也是不明白到底是怎么弄的&#xff0c;最近有个机会搞明白了&#xff0c;特此记录&#xff0c;可以使得更懂tomcat的原理 用java写一个java的运行程序&#xff0c;听着就很酷&#xff0c;你觉得呢&#xf…

多模态分割医学数据集小调研

QaTa-COV19 V1&#xff1a; 该数据集由4603张COVID-19胸部x光片组成;该数据集首次包含了用于COVID-19感染区域分割任务的真值分割掩码。加上对照组的胸部x光片&#xff0c;QaTa-COV19由120,968张图像组成。图像位于“QaTa-COV19/ images /”文件夹下&#xff0c;ground-truth分…