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

初始操作系统---Linux

目录

 前言:

  硬件层是软件层设计的基石(冯诺依曼体系结构):

冯诺依曼体系结构:

  整个系统的运行效率

  存储分级的概念

感性的理解数据的流动:

初始操作系统:

本质:

操作系统存在的必要性:

  进程(系统里的任务): 

  操作系统创建进程的方式:

一些内容补充:

 系统调用:

小结: 


 前言:

想必计算机专业的学生都经受过<<计算机组成原理>>这门课程的拷打 , 让人感到折磨的关键在于这门课程只是提炼出所有操作系统设计的通法,而我们无论是日常使用还是以后从事相关的操作系统开发工作,接触的都是具体的操作系统---比如windows,Linux,macOS等等 . 理论指导实践,实践反哺反过来加深对理论的认识.

   操作系统是作为一款软件存在于硬件层之上的,所以先粗略的计算机底层的硬件结构有一个宏观认识对后续的学习是大有裨益的.

  硬件层是软件层设计的基石(冯诺依曼体系结构):

冯诺依曼体系结构:

  有没有想过为啥当今的平民老百姓都能一比较实惠的价格买到一台电脑?这要从冯诺依曼体系结构的提出说起:

  其中, 存储器就是内存,这也是咱们要谈到的主角 : 由于输入输出设备(键盘,显示器,网卡...)的性能远远弱于中央处理器 ,所以直接让它们进行数据传输的话会出现CPU需要不停的停下来等待输入的情况,如果加上内存就可以缓和这样的效率差,让输入输出设备和CPU专心干自己的活计. 只谈数据的话,CPU和输入输出设备都之和内存打交道.

  整个系统的运行效率

  当我们运行自己编写的程序或者从网上下载的程序时,显示有一个加载的过程,之所以如此,因为冯诺依曼体系结构规定所有程序必须在内存中运行. 程序没有运行时乖乖的待在磁盘里(输入设备),加载完成后就到了内存里,程序加载过程就是将磁盘的数据拷贝到内存里的过程.

  系统运行本质就是各种数据在设备之间的流动 , 具体来说 , 数据的流动的本质就是不同设备之间进行的数据拷贝 , 因此,操作系统运行的效率在硬件层面就由设备的拷贝效率决定.

  存储分级的概念

上图是计算机的存储分级图,可以看到为了达到一定的性价比,除了内存外最快的CPU也分了这么多类 . 这也就更加佐证了内存的必要性 , 毕竟理论上来讲咱可以为了追求性能全怼寄存器 , 可这样会把计算机的价格带到平头老百姓无法企及的高度.不说了,冯诺依曼万岁!!!

感性的理解数据的流动:

  既然都谈到硬件了,那咱就通过微信聊天的例子来粗略的理解一下数据的流动: 图画的有点草率,但关键在于认识到数据的流动本质就是不同设备之间的拷贝以及内存这样一个作为数据中间层的家伙.

初始操作系统:

本质:

操作系统是一款软件,其核心功能是管理各种系统资源.

操作系统范围的明晰:

  1. 狭义上的操作系统指的单单是与内核(kernel)强相关的内容 , 比如进程管理,内存管理,文件管理,驱动管理等等.
  2. 广义上的操作系统除此之外还包含了其他内容,比如外壳程序(命令行界面或图形化用户界面),系统原生库,系统预装的软件等等.

操作系统存在的必要性:

    下图是软硬件体系结构的示意图,可以看到 : 操作系统处于中间位置,起着桥梁的作用.

  1.     方便二次开发:对于上层的开发者来说 , 直接管理底层资源是很困难的,这需要极高的专业知识,由操作系统提供一些系统调用接口方便二次开发和功能拓展就会方便很多
  2.     降低使用门槛:对于普通用户来说,计算机世界的各种操作和逻辑更是艰深晦涩 , 由开发者在基于操作系统调用开发的基础上设立诸如图形化用户界面之类的外壳程序 , 就能让大大降低用户的学习成本,提升用户体验
  3.    保护系统安全:就如同银行一样,操作系统要给用户提供服务,却又不信任用户(担心非法操作),有操作系统在中间严加防守的的话可以很大程度让保护计算机的安全

