ITPub博客

首页 > 数据库 > 数据库开发技术 > python并发编程(2)-操作系统定义和发展过程(简述)和特征

python并发编程(2)-操作系统定义和发展过程(简述)和特征

原创 数据库开发技术 作者:程序员小钟同学 时间:2021-04-01 18:10:25 0 删除 编辑

前言

为什么从操作系统我们的并发系列笔记,主要是我们自己在回顾之前学习的并发知识的时候,发现自己对一些基础知识的掌握还是不到位,对一些操作系统一些名词是一脸懵逼的状态:

如:

  • 用户态和内核态
  • 时间片轮询
  • 进程上下文切换
  • 多核CPU下的线程是如何调度分配
  • 什么内存屏障
  • 什么是虚拟内存什么是物理内存
  • 什么是批处理系统
  • 什么是分时系统
  • 线程和进程再操作系统之中调度策略是什么
  • ············

为了应对上述一些系列的疑问,追本溯源,其实是我对基础只是根本不了解,要想学的更深更透彻的话,你会发现,你不得不去理解一下概念,也只有理解一些概念之后,应对一些问题,你也才会豁然开朗!

首先操作系统写概念东西,肯定是有点枯燥乏味的!比较这个东西很虚!虚到其实根本不知道它是什么鬼!所以我很多的知识点会参考部分的书籍和网络大咖们整理,加上自己的理解重新整合一下。纯当做自己学习笔记。

废话不多说!开始整理笔记!

看视频总结,纯手打一下为了加深记忆:

PS:下面的知识点总结大部分来自《王道考研》操作系统课程的笔记!!!

1、计算机的基本组成?

怕看到这就劝退了!!就不哔哔那么都!

2、什么是操作系统?

操作系统(Operating System,简称OS)是管理计算机【硬件】与【软件资源】的计算机程序。

说白了,OS 就是一个中间商,帮我们和电脑底层的硬件进行沟通传输我们命令,和返回结果。

OS(操作系统)扩展补充:

定义:

  • 1.是一个大型的程序系统
  • 2.责计算机的全部软、硬件资源的分配、调度工作
  • 3.控制并协调多个任务的活动,实现信息的存取和保
  • 4.提供用户接口

目标:

  • (1)、方便性:配置OS后计算机系统更容易使用
  • (2)、有效性:改善资源利用率;提高系统 吞吐量
  • (3)、可扩充性:OSde结构(如层次化的结构:无结构发展->模快化结构->层次化结构->微内核结构)
  • (4)、开放性:OS遵循世界标准范围。

作用:

  • (1)、OS作为用户与计算机硬件系统之间的接口(API/CUI/GUI)

即:OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。

  • (2)、OS是计算机系统资源的管理者(处理机、存储器、I/O设备、文件)

    • 处理机管理是用于分配和控制处理机

    • 存储器管理是负责内存的分配与回收

    • I/O设备管理是负责I/O设备的分配(回收)与操纵

    • 文件管理是用于实现文件的存取、共享和保护

  • (3)、OS实现了对计算机资源的抽象(OS是扩充机/虚拟机)

3、操作系统主要工作内容有哪些?

相关名词解释:

  • 命令接口:联机命令接口(交互式命令接口)
  • 脱机命令接口(批处理命令接口,例如*.bat或者bash)
  • 程序接口:由一组系统调用组成
  • 命令接口和脱机命令接口区别:是一句一执行,还是一堆一执行

4、现代的操作系统有哪几个特征?

4.1并行&并发(CPU不够,并发来拼凑)

其实并发和它对应的一个高频的是并行:那为什么我们的平时不叫高并行,而都是叫高并发呐?

主要原因是他们参照物不一样,首先充定义是来说:

并行:我们电脑在同一时间【点内】可以干多件事,强调的是【时间点】;(相对于多CPU和多核来说)

  • 对于1个CPU的电脑来说:其实我们不存在并行(因为它用于同一时刻只能有一个程序在运行,也就是说永远只有一条路,可以通行)
  • 对于3个CPU来说.我们存在并行:如:微信运行在CPU1,淘宝运行再CPU2,抖音在CPU3,每个软件都各行其道,但是,再多也只能同时跑3个,也就是高速公路就三条,再多的车要走的,就分别在三条路上排队运行。

并发:我们电脑在同一时间【段内】可以干多件事,强调的是【时间段】,某个范围点;(基于多CPU多核下,相关的多进程执行一种方式)

  • 对于1个CPU的电脑来说:其实我们可以说是存在并发,因为,我们的电脑一个同一个时间内CPU也可以跑很多的软件,只是我们的肉眼感觉好像是“并行”,本质其实不是,而是并发。底层都是一个CPU分配时间片机制给不同软件运行的机会,让你感觉好像是并行(同一时间点运行了好多个软件)

串行:打印机同一时间段只能干一件事,譬如它就只能一张一张排队打印,不能同1秒内一下子打两张;

所以理解了上面之后,我们就能明白,为什么不是高并行,而是高并发,因为我们的电脑的CPU数永远是小于我们的电脑运行的软件数的的,想象一下我们的电脑开机N个进程就跑!

