初识操作系统

目录

一、冯诺依曼体系结构

1. 硬件构成

2. 冯诺依曼体系结构工作原理:

3. 数据流动

二、操作系统

1. 操作系统概念

2. 为什么要有操作系统

3. 操作系统的各层级关系

(1)硬件层

(2)驱动层

(3)操作系统层 

(4)用户层 

(1)用户层 

(2)系统调用接口 

(3)用户操作接口

系统调用和库函数的关系

四、管理

1. 管理规则

2. 如何管理 


一、冯诺依曼体系结构

1. 硬件构成

在了解操作系统之前,要先了解现代计算机系统。 现代计算机系统就不得不提到冯诺依曼体系结构。

冯诺依曼体系结构有3个基本原则:

(1)二进制逻辑

(2)程序存储执行

(3)计算机由5个部分组成:运算器、控制器、存储器、输入设备、输出设备

以下是现代计算机系统的存储架构 : 

  • 输入设备:输入设备是给计算机获取外部信息的设备,主要包括键盘鼠标声卡网卡摄像头 等
  • 输出设备:输出设备是给用户呈现根据输入设备获取的信息经过一系列的计算后得到显示的设备,主要包括显示屏喇叭网卡打印机 等
  • 存储器:存储器就是计算机的记忆设备,因此存储器可以保存信息。存储器分为两种,一种是主存,也就是内存,它是 CPU 主要交互对象,还有一种是外存,比如硬盘软盘 等
  • 运算器:运算器最主要的功能是对数据和信息进行加工和运算。它是计算机中执行算数和各种逻辑运算的部件。运算器的基本运算包括加、减、乘、除、移位等操作,这些是由 算术逻辑单元(Arithmetic&logical Unit) 实现的。而运算器主要由算数逻辑单元和寄存器构成。
  • 控制器:指按照指定顺序改变主电路或控制电路的部件,它主要起到了控制命令执行的作用,完成协调和指挥整个计算机系统的操作。控制器是由程序计数器、指令寄存器、解码译码器等构成。

其中,中央处理器CPU包括运算器控制器。 这里存储器可以理解为内存,外设要输入或者输出数据,只能写入到内存或从内存中读取,输入和输出是站在存储器角度看的。 

计算机是用来进行数据计算的,所以我们要先通过 输入设备 来把数据传输给计算机,并通过 中央处理器 的计算后,把计算结果通过 输出设备 传输出去。

那么,在冯诺依曼体系中, 存储器 起到的作用是什么?我们为什么需要内存呢?

输入、输出设备 称为外围设备,即 外设,而 外设 一般都会比较慢,比如磁盘;以磁盘为例:相对于内存,磁盘的读写速度非常慢。而 CPU 中的存储器的读取速度又要快于内存。根据木桶原理,一个木桶能装多少水,不是取决于这个木桶最长的那个木板,而是最短的那个。因此,如果 CPU 直接从磁盘中读取数据并处理的话,速度会非常慢,浪费了 CPU 的性能。

为了解决这个问题,就有了 存储器(内存) 的出现。在计算机工作时,内存可以临时存储数据。例如当 CPU  在计算A任务时,内存可以预先将B任务加载进来,CPU 处理完A任务,就直接从内存中读取B任务的数据。

CPU中央处理 的速度是最快的,通过与 存储器 的配合,可以做到高效率处理数据;如果没有 存储器 的存在,那么计算机的整体效率就取决于 外设,正是因为 存储器 的存在,可以对数据进行预加载,CPU 以后在进行数据计算的时候,就不需要访问外设了,直接从内存中读取就可以了效率很高。

冯诺依曼 体系的高明之处在于可以大大提高计算机的运算效率,得益于 存储器 这个关键部件。

2. 冯诺依曼体系结构工作原理:

        当输入设备接收到数据,数据将被存储到存储器,控制器发出取数据和运算的指令,数据被取出方去放入运算器中加以运算,运算结束后,控制器发出存入数据的指令并输出,数据被存储到存储器,再通过输出设备进行输出。(整个过程控制器的指令占领导地位) 。

这个过程类似于人类接收处理输出信息的过程:

        当眼睛看到某些信息,这些信息被存储到记忆装置,大脑从记忆装置取出信息,并加以思考运算,再放回记忆装置,大脑控制记忆装置将信息传输给嘴巴,将信息表达出来。(这个过程大脑的指令占领导地位)。

结论1在数据信号层面,一般 CPU 不与外设直接沟通,而是直接和 内存(存储器) 打交道

了解了以上内容后,我们可以用硬件的方案来解释一些软件的行为:

  • 我们编译出的可执行程序是一个文件。而文件都保存在磁盘中,磁盘是一个外设。所以我们在运行这个可执行程序的时候,必须要先把它加载到内存之中,这是计算机的体系结构决定的。
  • 众所周知,计算机开机的过程是加载操作系统的过程。而之所以需要加载操作系统,是因为 CPU 只能从内存中读取数据。

