计算机基础(三)

计算机基础(三)

1、数据表示方式

    事实上电脑只认识0与1,记录的数据也是只能记录0与1,因此电脑经常使用的数据是二进制的。可是咱们人类经常使用的数值运算是十进制,文字方面则有很是多的语言,经常使用的语言就有中文(又分正体与简体中文)、英文等。那么电脑如何记录与显示这些数值/文字呢?就得要经过一系列的转换才能够!下面咱们就来谈谈数值与文字的编码系统!数据库

一、数字系统

    早期的电脑使用的是利用通电与否的特性的真空管,若是通电就是1,没有通电就是0,后来沿用至今,咱们称这种只有0/1的环境为二进制,英文称为binary。所谓的十进制指的是逢十进一位,所以在个位数归为零而十位数写成1。因此所谓的二进制,就是逢二就前进一位的意思。浏览器

    那二进制怎么用呢?咱们先以十进制来解释好了。若是以十进制来讲,3456的意义为:网络

    3456=3x103+4x102+5x101+6x100架构

    特别注意:“任何数值的零次方为1”因此100的结果就是1。一样的,将这个原理带入二进制的环境中,咱们来解释一下1101010的数值转为十进制的话,结果以下:函数

    1101010=1x26+1x25+0x24+1x23+0x22+1x21+0x20=64+32+0x16+8+0x4+2+0x1=106工具

    二进制是电脑基础中的基础!了解了二进制后,八进位、十六进制就依此类推!那么知道二进制转成十进制后,那若是有十进制数值转为二进制的环境时,该如何计算?刚刚是乘法,如今则是除法!咱们一样的使用十进制的106转成二进制来测试一下:性能

    最后的写法就如同上面的箭头,由最后的数字向上写,所以可获得1101010的数字!这些数字的转换系统是很是重要的,由于电脑的加减乘除都是使用这些机制来处理的!学习

二、文字编码系统

    事实上文字文件也是被记录为0与1,而这个文件的内容要被取出来查阅时,必需要通过一个编码系统的处理才行。所谓的“编码系统”能够想成是一个“字码对照表”,他的概念有点像下面的图示:测试

    当咱们要写入文件的文字数据时,该文字数据会由编码对照表将该文字转成数字后,再存入文件当中。一样的,当咱们要将文件内容的数据读出时,也会通过编码对照表将该数字转成对应的文字后,再显示到屏幕上。编码

1.经常使用的码表

1>ASCII

    英文编码表为ASCII系统,这个编码系统中, 每一个符号(英文、数字或符号等)都会占用1Bytes的记录,所以总共会有28=256种变化。

2>big5

    中文字当中的编码系统早期最经常使用的就是big5这个编码表。每一个中文字会占用2Bytes,理论上最多能够有216=65536,亦即最多可达6万多个中文字。可是由于big5编码系统并不是将全部的位都拿来运用成为对照,因此并不是可达这么多的中文字码的。目前big5仅定义了一万三千多个中文字,不少中文利用big5是没法成功显示的。

    big5码的中文字编码对于某些数据库系统来讲是颇有问题的,某些字码例如“许、盖、功”等字,因为这几个字的内部编码会被误判为单/双引号,在写入还不成问题,在读出数据的对照表时,经常就会变成乱码。不仅中文字,其余非英语系国家也经常会有这样的问题出现啊!

3>UTF-8

    为了解决这个问题,由国际组织ISO/IEC跳出来制订了所谓的Unicode编码系统,咱们经常称呼的UTF8或万国码的编码。由于这个编码系统打破了全部国家的不一样编码,所以目前网际网络社会大多朝向这个编码系统在走。

2、软件程序运行

    目前的电脑系统将软件分为两大类,一个是系统软件,一个是应用程序。但咱们仍是得要了解一下什么是程序,尤为是机器程序,了解了以后再来探讨一下为何现今的电脑系统须要“操做系统”这玩意儿呢!

一、机器程序与编译程序

    电脑只认识0与1,并且电脑最重要的运算与逻辑判断是在CPU内部,而CPU实际上是具备微指令集的。所以,须要CPU帮忙工做时,就得要参考微指令集的内容,而后撰写让CPU读的懂的指令码给CPU执行,这样就可以让CPU运行了。

1.编译流程

    不过这样的流程有几个很麻烦的地方,包括:

