为什么从操作系统我们的并发系列笔记,主要是我们自己在回顾之前学习的并发知识的时候,发现自己对一些基础知识的掌握还是不到位,对一些操作系统一些名词是一脸懵逼的状态:
如:
为了应对上述一些系列的疑问,追本溯源,其实是我对基础只是根本不了解,要想学的更深更透彻的话,你会发现,你不得不去理解一下概念,也只有理解一些概念之后,应对一些问题,你也才会豁然开朗!
首先操作系统写概念东西,肯定是有点枯燥乏味的!比较这个东西很虚!虚到其实根本不知道它是什么鬼!所以我很多的知识点会参考部分的书籍和网络大咖们整理,加上自己的理解重新整合一下。纯当做自己学习笔记。
废话不多说!开始整理笔记!
PS:下面的知识点总结大部分来自《王道考研》操作系统课程的笔记!!!
怕看到这就劝退了!!就不哔哔那么都!
操作系统(Operating System,简称OS)是管理计算机【硬件】与【软件资源】的计算机程序。
说白了,OS 就是一个中间商,帮我们和电脑底层的硬件进行沟通传输我们命令,和返回结果。
OS(操作系统)扩展补充:
定义:
目标:
作用:
即:OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。
(2)、OS是计算机系统资源的管理者(处理机、存储器、I/O设备、文件)
处理机管理是用于分配和控制处理机
存储器管理是负责内存的分配与回收
I/O设备管理是负责I/O设备的分配(回收)与操纵
文件管理是用于实现文件的存取、共享和保护
(3)、OS实现了对计算机资源的抽象(OS是扩充机/虚拟机)
相关名词解释:
其实并发和它对应的一个高频的是并行:那为什么我们的平时不叫高并行,而都是叫高并发呐?
主要原因是他们参照物不一样,首先充定义是来说:
并行:我们电脑在同一时间【点内】可以干多件事,强调的是【时间点】;(相对于多CPU和多核来说)
并发:我们电脑在同一时间【段内】可以干多件事,强调的是【时间段】,某个范围点;(基于多CPU多核下,相关的多进程执行一种方式)
串行:打印机同一时间段只能干一件事,譬如它就只能一张一张排队打印,不能同1秒内一下子打两张;
所以理解了上面之后,我们就能明白,为什么不是高并行,而是高并发,因为我们的电脑的CPU数永远是小于我们的电脑运行的软件数的的,想象一下我们的电脑开机N个进程就跑!
进程构成 = 进程控制模块(Process Control Block,PCB)+程序段,+相关数据段。
程序只是一段命令的集合,是静态的,不能独立运行,更不能与其他程序并发运行.
进程是对程序一个封装整合,为了使程序能运行,且能与其他程序并发运行。
所以进程的基本特征就是动态性,由进程控制模块控制了程序的运行与停止,展现出其动态性。
。
进程是系统进行资源分配的基本单位.程序启动时候就系统就会分配进程和它关联。
为了实现电脑高并发,我们的一直不断在加强我们的计算器的运行能力,甚至出现了超线程!
而早起我们的多数解决高并发问题上多数是使用:多进程和多线程的机制,协程是后来者。
三者的简单区别:
多进程:类似QQ多开,多账号同时登入,我可以使用不同的账号和不同的人聊天。(多个QQ互不干扰,各行其是)
子进程:登入一个QQ账号后,我又开启一个另一个属于这个账号下一个任务进程,如:视频聊天(一单我们的退出这个账号,子进程也跟着关闭)
多线程:我使用某个QQ账号聊天的时候:可以一边聊天,一边发文件,一边视频,三个之前是CPU调度决定谁跑
协程:我是多线程的进化,也通用可以我使用某个QQ账号聊天的时候:可以一边聊天,一边发文件,一边视频,但是我只是一个线程,不是多线程,我是等待一个好的时间,再去做协作,程序可以控制协程先让谁的任务跑,它是协作式调度任务。
系统中的资源可以供多个并发执行的进程共同使用。
资源共享方式:
(1)互斥共享方式。比如摄像头资源,微信和QQ不能同时发起视频
(2)同时(包括并发和并行)共享方案。比如硬盘访问执行或者声卡资源请求播放音频,多个进程可以并行或者并发的“同时”访问(但这个同时是一种微观的同时,宏观其实是不存在同时的,即:其实任务是交替的执行)
相辅相成,互为存在条件
PS:程序执行前需先放到内存中才能被CPU处理,因此内存主要作用是缓和CPU与硬盘之间的速度矛盾
虚拟是将一个物理上的实体变成若干个逻辑上的对应的虚拟实体,物理实体是实际存在的,虚拟实体是用户感知到的。
虚拟技术:
常见场景:
物理机的虚拟,将很多资源抽象供用户方便使用,数据抽象为文件,方便存取;
设备抽象虚拟化:设备抽象为驱动程序驱动的虚拟设备,提供统一借口,方便编程;
虚拟存储:为了提高内存利用率,软件启动之后化成进程,但进程并不是一次性所有代码都装入内存,使用的部分装入。即使内存足够大.有时在进程离开【运行态】时会被对换到虚拟内存中(硬盘的一部分)。
虚拟内存:将物理内存抽象为地址空间,每个进程都有各自的地址空间。地址空间的页被映射到物理内存,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。
虚拟是操作系统管理系统资源的重要手段,可提高资源利用率。
如果失去了并发性,计算机在同一个时间内只运行一个程序的话,那么虚拟性就失去了存在的意义,所以没有并发性,就谈不上虚拟性。
异步是指,在多道程序环境下,允许多个程序进行并发执行,但是程序并发执行时,程序之间的相互制约关系导致了并发程序这种“执行——暂停——执行”这种间断性的活动规律,加上系统资源限制,导致并发的进程并不是一次执行完成的,而是断断续续,走走停停,以不可预知的速度向前执行推进的。
所以在内存中的每个进程在何时执行,何时暂停,以怎样的速度向前推进,每道程序总共需要多少时间才能完成,都是不可预知的。
总结:
作业任务存在不确定性:什么时候开始,执行多久时间,终止时间
一个任务作业完成的先后次序与进入内存的次序并不完全一致,亦即进程是以异步方式运行的。
但在有关进程控制及同步机制等的支持下,只要运行环境相同,任务作业经多次运行,都会获得完全相同的结果,因而异步方式是容许的。因此,操作系统便具有了异步性特征。
如果失去了并发性,操作系统只能串行的处理各个进程,每个进程执行会一贯到底,不存在走走停停的情况,所以只有系统拥有并发性,才会导致异步性,没有并发,就没有异步。
一、无操作系统阶段(手工操作阶段)
突出缺点:
二、单道批处理阶段
特点:
优点:一定程度上缓解了人机速度的矛盾,资源利用率有所提升
缺点:计算机中仅有一道处理程序,还是有大量的CPU时钟在等待IO(CPU,需要处理的任务已提交,处于空闲时间比较多)
三、多道批处理阶段
特点:
优点:多道程序并发执行,引入了中断技术,由操作系统管理相关资源计算机资源和资源共享,资源利用率大幅提升。CPU和其他系统资源保持“忙碌”状态,提供系统吞吐量!
缺点:用户响应时间长,缺少人机交互能力,不能控制管理做也任务的执行,不支持分时。
单道和批处理的资源利用率分析:
多道批处理的资源利用率分析:
四、分时系统
分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。用户可以通过相关终端或GUI界面和软件进行交互。
分时操作系统,主要分为三类:
系统特点 分时系统或多路系统。分时系统,它有如下特征:
优点:用户请求即时被响应,并且解决了人机交互问题
缺点:进程之间完全公平,没有区分优先级,循环的被操作系统服务,如果存在优先级高的服务的话,则没有办法优先处理。
实时操作系统是保证在一定时间限制内完成特定功能的操作系统。
实时操作系统有硬实时和软实时之分:
硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;
软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。
PS:硬实时到时间就必须执行(系统级别事件),软实时可以容忍延迟些时间执行(用户行为事件)。
配置在微型机器上的操作系统。
来自百度百科解说:
(1)多路性。实时信息处理系统与分时系统一样具有多路性。系统按分时原则为多个终端用户服务;而对实时控制系统,其多路性则主要表现在经常对多路的现场信息进行采集以及对多个对象或多个执行机构进行控制。
(2)独立性。实时信息处理系统与分时系统一样具有独立性。每个终端用户在向分时系统提出服务请求时,是彼此独立的操作,互不干扰;而在实时控制系统中信息的采集和对对象的控制,也彼此互不干扰。
(3)及时性。实时信息系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级、百毫秒级直至毫秒级,甚至有的要低于100微秒。
(4)交互性。实时信息处理系统具有交互性,但这里人与系统的交互,仅限于访问系统中某些特定的专用服务程序。它不像分时系统那样能向终端用户提供数据处理服务、资源共享等服务。
(5)可靠性。分时系统要求系统可靠,相比之下,实时系统则要求系统高度可靠。因为任何差错都可能带来巨大的经济损失甚至无法预料的灾难性后果。因此,在实时系统中,采取了多级容错措施来保证系统的安全及数据的安全。
个人其他博客地址
简书:https://www.jianshu.com/u/d6960089b087
掘金:https://juejin.cn/user/2963939079225608
小钟同学 | 文 【原创】| QQ:308711822
1:本文相关描述主要是个人的认知和见解,如有不当之处,还望各位大佬指正。 2:关于文章内容,有部分内容参考自互联网,如有链接会声明标注;如没有及时标注备注的链接的,如有侵权请联系,我会立即删除处理哟。
原文作者:程序员小钟同学;如有侵权,请联系管理员删除。