3. 数据流动

我们用一个例子来解释数据的流动过程:假设你与你的朋友在用qq聊天,你给他发送了一个“你好”,并被他看到。这是一个什么样的过程呢?

对于使用qq聊天时的数据流动,站在纯硬件角度:

        你在键盘上输入消息,这些消息被加载进内存,CPU 从内存中读取这些数据并进行计算加密。CPU 计算完成后把结果写回内存,并把该数据传输到输出设备。这里传输到输出设备是两个动作,第一是把你输入的消息刷新显示在你自己的显示器上,第二是把数据通过网卡发送到网络里(具体过程忽略)。

        朋友再通过他的输入设备(网卡)获取数据并交给内存,CPU从内存中读取数据,并进行解密计算,计算完成后把数据写回内存,最终把数据显示在朋友的显示器上。

电脑的硬件决定了数据在流动的时候必须要遵守冯诺依曼的规则。 数据从输入设备只能到达内存,无法到达其他地方。

结论2在数据信号层面,一般外设只与内存直接沟通。

有些设备既可以当作输入设备,又可以作为输出设备,比如网卡、磁盘等等。

我们在qq聊天的过程中,加密解密的算法、网卡发送等等操作都是qq这个软件内部执行的,我们目前无需考虑。

衔接内容:我们日常使用的 printf 函数 与 scanf 函数,其实就是软件在获取输入设备中的数据以及读取内存中的数据。


二、操作系统

1. 操作系统概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库, shell程序等等)

2. 为什么要有操作系统

        操作系统存在的意义在于:对下管理好软硬件资源、 对上给用户提供稳定的、高效的、安全的运行环境。我们普通用户无法直接与计算机中的硬件打交道,也就是说,在没有 操作系统 的情况下,我们几乎是无法使用计算机的,于是一些计算机大牛就创造出了各种好用的 操作系统

3. 操作系统的各层级关系

(1)硬件层

 冯诺依曼体系结构的组成部分都是计算机硬件,这些硬件都遵守冯诺依曼体系结构:

程序员不可能直接跟这些硬件打交道,所以计算机的科学家们在这些硬件基础之上,安装了一层软件,能够根据用户输入的指令控制硬件,决定内存何时从输入设备读取多少数据,何时按照哪种刷新方式将缓冲区刷新到输出设备等,这层软件就是操作系统。操作系统为用户程序提供一个更好、更简单、更清晰的计算机模型。也就是说,操作系统相当于是一个中间层,为用户层和硬件提供各自的借口,屏蔽了不同应用和硬件之间的差异,达到统一标准的作用。 

(2)驱动层

操作系统并不会直接和底层硬件打交道。所以在操作系统和底层硬件之间增加了一层驱动层,驱动层能够使操作系统控制底层硬件设备。它为操作系统提供外部设备的操作接口,并且实现设备的驱动程序。 操作系统可以不管操作的设备内部实现,只需要调用驱动的接口即可。

驱动程序是介于操作系统与硬件之间的媒介,实现双向的传达,即将硬件设备本身具有的功能传达给操作系统,同时也将操作系统的标准指令传达给硬件设备,从而实现两者的无缝连接。操作系统就只需关心何时读取数据,而不用关心数据是如何读取的了,也就是完成了操作系统与硬件之间的解耦。

那么驱动是如何成为这个媒介的呢?

是通过安装硬件驱动来作为媒介,键盘、鼠标、硬盘、显示器、主板、显卡、声卡、网卡、打印机等硬件设备都有各自的驱动程序,驱动程序是硬件厂商根据操作系统编写的配置文件。

操作系统相当于计算机体系结构的大脑,驱动程序相当于四肢,来操控各种硬件。

(3)操作系统层 

操作系统既然用来管理软硬件资源,但是软硬件资源又那么多,怎么进行管理呢?根据资源可将管理分为以下4种:

  • 内存管理:内存空间的分配与回收、地址转换、内存空间的扩充、内存共享、存储保护
  • 驱动管理:设备驱动程序的分类、更新、删除等
  • 文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护
  • 进程管理:进程的调度

(4)用户层 

(1)用户层 

操作系统为用户服务,那么操作系统之上就是用户层,用户层在Windows系统上就是图形化界面,在Linux上就是命令行:

(2)系统调用接口 

       操作系统给用户提供了良好的服务,那么操作系统相信用户吗?

这样问可能会有些奇怪,我们来举个例子方便理解:张三去银行存钱,那么在张三进入银行的时候,就已经是银行的客户了,银行的工作人员会给张三倒水、整理相关资料,对张三进行各种应有的服务,但是会把金库的门打开,让张三自己进入金库存放现金吗?这是肯定不会的,银行不信任张三。

那么银行是如何做到在不信任客户、不允许客户查看银行系统的前提下,给客户提供各种存款、借贷服务的呢?