4.2多进程,多线程,协程机制的火拼

4.2.1进程构成:

进程构成 = 进程控制模块(Process Control Block,PCB)+程序段,+相关数据段。

4.2.2程序的定义:

程序只是一段命令的集合,是静态的,不能独立运行,更不能与其他程序并发运行.

4.2.3进程和程序的关系:

进程是对程序一个封装整合,为了使程序能运行,且能与其他程序并发运行。

所以进程的基本特征就是动态性,由进程控制模块控制了程序的运行与停止,展现出其动态性。

4.2.4进程和操作系统:

。

进程是系统进行资源分配的基本单位.程序启动时候就系统就会分配进程和它关联。

为了实现电脑高并发,我们的一直不断在加强我们的计算器的运行能力,甚至出现了超线程!

而早起我们的多数解决高并发问题上多数是使用:多进程和多线程的机制,协程是后来者。

三者的简单区别:

  • 多进程:类似QQ多开,多账号同时登入,我可以使用不同的账号和不同的人聊天。(多个QQ互不干扰,各行其是)

  • 子进程:登入一个QQ账号后,我又开启一个另一个属于这个账号下一个任务进程,如:视频聊天(一单我们的退出这个账号,子进程也跟着关闭)

  • 多线程:我使用某个QQ账号聊天的时候:可以一边聊天,一边发文件,一边视频,三个之前是CPU调度决定谁跑

  • 协程:我是多线程的进化,也通用可以我使用某个QQ账号聊天的时候:可以一边聊天,一边发文件,一边视频,但是我只是一个线程,不是多线程,我是等待一个好的时间,再去做协作,程序可以控制协程先让谁的任务跑,它是协作式调度任务。

4.3资源共享

系统中的资源可以供多个并发执行的进程共同使用。

资源共享方式:

  • (1)互斥共享方式。比如摄像头资源,微信和QQ不能同时发起视频

  • (2)同时(包括并发和并行)共享方案。比如硬盘访问执行或者声卡资源请求播放音频,多个进程可以并行或者并发的“同时”访问(但这个同时是一种微观的同时,宏观其实是不存在同时的,即:其实任务是交替的执行)

4.4并行&并发和资源共享

相辅相成,互为存在条件

  • 如果没有并发性,那么资源共享性就失去了存在的意义(没必要进行分享,反正只有一个人能用)
  • 如果没有共享性,那么存在多个软件应用(进程)之间的资源竞争,经常干架也不行啊,所以需要可以支持同事访问并发。

4.5 虚拟性

PS:程序执行前需先放到内存中才能被CPU处理,因此内存主要作用是缓和CPU与硬盘之间的速度矛盾

虚拟是将一个物理上的实体变成若干个逻辑上的对应的虚拟实体,物理实体是实际存在的,虚拟实体是用户感知到的。

虚拟技术:

  • 空分复用技术(让同一个频段在不同空间上使用),如虚拟存储器技术
  • 时分复用技术(资源在时间上的复用)如虚拟处理器技术

常见场景:

  • 物理机的虚拟,将很多资源抽象供用户方便使用,数据抽象为文件,方便存取;

  • 设备抽象虚拟化:设备抽象为驱动程序驱动的虚拟设备,提供统一借口,方便编程;

  • 虚拟存储:为了提高内存利用率,软件启动之后化成进程,但进程并不是一次性所有代码都装入内存,使用的部分装入。即使内存足够大.有时在进程离开【运行态】时会被对换到虚拟内存中(硬盘的一部分)。

  • 虚拟内存:将物理内存抽象为地址空间,每个进程都有各自的地址空间。地址空间的页被映射到物理内存,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。

虚拟是操作系统管理系统资源的重要手段,可提高资源利用率。

  • CPU——多道程序设计技术/每个用户(进程)的“虚拟处理机"
  • 存储器——每个进程都占有的地址空间(指令+数据+堆栈)
  • I/O设备——打印机、多窗口或虚拟终端

4.6 虚拟性与并发性的关系:

如果失去了并发性,计算机在同一个时间内只运行一个程序的话,那么虚拟性就失去了存在的意义,所以没有并发性,就谈不上虚拟性。

4.7 异步性:

异步是指,在多道程序环境下,允许多个程序进行并发执行,但是程序并发执行时,程序之间的相互制约关系导致了并发程序这种“执行——暂停——执行”这种间断性的活动规律,加上系统资源限制,导致并发的进程并不是一次执行完成的,而是断断续续,走走停停,以不可预知的速度向前执行推进的。

所以在内存中的每个进程在何时执行,何时暂停,以怎样的速度向前推进,每道程序总共需要多少时间才能完成,都是不可预知的。

总结:

  • 作业任务存在不确定性:什么时候开始,执行多久时间,终止时间

  • 一个任务作业完成的先后次序与进入内存的次序并不完全一致,亦即进程是以异步方式运行的。

  • 但在有关进程控制及同步机制等的支持下,只要运行环境相同,任务作业经多次运行,都会获得完全相同的结果,因而异步方式是容许的。因此,操作系统便具有了异步性特征。

