【操作系统复习之路】操作系统概述(复习的同学有福啦)

长话短说,就记下笔记,期待期末90+,随便希望能帮助到有需要的同学。

目录

一、操作系统的目标和作用 

二、操作系统的发展过程

2.1 无OS

2.2 有OS

【1】批处理系统

【2】分时系统

【3】实时操作系统

【4】三种基本操作系统的比较:

三、操作系统的基本特征

3.1 并发

3.2 共享 

3.3 虚拟 

3.4 异步性

四、操作系统的主要功能

五、操作系统的运行机制

 六、操作系统体系结构

6.1 模块化结构

6.2 分层结构

6.3 大内核 和 微内核

6.4 外核(略)

 七、中断和异常

7.1 内中断

7.2 外中断

八、系统调用

九、结尾

Reference 


一、操作系统的目标和作用 

OS的目标:方便性、有效性、可扩充性、开放性。

OS的作用:(书上P003)

作为用户与计算机硬件系统之间的接口

  1. 命令方式:指由OS提供了一组联机命令 (语言), 用户可通过键盘输入有关命令,来直接操纵计算机系统。
  2. 系统调用方式:OS提供了一组系统调用,用户可在自己的应用程序中通过相应的系统调用,来操纵计算机。(下文详细介绍)
  3. 图标–窗口方式:用户通过屏幕上的窗口和图标来操纵计算机系统和运行自己的程序。

