关于第一篇Blog的补充与计算机概念
今天拿到了《鸟哥的Linux私房菜》,翻开看了下第一章,想起了昨天安装Ubuntu的点滴,继续做下补充和记录吧。
首先是关于架构,鸟哥将这个定义为一切设计的起点,事实上的确是这样子,博主目前知道的两类指令集架构:RISC与CISC,R指的Reduce,C指的是Complex,之前谢老师在课堂上讲过,CISC上的80%的指令其实是很少用到的,因此才出现了RISC这种精简的架构,这种架构的执行性能较佳,例如ARM平台,指令的长度一致,那么架构也相应简单的多,而x86架构的指令非常复杂,长度也不一,架构也相应复杂得多,那么为什么还要这样做呢?鸟哥指出RISC要做复杂的事情,就要由多个指令来完成,即使如STM32H7一样号称是单指令周期做复杂操作也是需要很多周期哒。言归正传,博主现在使用的是CISC电脑,安装的也是x86-64架构的Ubuntu,那我只要是x86-64的电脑就会一样吗?当然不是,看看某东上CPU的价格相差这么远,就知道肯定不可能一样啦。
CISC指令集的CPU,比拼的不仅仅是整体结构,指令集也是它极大的特色之一,这里对于RISC其实也是一样哒,之前博主使用stm32f1平台运行FreeRTOS,里面查找就绪任务中优先级最高的算法依赖于ARM的指令集,而不需要向C51等普通MCU一样需要for循环查找,这样就可以大大提高CPU的响应能力啦,因此,买CPU的时候不要单看主频高就觉得它一定会更快噢(一把眼泪掉了下来,博主在今天之前一直是这么认为的)。
那么我们为什么以前安装Windows的时候会被告知当你的内存大于4G的时候需要安装64位系统,而内存小于4G的时候只能安装32位系统呢?首先要明确一个概念,操作系统承担的是硬件与应用程序的桥梁的作用,它就像是两个口,一个面向应用程序,一个面向硬件。博主以前写单片机的时候一开始使用的就是裸机编程,就是什么都直接调用底层API(也不算太底层,ST官方把寄存器操作都封装成了标准库),但是这样就会导致一个问题,当我的应用程序更改的时候,很多函数都需要重新写,同样,当我想把代码移植到另一个平台上的时候(例如TI上的),这样硬件API都更改了,整个软件也得大改,更别说任务调度算法了,因此操作系统是必要的,就像是一个社会需要不同的群体各司其职一样,那这里博主就暂时命名操作系统是政府吧。操作系统需要访问内存进行读写控制,那么如果是32位操作系统可以这样计算2*32=4294967296,就是所谓的4GB内存,读取位宽为32位,即便所有数据都表示地址,那么也仅仅只有4GB的访问空间,因此就算你给他安装64位系统,也无法发挥它的功效,而同理,当你的内存大于4GB的时候,你的操作系统却无法寻址到超越4GB内存,这是多么令人崩溃的事情呀!
那么操作系统究竟包含什么呢?一个是内核,另外一个则是系统调用。操作系统的内核层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构下运行,通常需要配置,以前博主移植FreeRTOS的时候也是要根据ARM核来进行内核裁剪哒,有很多宏定义下的代码是无法运行的!操作系统管理着整个硬件资源,包括了CPU、内存、输入输出以及文件系统等!所以昨天安装Ubuntu的时候我们就看到什么EXT4文件之流的。。。而管理CPU则是很重要很重要的一部分,FreeRTOS采用的抢占式任务优先级算法,就是为了榨干CPU的资源,你总不能一个Delay函数,CPU就什么也不干嘛,明明它还能去算别的东西呢!因此操作系统中任务的优先级以及管理也是特别重要的,那么到了Ubuntu中,博主留意到了还有一种新的,就是权限了,和Windows傻瓜式操作不一样,Ubuntu创建个目录都要sudo 再能mkdir噢,像petalinux又不可以在root权限下安装。。。
那么安装时的SWAP交换空间又是什么东西呢?这是因为系统所有的程序代码与数据都必须存放在内存中,但是当内存不足的时候怎么办呢?内核会提供虚拟内存的功能,当内存不足的时候就可以提供交换分区的功能,这不就是我们安装Ubuntu时的Swap分区嘛!
最后,想写写MBR与GPT的区别!旧式的MBR模式适用于机械硬盘(HDD),这是通过柱面号码进行划分的一种方式,而GPT格式,则是通过扇区号码进行划分!所以,制作U盘启动的时候一定要观察清楚!Rufus专业是专业但是一开始是很难以理解的,若你的硬盘是MBR模式,那么你制作GPT格式的Ubuntu是会崩溃的!
今天写着写着就到10点咯,不过还是很开心,博主不是计算机院的,但是这计算机真的好好玩鸭,同样的话,如果发现我的错误,请多多指教!