目录
摘要:高级编程语言中的系统调用和可移植性。 操作系统的硬件控制功能通常以小型功能集合的形式提供。 这是因为控制硬件是用户的唯一责任。 该语言提供的函数用于在命令提示符下显示字符串。
系统调用和高级编程语言可移植性
操作系统的硬件控制功能通常以一小部分功能集合的形式提供。 这些函数以及调用它们的行为统称为系统调用,即应用程序调用操作系统(系统)的函数。 前面的程序使用了time()和printf()等函数,这些函数内部还使用了系统调用。 我在这里使用“内部”一词是因为在Windows操作系统中,提供诸如返回当前日期和时间或在显示器上显示字符串等功能的系统调用的函数名称是time()或printf()。 。 系统调用在 time() 和 printf() 函数内执行。 这个方法可能看起来有点复杂,但这是有原因的。
高级编程语言(例如 C 语言)独立于任何特定操作系统。 这是因为预计几乎相同的源代码可以在 Windows 和 Linux 上使用。 所以,高级编程语言的工作方式是,它们使用自己的函数名称,并在编译时将其翻译成相应的操作系统系统调用(有时是系统调用的组合)。 换句话说,用高级编程语言编写的应用程序经过编译后,会使用系统调用将其转换为本机代码(图 9-6)。
图9-6高级编程语言中的函数调用经过编译后就变成了系统调用。
一些高级编程语言可以直接进行系统调用。 然而,以这种方式创建的应用程序不便于移植①(通常也称为具有恶意行为的应用程序)。 例如,直接调用Windows系统调用的应用程序显然无法在Linux上运行。
PS:①可移植性是指同一个程序在不同操作系统上运行所需的时间。 所需时间越短,就越便携。
Win编译链接机制
应用和硬件没有关系吗?
用C等高级编程语言开发的Windows应用程序很少能够访问直接控制硬件的指令。 这是因为 Windows 独自负责控制硬件。
但是,Windows 提供了通过应用程序间接控制硬件的方法。 可以使用操作系统提供的系统调用函数来进行硬件控制。 在 Windows 中,系统调用称为 API(图 11-1)。 每个 API 都是由您的应用程序调用的函数。 这些函数的实体存储在 DLL 文件中。
图11-1 应用程序通过操作系统间接控制硬件。
让我们看一个使用系统调用间接控制硬件的示例。 例如,如果要在窗口中显示字符串,可以使用Windows API①的TextOut函数。 TextOut 的语法如代码清单 11-1 所示。 该代码实际上没有任何参数来使其了解硬件。 参数hdc,注释为“设备描述表的句柄”,用于指定绘图对象的标识值,例如字符串或图形,并不代表直接的硬件设备。
代码清单11-1 TextOut函数语法(C语言)
BOOL TextOut(HDC hdc, // 指向字符串的指针int cbString // 字符串中的字符数);
那么 Windows 应该怎么做呢?结果表明,虽然Windows作为硬件直接控制显示,但Windows本身也需要作为软件向CPU传递一定的指令,通过软件控制硬件。
补充说明:脚注
① 如果要将字符串输出到 Windows 或打印机,可以使用 Windows 提供的 TextOut 函数作为 API,但不能使用提供的 printf 函数将字符串打印到窗口或打印机。 。
相关推荐
- 年付28.79美元的HostDare美国VPS值得入手吗(hostal)
- 78元月付的莱卡云台湾原生IP VPS表现如何(莱卡官方网站)
- 测评edgeNAT日本新机:原生双ISP IP,年付7折/月付8折,80元/月享1TB流量@200Mbps带宽,国际线路+IX
- 无忧云优惠汇总:云服务器、高防、站群与机柜托管选购参考(无忧云客服)
- 亚洲云Asiayun国庆活动整理:大带宽服务器新购低至3折,半年/年付加赠1-2个月与翻倍流量,续费同享折扣
- DogYun双节促销详情:弹性云7折、经典云8折,独服下单立减100元,充值还送10%返利
- 莱卡云10月促销整理:可选BGP/CN2多机房,云服务器25(莱卡iic)
- 2025年国庆中秋VPS优惠盘点:国内外主机商双节促销活动整理
- 华逸云双节活动分享:香港云服务器限量五折,可选CN2 GIA/BGP高防线路
- 白雀云(bqyun)双节促销整理:4C4G云服务器年付399元,高防独立服务器399元起,配600G防御(无视CC)与1Gbps带宽
- 烟火云美国NTT双ISP家宽VPS实测:月付50元,1核1G/10G SSD配置,100Mbps端口含2TB流量,回程CMIN2&9929
- 华纳云11(华纳云香港服务器166元)
- 络V云香港服务器促销分享:流量套餐限时5折,月费低至5(络云平台)
- ZoroCloud选购指南:香港三网CN2GIA建站云服务器与美国原生双ISP家宽,支持Tiktok/Chatgpt
- Contabo商家测评:德国GPU云服务器上线,月付$27(NVIDIA L40S、A100、A40、A16)(德国服务器被缴了是真的吗)
- RAKsmart 美国独立服务器仅$9.9/月 美国vps低至$0.99/月 新用户注册送最高266美元 年终购买更优惠
主机频道







![[2021双十一]华为云促销整理:新用户云服务器低至60元/年,另有充值返券活动-主机频道](https://zhujipindao.com/wp-content/uploads/96384b9ce364e14.jpg)



评论前必须登录!
注册