4.8 异步性和并发性的关系:

如果失去了并发性,操作系统只能串行的处理各个进程,每个进程执行会一贯到底,不存在走走停停的情况,所以只有系统拥有并发性,才会导致异步性,没有并发,就没有异步。

5、操作系统按历史分类有哪几种?

  • 一、无操作系统阶段(手工操作阶段)

    突出缺点:

    • (1)用户独占全机导致的资源利用率低
    • (2)人机速度矛盾导致的资源利用率低
    • (3)主机内存中仅存放一道作业,且作业执行期间发出I/O(输入输出)请求后,CPU处于等待期,它期间不做任何作业,处于空闲期。

  • 二、单道批处理阶段

    特点:

    优点:一定程度上缓解了人机速度的矛盾,资源利用率有所提升

    缺点:计算机中仅有一道处理程序,还是有大量的CPU时钟在等待IO(CPU,需要处理的任务已提交,处于空闲时间比较多)

    • 一次只能运行一个进程
    • 只有运行完毕后才能将下一个进程加载到内存里面,
    • 进程的数据全部是直接放在物理内存上,因此CPU是直接操作内存的物理地址,
    • 不存在虚拟逻辑地址,因为一次只能运行一个程序

  • 三、多道批处理阶段

    特点:

    优点:多道程序并发执行,引入了中断技术,由操作系统管理相关资源计算机资源和资源共享,资源利用率大幅提升。CPU和其他系统资源保持“忙碌”状态,提供系统吞吐量!

    缺点:用户响应时间长,缺少人机交互能力,不能控制管理做也任务的执行,不支持分时。

    • 在计算机中存在着多个进程
    • CPU处理器需在多个进程间进行切换执行
    • 当一道作业程序因I/O请求而暂停运行时,CPU会转去运行另一道程序作业

单道和多道资源对比:

单道和批处理的资源利用率分析:

多道批处理的资源利用率分析:

  • 四、分时系统

    分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。用户可以通过相关终端或GUI界面和软件进行交互。

    分时操作系统,主要分为三类:

    系统特点 分时系统或多路系统。分时系统,它有如下特征:

    • (1)同时性,计算机系统能被多个用户同时使用;
    • (2)独立性:用户和用户之间都是独立操作系统的,在同时操作时并不会发生冲突,破坏,混淆等现象
    • (3)及时性:系统能以最快的速度将结果显示给用户;
    • (4)交互作用性:用户能和电脑进行人机对话。
    • 单道分时操作系统
    • 多道分时操作系统
    • 具有前台和后台的分时操作系统
    优点:用户请求即时被响应,并且解决了人机交互问题

    缺点:进程之间完全公平,没有区分优先级,循环的被操作系统服务,如果存在优先级高的服务的话,则没有办法优先处理。
  • 五、实时操作系统

实时操作系统是保证在一定时间限制内完成特定功能的操作系统。

实时操作系统有硬实时和软实时之分:

  • 硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;

  • 软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。

PS:硬实时到时间就必须执行(系统级别事件),软实时可以容忍延迟些时间执行(用户行为事件)。

  • 六、微机操作系统

配置在微型机器上的操作系统。

  • 早起的windos系统
  • linux系统

6、实时系统与分时系统特征的比较

来自百度百科解说:

(1)多路性。实时信息处理系统与分时系统一样具有多路性。系统按分时原则为多个终端用户服务;而对实时控制系统,其多路性则主要表现在经常对多路的现场信息进行采集以及对多个对象或多个执行机构进行控制。

(2)独立性。实时信息处理系统与分时系统一样具有独立性。每个终端用户在向分时系统提出服务请求时,是彼此独立的操作,互不干扰;而在实时控制系统中信息的采集和对对象的控制,也彼此互不干扰。

(3)及时性。实时信息系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级、百毫秒级直至毫秒级,甚至有的要低于100微秒。

(4)交互性。实时信息处理系统具有交互性,但这里人与系统的交互,仅限于访问系统中某些特定的专用服务程序。它不像分时系统那样能向终端用户提供数据处理服务、资源共享等服务。

(5)可靠性。分时系统要求系统可靠,相比之下,实时系统则要求系统高度可靠。因为任何差错都可能带来巨大的经济损失甚至无法预料的灾难性后果。因此,在实时系统中,采取了多级容错措施来保证系统的安全及数据的安全。

个人其他博客地址

简书:https://www.jianshu.com/u/d6960089b087

掘金:https://juejin.cn/user/2963939079225608

小钟同学 | 文 【原创】| QQ:308711822

  • 1:本文相关描述主要是个人的认知和见解,如有不当之处,还望各位大佬指正。
  • 2:关于文章内容,有部分内容参考自互联网,如有链接会声明标注;如没有及时标注备注的链接的,如有侵权请联系,我会立即删除处理哟。


原文作者:程序员小钟同学;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-02-20

  • 博文量
    224
  • 访问量
    111708