数据系统:
计算机只能识别0和1,这个虽然我是非科班出身的,但好歹还是听说过的。早期的计算机是利用通电的真空管来区分的,通电就是1,没有通电就是0.
二进制转化成10进制:
1.jpg
十进制转化成2进制,就采用除法,找到每步的余数
2.png
文字编码系统
文字的记录也是被记录成0和1。这里起到关键作用的就是一个字母对照表。
文字——字码对照表(文字:十进制)——二进制
关键的是文字对应的十进制换算成二进制
因此浏览器上面出现乱码主要是因为编码对照表错了,导致对照的文字产生误差。
常用的英文编码表为ASCII表,每个符号占用1bytes,中文编码表常用的有big5,每个中文字占用2bytes。现在有通用的Unicode编码系统,以期实现不同国家的兼容。
软件程序运作
计算机软件可以分为两大类,一类是系统软件,一类是应用程序。
因为计算机只认识0和1,所以我们如果想让计算机正常运作,需要写它们读得懂的脚本,只用0和1写,这也太难了sos。另外因为不同的计算机硬件不同,所以要参考硬件本身的功能函数,如果有一个不太常用的硬件,那就祝好运。并且当在不同硬件上使用的时候,要修改程序,适应不同硬件的功能函数,称为程序的不可移植性。
为了解决这个问题,创造了一种编译程序,比如我们常见的C,C++,java等等。它们的作用就是把人类能看得懂的高阶程序语言转变成机器能看懂的机器码。
但是如果想要调用硬件,还是逃不开硬件的功能函数,由此便诞生了操作系统。
操作系统是一组程序,用于管理计算机及驱动系统中的所有硬件,让它们具有开始工作的能力。这是就是操作系统的核心。但是如果只有核心的话,还是没法驱动硬件,只能使得硬件处于ready工作的状态。如果选择用软件去调动核心的话,就得去参考这个核心的相关功能,还是很麻烦。
所有这样就诞生了“系统呼叫”。
系统呼叫简单来说,就是提供了一个开发接口,能够主动将高级程序语言转化成核心可以了解的任务函数。至此,整个计算机的运行可以归纳成这样一个链条:
应用程序——系统呼叫/开放接口——核心——硬件
不一样的硬件架构,操作系统的核心也需要改变。
在操作新的硬件的时候,开发商需要系统提供的开发接口设计相应的驱动程序,驱动硬件的运行。但是前提是,操作系统必须具有调动这个硬件的能力。
其实我的本意是想要学习Linux的命令的,anyway学学硬件方面的知识也不错,梳理了一遍之后确实神清气爽,下面就要进入linux学习的章节了,再接再厉。
网友评论