● 作为计算机系统资源的管理者 (处理机管理,存储器管理,I/O设备管理,文件管理

● 实现了对计算机资源的抽象(用作扩充机器)  

I/O设备管理软件提供读写接口,文件管理软件提供操作文件接口。通常把覆盖了这些软件的机器称为扩充机器或虚拟器。它向用户提供了一个对硬件操作的抽象模型,用户可利用该模型提供的接口使用计算机,无需了解物理接口实现的细节,从而使用户更容易地使用计算机的硬件资源。由此可见,OS是铺设在计算机硬件上的多层软件的集合。

总的来说OS是直接控制和管理计算机硬件、软件资源,合理地对各类作业进行调度,以方便用户使用的程序集合。

二、操作系统的发展过程

2.1 无OS

人工操作方式: 用户既是程序员又是操作员。
  • 用户独占全机
  • CPU等待人工操作
脱机 I /O 方式:由于程序和数据的输入和输出都是在外围机的控制下完成,或者说,它们是在脱离主机的情况下进行的,故称为脱机I/O方式。
  • 减少了CPU的空闲时间
  • 提高了I/O速度

2.2 有OS

【1】批处理系统

批处理是指计算机系统对一批作业自动进行处理的一种技术。

1、单道批处理系统

为实现对作业的连续处理,需要先把一批作业以脱机方式输入到磁带上,并在系统中配上监督程序(Monitor),在它的控制下,使这批作业能一个接一个地连续处理,直至磁带上的所有作业全部完成,这样便形成了早期的批处理系统。虽然系统对作业的处理是成批进行的,但在内存中始终只保持一道作业,故称为单道批处理系统 。

虽然其提高了系统资源的利用率和系统吞吐量,但是缺点也显而易见:

内存中仅有一道程序,在程序运行中发出I/O请求后,CPU处于等待状态。

2、多道批处理系统

用户所提交的作业先存放在外存上,排成一个“后备队列”,由作业调度程序按照一定的算法从队列中选择若干作业进入内存(后续会讲解),这些作业共享CPU和系统中的各种资源。

由于存在多个程序,因此CPU可以在一个作业的I/O阶段进行另一个作业的处理。多道程序交替运行,使CPU始终处于忙碌状态。

【2】分时系统

如果说推动多道批处理系统形成和发展的主要动力,是提高资源利用率和系统吞吐量,那么,推动分时系统形成和发展的主要动力,则是用户的需求。或者说,分时系统是为了满足用户需求所形成的一种新型OS。它与多道批处理系统之间,有着截然不同的性能差别。

概念:是一种联机的多用户交互式的操作系统。其将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。

表现:

  • 人—机交互
  • 共享主机

特征:

  • 多路性、独立性、及时性、交互性 

【3】实时操作系统

所谓“实时”,是表示“及时”,而实时系统是指系统能及时(或实时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。

实时系统的类型:

  1. 实时控制系统:要求计算机能尽快处理测量系统测得的数据,以尽快实施响应控制。如:工业控制;导弹发射;飞机飞行。

  2. 实时信息系统:要求计算机能对终端设备发来的服务请求及时予以正确的回答。如:订票系统;情报检索系统

特征:

  • 快速的响应时间、有限的交互能力、 高可靠性

【4】三种基本操作系统的比较:

三、操作系统的基本特征

前面所介绍的多道批处理系统、分时系统和实时系统还共同具备:并发、共享、虚拟、异步四个基本特征。

3.1 并发

区别并发和并行: 

  • 并发:指两个或多个事件在同一时间间隔内发生。
  • 并行:指两个或多个事件在同一时刻发生。

3.2 共享 

指系统中的资源供内存中的多道程序所共同使用。

目前主要有以下两种共享方式(一定要注意区分):

● 互斥共享方式

系统中的某些资源,如打印机、磁带机,虽然它们可以提供给多个进程(线程)使用,但为使所打印或记录的结果不致造成混淆,应规定在一段时间内只允许一个进程(线程)访问该资源,我们把这种资源共享方式称为互斥式共享。

● 同时访问方式

允许在一段时间内由多个进程 “同时”对它们进行访问。这里所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问。

并发和共享是多用户(多任务)OS的两个最基本的特征。它们又是互为存在的条件。

3.3 虚拟 

指通过某种技术把一个物理实体变成若干个逻辑上的对应物。

物理实体(前者)是实的, 即实际存在的;而后者是虚的,是用户感觉上的东西。相应地,用于实现虚拟的技术,称为虚拟技术。在OS中利用了多种虚拟技术,分别用来实现虚拟处理机、虚拟内存、 虚拟外部设备和虚拟信道等。

在OS中是利用时分复用和空分复用技术来实现“虚拟”的,这里不做探讨(P016有介绍)

3.4 异步性

由于资源等因素的限制,使进程的执行通常都不是“一气呵成”,那么系统中并发执行的多道程序“走走停停”,以不可预知的速度向前推进。

四、操作系统的主要功能

引入OS的主要目的为多道程序的运行提供良好的运行环境,以保证多道程序能有条不紊、高效地运行,并能最大程度地提高系统中各种资源的利用率和方便用户的使用为此,在传统的OS中应具备处理机管理、存储器管理、设备管理和文件管理等基本功能。此外,为了方便用户使用OS,还需要向用户提供方便的用户接口。

由于这一章主要讲OS概述,所以详细内容请期待下次更新哦!

【1】处理机管理功能

  • 进程控制
  • 进程同步
  • 进程通信
  • 调度

【2】存储器管理功能

  • 内存分配
  • 内存保护
  • 地址映射
  • 内存扩充 

 【3】设备管理功能

  • 缓冲管理
  • 设备分配
  • 设备处理

【4】 文件管理功能

  • 文件存储空间的管理
  • 目录管理
  • 文件的读/写管理和保护

【5】OS与用户之间的接口

  • 用户接口
  • 程序接口 

【6】现代操作系统的新功能

  • 系统安全
  • 网络的功能和服务
  • 支持多媒体 

五、操作系统的运行机制

主要介绍上图涉及的基本概念,建议一定要理解,之后学到后面,这张图将会焕然一新!

我们普通程序员写的程序就是:“ 应用程序 ”

微软、苹果哪些负责实现操作系统的高手,写的就是“ 内核程序 ”。

由很多内核程序组成的叫:“操作系统内核”,或俗称“内核”。它是OS中最重要最核心的部分,也是最接近硬件的部分。

应用程序只能使用“非特权指令”,如加法、减法指令等。

但是如内存清零指令,这些特权指令影响很大,只能内核程序来使用。

CPU有两种状态:内核态 和 用户态

  • 处于内核态,说明此时正在运行的是内核程序,此时可以执行特权指令
  • 处于用户态,说明此时正在运行的是应用程序,此时只能执行非特权指令
CPU有个叫程序状态寄存器(PSW),来标记是什么状态。

这里看不懂,继续往下面看,看完体系结构和中断后,说不定就茅舍顿开了! 

 六、操作系统体系结构

建议还是认真去看看书上P24~P33的文字介绍,不然学到后面,你就会发现学的很散。

 在分别介绍它们之前,先带大家介绍下:内核

内核是操作系统最基本、最核心的部分。实现操作系统内核功能的哪些程序就是内核程序。

上图中时钟管理、中断处理和原语,就顺便在这里简介以下吧,后面会详解的。

● 时钟管理:实现记时功能

● 中断处理:实现中断机制

● 原语:是一种特殊的程序,处于操作系统最底层,是最接近硬件的部分。这种程序的运行具有原子性(其运行只能一气呵成,不可中断)。运行时间较短,调用频繁

● 注意:

  • 操作系统内核需要运行在内核态
  • 操作系统的非内核需要运行在用户态

6.1 模块化结构

模块化是将操作系统按功能划分为若干个具有一定独立性的模块。每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能通过接口进行通信。还可以进一步将各模块细分为若干个具有一定功能的子模块,同样也规定好各子模块之间的接口。把这种设计方法称为模块-接口法,如下图所示为由模块、子模块等组成的模块化操作系统结构。

特性:

● 将内核划分为多个模块,各模块之间相互协作。

● 内核=主模块+可加载内核模块

  • 主模块:只负责核心功能,如进程调度、内存管理
  • 可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核 (优势)

优点:

● 模块间逻辑清晰易于维护,确定模块间接口后,即可多模块同时开发
● 支持动态加载新的内核模块(如按照设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
● 任何模块都可以直接调用其他模块,无需采用信息传递进行通信,效率高

缺点:

● 模块间的接口定义未必合理、实用

● 模块间相互依赖, 更难调试和验证

6.2 分层结构

最底层是硬件,最高层是用户接口,每层可调用更低一层。

 

特性:

● 内核分多层,每层可单向调用更低一层提供的接口

优点:

● 便于调试和验证, 自底向上逐层调试验证 

● 易扩充和易维护, 各层之间调用接口清晰固定 

缺点:

● 仅可调用相邻低层,难以合理定义各层的边界

● 效率低, 不可跨层调用, 系统调用执行时间长

6.3 大内核 和 微内核

微内核特性:只把中断、原语、进程通信等最核心的功能放入内核。进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态 。

大内核特性:所有的系统功能都放在内核里(大内核结构的OS通常也采用了“模块化”的设计思想)


微内核优点

● 内核小功能少、易于维护,内核可靠性高

● 内核外的某个功能模块出错不会导致整个系统崩溃

大内核优点

● 性能高,内核内部各种功能都可以直接相互调用


微内核缺点

● 性能低,需要频繁的切换用户态/核心态

● 用户态下的各功能模块不可以直接相互调用, 只能通过内核的"消息传递"来间接通信

大内核缺点

● 内核庞大功能复杂, 难以维护

● 大内核中某个功能模块出错, 就可能导致整个系统崩溃


6.4 外核(略)

非常少见!!!

 七、中断和异常

CPU上会运行两种程序,一种是操作系统内核程序(整个系统的管理者),一种是应用程序。

在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序(第二章进程管理相关内容)。但是你不能一直占着CPU,一直运行这个应用程序啊!!!

那么“ 中断 ”就是让操作系统内核夺回CPU使用权的唯一途径。

扩充:

内核态 -> 用户态:执行一条特权指令(修改PSW的标志位为“用户态”),这个动作意味着操作系统将主动让出CPU的使用权。

用户态 -> 内核态:由“中断”引发,触发中断信号意味着操作系统将强行夺回CPU的使用权。

中断机制的基本原理:

首先检查中断信号是内中断还是外中断,然后会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的位置。

显然,中断处理程序一定内核程序,需要运行在“内核态”。

7.1 内中断

当前执行的指令有关,中断信号来源于CPU内部

陷阱、陷入】:由陷入指令引发,是应用程序故意引发的
故障】:由错误条件引起的, 可能被内核程序修复。内核程序修复故障后会把CPU使用权还给应用程序,让它继续执行下去。如: 缺页故障。
 【终止】由致命错误引起, 内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0,非法使用特权指令。
 

发生情况举例:

例1:试图在用户态下执行特权指令(比如黑客向正在运行的应用程序植入一条特权指令)

例2:执行除法指令时发现除数为0

例3:有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令(陷入指令),该指令会引发一个内部中断信号。

执行 “陷入指令”,意味着应用程序主动地将CPU控制权还给操作系统内核。例如:

“系统调用” 就是通过陷入指令完成的

7.2 外中断

当前执行的指令无关,中断信号来源于CPU外部

 例1:时钟中断(由时钟部件发来的中断信号)

因为这个时钟部件每隔一个时间片(如50ms)会给CPU发送一个时钟中断信号,因此这可以用来实现多道程序并发运行(特别重要)。

解释:比如CPU在运行应用程序1,50ms之后会收到一个时钟中断信号,那么CPU转而运行时钟中断的内核程序,当处理完成后,内核程序发现应用程序1已经运行了50ms了,因此为了公平起见,接下来让另一个应用程序上CPU运行…………

 例2:I/O中断(由输入/输出设备发来的中断信号)

比如说某一个应用程序可能会请求打印机的打印服务,那么打印机在打印输出完成后,会向CPU发送中断信号,用来通知CPU我的任务已经完成了,接下CPU处理I/O中断的内核程序…… 

其实每条指令执行结束后,都会例行检查是否有外中断信号需要处理。 

八、系统调用

知识点回顾:

操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中程序接口由一组系统调用组成。

GUI:图形用户界面

联机命令接口(交互式命令接口):适用于分时或实时操作系统,cmd中的各种命令就是联机命令接口

脱机命令接口(批处理命令接口):适用于批处理系统,写好了一个.bat文件再在cmd中执行它就是脱机命令接口

系统调用:是操作系统提供给应用程序(程序人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务

系统调用与库函数的区别:

  • 有的库函数是对系统调用的进一步封装(使程序员编程方便,如“创建一个新文件”的函数)
  • 有的库函数没有使用系统调用(如“取绝对值”的函数)

系统调用是非常必须的,等下一章我们学到进程同步,当两个进程并发的共享一个资源时,比如说一个文件,你在写,我也在写,最终不乱七八糟了嘛?

解决方法(原理):由操作系统内核对共享资源进行统一的管理, 并向上提供“系统调用”, 用户进程想要使用打印机这种共享资源, 只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。

应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等), 都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。


系统调用的过程

正如在内中断哪里讲的,“系统调用” 就是通过陷入指令完成的

此时正在运行的是应用程序,CPU处于用户态,应用程序向CPU传入陷入指令(即内中断信号),然后转入相应的中断处理程序(即系统调用的入口程序),此时CPU就转换成内核态,并判断用户需要那种系统调用服务。

注意:

1、陷入指令时在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态

2、发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行。

3、陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令

九、结尾

最后,非常感谢大家的阅读。我接下来还会更新第二章:【进程的描述与控制】 ,如果本文有错误或者不足的地方请在评论区(或者私信)留言,一定尽量满足大家,如果对大家有帮助,还望三连一下啦!

我的个人博客,欢迎访问 !

Reference 

【1】 汤子瀛, 哲凤屏, 汤小丹,梁红兵. 计算机操作系统[第四版]. 西安电子科技大学出版社

【2】王道计算机考研 操作系统_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

类的定义与实例化

一.类的定义 1.1 格式 定义类的一般格式如下: class 类名{ public:公有成员列表; protected:保护成员列表; private:私有成员列表; }; 构成元素: (1)类头(class head) “class 类名”称为类头。 &…

大视频上传断点续传解决方案

版本:6.5.40 代码:up6-jsp-springboot: Web大文件上传-jsp-springboot示例 - Gitee.com nosql示例 nosql示例不需要进行任何配置,可以直接访问测试。 SQL示例 1.创建数据库 2.配置数据库连接 3.自动下载maven依赖 4.启动项目 启动成功 6.访…

开源 | 电动汽车充换电解决方案,从智能硬件到软件系统,全部自主研发

文章目录 一、产品功能部分截图1.手机端(小程序、安卓、ios)2.PC端 二、小程序体验账号以及PC后台体验账号1.小程序体验账号2.PC后台体验账号关注公众号获取最新资讯 三、产品简介?1. 充电桩云平台(含硬件充电桩)&…

VTK——自定义二维图像涂抹Widget(支持任意值涂抹),擦除,恢复 vtkCustomPaintWidget

通过鼠标控制 涂抹区域,可以进行,后退,可以进行二维标注,也可以进行回退,也可以任意值涂抹。 vtkCustomPaintWidget 1.标注: 2.擦除 视频: 2D标注 vtkPaint VTK 2D 标注 描绘 2D 擦除&#x…

蓝桥杯-卡片换位

solution 有一个测试点没有空格&#xff0c;要特别处理&#xff0c;否则会有一个测试点运行错误&#xff01; 还有输入数据的规模在变&#xff0c;小心顺手敲错了边界条件 #include<iostream> #include<string> #include<queue> #include<map> #incl…

picgo + 腾讯云 cos 图床搭建

文章目录 0.背景&简介1.注册腾讯云并创建 COS 存储桶2.获取 API 密钥3.安装并配置 PicGo4.配置typora 0.背景&简介 背景: 文档笔记有图片但存储在本地, 想发送给别人需要连同图片目录一起绑定发送比较麻烦 这里使用对象存储 CDN搭建图床 简介: PicGo 是一款开源的图片…

为什么Python不适合写游戏?

知乎上有热门个问题&#xff1a;Python 能写游戏吗&#xff1f;有没有什么开源项目&#xff1f; Python可以开发游戏&#xff0c;但不是好的选择 Python作为脚本语言&#xff0c;一般很少用来开发游戏&#xff0c;但也有不少大型游戏有Python的身影&#xff0c;比如&#xff1…

使用AI创造诗词歌曲

大家好我是在看&#xff0c;记录普通人学习探索AI之路。 在前面的几讲&#xff0c;我们介绍了AI的使用方法&#xff0c;今天我们正式进入实操环节&#xff0c;讲一讲用如何用AI来创作诗歌。 之前我们在讲AI使用的时候&#xff0c;曾经介绍过一种技巧叫做"种子词提示”。…

快速创建zookeeper集群

先说明&#xff0c;zookeeper集群的3个节点都放在同一个虚拟机&#xff08;穷&#xff09;&#xff0c;所以搭建是一个伪集群&#xff0c;因为一个服务器挂机&#xff0c;所有节点都会停止。工作实际情况安装到三个服务器&#xff0c;并修改节点配置的ip地址即可&#xff08;红…

虚拟机-从头配置Ubuntu18.04(包括anaconda,cuda,cudnn,pycharm,ros,vscode)

最好先安装anaconda后cuda和cudnn&#xff0c;因为配置环境的时候可能conda会覆盖cuda的路径&#xff08;不确定这种说法对不对&#xff0c;这里只是给大家的建议&#xff09; 准备工作&#xff1a; 1.Ubuntu18.04&#xff0c;x86_64&#xff0c;amd64 虚拟机下载和虚拟机Ubu…

Discord账号多开如何做?有什么办法可以同时在线?

Discord 是一款免费的语音和文本聊天应用程序。它是一个游戏聊天应用程序和社区&#xff0c;最初是游戏的语音和IM服务&#xff0c;然后转向直播&#xff0c;然后是游戏商店的社区平台。它成为游戏玩家在游戏中交流和协作的首选工具。下面将为你介绍如何同时使用多个discord账号…

XPath攻略:从入门到精通,告别查找困难!

简介 XPath 是一种用于在 XML 文档中检索信息的语言。它通过路径表达式导航 XML 文档&#xff0c;广泛应用于各种场景。XPath 的灵活性和强大功能使其成为在 XML 结构中准确定位和提取数据的重要工具。 XPath 使用场景 Web 自动化测试&#xff1a; XPath 在 Web 自动化测试中…

Linux系统下C++程序运行时的内存布局及存储内容,生命周期,初始化时机。【C++】

Linux系统下C程序运行时的内存布局及存储内容&#xff0c;生命周期&#xff0c;初始化时机详解。 1.程序代码段存储内容生命周期初始化时机特点代码演示 2.初始化数据段 - 只读初始化数据段存储内容生命周期初始化时机特点代码演示 3.初始化数据段 - 读写初始化数据段存储内容生…

aws使用记录

数据传输&#xff08;S3) 安装命令行 安装awscli: https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions 直到 aws configure list 可以运行 身份验证&#xff1a; 运行&#xff1a; aws config…

35岁的程序员,该何去何从?

2024 年&#xff0c;是充满未知和挑战的一年。AI 的发展日新月异&#xff0c;已经有人用它来写代码了&#xff0c;啥时候会替代程序员&#xff0c;可真不好说。另一方面&#xff0c;程序员扎堆的 IT 互联网行业却进入了平台期甚至下行期&#xff0c;降本增效成为行业主流&#…

SAP_MMQM模块-采购收货质量控制

采购订单收货如何控制质量检验后再放行使用&#xff0c;针对目前了解到的功能&#xff0c;有以下三种方案&#xff1b; 一、启用QM模块&#xff0c;正常使用MIGO收货-移动类型101&#xff0c;入库后产生检验批&#xff0c;产生质检库存&#xff0c;质检部检验合格后&#xff0…

Vue2(十一):脚手架配置代理、github案例、插槽

一、脚手架配置代理 1.回顾常用的ajax发送方式&#xff1a; &#xff08;1&#xff09;xhr 比较麻烦&#xff0c;不常用 &#xff08;2&#xff09;jQuery 核心是封装dom操作&#xff0c;所以也不常用 &#xff08;3&#xff09;axios 优势&#xff1a;体积小、是promis…

Unbtun-arach64架构安装PySide2(python3.6)

aarch平台是无法通过pip安装PySide2的&#xff0c;同时利用源码下载一直报错 1. 我是python3.6.9&#xff0c;在官网上找到对应的PySide2版本 5.15.2.所以首先在官网下载Qt5.15.2的源码&#xff1a;https://download.qt.io/archive/qt/5.15/5.15.2/single/ 2. 编译qt环境 aar…

C++基础11:模板与命名空间

此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏&#xff0c;参考书籍&#xff1a;《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 10.模板与命名空间 10.1 模板简述 模板使函数和类的处理对象…

RecyclerView notifyItemChanged 之后的源码分析

注意&#xff1a;本文是基于 androidx.RecyclerView 1.3.2 版本的源码分析。默认使用 DefaultItemAnimator&#xff0c;如果使用了其他的 ItemAnimator&#xff0c;可能会有不同的表现。 效果图&#xff1a; 示例代码如下&#xff1a; binding.btnNotifyItemChanged.setOnCli…