Linux学习笔记4(鸟哥的私房菜)

计算机概述(四)

接着三继续写
马上就要过年了,还是很开心的,但是要坚守到最后一天,加油!!!

  • 1、 电源供应器
    电源供应器(power)也是非常的重要。在你的机箱内,有个大大的铁盒子,上头有很多电源线会跑出来,那就是电源供应器了。我们的CPU、RAM、主板、硬盘等等都需要用电,而近来的电脑元件耗电量越来越高,以前很古早的230W电源已经不够用了,有的系统甚至得要有500W以上的电源才能够运行!真可怕~
    电源供应器相当于你的心脏,心脏差的话,活动力就会不足了!所以,稳定性差的电源供应器甚至是造成电脑不稳定的元凶呢!所以,尽量不要使用太差的电源供应器喔!

  • 1.1 能源转化率
    电源供应器本身也会吃掉一部分的电力的!如果你的主机系统需要300W的电力时,因为电源供应器本身也会消耗掉一部分的电力,因此你最好要挑选400W以上的电源供应器。电源供应器出厂前会有一些测试数据,最好挑选高转换率的电源供应器。所谓的高转化率指的是“输出的功率/输入的功率”。意思就是说,假如你的主板用电量为250W,但是电源供应器其实已经用掉了320W的电力,这转换率为:250/320=0.78的意思,这个数值越高表示被电源供应器“玩掉”的电力就越少,那就符合能源效益了!

  • 2、 数据表示方式
    我们的电脑只认0和1,数据就也记录0与1而已,所以电脑常用的数据是二进制的。但是我们生活中常用的是十进制,而且文字方面则有非常多的语言,那么电脑是如何记录与现实这些数值/文字呢?就得要通过一系列的转换才可以啦!

  • 2.1 数字系统
    早期的电脑使用的是利用通电与否的特性的真空管,如果通电就是1,没有通电就是0,后来沿用至今,我们称这种只有0/1的环境为二进制,也称为binary。所谓十进制就是逢十进一位,因此在个位数归零而十位数写成1。所谓二进制就是逢二就前进一位的意思。

那么二进制怎么用呢,举个例子,我们先用十进制来解释,3456的意义为:
3456=3×10³+4×10²+5×10¹+6×10º
特别注意:任何数值的零次方都是1,同样我们将这个原理带入二进制中
解释1101010的数值转换为十进制
1101010=1×2ⁿ+1×2ⁿ+1×2ⁿ+1×2³+1×2²+1×2¹+1×2º=106(其中n分别为6、5、4)

这样你了解二进制的意义了吗?二进制是电脑基础中的基础哦!了解二进制后,八进位、十六进制就以此类推了。
  • 2.2 文字编码系统
    既然电脑都只记录0/1而已,甚至记录的数据都是使用Byte/bit等单位来记录的,那么文字该如何记录呢?事实上文字文件也是被记录为0与1而已,而这个文件的内容要被取出来查阅时,必须经过一个编码系统的处理才行。所谓的“编码系统”可以想成是一个“字码对照表”如下图
    Linux学习笔记4(鸟哥的私房菜)_第1张图片
    当我们要写入文件的文字数据时,该文字数据会由编码对照表将改文字转成数字后,再存入文件当中。同样的,当我们要将文件内容的数据读出时,也会经过编码对照表将该数字转成对应的文字后,再显示到屏幕上。

     现在你知道为何浏览器上面如果编码写错时,会出现乱码了吗?这是因为编码对照表写错,导致对照的文字产生误差之故啦!			
    

    常用的英文编码表为ASCII系统,这个编码系统中,每个符号(英文、数字或符号等)都会占1Byes的记录,因此总共会有2^8=256种变化。至于中文字当中的编码系统早期最常用的就是big5这个编码表了。每个中文会占用2Bytes,理论上最多可以有2的16次方等于65536,即最多可达6万多个中文字。但是因为big5编码系统并非将所有的位都拿来运用成为对照,所以并非可达这么多的中文字码的。目前big5仅定义了一万三千多个中文,很多中文利用big5是无法成功显示的~所以才会有造字程序说。

    为了解决这个问题,由国际组织ISO/IEC跳出来制定了所谓的Unicode编码系统,我们常常称呼的UTF8或万国码的编码就是这个东东。因为这个编码系统打破了所有国家的不同编码,因此目前网际网络社会大多朝向这个编码系统在走,所以各位亲爱的 朋友啊,记得将你的编码系统修订一下哦!

  • 3、 软件程序运行
    电脑不插电就是一堆废铁,但是开机的电脑,没有程序的话也是没有灵魂的,你打开干什么,看吗?(来自灵魂的质问)。
    一般来说呀,目前的电脑系统将软件分为两大类,一个是系统软件,一个是应用程序。我们应该了解一下什么是程序,尤其是机器程序,了解了之后再来探讨一下为什么现今的电脑系统需要“操作系统”这玩意儿呢!

  • 3.1 机器程序与编译程序

