目录
- 一、操作系统的概念
- 1.1 操作系统的分类
- 1.2 计算机系统的构成
- 1.3 操作系统都做了哪些事
- 二、操作系统的目标和功能
- 2.1 操作系统的目标
- 2.2 操作系统的功能
- 三、操作系统的特征
- 3.1 并发
- 3.2 共享
- 3.3 虚拟
- 3.4 异步
一、操作系统的概念
1.1 操作系统的分类
UNIX是非常早期的操作系统,像Linux和MacOS都是基于UNIX延伸出来的操作系统,而安卓是由Linux延伸出来的,IOS是由MacOS延伸出来的。
现在大多数电脑的都是安装的windows,windows目前有不同的版本,windows7、windows10、windows11等…
DOS操作系统(也就是上图当中的黑框框命令窗口)是Microsoft公司推出的(在windows之前的操作系统),目前windows兼容了DOS操作系统,我们通过在windows系统当中使用windows+r
然后输入cmd
就可以进入DOS窗口命令。
DOS和Windows其实都是操作系统。并且都是微软研发的,DOS是一个单任务,单个用户,是基于CLI的操作系统,而Windows是一个多任务,多用户和基于GUI(图形化使用者介面)的操作系统。
1.2 计算机系统的构成
- 用户
- 应用程序
- 操作系统(OS)
- 硬件(裸机)
操作系统是软件和硬件所连接的桥梁,操作系统可以直接操控硬件,对于用户来说,用户可以通过软件来使用操作系统,同时也可以直接使用操作系统来操控硬件。
- 用户直接使用操作系统案例:开关电脑声音,要知道声音他可是由电脑音响来控制的,操作系统为我们提供了图形化界面,我们可以直接通过鼠标或者键盘快捷键就可以操作音响。
- 用户使用软件的案例:操作系统为软件提供了操作硬件的接口,就拿我们平时使用的视频播放器来说,一般常见的视频播放器都可以控制声音,本质上他就是调用的操作系统提供的音量接口来控制的。
1.3 操作系统都做了哪些事
操作系统(OS)是配置在计算机硬件上的第一层软件,我们称之为系统软件
,我们平常使用的软件都称之为应用软件
,应用软件是专门为某一应用目的而编制的软件,比如微信、QQ…他们都是安装在操作系统当中。
操作系统主要有以下功能:
- 用户界面:用户界面是操作系统的一部分,它为用户和在操作系统上运行的其他应用程序创建一个平台以相互通信。操作系统的用户界面便于用户控制其他软件并提供易用性。用户界面可以是3 种主要类型;命令控制、菜单驱动和图形用户界面。
- 资源管理:连接到计算机系统的设备,如内存、存储、I/O设备等,称为计算机资源。操作系统控制这些资源并能够有效地使用可用资源,从而使系统永远不会耗尽其资源。操作系统不仅控制这些资源,还检测资源的故障、检查状态并将资源相互连接。
- 任务管理:任何操作系统的任务管理程序都接受指令,对其进行分析和处理。任务管理利用计算机处理器的能力并将其分配给各种任务,控制中断。
- 文件管理:操作系统管理计算机上的文件,如创建、删除、访问、复制、移动、存储文件等。它还操作数据和程序,如发送和接收数据、移动和存储数据等。
- 实用程序:操作系统为用户和其他程序提供各种实用程序,例如文件碎片整理、数据压缩、数据备份和恢复、防病毒实用程序等。
二、操作系统的目标和功能
2.1 操作系统的目标
就拿windows系统为例,windows操作系统一直在更新迭代,那他版本升级的目标是什么?
- 有效性:提高系统的资源利用率和系统的吞吐量。
- 方便性:假如没有图形化界面操作系统,让用户都通过命令来控制硬件,计算机入门的门槛一下子就提升了,所以尽可能的全部采用傻瓜式操作。
- 可扩充性:计算机的硬件一直在快速的发展,由原先的内存8g可能现在都支持128g了,但是要保证操作系统能够适应硬件设备的发展。
- 开放性:软件发展的速度特别快,要降低计算机软件开发的门槛,也就是不管什么样的人都可以基于操作系统进行开发软件。
2.2 操作系统的功能
主要分为三大类:
OS作为计算机系统资源的管理者,他主要管理的都有什么资源?
OS提供了三种类型的接口:
- 程序接口:给应用程序提供了一些可调用的接口,主要是供应用程序性通过接口来操控硬件。
- 命令接口:doc命令窗口
- GUI:图形化操作
操作系统将硬件资源抽象了出来,用户可以直接通过操作系统中的命令窗口和GUI来操作硬件资源,而应用程序可以通过系统调用和命令来操作硬件资源。而对于使用者而言封装了实现的细节。
我们打开一个浏览器,输入baidu.com,然后应用软件会通过操作系统当中的系统调用去访问硬件网卡设备。
硬件会根据输入的地址进行网络通信,硬件访问过后拿到响应再将数据返回给操作系统,操作系统拿到响应后再进行封装和处理然后再返回给我们的浏览器应用软件。浏览器最终再展示出来,我们才能看得到。
操作系统的系统调用对于用户来说是无感知的,他隐藏了实现的细节,我们一般能想得到的就是我输入baidu.com,然后浏览器给我返回了结果。
三、操作系统的特征
四个基本特征之间的关系
- 虚拟、共享、异步的前提都是存在并发。
- 并发的前提是存在共享。
3.1 并发
假如我们使用单核的处理器同时执行多个任务,宏观上以为他一下子同时运行了多个任务,微观上其实并非同时执行,只是由处理器在处理的过程把不同的任务完成了高速的切换,时间间距可能非常非常小,使我们根本无法察觉出来。
同理:就好比一个人在半个小时内可以完成刷牙、洗脸、刷碗。那他半小时支持的并发事务就是3。他三件事情其实并非同时执行的,因为他又不能分身。只是在半小时这个时间段内。
怎么证明cpu是在串行执行?
关于cpu我们可以通过windows系统-》打开任务管理器-》然后下方有个资源监视器-》打开后可以观察cpu就是在串行执行。
CPU和处理器本质上就是指的一个东西,一个CPU可以有多个内核,内核就是真正的物理核心(芯片硬件),而往往处理器会使用超线程技术,其将每个内核又可以分为两个线程。
而线程技术就是在单个内核基础上提供两个逻辑处理器,利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,所以两个物理核心就是四个线程,也就形成了四个逻辑处理器。
假设内核2,逻辑处理器4,能够并行
执行线程数量,主要取决于逻辑处理器,4个逻辑处理器可以并行处理4个线程
。
但是可以并发处理几千个线程都没问题(底层是时间片轮转机制 RR 时间片快速切换,每个线程拥有时间片就可以获得执行权)
像我的电脑还是比较古老的笔记本电脑,是双核8G运行内存,当时因为电脑卡顿又加了16G的内存条,发现启动的软件多仍然卡顿,因为运行内存是存储的应用软件所暂存的数据,虽然内存是够用了,但是CPU跟不上,并没有什么卵用。
一般我们可以用最以下简单的方法来区别CPU的好坏:
- CPU的核心数(干活的人数,干活的越多,当然越好)
- CPU的线程数(逻辑处理器),就跟一个人有几只手可以干活一个意思,有的CPU只有一只手,超线程表示有2只手,另外一只手是辅助,一般情况下,8个人比4个人8只手厉害多了;
- CPU的核显(核显即核心显卡指的是处理器(CPU)和图形处理器(GPU)集成在一块芯片上),这个对于没有独立显卡的电脑来说,非常重要,核显的频率和核心数都决定了电脑的干活速度。核显的频率主要有两个指标:
- 基础频率(主频),主频就是一颗CPU的运行频率。比如i59400F处理器的主频是2.9Ghz,无论是单核还是多核,所有的核心都是工作在2.9Ghz。
- 加速频率(睿频),睿频是Intel的一项加速技术,指当启动一个运行程序后,处理器会自动加速到合适的频率,而原来的运行速度会提升 10%~20% 以保证程序流畅运行的一种技术。
- 内存频率,这个一般对CPU影响不大,对核显(因为核显要跟CPU共用内存)非常重要;
一般我们在购买电脑的时候,像某东就是把逻辑处理器称之为了线程数,处理器一般会有如下参数,假如没有独立显卡,那我们就需要看处理器的基准频率和加速频率了,当然是越高越好。
3.2 共享
关于共享资源分为了两种
- 同时访问方式:像电脑磁盘就是典型的允许多个应用同时操作磁盘。如果不允许那还了得,我们将无法多个软件同时访问磁盘并且无法同时下载资源到磁盘。
- 还有一些资源是互斥共享的:所谓互斥共享就是虽然资源是共享的,但是不能同时访问,假如同时访问的话需要分优先级进行排队。
打印机就是典型的案例,假如多个应用同时调用打印,他会将要打印的内容存入到打印队列当中,然后一个一个打印。音频设备同样也是,假如你在看电视,突然来了个电话,这时候你电视声音就没有了,直接切换成了电话。
注意:有并发才会有共享,有共享才会有并发。
男子同时和四个女友约会属于并发还是并行?
答:当然是并发了,因为男子是一个人,他不能被同时共享,他只不过是约了4个人在不同的地方,然后男子来回场地切换
同时结婚是并发还是并行?
答:也是并发,同上一样。可以把男子理解成处理器,不能被共享。
3.3 虚拟
虚拟主要有两种实现
- 时分复用技术:把时间分成多半给程序进行使用,比如电脑只有8个处理器,但是运行了上百个应用程序,逻辑上是同时在运行上百个应用,实际上是由8个处理器在不同的任务当中做高速的切换,比如1个任务执行2毫秒不管结束没结束,就立即切换到另一个任务,本身执行的速度就是非常快的,切换我们更感知不到了。
- 空分复用技术:这个磁盘就是典型的案例,将一个固定大小的磁盘,进行分成了多个逻辑性的磁盘。硬件实际上还是一块磁盘。
3.4 异步
异步:多道程序环境允许多个程序并发执行,但由于资源有限,如cpu只有一个,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进。
虽然是多个程序在同时运行,本质上是多个任务在异步的在执行,各任务各自独立执行,相互之间互不干扰。
比如A进程正在占用CPU计算,B进程这时也想占用CPU计算,B进程只有等,等A进程算完了,A进程去访问磁盘资源了,这时B进程再占用CPU进行计算,B进程还没计算完,A进程从磁盘取出资源了,A进程发现B这时在占用CPU,这时A进程就需要等待,等B算完后再继续到CPU中进行计算。由于每个进程占用资源的时间不固定,所以进程的执行以不可预知的速度前进