一、是啥玩意?
计算机操作系统就是:
- 操控、管理整个计算机软件和硬件的资源、并合理分配计算机工作、资源
(人话):操作系统是计算机系统资源的管理者
;
- 以给用户和其他软件提供更方便的接口和环境
(人话):它为上层提供服务
;
- 它是计算机系统中最基础的系统软件
(人话):是软件,是最接近底层硬件的一套软件
;
1)对于第一句话:【操控、管理整个计算机软件和硬件的资源,是计算机系统资源的管理者】的理解:
2)第二句话:【它为上层提供服务】
用户和软件无需关心底层硬件所要的0、1这些二进制代码,操作系统为用户操作软件提供了更有友好的"接口",相当于中间商
这里注意,常见的三大类接口:【GUI】【命令接口】【程序接口】(注意:【命令接口】和【程序接口】统称为用户接口)
;
其中【GUI】就是搭建常用的图形化操作,点一下图标打开啊、右键删除、新建等等......
例子:
;
;
【命令接口 】又分【联机命令接口 】和【脱机命令接口】
;
【联机命令接口】就是大家常用的【Window + R】这种打开"黑窗口"输入命令来执行的操作,一般普通用户比较蠢就只会鼠标点点点,程序员一般用得多一点,跟执行的命令跟鼠标点点点的效果是一样的
特点就是:命令一条一条的执行
例子:
【脱机命令接口】就是将大批大批的命令通过.bat文件执行,其实我也不太懂毕竟我是没试过这么干
特点就是:命令可以一堆一堆的执行
例子:
;
;
【程序接口 】就记住【普通用户】不能直接用就行了,程序员也只能通过代码调用程序,然后程序调用【程序接口】执行命令
例子:
3)第三句话:【是最接近底层硬件的一套软件】
二、操作系统的特征
前提知识点: 这里需要知道的一个知识点后面可能会方便各位理解---------程序是在内存中运行的
(这就是为什么当你的内存不够大时,运行多个程序会卡,而且一个程序运行下去可能要生成更多的临时数据资源,占用更多内存,导致电脑更卡)
1、总的4大特征:
(其中【并发】和【共享】是最基本的特征,二者互为存在条件)
2、并发
并发是指:两个或多个事件在同一时间间隔内同时发生
注意:这个【同时】是宏观上 的同时,微观上 是交替发生的,怎么解释呢?
那就要区分一下【并发】和【并行】两个概念
【并发】两个或多个事件在同一时间间隔内同时发生,也就是同时跟个千手观音一样干着N份活
;
【并行】是两个或多个事件在同一时刻同时发生,虽然是要一次性干这么多活,但是也得稍微有个前后顺序,在微观层面的某一小时刻还是只能执行一件事
用两渣男约会来比喻:
而【操作系统的并发性】就是【计算机中同时运行多个程序】(宏观同时,微观交替)
操作系统和程序并发是同时诞生的
3、共享
共享就是计算机的资源共享,系统中的资源可供内存中多个并发进程使用
(这里资源不仅仅指内存数据,还有什么音响啊、摄像头...等等都可以算资源)
这种 "同时" 跟并发一样,也是 "宏观上" 同时,**"微观上"**分时共享
其中也细分为【互斥共享 】和【同时共享】两种共享方式
;
【互斥共享】
就是比如qq、微信同时要视频通话,那摄像头资源就只能给一个应用使用;网易云跟qq音乐同时要放歌,那音频播放器只能给一个应用使用。
;
【同时共享】
就是比如qq跟微信跟短信都可以同一时间给别人发送文件、照片......看似是同时进行的,但其实 "微观层面" 上其实是分时交替着读取内存资源
【并发】和【共享】是相互依存的
4、虚拟
虚拟就是将一个 "物理实体" 变成 若干个 "逻辑上的对应物",物理实体是实际存在的(比如电脑运行内存大小、计算机的1个单核CPU),逻辑对应物是用户感受到的(比如玩游戏时感觉运行内存变得好大、打开多个软件以为是多个CPU同时工作)
注意:【虚拟性】依赖于【并发性】来体现,如果没了【并发性】,【虚拟性】就没有存在的意义
5、异步
这个对于java以及前端开发的兄弟们应该再熟悉不过了,异步就是多个进程并发运行,但是有限的资源被一个进程占用时,有的进程可能就需要等待,并不是所有进程都是一路顺利贯穿到底的
我自己的项目经验的例子是:
有的时候我们开发前端,当加载页面的时候有些图片资源是需要通过向后端发送请求获取的,那这跟时候加载页面会直接运行 "渲染静态数据"、"渲染样式"......等等进程,而"渲染图片"这个进程可能就要等待请求成功响应回数据之后,再渲染,页面就会出现空白或者预加载的假图片;
;
或者我们的setTimeout这种函数,就是异步,我们正常执行别的函数、进程,然后等我们设置的时间到了,才会触发setTimeout这个函数的进程开始。
;
;
《王道考研》里的例子是: