王道 —— 操作系统的四个特征

article/2025/9/28 10:14:17

1、知识总览

操作系统有并发、共享、虚拟、异步四个基本特征,并发和共享是两个最基本的特征,二者互为存在条件;

在这里插入图片描述

2、操作系统的特征 —— 并发

并发:指两个或者多个时间在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的;

并行:指两个或者多个事件在同一时刻同时发生;

并发 VS 并行

eg:假设小渣和老渣每人有两个女朋友。任务1:和一号约会;任务2:和二号约会;
在这里插入图片描述

操作系统的并发性指计算机系统中同时存在多个运行着的程序。

一个单核处理机(CPU)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行(这些程序微观上是交替执行的,但是宏观上看起来就像同时执行)。

事实上,操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的。

当今计算机一般都是多核CPU,比如Intel的第八代i3处理器就是4核CPU,这意味着同一时刻可以有4个程序并行执行,但是操作系统的并发性依然必不可少;因为当代人使用计算机绝对有4个以上的程序需要同时工作。

3、操作系统的特征 —— 共享

共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

两种资源共享方式:

  • 互斥共享:系统中的某些资源,虽然可以提供给多个进程使用,但是一个时间段内只允许一个进程访问该资源;
  • 同时共享方式:系统中的某些资源,允许一个时间段内多个进程“同时”对它们进行访问;

所谓“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享);

在这里插入图片描述

生活实例:

  • 互斥共享方式:使用QQ和微信视频,同一时间段内摄像头只能分配其中一个进程;
  • 同时共享方式:使用QQ发送文件A,同时使用微信发送文件B;宏观上,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据。微观上,两个进程是交替着访问硬盘的;

4、并发和共享的关系

并发性指计算机系统中同时存在多个运行着的程序;
共享性是指系统中的资源可供内存中多个并发执行的进程共同使用;

通过上面的例子来看并发与共享的关系:使用QQ发送文件A,同时使用微信发送文件B。

  1. 两个进程正在并发执行(并发性);
  2. 需要共享地访问硬盘资源(共享性);

如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义;

如果失去共享性,则QQ和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发;

因此,并发性和共享性是互为存在条件,两者缺一不可;

5、操作系统的特征 —— 虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的;

举个例子一:

游戏GTA5需要4GB的运行内存,QQ需要256MB的内存,迅雷需要256MB的内存,网易云音乐需要256MB的内存,但是我的电脑只有4GB的内存;

问题:这些程序同时运行需要的内存远大于4GB,那么为什么它们还可以在我的电脑上同时运行呢?

答案:这是虚拟存储器技术,实际上只有4GB,在用户看来似乎远远大于4GB;虚拟存储器技术使用的是虚拟技术中的“空分复用技术”;

举个例子二:

某单核CPU的计算机中,用户打开了以下程序软件:QQ、微信、浏览器、迅雷、视频播放器;

问题:既然一个程序需要被分配CPU才能正常执行,那么为什么单核CPU的电脑中能同时运行这么多个程序呢?

答案:这是虚拟处理器技术,实际上只有一个单核CPU,在用户看来似乎有多个CPU在为自己服务;虚拟处理器技术是虚拟技术中的“时分复用技术”,微观上处理机在各个微小的时间段内交替着为各个进程服务;

虚拟技术

  • 空分复用技术,如虚拟存储器技术;
  • 时分复用技术,如虚拟处理器;

显然,如果失去了并发性,则一个时间段内系统中只需运行一道程序,那么就失去了实现虚拟性的意义了。因此,没有并发性就谈不上虚拟性;

6、操作系统的特性 —— 异步性

异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性;

举个例子:老渣要和两个女孩并发约会;

有以下执行:

  • 一号的指令1:老渣陪我吃饭;
  • 一号的指令2:老渣把心给我;
  • 二号的指令1:老渣把心给我;
  • 二号的指令2:老渣陪我吃饭;

老渣的可能约会方式:

  • 8点到9点:约会一号,陪一号吃饭;
  • 9点到10点:约会一号,把心给一号;
  • 10点到11点:约会二号,把心给二号;
  • 11点到12点:约会二号,陪二号吃饭;

在和一号约会的时候,;老渣把心给了一号,因此在和二号约会的时候,只能等一号把心还回来,这样老渣才能把心给二号,这时候二号的约会进程才能继续执行。

与一号、二号的约会相当于对两个进程的处理,每个进程都有各自需要执行的指令;
老渣的心相当于有限的系统资源,由于可分配的资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进的;

显然,如果失去了并发性,则系统只能串行地处理各个进程,每个进程的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性。

7、总结

在这里插入图片描述

  • 理解并发和并行的区别;
  • 并发和共享互为存在条件;
  • 没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统中的两个最基本的特征;

http://chatgpt.dhexx.cn/article/739uZRu9.shtml

相关文章

操作系统学习笔记——总体总结

看书太慢容易抓不住重点,所以在此按照操作系统的主要内容分别查网上博客资料进行学习。 一、引论 操作系统基本特性: 并发: 1.并行与并发:并行性是指两个或多个时间在同一时刻发送;并发性是指两个或多是事件在同一…

数据库脏读、不可重复读、幻读

1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 2. 不可重复读 :是指在一个事务内&…

关于可重复读和幻读

最近看到MySQL隔离性的知识,发现网上很多人说可重复读所针对的操作是update,然后亲自试验了一把,见下文。 首先我们知道在读提交隔离级别下,同一事物A中以相同的查询语句可能得到的结果不一致的情况,即不可重复读。这是…

可重复读如何解决幻读