我们前面谈到电脑只认识0与1而已,而且电脑最重要的运算与逻辑判断是在CPU内部,而CPU其实是具有微指令集的。因此,我们需要CPU帮忙工作时,就得要参考微指令集的内容,然后撰写让CPU读的懂得指令码给CPU执行,这样就能够让CPU运行了。不过这样的流程有几个很麻烦的地方

(1)需要了解机器语言:机器只认识0与1,因此你要给机器弄这种能看得懂的相当难
(2)需要了解所有硬件的相关功能函数:因为你的程序是写给机器看的,当然你就得参考机器本身的功能,然后针对这个功能去写程序。 
(3)程序不具有携带性:每个CPU都有独特的微指令集,同样的,每个硬件都有其功能函数。因此,你为A电脑写的程序,理论上是没办法在B电脑上面运行得!
(4)程序具有专一性:因为这样的程序必须要针对硬件功能函数来撰写,如果已经开发了一支浏览器程序,想要再开发文件管理程序时,还得从头在参考硬件的功能函数来继续撰写。

这些怎么解决呢,人类大佬设计了一个让人类能看懂的程序语言,然后创造一种“编译器”来转换给机器,如此一来,我们修改程序就简单多了。目前常见的编译器有C,C++,Java,Python等等。机器语言与高阶程序语言的差别如下所示:
Linux学习笔记4(鸟哥的私房菜)_第2张图片

  • 3.2 编译器的角色
    当你需要将运行的数据写入内存中,你就得要自行分配一个内存区块出来让自己的数据能够填上去,所以你还得要了解到内存的位址是如何定位的,写个程序真的麻烦1
    为了克服硬件方面老是需要重复撰写控制码的问题,所以就有操作系统(Opereating System,OS)的出现了!什么是操作系统呢?我们下来谈下!

  • 4、操作系统

如同前面提到的,在早期想要让电脑执行程序就得要参考一堆硬件功能函数,并且学习机器语言才能够撰写程序。同时每次写程序时都必须要重新改写,因为硬件与软件功能不见得都一致之故。那如果我能够将所有的硬件都驱动,并且提供一个发展软件的参考接口来给工程师开发软件的话,那发展软件不就变的非常的简单了?那就是操作系统啦!

	(1)操作系统核心(Kernel)

操作系统(Operating System,OS)其实也是一组程序,这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。操作系统的功能就是让CPU可以开始判断逻辑与运算数值、让内存可以开始载入/读出数据与程序码、让硬盘可以开始被存取、让网卡可以开始传输数据、让所有周边可以开始运行等等。总之,硬件的所有动作都必须要通过这个操作系统来达成就是了。

    (2)系统调用(System Call)

操作系统的核心层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构下运行。
操作系统只是在管理整个硬件资源,包括CPU、内存、输入输出设备及文件系统文件。
应用程序的开发都是参考操作系统提供的开发接口,所以该应用程序只能在该操作系统上面运行而已,不可以在其他操作系统上面运行得。

	(3)驱动程序

操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能
一般来说,操作系统会提供开发接口,让开发商制作他们的驱动程序
要使用新硬件功能,必须要安装厂商提供的驱动程序才行
驱动程序是由厂商提供的,与操作系统开发者无关

你可能感兴趣的:(笔记,linux,操作系统)