1.1_2 操作系统的特征

文章目录

  • 1.1_2 操作系统的特征
    • (一)并发
    • (二)共享
        • 并发和共享的关系
    • (三)虚拟
        • 并发和虚拟的关系
    • (四)异步
  • 总结

1.1_2 操作系统的特征

操作系统的特征:并发、共享、虚拟、异步。

其中:并发和共享是两个最基本的特征,且二者互为存在条件。

(一)并发

并发

  指两个或多个事件在同一时间间隔内发生。

  这些事件宏观上是同时发生的,但微观上是交替发生的。并发不要求微观上的同时,只需从宏观上看多个程序都在向前推进。

易混淆概念:并行

  指两个或多个事件在同一时刻同时发生。

  并行要求的是微观上的同时发生,即在绝对的同一时刻有多个程序同时向前推进。

举例:

  如7:00-7:10运行了QQ音乐,7:10-7:20运行了QQ聊天。那么,在7:00-7:20之间,听歌与聊天就叫做并发

  操作系统就是伴随着“多道程序技术”而出现的。操作系统,就是为了支持多道程序的并发运行而出现的。因此,操作系统和程序并发是一起诞生的。并发性也是操作系统的最基本特征。

注意:

  单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。

  多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。

举例:

  一个4核CPU,意味着可以并行地执行4个程序。

  当前:QQ、微信、Word、浏览器——4个程序并行执行。

  此时,若打开QQ音乐,则当前必须换下一个程序,如Word,之后才能让QQ音乐上CPU执行。

  Word与QQ音乐此时并发地交替上CPU运行。

  因此,即使现代有了多核CPU,可以支持多个程序并行运行,并发性依然是必不可少的。并发性是操作系统的一个最基本的特性

(二)共享

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

两种资源共享方式:

  • 互斥共享方式
  • 同时共享方式

互斥共享方式

  系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。

同时共享方式

  系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。

  ※ 注:所谓的“同时”,指的是宏观上的同时。而微观上,这些进程,可能是交替地对该资源进行访问的。(即分时共享)(类似于“并发”的意思)也可能的确是同时在对该资源进行访问。(真正的同时,类似于“并行”)

举例

  互斥共享方式:

    使用QQ和微信视频。同一时间段内,摄像头只能分配给其中一个进程。

  同时共享方式:

    使用QQ发送文件A,同时使用微信发送文件B。宏观上看,两边都在“同时”读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是交替着访问硬盘的。

    也可能从微观上也是同时。例如,在玩游戏的同时听音乐。“扬声器”这一设备既播放游戏音效、又播放音乐,那么即使从微观上来看,它也是被游戏进程和音乐播放器进程同时使用的。

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

举例

  使用QQ发送文件A,同时使用微信发送文件B。那么:

  1.两个进程正在并发执行。(并发性)

  2.需要共享地访问硬盘资源。(共享性)

  分析:

    如果失去并发性,则系统中只有一个程序正在运行,也就意味着不存在“两个进程需要同时共享某资源”的情形了,则共享性失去存在的意义。

    如果失去共享性,则QQ和微信不能同时访问硬盘资源,就无法实现“同时发送文件”这件事,那么QQ和微信也就无法并发地执行了。

    可见,如果失去了并发性,那么共享性就失去了存在的意义。而如果失去了共享性,那么并发性就不可能被实现。所以,并发性和共享性,二者互为存在条件。

(三)虚拟

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

举例1

  一个程序需要放入内存并分配CPU才能执行。

  此外,GTA5需要4GB的运行内存、QQ需要256MB的运行内存、迅雷需要256MB的运行内存、网易云音乐需要256MB的运行内存……

  而我的电脑,只有4GB的内存。

  问题:这些程序为什么还可以在我的电脑上同时运行?

  答:这是虚拟存储器技术。实际只有4GB的内存(物理实体),但在用户看来是远远大于4GB的(逻辑上的对应物)。

  实际上,这是虚拟技术中的”空分复用技术“。(在第三章中会详细讲解。)