学习之前的疑问: 可重复读的概念 与 不可重复读的概念 行锁gap锁(间隙锁) 快照读 与 当前读区别 快照读中的MVCC 当前读中的gap锁 和 行锁 前几天面试时被问到了mysql可重复读如何解决幻读的问题,之前脑子中的概念只有增加了共享锁和排他锁进行避免&…

MySQL(四)—MVCC实现可重复读的原理

文章目录 一、MVCC概况二、MVCC实现原理1.两或三个隐藏字段。2.undo log3.一个数组4.ReadView 三、举例验证MVCC原理参考文献 一、MVCC概况 MVCC是什么?MVCC即多版本控制协议,InnoDB实现了MVCC作版本控制,防止不该被当前事务看到的数据看到。…

可重复读

《循序渐进DB2-系统管理、运行维护与应用案例》第10章锁和并发,本章首先介绍了通用的事务概念,并指出DB2在用户读取、写入数据时的加锁策略、锁模式、兼容性等。本章还介绍了在并发控制中常碰到的4种数据异常现象,同时讲述了DB2如何使用锁克服…

mysql不可重复读和重复读_脏读、幻读、不可重复读的区别是什么

脏读、幻读、不可重复读的区别:1、脏读就是指当一个事务正在访问数据,并且对数据进行了修改;2、不可重复读是指在一个事务内,多次读同一数据;3、幻读是指当事务不是独立执行时发生的一种现象。 【相关学习推荐&#xf…

Mysql如何实现可重复读

首先对于mysql来说相信也并不陌生,mysql默认的事务的隔离级别是3,即可以实现可重复读,那mysql又是怎样实现可重复读的呢? 下边进行简单的介绍 这里就要提到了mvcc,即多版本并发控制 首先先来看一个事务的执行图 此时…

MySQL 可重复读隔离级别,完全解决幻读了吗?

我在上一篇文章中提到,MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」,但是它很大程度上避免幻读现象(并不是完全解决了),解决的方案有两种: 针对快照读(普通 select 语句)&am…

MySQL可重复读-问题实践

MySQL可重复读之幻读问题 MySQL事务存储引擎InnoDB的默认隔离级别为可重复读,在该隔离级别下,可以很大程度上避免幻读的问题,完全避免脏读和不可重复读问题,接下来通过实际的测试看看这些场景是否真的能够被完全避免 模拟均基于…

可重复读下的幻读

在事务执行过程中,另一个事务将新记录添加到正在读取的事务中时,会发生幻读(事务隔离级别为可重复读REPEATABLE-READ)。当执行SELECT … WHERE语句时未对where范围锁定,则可能会发生幻读。幻读是不可重复读的一种特殊情…

MySQL可重复读应用场景_mysql-repeatable read 可重复读隔离级别-幻读实例场景

本文详解 repeatable read 可重复读 隔离级别产生的影响(幻读) -- SERIALIZABLE serializable 序列化 ;一个个事务排成序列的形式。事务一个挨一个执行,等待前一个事务执行完,后面的事务才可以顺序执行 -- REPEATEABLE READ repeatable read …

MySQL可重复读级别能够解决幻读吗

引言 之前在深入了解数据库理论的时候,了解到事物的不同隔离级别可能存在的问题。为了更好的理解所以在MySQL数据库中测试复现这些问题。关于脏读和不可重复读在相应的隔离级别下都很容易的复现了。但是对于幻读,我发现在可重复读的隔离级别下没有出现&…

mysql不可重复读和重复读_MySql隔离级别:RU / RC / RR / S + 脏读 / 不可重复读 / 幻读 / 可重复读...

MySQL 事务 本文所说的 MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的。 数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做…

mysql可重复读 加锁_mysql可重复读隔离级别加锁分析

问题 myql可重复读隔离级别下可能会导致插入阻塞,问题复现如下 表中有3列都是int类型 其索引情况如下: id为主索引,c,d为普通索引 现在开始制作问题: 在这里我分别开启两个事务:第一个事务中执行一个update 语句更新一…

可重复读实现原理

不可重复读:事务A多次读取同一个数据,事务B在事务A多次读取的过程中,对数据作了更新,导致事务A多次读取同一个数据时,结果不一致。(比如修改行数据) 幻读:事务A 按照一定条件进行数据…

mysql “可重复读“ 解决了哪些问题,没有解决哪些问题?

可重复读解决了更新带来的不可重复读问题,但是没有解决插入或者删除带来的幻读问题。这句话,是老八股文了。 但真实情况是这样的吗?这个验证不麻烦,我们可以动手来验证一下。 我使用的是免安装版本的windows mysql8.0.31&#xff…

透彻解读mysql的可重复读、幻读及实现原理

目录 一、事务的隔离级别 二、mysql怎么实现的可重复读 举例说明MVCC的实现 MVCC逻辑流程-插入 MVCC逻辑流程-删除 MVCC逻辑流程-修改 MVCC逻辑流程-查询 三、幻读 快照读和当前读 四、如何解决幻读 事务隔离级别有四种,mysql默认使用的是可重复读&#x…

前端开发:a标签实现下载功能

应用背景 前端项目实现下载文件的功能,在后台没给我们撸接口的情况下,我们可以利用a标签实现下载功能,而且贼简单~ 实现原理 通过a标签的download的属性,将需要下载的文件放在前端项目中,然后href属性访问文件路径&a…

a标签/js下载文件(2020)

a标签/js 下载服务器文件 一、二进制式下载1、responseType(请求)2、Content-Type(响应)判断是普通数据还是文件流(可选)3、Content-Disposition(响应)和文件名(可选&…