总之,操作系统是一款专注于"搞管理"的软件 , 他对上为用户提供稳定方便的运行环境,对下统筹管理软硬件资源 , 使我们与计算机打交道的中间人.

  进程(系统里的任务): 

  进程这个词语是从英语翻译过来的 , 比如在Linux内核代码里进程就体现为 task , 也就是任务. 这样就很好理解了,当一个系统启动或我们打开一个应用,本质就是给计算机分配了一个又一个的任务.

  操作系统创建进程的方式:

  前面我们提到操作系统的核心功能是管理 , 那么它如何管理呢? 答案是先描述在组织.

  下面用例子来解析:

  想象一下你是一个大老板,手下员工无数 , 想要管理员工 , 并不需要和他们每一个人见面,而是让下级领导人去负责收集数据 , 最后你通过这一对数据的某些特征值就可以掌握公司的情况了.

  那负责收集数据的领导人又该怎么办呢 ? 最朴素的办法是建立一张execl表格,把每个员工的数据录入,然后一个一个遍历.可这样效率很低,于是可以提取出每个员工对于公司来讲有价值的属性 , 比如电话,工位,工龄 , 以及可能是最重要的KPI . 对于每一个具体的员工只用在这些属性上按需填写就好.

  像这样把一类对象的共同特征提炼出来的思想不就是c语言里的结构体?因此描述就可以理解为创建结构体.

  当一个接一个具体员工的数据井井有条的排列在一起 , 想要快速的找到所期望的某一个人通过一行一行的往下看在效率上肯定行不通,所以可以通过合适的数据结构来提升查找效率.

  数据结构所专注地不就是增删查改?所以,对员工的管理,就转化为了对一个个结构体对象的增删查改!!!

一些内容补充:

 系统调用:

  在上面操作系统存在的必要性里我们提到 , 操作系统不信任上层用户,却依旧提供服务, 那是如何提供服务的呢?答案是系统调用接口(其实就是函数啦).

  当上层用户或者开发者想要访问到系统底层的硬件资源时 , 通过在程序里使用系统调用接口来像操作系统下发指令 , 由操作系统访问处理后再告诉我们结果 . 

  这里对系统调用的概念理解只是点到为止 , 当我们至少可以根据一个原则来粗略的判断自己的程序是否涉及系统调用---是否访问了硬件资源 . c语言中一个最简单的例子就是printf函数 , 当我们发现输入的内容"hello world" 出现在显示器上时 , 就可以断定涉及了系统调用 , 因为显示器是外设,是底层的硬件.

  一旦涉及系统调用 , 那么这个执行的过程就一定贯穿了整个硬件体系结构,图片我在放一次

小结: 

  初次以一个宏观视角了解了操作系统后,我对手头的手机啊电脑啊啥的又有了不同的看法 . 一想到冯诺依曼体系结构的设计使得现代电子设备成为了高度模块化和性价比的产物,就让人心潮澎湃哈哈哈哈 , 甚至是心怀感恩 , 毕竟让平头老百姓也能一比较实惠的价格用上高科技产品.

相关文章:

  • 《HarmonyOS Next状态栏动画实现案例与代码解析》
  • 从node:xxx 到模块系统演进:Node.js 的过去、现在与未来的思考
  • vulhub靶场Web-Machine-N7通关攻略
  • Oracle 启用 Sql 跟踪的方式
  • 【Linux】--- 线程互斥
  • 【保姆级】阿里云codeup配置Git的CI/CD步骤
  • Spring MVC 深度解析:原理、源码剖析与实战
  • Ubuntu22.04 上安装Qt5以及编译MySQL驱动
  • 从 @SpringBootApplication 出发,深度剖析 Spring Boot 自动装配原理
  • centos 9 编译安装 rtpengine (快方式)-使用 debian12 系统自带
  • SQL 基础 BETWEEN 的常见用法
  • leetcode hot100 柱状图中的最大矩形
  • Linux下S3cmd使用方式详解:从入门到高级的对象存储管理
  • RISC-V AIA学习2---IMSIC
  • macOS 安装 Miniconda
  • C++ Json-Rpc框架-3项目实现(1)(1.其它函数实现2.消息类型字段定义3.消息Message/通信Muduo抽象具象实现)
  • 深入解析 Vue3 响应式系统:原理、性能优化与应用场景
  • leetcode 2116. 判断一个括号字符串是否有效 中等
  • 如何扩展 Linux 中 ext4 文件系统的大小
  • 【PostgreSQL】pg各版本选用取舍逻辑与docker安装postgres:15
  • “除非我去世”,马斯克称仍致力于继续执掌特斯拉
  • 为小龙虾洗清这些“黑锅”,这份科学吃虾指南请收好
  • 俄乌上周在土耳其直接谈判,外交部回应
  • 巴基斯坦外长访华是否与印巴局势有关?外交部:此访体现巴方高度重视中巴关系
  • 盲人不能刷脸认证、营业厅拒人工核验,央媒:别让刷脸困住尊严
  • 玉林一河段出现十年最大洪水,一村民被冲走遇难