分享计算机知识,分享向计算机基础知识吹水交流贴

最近华为宣布正式推动鸿蒙,街上讨论的也是相当之非常热烈。但焦点大多聚焦且不限于如下关键词:

换皮,小米,安卓,兼容,UI.....

在这样此起彼伏的讨论声中,不乏很多打着技术的名号通过罗列技术名词来展现自己“专业性”的理性派。(实则自己都不知道自己在说啥)楼主受过几天相关专业教育,在硅谷某半导体厂混饭吃,本着近似于打假的一种心态?(其实也不是,更多的是分享)写下这篇帖子希望能用尽可能通俗的语言向大家介绍一下计算机相关的基础知识和背景,学习交流。

同时,我本人不是华为用户,对鸿蒙持偏正面态度,原因仅局限于赞赏鸿蒙本身的尝试性开创工作。帖子本身不评论鸿蒙本身好坏,不讨论是否换皮,仅介绍分享知识,供大家参考学习(并有理有据地)吹逼。(一篇分享贴也要这样站个立场,总感觉不是滋味= =)

本贴尽可能地不用能够谷歌到地书面描述去解释定性概念,欢迎同行指摘补充。先发的讨论都是一些生活中常被人问到地/论坛上看到的一些常见问题。各位看官有什么感兴趣的想了解的话题也可以在评论区留言,我如果有所涉猎一定会尽可能地解答,同时也会更新到主贴方便分享。

1. 所以到底什么是操作系统:

操作系统本质上是一个起到平台作用的软件,依托于这个平台之上我们可以运行调度各种各样其他的程序,并且使硬件能够理解其他各种各样的程序。

所谓使硬件理解,指的是操作系统会完成其他软件对于硬件的交互工作。比如说日常的录音机,音乐播放器等等程序,需要用到麦克风,显示器等等外设。但录音机 播放器程序本身对外设的硬件完全没有了解也没有操作,他们大多只是直接与操作系统交互,再由操作系统提供一个接口去控制硬件。

所谓运行调度其他的程序,指的是可以利用操作系统实现程序的准并发性。对于CPU而言,一个CPU本身在某一个时刻只能运行一个程序。操作系统的调度则可以依托于某种调度算法,使CPU在一个时间区段内分别运行多段不同的程序,从而给用户造成一种多个程序都在同时运行的感觉。以最简单的RR算法为例,如果在一个3us的时间单位里,有3个程序需要运行,那么操作系统可以选择分别运行程序a 1us, 程序b 1us, 程序c 1us。程序之间切换的间隔仅仅为1us,以此产生三个程序同时在运行的错觉(本例仅作为直观定性说明用,具体的时间片段和轮转完全取决于os本身)。

总体来说,操作系统它本身是一段程序,但只是一个翻译官(翻译上层应用给底层硬件执行)和一个调度员(调度多种不同的任务达成并发性)。(详细介绍可以在操作系统相关课程中学习)

2. 所以到底什么是程序(程序?代码?编译?)

程序的定义比较广泛,视语境不同可以说的是一段可执行文件,一段机器代码,也可以是源代码。在这里我想用程序来指代二进制文件(举例来说,常见的bin)。曾经在论坛上看到“xx的大小才10KB,一个英文字符是1B,一万个字符能写几行代码”这样的言论,希望大家看完接下来的介绍后能够领会它的荒谬。

首先来介绍一下什么是代码,代码,或者说源代码,指的是程序员直接生产的一系列字(la)符(ji)串。是的,本质上来说源代码/源文件本身只是一系列字符串,除了程序员自己,在编译前计算机并不知道这些字符串本身是什么意义。编译之前,源代码只是符合某种语法规则,格式规则的文字。广义来说和一篇小说,一段对话没有任何区别。

接下来就来到了编译和可执行文件的概念。编译所做的事情就是把这一系列符合某种语法规则的字符串,翻译成机器能够理解的指令与操作,从而让机器依照这一份指示去完成工作。编译本质上是一个把源代码翻译成机器能读懂的指令的过程。翻译的结果,就是我们的二进制文件。回到刚才所说的10KB大小程序。它的误区在于混淆了bin与源代码文件的差别,一个只有10M个注释符(不会被编译器编译影响正常功能)的源文件大小可能有10M,但它编译出后的生成文件大小一定是0KB。

(这部分内容的详细介绍可以参考编译原理,OS相关课程)

3. 所以程序是怎样运行的?(进程?内存?外存?CPU?)

如上所述,一台计算机系统里会存放许许多多编译过后的二进制文件,也就是所谓的程序。那么他们是怎么运行的呢?这里就要说到计算机组成结构里的存储架构。

相信大家买电脑的时候都听过内存,外存,x进程x线程之类的词汇。简单来说,“运行”一个程序,指的是在CPU中执行一段程序对机器的指令操作。运行之前的程序,全部被存放在外存之中(比如我们的1TB硬盘,128G SSD,等等)。而当一段程序被运行,它会被OS拷贝一套副本(程序映像)到内存之中(也就是所谓的8GB DRAM, 16GB DRAM等等)。至此,程序被运行,它也不在被视作一个程序,而是一个“线程”。如1中所提到的,操作系统管理着这些被运行的程序,也就是调度着这些进程。在管理进程的过程中,为了方便更有效率地运行每个程序,对于每个进程操作系统又可能分出数个“小进程”去实现并发性,也就是所谓的线程。

总的来说,程序是存放在外存中的一段可执行文件,进程是在CPU中运行的一段程序副本。

生活中的应用:常见的误区是”我的手机/电脑好卡呀,但明明显示还有50G, 100G, 250G.....的空间呀“。这里的50/100/250G空间指的是外存能用的空间,但手机/电脑的流畅程度取决于内存空间的丰裕程度。因此,疯狂删除照片/音乐/电影/清理磁盘空间本质上和电脑加速没有必然联系。

(这部分内容的详细介绍可以参考计算机组成原理,OS相关课程)

....暂时先更到这,后续再想到新的话题会继续更新。以及,欢迎大家批评指正有理有据讨论,唯独术语帝名词帝请爪巴。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值