计算机:软硬件构成基本关系
大纲
硬件:
计算机的主要部件有: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,
设备管理,
提供系统调用的接口。
编译器
编译原理那套实现