一、操作系统和高级编程语言使硬件抽象化
通过使用操作系统的系统调用,程序员不必直接编写控制硬件的程序,而且,通过使用高级编程语言,有时也无需考虑调用的存在,系统调用往往是自动触发的,操作系统和高级编程语言能够使硬件抽象化
硬件抽象化的具体实例:
#include<stdio.h> void main(){ //打开文件 FILF *fp = fopen("MyFile.txt","w"); //写入文件 fputs("你好",fp); //关闭文件 fclose(fp); }
上述代码使用C编写的程序,fputs()是用来往文件中写入字符串的函数,fclose()是用来关闭文件的函数
磁盘就如同树的年轮,磁盘的读写是以扇区为单位的,通过磁道来寻址,如果直接对硬件读写的话,那么就会变为通过向磁盘用的I/O指定扇区位置来对数据进行读写了
但是,在上面代码中,扇区压根就没有出现过传递给fopen0函数的参数,是文件名 MyFile.txt 和指定文件写入的 w 。传递给fputs0的参数,是往文件中写入的字符串“你好”和fp,传递给fclose0的参数,也仅仅是fp,也就是说磁盘通过打开文件这个操作,把磁盘抽象化了,打开文件这个操作就可以说是操作硬件的指令。
代码清单中fp的功能,变量fp中被赋予的是fopen()函数的返回值,该值被称为 文件指针。应用打开文件后,操作系统就会自动申请分配用来管理文件读写的内存空间。内存地址可以通过fopen()函数的返回值获得。用fopen()打开文件后,接下来就是通过制定的文件指针进行操作,正因为如此,fputs() 和 fclose 参数中指定了文件指针
由此我们可以得出一个结论,应用程序时通过系统调用,磁盘抽象来实现对硬盘的控制的
二、Windows操作系统的特征
Windows 操作系统是世界上用户数量最庞大的群体,下面列举了一些Windows 操作系统的特性:
● Windows 操作系统有两个版本:32位和64位
● 通过 API 函数集成来提供系统调用
● 提供了采用图形用户界面的用户界面
● 通过 WYSIWYG 实现打印输出,WYSIWYG 其实就是What You See Is What You Get,值得是显示器上显示的图形和文本都是可以原样输出到打印机打印的
● 提供多任务功能,即能够同时开启多个任务
● 提供网络功能和数据库功能
● 通过即插即用实现设备驱动的自设定
32位操作系统
这里表示的32位操作系统表示的是处理效率最高的数据大小。Windows 处理数据的基本单位是32位。这与最一开始在 MS-DOS 等16位操作系统不同,因为在16位操作系统中处理32位数据需要两次,而32位操作系统只需要一次就能够处理32位的数据,所以一般在windows上的应用,它们的最高能够处理的数据都是32位的
比如,用C语言来处理整数数据时,有8位的 char 类型,16位的 short 类型,以及32位的long类型三个选项,使用位数较大的long类型进行处理的话,增加的只是内存以及磁盘的开销,对性能影响不大
现在市面上大部分都是64位操作系统了,64位操作系统也是如此。
通过API函数集来提供系统调用
Windows是通过名为 API 的函数集来提供系统调用的。API是联系应用程序和操作系统之间的接口,全称叫做 Application Programming Interface,应用程序接口
当前主流的32位版 Windows API也称为 Win32 API,之所以这样命名,是需要和不同的操作系统进行区分,比如最一开始的16位版的 Win16 API。和后来流行的Win64 API
API通过多个DLL文件来提供,各个API的实体都是用C语言编写的函数。所以,在C语言环境下,使用API更加容易,比如API所用到的 MessageBox()函数,就被保存在了Windows 提供的user32.dll 这个DLL文件中
提供采用了GUI的用户界面
GUI(Graphical User Interface)指得就是图形用户界面,通过点击显示器中的窗口以及图标等可视化的用户界面,举个例子:Linux操作系统就有两个版本,一种是简洁版,直接通过命令行控制硬件,还有一种是可视化版,通过光标点击图形界面来控制硬件
通过WYSIWYG 实现打印输出
WYSIWYG 指的是显示器上输出的内容可以直接通过打印机打印输出。在Windows中,显示器和打印机被认作同等的图形输出设备处理的,该功能也为WYSIWYG提供了条件。
借助WYSIWYG功能,程序员可以轻松不少。最初,为了是现在显示器中显示和在打印机中打印,就必须分别编写各自的程序,而在Windows中,可以借助WYSIWYG基本上在一个程序中就可以做到显示和打印这两个功能了。
提供多任务功能
多任务指的就是同时能够运行多个应用程序的功能,Windows是通过 时钟分割 技术来实现多任务功能的。时钟分割指的是短时间间隔内,多个程序切换运行的方式。在用户看来,就好像是多个程序在同时运行,其底层是CPU时间切片,这也是多线程多任务的核心。
CPU分片,也是时钟分割:
提供网络功能和数据库功能
Windows中,网络功能作为标准功能提供的。数据库(数据库服务器)功能有时也会在后面追加。网络功能和数据库功能虽然并不是操作系统不可或缺的,但因为它们和操作系统很接近所以被统称为 中间件 而不是应用。意思是处于操作系统和应用的中间层,操作系统和中间件组合在一起,统称为 系统软件。应用不仅可以利用操作系统,也可以利用中间件的功能
应用可以使用操作系统和中间件:
相对于操作系统,一旦安装就不能轻易更换,中间件可以根据需要进行更换,不过,对于大部分应用来说,更换中间件的话,会造成应用也随之更换,从这个角度来说,更换中间件也不是那么容易
通过即插即用实现设备驱动自动设定
即插即用(Plug-and-Play)指的是新的设备连接(plug)后就可以直接使用的机制,新设备连接计算机后,计算机就会自动安装和设定用来控制该设备的 驱动程序
设备驱动时操作系统的一部分,提供了同硬件进行基本的输入输出功能。键盘、鼠标、显示器、磁盘装置等,这些计算机中必备的硬件的设备驱动,一般都是随着操作系统一起安装的
有时DLL文件也会同设备驱动文件一起安装。这些DLL文件中存储着用来利用该新追加的硬件API,通过API,可以制作出运行该硬件的新应用