当前位置: 首页 > news >正文

《进程概念(1)》

引言:

在认识了Linux的基础开发工具之后,接下来我们接着学习新的Linux知识了,接下来我们就先从进程开始,在学习进程之前,我们需要先有一些前置的知识,这篇文章就先来学习一下冯诺依曼体系结构和操作系统。

一:冯诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
下面先给出一张逻辑图:
在这里插入图片描述
截至目前,我们所认识的计算机,都是由一个个的硬件组件组成

  1. 输入单元:包括键盘、鼠标、扫描仪、写板等。
  2. 中央处理器(CPU):含有运算器和控制器等。
  3. 输出单元:显示器,打印机、扬声器、耳机等。
  4. 存储器:内存、硬盘、固态硬盘、U盘、光盘等

看上面的执行流程图,有的同学可能会有疑问,用户通过输入设备来输入数据,然后交给CPU来处理,再通过输出设备进行输出,内存好像并没有参与啊,那么内存存在的意义是什么呢?其实内存是非常非常重要的,下面通过几个方面来解释:

1. 内存的意义?

(1)体系结构效率问题:

我们要知道这些部分的效率是明显不对等的,输入设备相较于CPU来说是很慢的,而CPU执行速度非常快,如果输入设备(外设)直接跟CPU打交道的话,整体的执行效率就会大打折扣,也就是所谓的木桶效应,因此需要内存来做两者交流的一个中转站,因为数据是可以提前加载到内存里面的,这样就能做到数据的相对等,由之前的输入设备与CPU的交互变为了内存与CPU的交互,使得CPU能够不断地处理数据,而不是等半天才接到一个任务,导致效率低下,比如我们在看电影,刷视频的时候会存在一个白色进度条,这个就是数据提前加载的一个案例,在一定程度上避免的观看时的卡顿,提升了用户的观看体验。
在这里插入图片描述

(2)存储分级的问题:

先来看这张图:
注:这里的存储效率可以理解为拷贝的效率。
在这里插入图片描述
可以看到在这个金字塔形状的图里,越往上走,这些存储设备的效率越高,但是存储空间越小,也就是说内存之间还存在着存储分级,说到这里有聪明的同学就要说了,既然越往上面的存储设备效率越高,那么都用上面的存储设备不就可以了吗?其实不然,因为越往上面,这些存储设备的成本是很高的,而且存储空间很有限,这样的话计算机怎么可能普及大众呢?普通人肯定消费不起啊,正是因为存储的分级,才使得内存效率得到了平衡,因此内存也就必须存在。

(3)局部性原理:

正是因为局部性原理,使得数据可以提前加载到内存中,因此大部分情况下就可以转换为CPU与内存的交互,因此计算机的效率就以内存为主了。

2. 冯诺依曼的现实意义:

正是由于冯诺依曼体系结构,使得计算机的效率以内存为主,使得用户能够用较低的价格获得一台性能不错的计算机,使得计算机能够得到大范围的普及,从而孵化出了庞大的网络世界。(冯诺依曼体系结构的伟大)

3.小结:

(1)数据层面来看各部分的关系:

  1. 在数据层面来看,CPU并不会直接和输入、输出设备外设)打交道,CPU的读写数据只会和内存进行交互。
  2. 考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)(数据层面)
  3. 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
  4. 一句话,所有设备都只能直接和内存打交道

(2)数据流动的本质:

所谓的数据流动,实质上就是数据的拷贝,因此计算机的效率问题也就是由设备的拷贝效率决定的。

(3)我们口中的输入输出是站在谁的角度:

其实,我们口中的输入输出都是站在内存的角度(也可以说是加载到内存中的程序的角度)来说的,比如:IO流

4. 实例:

(1)C语言程序的执行:

在这里插入图片描述

(2)QQ聊天:

在这里插入图片描述

二:操作系统(Operator System)

1. 概念:

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

  1. 内核(进程管理,内存管理,文件管理,驱动管理)
  2. 其他程序(例如函数库,shell程序等等)
    在这里插入图片描述

2. 设计OS的目的

  1. 对下,与硬件交互,管理所有的软硬件资源。
  2. 对上,为用户程序(应用程序)提供一个良好的执行环境。
    在这里插入图片描述

3. 理解OS系统

(1)先描述,再组织:

这里拿校长、导员、学生之间的关系来说明:
在一个学校里,学生的数量是非常多的,如果让校长直接去管理的话,校长肯定是会被累死的,因此就需要分班级让辅导员、班主任去一级一级地来进行代管理,校长就不需要自己一个人去直接管理这么多的学生了,只需要通过辅导员就可以间接地对全校的学生进行管理。
在这里插入图片描述
再回到这里的操作系统,这里的操作系统怎么管理这些系统呢?
肯定是通过数据结构来管理起来的,用什么样的数据结构呢?于是就需要先对这些系统进行描述,接着再将这些系统通过某种数据结构组织起来,这就是先描述,再组织
这是把现实世界中的问题进行计算机建模的核心规律。
这就是为什么C++里会存在类和STL的原因,为了方便我们管理。

(2)OS管理的本质:

在这里插入图片描述

(3) 用户是如何管理系统的?

由于确保操作系统的安全性,是不能让用户直接对操作系统进行管理的,下面来通过银行的案例来理解:
在这里插入图片描述
用户通过系统调用来管理系统,避免了用户直接接触操作系统,确保了操作系统的安全性。我们在写代码的时候用到的库函数其实就是系统调用的一种封装。
在这里插入图片描述

  1. 在开发角度,操作系统对外会表现为⼀个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
  2. 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

完结!

http://www.dtcms.com/a/436005.html

相关文章:

  • 北京企业模板建站南京今天重大新闻事件
  • Pulsar适配AI场景:从技术原理到实战落地
  • 石景山广州网站建设医院网站建设官网
  • 成都做网站的公司弄个小程序要多少钱
  • 手机报价网站大全宣传片拍摄内容
  • BTS7960 四轮前进测试 workable solution
  • 网站架设流程专门app软件制作费用
  • 计算机网站建设维护的目的wordpress 系统需求
  • 无形资产 网站建设官方网站建设与维护好处
  • 程序员用来做笔记的网站网站源码绑定域名
  • 网站建设开发ppt模板德州建设街小学网站
  • 【代码随想录day 34】 力扣 62.不同路径II
  • 哪些公司做网站好河南营销型网站建设
  • 做网站需要写程序绿色营销案例100例
  • 【Linux】进程间通信(1)
  • 域名所有人是网站名不能转出用凡科做网站要钱吗
  • asp.net网站开发上网站开发哪家公司电话
  • 个人做的网站有什么危险吗万网官网域名注册多少钱
  • 网站机房建设成本某公司网络营销现状分析
  • 服务器主机 网站安阳企业网站优化外包
  • DS container adapters <B> priority_queue in Huffman Algorithm 2/99
  • 英语学习-Saints042
  • 建立网站条件一级域名如何分发二级域名
  • wordpress发布失败手机网站优化需要注意什么
  • 北京模板网站建设wordpress远程本地化
  • 【P0】Spring Cloud 面试篇
  • freertos内部机制
  • 苏州公司做变更网站建筑工程网站建设
  • 广州最好网站建设公司石家庄网站制作仓谷
  • 腾讯企点客户通长沙网站seo推广公司哪家好