在银行里有多个小窗口,客户通过窗口把银行卡、身份证等证件交给工作人员,由工作人员给客户办理相关业务。这样既避免了客户查看银行的系统,保证了银行的安全,又给客户提供了服务。 


 回到问题上:类比到操作系统当中,操作系统给我们提供非常良好的服务,并不代表操作系统会相信我们,相反不会,因为操作系统不信任用户用户是不被允许进入到操作系统内部去对数据进行任意访问与修改的为了保护自己,要在操作系统和用户层之间增加了一个系统调用接口,用来进行用户和内核空间的通信。系统调用接口是站在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,就叫做系统调用接口

我们知道 Linux 是使用C语言编写的,所以 Linux 的系统调用其实就是操作系统设计的C函数。通过这种方式,既能保证操作系统本身的封装性,又能保证给用户提供相应的功能。 

(3)用户操作接口

        系统调用并不和程序员直接交互。系统调用接口比较复杂,让程序员每次都使用系统调用接口去管理硬件的前提是对系统要有一定程度的了解,系统提供的这些接口使用起来成本会比较高。于是,就有厉害的人对系统调用接口进行封装,形成了库,比如GUN C&C++第三方库,以语言方式呈现,这就有了用户操作接口,再比如有一些人基于系统调用接口进行了二次软件开发,这些二次软件开发中,有一部分是图形化界面,还有一部分是 shell与工具集,有利于更上层用户或者开发者进行二次开发:

 这就是计算机体系图。


整个计算机体系的软硬件结构是层状的,我们无法绕过特定层,而是必须从上到下贯穿、从下到上获取。以我们以前学习过的指令为例:

比如创建文件指令 touch ,我们只写入了一条 touch 指令,看似简单,但是这条指令要通过系统调用接口,由操作系统向磁盘发起文件创建的相关指令,然后驱动程序就会拿着这些指令交给对应的硬件来执行,把文件信息写入磁盘后,再把完成信息依次向上返回。所以单单是一条简单的指令,也是要贯穿操作系统的体系结构的。

系统调用和库函数的关系

系统调用是操作系统提供的接口,库函数是对系统调用的封装。但不是所有的库函数都会封装系统调用,比如一些单纯进行计算、加密的库函数不需要访问外设,也就无需调用系统调用。

经过特定系统调用的组合,可以给用户提供功能更加丰富的库函数,通过调用库函数可以大大的提高开发效率。


三、管理

1. 管理规则

我们知道操作系统是进行软硬件资源管理的,那么我们就来重点聊一聊操作系统如何进行硬件管理。

我们谈管理就一定有两种角色:管理者与被管理者。

假设有这样一个场景:一个学校里有三个群体,分别是校长、辅导员、学生。

其中校长是进行决策的人,所以校长为管理者。辅导员是执行决策的人,即保证决策被执行的人。而学生显然是被管理者参与执行

虽然校长是管理者,进行决策,但是同学们不妨回想一下我们在学校里见过几回校长呢?几乎没有见过面。所以管理者与被管理者是不需要直接沟通的

那么校长是怎么管理学生的呢?事实上,校长管理学生是通过管理这个学生的数据,比如成绩、违纪情况等等。所以管理的本质是对被管理对象的数据进行管理

所以管理时,需要考虑做不做、如何做,然后再去做。校长长作为管理者进行决策,但是校长并不去执行,而是由辅导员这个执行者去执行的,所以执行者的任务就是执行管理者的决策。

2. 如何管理 

那么是如何进行管理的呢?--------- 根据属性和数据管理

校长获取学生的数据是通过辅导员获取的,而学生有很多,信息也很杂乱,有姓名、年级、电话、成绩、紧急联系人等等。为了方便提取,就可以把每个学生都抽象成一个结构体 struct ,并把这些结构体节点都链接起来形成一个单链表:

 

 一个节点代表一个学生的所有信息。

现在校长做了一个决策:让这些学生中数学成绩最好的那一个代表学校参加数学竞赛,此时,这个决策就转变成了对链表的遍历查找工作。

校长又做了一个决策:开除成绩最差的学生,这个决策被转变为对链表的遍历与删除工作。

实际上,校长做出的任何决策都可以被转化成对链表的增删查改。以上校长所做的工作称为一个管理模型的建模

经过上面的介绍,我们可以把管理的本质使用六个字进行总结:先描述,再组织。这六个字在之后会贯穿整个Linux学习的过程。

其中描述的过程就是面向对象的过程,组织的过程就是我们所学习的数据结构的用法。这也是我们学习语言与数据结构的意义。

在上面的故事里,校长、辅导员、学生对应到操作系统中,分别为:

  • 校长——操作系统
  • 辅导员——硬件驱动
  • 学生——硬件(软件)

所以操作系统在进行硬件管理时,会通过各种驱动程序,对各种硬件的属性信息做提取,把这些硬件面向对象式的先描述成设备结构体,构建设备节点,然后将所有被管理的设备以某种数据结构组织起来。从此之后,对设备的管理就转换成了对数据结构的管理。这是一个对管理做建模的过程。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值