1>须要了解机器语言

    机器只认识0与1,所以必需要学习直接写给机器看的语言!须要了解全部硬件的相关功能函数,由于程序必需要写给机器看,固然要参考机器自己的功能,而后针对该功能去撰写程序码。

    例如,你要让DVD影片可以放映,那就得要参考DVD光驱的硬件信息才行。万一你的系统有比较冷门的硬件,光是参考技术手册可能会昏倒。

2>程序不具备可携性

    每一个CPU都有独特的微指令集,一样的,每一个硬件都有其功能函数。所以,为A电脑写的程序,理论上是没有办法在B电脑上面运行的!并且程序码的修改很是困难!由于是机器码,并非人类看的懂得程序语言!

3>程序具备专注性

    由于这样的程序必需要针对硬件功能函数来撰写,若是已经开发了一支浏览器程序,想要再开发文件管理程序时,仍是得从头再参考硬件的功能函数来继续撰写。

 

    那怎么解决啊?为了解决这个问题,电脑科学家设计出一种让人类看的懂得程序语言而后创造一种“编译器”来将这些人类可以写的程序语言转译成为机器能看懂得机器码,如此一来咱们修改与撰写程序就变的容易多了!目前常见的编译器有C、C++、Java、Fortra等等。机器语言与高阶程序语言的差异以下所示:

4>编译器的角色

    从上面的图示能够看到高阶程序语言的程序码是很容易阅读的!在这样的环境下仍是要考虑总体的硬件系统来设计程序!

    举例来讲,当你须要将运行的数据写入内存中,你就得要自行分配一个内存区块出来让本身的数据可以填上去,因此你还得要了解到内存的位址是如何定位的。为了要克服硬件方面总是须要重复撰写控制码的问题,因此就有操做系统(Operating System,OS)的出现了!

二、操做系统

    如同前面提到的,在早期想要让电脑执行程序就得要参考一堆硬件功能函数,而且学习机器语言才可以撰写程序。同时每次写程序时都必需要从新改写,由于硬件与软件功能不见得都一致之故。那若是我可以将全部的硬件都驱动,而且提供一个发展软件的参考接口来给工程师开发软件的话,那发展软件不就变的很是的简单了?那就是操做系统啦!

1.操做系统核心(Kernel)

    操做系统(Operating System,OS)其实也是一组程序,这组程序的重点在于管理电脑的全部活动以及驱动系统中的全部硬件。那么操做系统的功能就是让CPU能够开始判断逻辑与运算数值、让内存能够开始载入/读出数据与程序码、让硬盘能够开始被存取、让网卡能够开始传输数据、让全部周边能够开始运行等等。总之,硬件的全部动做都必需要经过这个操做系统来达成。核心程序所放置到内存当中的区块是受保护的!而且开机后就一直常驻在内存当中。

2.系统调用(System Call)

    既然硬件都是由核心管理,那么若是要开发软件的话,天然就得要去参考这个核心的相关功能!如此一来不是从本来的参考硬件函数变成参考核心功能,仍是很麻烦啊!为了解决这个问题,操做系统一般会提供一整组的开发接口给工程师来开发软件!工程师只要遵照该开发接口那就很容易开发软件了!

    举例来讲,咱们学习C程序语言只要参考C程序语言的函数便可,不须要再去考虑其余核心的相关功能,由于核心的系统调用接口会主动的将C程序语言的相关语法转成核心能够了解的任务函数,那核心天然就可以顺利运行该程序了!

    若是咱们将整个电脑系统的相关软/硬件绘制成图的话,他的关系有点像这样:

    电脑系统主要由硬件构成,核心程序主要在管理硬件,提供合理的电脑系统资源分配(包括CPU资源、内存使用资源等等),所以只要硬件不一样(如x86架构与RISC架构的CPU),核心就得要进行修改才行。而因为核心只会进行电脑系统的资源分配,因此在上头还须要有应用程序的提供,使用者才可以操做系统的。

    为了保护核心,而且让程序设计师比较容易开发软件,所以操做系统除了核心程序以外,一般还会提供一整组开发接口,那就是系统调用层。软件开发工程师只要遵循公认的系统调用参数来开发软件,该软件就可以在该核心上运行。软件与核心有比较大的关系,与硬件关系则不大!硬件也与核心有比较大的关系!至于与使用者有关的,那就是应用程序!

    只要可以让计算机硬件正确无误的运行,那就算是操做系统了。因此说,操做系统其实就是核心与其提供的接口工具。

    简单的说,上面的图示能够带给咱们下面的概念:

    操做系统的核心层直接参考硬件规格写成,因此同一个操做系统程序不可以在不同的硬件架构下运行。举例来讲,我的电脑版的Windows8.1不能直接在ARM架构(手机与平板硬件)的电脑下运行。

    操做系统只是在管理整个硬件资源,包括CPU、内存、输入输出设备及文件系统文件。若是没有其余的应用程序辅助,操做系统只能让电脑主机准备稳当(Ready)!并没有法运行其余功能。

    应用程序的开发都是参考操做系统提供的开发接口,因此该应用程序只能在该操做系统上面运行,不能够在其余操做系统上面运行。

1>核心功能

    既然核心主要是在负责整个电脑系统相关的资源分配与管理,那咱们知道其实整部电脑系统最重要的就是CPU与内存,所以,核心至少也要有这些功能的:

系统调用接口(System call interface)

    这是为了方便程序开发者能够轻易的经过与核心的沟通,将硬件的资源进一步的利用,因而须要有这个简易的接口来方便程序开发者。

程序管理(Process control)

    一部电脑可能同时间有不少的工做跑到CPU等待运算处理,核心这个时候必需要可以控制这些工做,让CPU的资源做有效的分配才行!另外,良好的CPU调度机制(就是CPU先运行那个工做的排列顺序)将会有效的加快总体系统性能!

内存管理(Memory management)

    控制整个系统的内存管理,这个内存控制是很是重要的,由于系统全部的程序码与数据都必需要先存放在内存当中。一般核心会提供虚拟内存的功能,当内存不足时能够提供内存交换(swap)的功能。

文件系统管理(Filesystem management)

    文件系统的管理,例如数据的输入输出(I/O)等等的工做啦!还有不一样文件格式的支持啦等等,若是核心不认识某个文件系统,那么将没法使用该文件格式的文件!

    例如:Windows 98就不认识NTFS文件格式的硬盘。

设备的驱动(Device drivers)

    就如同上面提到的,硬件的管理是核心的主要工做之一,固然啰,设备的驱动程序就是核心须要作的事情!好在目前都有所谓的“可载入模块”功能,能够将驱动程序编辑成模块,就不须要从新的编译核心!

2>操做系统与驱动程序

    驱动程序能够说是操做系统里面至关重要的一环!硬件但是持续在进步中!包括主板、显卡、硬盘等等。

    操做系统一般会提供一个开发接口给硬件开发商,让他们能够根据这个接口设计能够驱动他们硬件的“驱动程序”,如此一来,只要使用者安装驱动程序后,天然就能够在他们的操做系统上面驱动新的硬件了

    由上图咱们能够获得几个小重点:

    操做系统必需要可以驱动硬件,如此应用程序才可以使用该硬件功能;通常来讲,操做系统会提供开发接口,让开发商制做他们的驱动程序;

    要使用新硬件功能,必需要安装厂商提供的驱动程序才行;驱动程序是由厂商提供的,与操做系统开发者无关。

    因此,若是你想要在某个操做系统上面安装一张新的显卡,那么请要求该硬件厂商提供适当的驱动程序吧!

    由于驱动程序仍然是依据操做系统而开发的,因此,给Windows用的驱动程序固然不能使用于Linux的环境下了。

三、应用程序

    应用程序是参考操做系统提供的开发接口所开发出来软件,这些软件可让使用者操做,以达到某些电脑的功能利用。

    举例来讲,办公室软件(Office)主要是用来让使用者办公用的;影像处理软件主要是让使用者用来处理影音数据的;浏览器软件主要是让使用者用来上网浏览用的等等。

    须要注意的是,应用程序是与操做系统有关系的,如同上面的图示当中的说明。所以,若是你想要购买新软件,请务必参考软件上面的说明,看看该软件是否可以支持你的操做系统!

    举例来讲,若是你想要购买线上游戏光盘,务必参考一下该光盘是否支持你的操做系统,例如是否支持Windows XP/Windows Vista/MAC/Linux等等。

    咱们拿常见的微软公司的产品来讲明。Windows 8.1,Office 2013之间的关系。

    Windows 8.1是一套操做系统,他必须先安装到我的电脑上面,不然电脑没法开机运行;Windows7与Windows8.1是两套不一样的操做系统,因此能在Win7上安装的软件不见得可在Win8.1上安装;Windows8.1安装好后,就只能拥有不多的功能,并无办公室软件;Office2013是一套应用程序,要安装前必需要了解他能在哪些操做系统上面运行。

 

上一篇:计算机基础(二)

相关文章
相关标签/搜索