举例2

  某单核CPU的计算机中,用户同时打开了:QQ、浏览器、QQ音乐、迅雷……

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

  答:这是虚拟处理器技术。实际上只有一个单核CPU(物理实体),但在用户看来似乎有多个CPU在同时为自己服务(逻辑上的对应物)。

  实际上,这是虚拟技术中的“时分复用技术”。微观上,处理机在各个微小的时间段内交替着为各个进程服务。

并发和虚拟的关系
  • 虚拟技术:
    • 空分复用技术(如虚拟存储器技术)
    • 时分复用技术(如虚拟处理器)

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

(四)异步

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

  由于计算机系统具有并发性,可以使多个程序在同一时间段内并发执行(宏观上同时,微观上交替),因此,有限的系统资源可能被多个并发运行的程序争抢着使用(例如打印机资源)。而正因为系统中的资源是有限的,因此进程的执行不是一贯到底的,而是走走停停的(因为要等待别的进程使用完这个资源),以不可预知的速度向前推进(可能是A进行停下来等待B进程,也有可能是B进程停下来等待A进程)。

  分析:如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会是一贯到底的。因此,只有系统拥有并发性,才有可能导致异步性

总结

1)理解并发和并行的区别。

2)并发和共享,互为存在条件。

3)没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征。

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

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

相关文章

rc.local启动程序 配置source脚本重启不生效

问题现象: rc.local文件配置source命令执行的脚本 服务器重启后不生效 发现执行docker命令还是没有提示 [rootreg ~]# cat /etc/rc.local #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd servic…

【已解决】c++ qt bmp转jpg函数

本博文源于笔者正在写的代码,想要将bmp转成jpg,里面用到的库函数是QImage,大致函数的含义是将image进行rgb转换,最后保存成JPEG 函数书写 第一个参数是bmp图片路径比如d://a.bmp,第二个参数是要转换的jpg路径,比如d:…

c# 链表

在 C# 中,链表是一种数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的引用。C# 中的链表通常使用泛型类型来存储数据,以便可以存储任意类型的数据。 以下是使用 C# 中的链表的基本示例: using Syste…

arcgispro删除影像黑色背景值

1、打开影像,如下: 2、打开栅格计算器,在 “视图”--“地理处理”中,点击,如下: 3、语句如下: SetNull("setnul_rast1"0,"setnul_rast1") “setnul_rast1”表示要处理的栅…

flutter 功能

flutter功能 带缓存的tab切换功能 使用PageController进行对应tab的widget缓存 late PageController _keepActiveVC;///当前使用的视图索引late int _index;late PageController _keepActiveVC;/// 所有视图final List<Widget> _bodys [];overridevoid initState() {…

Java实现数据结构哈希表

哈希表 概述 给美分数据分配一个编号,放入表格(数组) 建立编号与表格索引的关系,将来就可以通过编号快速查找数据 理想情况编号当唯一,数组能容纳所有数据现实是不能说为了容纳所有数据造一个超大数组,编号也可能重复 解决 有限长度的数组,以[拉链]方式存储数据允许编号适…

【IO流】IOException IO流异常

IOException IO流异常 1. 概述2. try...catch异常处理2.1 基础做法2.2 JDK7方案2.3 JDK9方案 3. 注意事项 异常 概括 1. 概述 IOException&#xff08;Input/Output Exception&#xff0c;输入/输出异常&#xff09;是 Java 编程中常见的异常类型之一。它是 java.io 包中定义的…

48 slab 的实现

前言 这里说的是 内核中分配小对象的一种内存分配方式 slab 呵呵 经典程度不必多说了, 内核使用的大多数数据结构 基本上是基于 slab 进行内存分配的 这里 我们来看一下 slab 如何分配对象 几个分配层级, c->free_list, c->page, c->partial, new_slab 1. 先…

查看 PyCharm 代码文件目录位置

查看 PyCharm 代码文件目录位置 1. Show in Files2. Copy PathReferences 1. Show in Files right click -> Show in Files / Show in Explorer 即可打开目录 2. Copy Path right click -> Copy Path 即可复制目录或文件路径 References [1] Yongqiang Cheng, http…

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】机器视觉(基础篇)(十七)

