浅谈操作系统原理(一) 计算机概述-张柏沛IT博客

正文内容

浅谈操作系统原理(一) 计算机概述

栏目:Linux 发布时间:2020-03-16 22:12 浏览量:190

计算机概述

冯诺依曼体系 
是将程序指令和数据一起存储的计算机设计理念。

简单的说,早期计算机只能用作固定用途,一种计算机只能实现一种功能。例如说某台计算机只能玩游戏,但是不能用来处理文档。如果要改变计算机的程序就要重新设计计算机结构和电路(相当于你要拆机重装)

而冯诺依曼体系则解决了这个问题。解决该问题的关键是存储程序指令和设计通用电路,让一台机器可以运行不同的程序,可以更改程序。

冯诺依曼体系计算机的组成结构

存储器
控制器
运算器
输入设备
输出设备

冯诺依曼机要具备的功能
将程序和数据输送至计算机(输入设备)
能长期存储程序,数据,中间结果和最终运算结果(存储器和控制器)
能进行运算和数据加工(运算器)
能将处理结果输出(输出设备)

冯诺依曼体系中
控制器+运算器=中央处理器(CPU)

冯诺依曼机的一个问题是
CPU和存储器是分开的,这会导致CPU和存储器速率不一致的问题无法调和。因为CPU处理速率会比存储器快,导致CPU经常空转等待数据传输。


现代计算机体系
现代计算机的结构和冯诺依曼体系的结构和功能一样。唯独不一样的是现代计算机的运算器,控制器和存储器(部分存储器)是装在一个芯片上的。
CPU=控制器+运算器+存储器(寄存器和高速缓存)

当然,装在CPU上的存储器是指缓存和CPU的寄存器,而不是硬盘

现代计算机体系是以存储器为核心的。


计算机的层次和编程语言

程序翻译,编译和解释
简单的说,人类语言和计算机语言是不同的。计算机语言是一串的0和1,也就是二进制,计算机将人类能读得懂的语言转为计算机的语言就是程序翻译。

程序的翻译有两种,编译和解释

程序编译是指将一种高级语言写(如C,C++,python,PHP,JavaScript等)的程序代码转成低级语言(如机器语言和汇编语言)的程序代码。将高级语言的程序全部翻译成低级语言的程序后,计算机再把这段低级语言程序作为目标程序运行。

程序解释是指将高级语言翻译成低级语言一句就执行一句

无论是程序编译还是程序解释,计算机执行的都是低级语言。编译会生成新的目标程序,解释是翻译一句执行一句所以不会生成新的目标程序。

编译语言有:C/C++,object-c,golang
解析语言有:python,PHP,JavaScript
介于编译语言和解析语言的语言:C#,Java

这里顺便介绍一下汇编语言和机器语言的概念:
汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

这么说很抽象,具体来说汇编语言是一些容易理解和记忆的字母,单词来代替一个特定的指令。如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等

当然计算机还是不懂汇编语言,它们只懂0和1(机器语言),所以还需要程序将汇编语言转为机器语言,计算机才可以读得懂。

机器语言是无需经过翻译就能被计算机读懂的程序语言或指令代码。机器语言由机器指令集构成。机器语言是最低级的语言,而汇编语言是比机器语言稍微高级一点的低级语言,因为汇编语言要再转化为机器语言才能被计算机读懂。

计算机的层次
从高到低是:

应用层            |  应用软件  |
高级语言层        |------------|__软件(虚拟)机器层面
汇编语言层        |  系统软件  |
操作系统层        |------------|
------------------|
传统机器层        |
微程序机器层      |-硬件(实际机器)层面
硬件逻辑层        |

硬件逻辑层由门,触发器等逻辑电路组成,属于电子工程的领域

微程序机器层,在这一层其编程语言是微指令集,微指令所组成的微程序直接交给硬件执行
微指令是由一些生产硬件的公司程序员编写的

传统机器层,其编程语言是CPU指令集(机器指令),编程语言还是和硬件直接相关
不同架构的CPU使用不同的CPU指令集。如x86和x64

微指令,微程序和机器指令的关系:
一条机器指令对应一个微程序,一个微程序对应一组微指令集
微指令 < 微程序 = 机器指令

简单来说,微程序是硬件执行的程序,微指令是硬件能认识的编程语言。
机器指令是CPU能认识和执行的指令,也就是机器语言,形式为二进制编码。

操作系统层向上提供简易的操作界面,向下对接指令,管理硬件资源。是硬件和软件的适配层,使硬件和软件能够对接在一起

汇编语言层,其编程语言是汇编语言,汇编语言可以直接翻译为可执行的机器语言。完成翻译过程的程序就是汇编器。这一层的语言就是人类可以理解的语言如PUSH,ADD等指令

高级语言层,其编程语言就是如python,Java,PHP,C/C++,golang这样的高级语言

应用层,放着很多应用程序

高级语言--->汇编语言--->机器指令

分层的目的是为了便于理解,而不是固定的就是这七层。


计算机的计算单位

容量单位:
在物理层面,通过高电平表示1和低电平表示0
所以计算机底层只认识0/1
这里的0和1被称为bit(比特位)

字节: 一个字节=8个比特位  1Byte=8bits
千字节:kb
兆字节:mb
吉字节:gb
太字节:tb
拍字节:pb
艾字节:eb

1024=2^10

门电路是位级别
寄存器是kb级别
高速缓存是mb级别
内存和硬盘是gb级别
硬盘也有tb级别
云硬盘如百度云盘是pb级别
数据仓库是eb级别

Q:为什么网上买的500G硬盘,格式化之后就只剩456G
因为硬盘商是用10进制标记容量的。他们认为1G=1000M
而计算机则是认为 1G=1024M


速度单位:
网络速度 Mbps
常见问题:为什么网络商所说的100M宽带,测试峰值速度只有12.5M/s

原因是 网络常用单位是Mbps而不是Mb(即兆位而不是兆),100Mbps=100Mbit=12.5Mb

CPU速度 Hz
CPU速度体现为CPU的时钟频率(hz,即秒分之一,每秒中的周期性变动重复次数的计量)
主流CPU的时钟频率为2GHz = 1/(2*1024^3) 秒变动一次  = 1秒变2*1024^3次 


计算机的字符和编码集

ASCII码:共有128个ASCII码,其中95个可打印,33个不可打印。2^7=128,所以可以使用7个bit来表示所有的ASCII码,如A这个ascii码可以表示为1000001这个二进制。

ASCII码的扩充:后面又加入了很多如数学符号之类的字符,超过了128。所以变成用8个bit来表示一个字符。
所以现在我们一个字母会用 8个bit = 1个字节 的空间来存储


字符编码集的国际化:
本地中文编码集(gb2312,gbk)
GBK 收录了 21003 个字符,包括6000多个中国汉字,还有日韩文字。
16384=2^14 < 21003 < 2^15=32768 
所以要用至少15个bit来存一个gbk字符,但是15个bit无法换算为整数字节,所以会用 16bit=2字节来存一个gbk字符


但是gbk只支持中日韩的文字,所以跨国使用外国人的电脑显示的是乱码

国际化的字符编码 Unicode
Unicode收录了全世界所有的字符。
utf-8和utf-16是Unicode的编码方式

utf-8就是以字节为单位对Unicode进行编码 

gbk和utf-8就是对字符集的一种编码方式
对于国内的windows系统,默认是使用gbk编码。

如果您需要转载,可以点击下方按钮可以进行复制粘贴;本站博客文章为原创,请转载时注明以下信息

张柏沛IT技术博客 > 浅谈操作系统原理(一) 计算机概述

热门推荐
推荐新闻