操作系统和高级编程语言时硬件抽象化及Windows操作系统的特征

简介: 操作系统和高级编程语言时硬件抽象化及Windows操作系统的特征

一、操作系统和高级编程语言使硬件抽象化


       通过使用操作系统的系统调用,程序员不必直接编写控制硬件的程序,而且,通过使用高级编程语言,有时也无需考虑调用的存在,系统调用往往是自动触发的,操作系统和高级编程语言能够使硬件抽象化


硬件抽象化的具体实例:


#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,可以制作出运行该硬件的新应用


目录
相关文章
|
1月前
|
存储 弹性计算 运维
阿里云国际Windows操作系统迁移教程
阿里云国际Windows操作系统迁移教程
|
2月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
61 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
1月前
|
Unix Linux iOS开发
【换行符】Windows、Unix、Mac不同操作系统的回车符\r和换行符\n
【换行符】Windows、Unix、Mac不同操作系统的回车符\r和换行符\n
|
2月前
|
Windows
Windows操作系统部署安装Kerberos客户端
详细介绍了在Windows操作系统上部署安装Kerberos客户端的完整过程,包括下载安装包、安装步骤、自定义安装路径、修改环境变量、配置hosts文件和Kerberos配置文件,以及安装后的验证步骤。
370 3
Windows操作系统部署安装Kerberos客户端
|
4月前
|
IDE Java 开发工具
如何在Windows操作系统上安装PyCharm?
【7月更文挑战第5天】如何在Windows操作系统上安装PyCharm?
198 59
|
3月前
|
Windows
Windows操作系统中环境变量的检索顺序
Windows操作系统中环境变量的检索顺序
109 3
|
3月前
|
Kubernetes Cloud Native 开发者
探索云原生技术:Kubernetes入门与实践探索Windows操作系统的隐藏功能
【8月更文挑战第31天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性、效率和可靠性的关键。本文将带你了解云原生的核心组件之一——Kubernetes(K8s),通过浅显易懂的语言和实际代码示例,引导你步入这一强大工具的世界。无论你是初学者还是有经验的开发者,本篇都将为你打开一扇通向高效资源管理与自动化部署的大门。
|
3月前
|
机器学习/深度学习 Linux PyTorch
跨平台 DataLoader 实现:支持多种操作系统和硬件架构
【8月更文第29天】在深度学习项目中,数据加载和预处理是非常重要的步骤之一。一个良好的数据加载器(DataLoader)能够显著提升模型训练的速度和效率。随着深度学习应用的不断扩展,对于能够在不同操作系统和硬件架构上无缝运行的数据加载器的需求也日益增长。本文将探讨如何设计和实现一个跨平台的 DataLoader,确保其兼容性和可移植性。
73 0
|
3月前
|
负载均衡 网络协议 安全
【Azure 应用服务】Azure Web App的服务(基于Windows 操作系统部署)在被安全漏洞扫描时发现了TCP timestamps漏洞
【Azure 应用服务】Azure Web App的服务(基于Windows 操作系统部署)在被安全漏洞扫描时发现了TCP timestamps漏洞
|
3月前
|
网络协议 应用服务中间件 nginx
性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
112 0

热门文章

最新文章