目录 几个高频面试题目 如何选择合适的面扫相机 算法原理 分辨率与视野 像素尺寸与景深 像素尺寸

通过Linux终端搭建基于HTTP隧道的文件传输系统

嘿&#xff0c;Linux小侠们&#xff0c;准备好挑战一项酷炫的任务了吗&#xff1f;今天我们要一起通过Linux终端搭建一个基于HTTP隧道的文件传输系统&#xff0c;让我们的文件在网络的海洋中畅游无阻&#xff01; 在开始之前&#xff0c;让我们先来想象一下这个场景&#xff1…

自建AWS S3存储服务

unsetunset前言unsetunset AWS S3&#xff08;Amazon S3&#xff0c;全名为亚马逊简易存储服务&#xff09;&#xff0c;是亚马逊公司利用其亚马逊网络服务系统所提供的网络在线存储服务。我常用的很多SaaS服务中提供的文件存储功能&#xff0c;底层也都是AWS S3&#xff0c;比…

线代:认识行列式、矩阵和向量

本文主要参考的视频教程如下&#xff1a; 8小时学完线代【中国大学MOOC*小元老师】线性代数速学_哔哩哔哩_bilibili 另外这个视频可以作为补充&#xff1a; 【考研数学 线性代数 基础课】—全集_哔哩哔哩_bilibili 行列式的概念和定义 一般会由方程组来引出行列式 比如一个二阶…

【Python】测量WAV文件播放时长

问题 windows播放WAV音频文件&#xff0c;一般使用API函数&#xff0c;如PlaySound。实际使用发现&#xff0c;从调用PlaySound到实际开始播放存在200ms以上的延时&#xff0c;在游戏编程中音效实时性是个需要解决的问题。 本文主要讨论&#xff0c;windows播放WAV文件的衍生…

后端开发怎么学?

后端开发怎么学&#xff1f; 后端开发可以简单地理解为与前端开发相对应的开发方向。前端开发主要负责构建用户界面、维护用户体验等方面的工作&#xff0c;而后端开发则主要负责处理数据、逻辑和算法等方面的工作。后端开发旨在为前端应用程序提供支持&#xff0c;以帮助实现可…

微信小程序之开发会议OA项目

目录 前言 本篇目标 首页 会议 投票 个人中心 会议OA项目-首页 配置 tabbar mock工具 page swiper 会议信息 会议OA项目-会议 自定义tabs组件 会议管理 会议OA项目-投票 会议OA项目-个人中心 前言 文章含源码资源&#xff0c;投票及个人中心详细自行查看…

Mongodb 文本检索

Mongodb支持对字符串字段的文本检索。在Mongodb atlas中&#xff0c; 对这种文本检索的功能进行了增强。 提到文本检索&#xff0c; 难免不会想到实现非常火爆的AI&#xff0c; 聊天服务等时髦技术。mongodb提供的这种文本检索功能适当的算法实践&#xff0c;似乎可以支持这些应…

【开源】SpringBoot框架开发服装店库存管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 服装档案模块2.4 服装入库模块2.5 服装出库模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 服装档案表3.2.3 服装入库表3.2.4 服装出库表 四、系统展示五、核心代码5.…

VTK Python PyQt 监听键盘 控制 Actor 移动 变色

KeyPressInteractorStyle 在vtk 中有时我们需要监听 键盘或鼠标做一些事&#xff1b; 1. 创建 Actor&#xff1b; Sphere vtk.vtkSphereSource() Sphere.SetRadius(10)mapper vtk.vtkPolyDataMapper() mapper.SetInputConnection(Sphere.GetOutputPort()) actor vtk.vtkAc…

JSON转换List<Map<String, Object>>、Map<String, Object>

废话就不说了 早上10点研究到现在 获取redis的JSON字符串 String getPalletListNew redisService.getRedis(“getPalletListNew”, abroad “” goodsLevel “” startPort “” destinationPort “” maxTon “” minTon); 转换Map<String,Object> public …