【原创】计算机软硬件构成基本关系

大纲

硬件:

计算机的主要部件有:CPU、主板、显卡、内存、硬盘、网卡、声卡、显示器、键盘、鼠标;光驱、机箱、音箱等。

软件:

由底向上可以细分为:固件,驱动,操作系统,应用软件

固件:

就是硬件厂商写死的软件,一般不能更改或者很难更改,比如电脑主板自带的BIOS

驱动:

和固件类似,但是允许用户更新、卸载的,操作系统通过硬件驱动和硬件打交道。比如英伟达的显卡驱动。是一种可以使计算机和设备进行相互通信的特殊程序。

操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作

操作系统:

比如Linux, Win7,或者手机了的Android,将底层硬件细节封装起来。

应用软件:

在操作系统基础上编写的应用程序,比如微软的办公Word,比如Google的Chrome浏览器。

补充:

1,固件和操作系统没关系,肯定能脱离操作系统而存在。无论你是安装Windows,还是Linux,或是BSD,主板的BIOS都在那里。

2,因为操作系统将很多底层细节(比如不同的硬盘,不同厂商的显示器,不同型号的的主板等)封装了起来,依赖于操作系统,应用软件开发更加容易、有效率。但是某些场景下,应用软件也可以脱离操作系统二存在。比如工业控制领域。以单片机为例,写好跑马灯的汇编程序,用烧录软件将二进制文件烧录到单片机里面,就可以正确执行。

 3,固件是写在芯片里的程序代码,一般是用来引导或起动某个系统功能的执行,比如电脑中的CMOS。一般不会写在硬盘或存存器中。驱动是在系统的基础上,为了更好地发挥某个硬件的功能而特地写出的一段程序代码,它是建立在系统之上的。

汇编器和链接器

汇编器(Assembler)

1,是将汇编语言翻译为机器语言的程序。一般而言,汇编生成的是目标代码,需要经链接器(Linker)生成可执行代码才可以执行。

2,汇编程序系统软件语言处理系统软件。汇编器把汇编语言翻译成机器语言的过程称为汇编。

链接器(Linker)

是一个程序,将目标文件外加库链接为一个可执行文件。目标文件是包括机器码和链接器可用信息的程序模块

1,为什么需要链接器

对于源程序任意一行代码的修改都需要重新编译和汇编整个程序,全部重新翻译是对计算资源的严重浪费。这种重复对于标准库程序尤为浪费,因为程序员要编译和汇编那些在定义上几乎从未改变过的过程。

于是可以单独编译和汇编每个过程,以使得某一行代码的改变只需要编译和汇编一个过程。这种方法需要一个新的系统程序,称为链接编辑器(link editor)或链接器(linker),它把所有独立汇编的机器语言程序“拼接”在一起。

如何编写

能输出二进制文件的语言都可以!知道它的所有指令集就OK。

你用解释型(Python,Ruby)的语言写一个都可以,如IA-32,知道它的所有指令集就OK了。

编译器和操作系统关系

鸡和蛋的关系

虽然编译器本身可以独立于操作系统,但这样需要添加大量操作系统完成的工作!

因为操作系统已经封装了底层硬件操作的复杂性,所以现在的高级语言编译器是依赖于操作系统的,编译器通过系统调用和硬件打通等

操作系统内核职责

进程调度,内存管理,进程的创建和终止,文件系统,网络io,设备管理,提供系统调用的接口。

编译器

编译原理那套实现

原文地址:https://www.cnblogs.com/tkzc2013/p/15352903.html