目录

导读

专栏导读

冯·诺依曼

冯诺依曼体系结构

木桶效应

操作系统(Operator System)

概念

设计OS的目的

系统调用和库函数概念


导读

六一儿童节快到了,提前祝大家六一儿童节快乐哦!!!

六一儿童节的即将来到,祝愿我家宝,愿你童心未泯,无忧无虑;童真相伴,快乐每天;童言无忌,不要束缚;童话生活,时刻甜蜜;童年依在,幸福永远。祝儿童节快乐!

专栏导读

作者简介:日出等日落,在读本科生一枚,致力于 C/C++、Linux 学习。

本文收录于 Linux系列,本专栏主要内容为 C++ 初阶、C++ 进阶、STL详解等,持续更新!

相关专栏推荐:C语言系列 、Linux系列 、数据结构与算法

冯·诺依曼

计算机的世界有两尊大神,一位是冯·诺依曼,另一位是阿兰·图灵

冯·诺依曼

  • 约翰·冯·诺依曼(John von Neumann)是一位著名的数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。他还是是现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“现代计算机之父”、“博弈论之父”。冯诺依曼体系结构便是它的经典理论,从我们经常所能见到的计算机到当前最先进的计算机都采用的是冯诺依曼体系结构。所以冯诺依曼是当之无愧的数字计算机之父。

阿兰·图灵

  • 艾伦·麦席森·图灵(Alan Mathison Turing),英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。图灵对于人工智能的发展有诸多贡献,提出了一种用于判定机器是否具有智能的试验方法,即著名的图灵试验,每年都有试验的比赛。此外,图灵提出的著名的图灵机模型为现代计算机的逻辑工作方式奠定了基础。

冯诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。、

  • 截至目前,我们所认识的计算机,都是有一个个的硬件组件组成
  • 输入设备:键盘、话筒、摄像头、网卡、磁盘
  • 输出设备:显示器、磁盘、网卡、声卡音响
  • 外设一般都会比较慢一些,以磁盘为例
  • 内存还不是最快的,CPU最快

注:

  1. 磁盘并不等同于内存
  2. 输入设备于输出设备都叫作外设
  3. 在数据层面,CPU不直接与外设沟通,而至于内存打交道
  4. 外设也只会与内存进行沟通

那我们为什么还需要内存呢?

因为外设较慢,CPU很快,但是整体的效率以外设的速度为准,这样就不太合适,为了解决这个问题,就出现内存。

内存的存在就可以大大缓解外设的效率低的问题,内存的存在可以对数据进行预加载,CPU以后在进行数据计算的时候,根本不需要访问外设,只要访问内存就可以了

木桶效应

对于像【磁盘】这种外设来说虽然它有着大容量的内存,但是读写速度却非常慢,机械硬盘读写速度平均60—80M每秒;固态硬盘不同品牌型号之间,平均大约在150—300M每秒

但是对CPU来说,也就我们上面说到过的运算器 + 控制器,它的运算速度比磁盘不知道要快出多少倍了。一个写入很慢,一个读入很快,真的可以兼容吗?

大家应该都听过木桶效益

什么是木桶效应呢?一桶水最多能装多少水,并不是看竹板中最长的那个,而是取决于最短的那块板

同理,计算机一直追求的是极致的计算速度。我们知道CPU的计算速度是非常快的,但是计算机的速度并不能由CPU决定。

CPU的计算速度飞快,但是如果数据的供应跟不上,那么CPU只能说是徒有一身本领却无处施展。我们要知道,外设(以磁盘为例)的访问速度是非常慢的,因而,尽管磁盘的容量非常大,例如几G或几百G的硬盘也就几十块钱。如果CPU直接从磁盘读取数据,那么它们整体的速度就会很慢。

CPU ——纳秒(ns) 内存 ——微秒(us) 外设 ——毫秒(ms)

我们可以知道CPU和外设差距是非常大的,因此我们需要内存这个东西来进行过渡

我们可能听说过一个概念——一个程序在运行前都会先加载到内存中,为什么呢?内存相对于磁盘来说读取速度非常的快,所以有了内存的存在,我们可以将要读与的程序预加载到内存中,因为内存的读取速度非常快,所以CPU直接从内存中拿数据就好了。

因为内存的读取速度很快,所以价格较为昂贵。尽管它能存储的数据很少,但却非常的重要。

  • 在数据层面,CPU不直接与外设沟通,而至于内存打交道。

操作系统(Operator System)

概念

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

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

他是一款进行软硬件资源管理的软件

设计OS的目的

  • 与硬件交互,管理所有的软硬件资源
  • 为用户程序(应用程序)提供一个良好的执行环境

如何理解 “管理”

就像校长管理学生,先对每个学生对象都先作描述,在意某种数据结构将学生对象的信息保存起来。

例如:

当校长想要开除某个学生时,他并不会直接找到学生本人说“你现在被开除啦,赶紧回家去吧!”,而是删除了该学生信息所对应的结点,然后将通知该学生的任务下达给辅导员。

辅导员也不会问为什么,你给我任务,我就执行。于是辅导员便找到学生并通知他,你被开除了。

操作系统扮演的角色就如同校长,它只负责作决策。而决策由谁来执行呢?

答案是硬件驱动,如同辅导员,所以硬件驱动的角色是一位决策执行者。而软硬件资源就如同学生,是被管理者


管理者和被管理者,是不需要直接沟通的!

❓管理者和被管理者都没有直接沟通,他如何管理我呢?

管理的本质:对被管理对象的数据做管理!!!

那么管理者是如何拿到被管理者的数据呢?

管理的本质:先描述,再组织

我们可以把学生理解为硬件(软件也可以),校长就是操作系统,辅导员就为硬件驱动

⭐总结

计算机管理硬件

  • 先描述
  • 再组织

系统调用和库函数概念

⭐系统调用

  • 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用

那么我们之前有没有使用过系统调用呢?答案是肯定是有的。当我们写下printf(“hello world”)这样的代码,运行起来之后就会在屏幕上显示hello world的字符。其实你以为你写下这句代码,计算机就会在屏幕上打印内容是你的功劳,但其实,这是编译器在底层做了系统调用,你确实没有直接使用系统调用,因为这是编译器帮你完成的。

⭐库函数

  • 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

我们对库已经不是第一次认识了,C语言、C++等语言都有自己的库。库就是对具有某些相似功能的函数作封装方便用户直接调用,从而提高开发的效率。

文章的最后,祝大家六一快来哦!!!