文章目录
- 💐专栏导读
- 💐文章导读
- 🌷计算机之父——冯·诺依曼
- 🌷冯诺依曼体系结构
- 🌺木桶效应
- 🌷操作系统(Operator System)
- 🌺如何理解操作系统
- 🌺系统调用和库函数概念
💐专栏导读
🌸作者简介:花想云 ,在读本科生一枚,致力于 C/C++、Linux 学习。
🌸专栏简介:本文收录于 C语言初阶专栏,本专栏主要内容为本专栏主要内容为Linux的系统性学习,专为小白打造的文章专栏。
🌸相关专栏推荐:C语言初阶系列、C语言进阶系列 、C++系列、数据结构与算法。
💐文章导读
从本章开始,我们将进入Linux进程
的学习。但是在进程学习之前,我们必须得对计算机的底层知识以及操作系统做一些了解,方便我们之后更好的学习。本章我们将认识什么是冯诺依曼体系结构
与操作系统
相关概念。
🌷计算机之父——冯·诺依曼
计算机的世界有两尊大神,一位是冯·诺依曼
,另一位是阿兰·图灵
。作为计算机的受用者,我想我们有必要认识一下这两位前辈。
🍁冯·诺依曼
约翰·冯·诺依曼
(John von Neumann)是一位著名的数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。他还是是现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“现代计算机之父
”、“博弈论之父
”。冯诺依曼体系结构便是它的经典理论,从我们经常所能见到的计算机到当前最先进的计算机都采用的是冯诺依曼体系结构
。所以冯诺依曼是当之无愧的数字计算机之父。
🍁阿兰·图灵
艾伦·麦席森·图灵
(Alan Mathison Turing),英国数学家、逻辑学家,被称为计算机科学之父
,人工智能之父。图灵对于人工智能的发展有诸多贡献,提出了一种用于判定机器是否具有智能的试验方法,即著名的图灵试验
,每年都有试验的比赛。此外,图灵提出的著名的图灵机模型为现代计算机的逻辑工作方式奠定了基础。
🌷冯诺依曼体系结构
我想你一定在某时某刻某地见过这样一幅图片:
要想理解这幅图片的含义,首先我们的清楚几个概念:
磁盘并不等同于内存
;输入设备于输出设备都叫作外设
;在数据层面,CPU不直接与外设沟通,而至于内存打交道
;外设也只会与内存进行沟通
;
接下来我们谈谈为什么。
🌺木桶效应
什么是木桶效应
?一桶水最多能装多少水,并不是看竹板中最长的那个,而是取决于最短的那块板
。
同理,计算机一直追求的是极致的计算速度。我们知道CPU
的计算速度是非常快的,但是计算机的速度并不能由CPU
决定。
CPU
的计算速度飞快,但是如果数据的供应跟不上,那么CPU
只能说是徒有一身本领却无处施展
。我们要知道,外设
(以磁盘为例)的访问速度是非常慢的,因而,尽管磁盘的容量非常大,例如几G或几百G的硬盘也就几十块钱。如果CPU
直接从磁盘读取数据,那么它们整体的速度就会很慢。
我们可能听说过一个概念——一个程序在运行前都会先加载到内存中
,为什么呢?内存
相对于磁盘来说读取速度非常的快,所以有了内存
的存在,我们可以将要读与的程序预加载
到内存中,因为内存的读取速度非常快,所以CPU
直接从内存中拿数据就好了。
因为内存的读取速度很快,所以价格较为昂贵。尽管它能存储的数据很少,但却非常的重要。
🍁总结——
- 在数据层面,CPU不直接与外设沟通,而至于内存打交道。
🌷操作系统(Operator System)
🌺如何理解操作系统
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)
。 那么什么操作系统是什么?又有什么用呢?
🍁OS是什么
首先,操作系统是一款软件
,是一款搞管理
的软件。管理的对象是所有的软硬件资源
。
🍁为什么要管理
上一小节我们谈到了冯诺依曼体系结构,它反映的是硬件与硬件之间的交互方式。计算机包含各种各样的硬件设施,它们之间进行各种的交互。用户使用计算机是要完成某一项任务的,于是需要对这些硬件做指挥来完成这个任务。但是,我们用户不能直接和硬件沟通,因为语种都不同。所以,我们需要某种工具,将这些硬件管理或组织起来进行运作从而完成某件事,这个工具就叫做操作系统
。它做管理的目的就是为用户提供(或用户所写的程序)提供一个良好的执行环境
。
🍁如何做管理
一句话——先描述,再组织
。就像校长管理学生,先对每个学生对象都先作描述,在意某种数据结构将学生对象的信息保存起来。例如:
生成一个包含学生相关信息的结构体
;
struct student
{
int code; // 学号
char* name; // 名字
char* sge // 年龄
//...
再将每个学生所对应的结构体作为一个结点进行链接,生成链表
一样的数据结构;
当校长
想要开除某个学生
时,他并不会直接找到学生本人说“你现在被开除啦,赶紧回家去吧!”,而是删除了该学生信息所对应的结点
,然后将通知该学生的任务下达给辅导员
。
辅导员
也不会问为什么,你给我任务,我就执行
。于是辅导员便找到学生并通知他,你被开除了。
操作系统
扮演的角色就如同校长
,它只负责作决策
。而决策由谁来执行呢?答案是硬件驱动
,如同辅导员
,所以硬件驱动的角色是一位决策执行者
。而软硬件资源
就如同学生,是被管理者
。
🍁总结——
计算机管理硬件
先描述
起来,用struct
结构体;再组织
起来,用链表或其他高效的数据结构
;
从用户到硬件的管理通常是层状的:
🌺系统调用和库函数概念
🍁系统调用
- 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的
部分接口
,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用
。
那么我们之前有没有使用过系统调用呢?答案是肯定是有的。当我们写下printf("hello world")
这样的代码,运行起来之后就会在屏幕上显示hello world
的字符。其实你以为你写下这句代码,计算机就会在屏幕上打印内容是你的功劳,但其实,这是编译器在底层做了系统调用,你确实没有直接使用系统调用,因为这是编译器帮你完成的。
🍁库函数
- 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以
对部分系统调用进行适度封装
,从而形成库
,有了库
,就很有利于更上层用户或者开发者进行二次开发。
我们对库已经不是第一次认识了,C语言、C++等语言都有自己的库。库就是对具有某些相似功能的函数作封装方便用户直接调用,从而提高开发的效率。
本章的内容就到这里了,下一章我们就将进入进程的学习,本章的内容是为下一章的学习做铺垫,当我们对底层做了足够的了解,才能更好的明白上层开发所做的某些事的意义。
点击下方个人名片,可添加博主的个人QQ,交流会更方便哦~
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