操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的。这些函数及调用函数的行为统称为系统调用(system call),也就是应用对操作系统(system)的功能进行调用(call)的意思。在前面的程序中用到了time()及printf()等函数,这些函数内部也都使用了系统调用。这里之所以用“内部”这个词,是因为在Windows操作系统中,提供返回当前日期和时刻,以及在显示器中显示字符串等功能的系统调用的函数名,并不是time()和printf()。系统调用是在time()和printf()函数的内部执行的。大家可能会认为这个方法有些绕,不过这是有原因的。

C语言等高级编程语言并不依存于特定的操作系统。这是因为人们希望不管是Windows还是Linux,都能使用几乎相同的源代码。因此,高级编程语言的机制就是,使用独自的函数名,然后再在编译时将其转换成相应操作系统的系统调用(也有可能是多个系统调用的组合)。也就是说,用高级编程语言编写的应用在编译后,就转换成了利用系统调用的本地代码(图9-6)。

图9-6 高级编程语言的函数调用在编译后变成了系统调用

在高级编程语言中,也存在可以直接调用系统调用的编程语言。不过,利用这种方式做成的应用,移植性①并不友好(也俗称为有恶意行为的应用)。例如,直接调用Windows系统调用的应用,在Linux上显然是无法运行的。

Ps:①移植性指的是同样的程序在不同操作系统下运行时需要花费的时间等,费时越少说明移植性越好。

Win知识 - 程序是怎样跑起来的——系统调用和高级编程语言的移植性相关推荐

  1. 程序是怎样跑起来的-读书文摘

    缘起 在几年的工作和学习中,发现计算机知识体系尤为重要,自己还有所欠缺,想要从头到尾好好的夯实一下计算整个体系的相关知识,搭建计算机知识体系架构.因此决定细致的重读阅读这些计算机经典书籍,该书是上本书 ...

  2. 程序是怎么跑起来的 | 个人笔记

    程序是怎么跑起来的 萌新求别喷 今天开始自学程序 第一本书 qq1 程序咋跑的 cpu是啥 1.0 cpu是什么+ 1.1 cpu的内部结构 1.2 cpu是寄存器的集合体 1.3 决定程序流程的程序 ...

  3. rw_程序是怎样跑起来的 7-12章

    2016.10.26 - 11.01 <程序是怎样跑起来的>7-12章 - 矢泽久雄 / 著 - 李俊峰 / 译 个人学习笔记. 虽然计算机领域新技术在不断涌现,但计算机能处理的事情始终是 ...

  4. 《程序是怎样跑起来的》(上、中、下)

    计算机基础原理(包含程序是怎样跑起来的上中下) https://www.cnblogs.com/xmusxy/category/1469722.html <程序是怎样跑起来的>(上) 学习 ...

  5. 计算机是如何跑起来的百度云,《程序是怎样跑起来的》(下)

    学习笔记 第8章 从源文件到可执行文件 本章问题: 问题 本章重点: 编译器的功能:程序从源代码到可执行文件的流程:程序运行时的堆和栈. 8.1 计算机只能运行本地代码 一个例子1 一个例子2 图中栗 ...

  6. 程序是怎样跑起来的-计算机组成原理概要

     程序:指示计算机每一步动作的一组指令 程序 = 指令 + 数据 机器语言:CPU可以直接识别并使用的语言 正在运行的程序存贮在计算机的内存 内存地址:内存中,用来表示命令和数据存储位置的数值 计 ...

  7. 程序是怎么跑起来的(中)

    压缩数据 文件以字节为单位保存 从物理上对磁盘进行读写时是以扇区(512字节)为单位的,但是另一方面,程序则可以在逻辑上以字节为单位对文件的内容进行读写 在任何情况下,文件中的数据都是连续存储的 RL ...

  8. 《程序是怎样跑起来的》读书笔记

    2017-2-25 前段时间读完<程序是怎样跑起来的>,对程序的运行过程认识更深.书中前六章讲解了CPU.二进制.内存与磁盘.数据压缩,比较易于理解,读过之后也收益良多.后面章节涉及汇编语 ...

  9. 假期离校必备:Mac远程连接Win10桌面(设置断电自动重启、Win10配置远程桌面、Microsoft Remote Desktop Beta远程桌面连接、将Win作为服务器可以conda跑代码)

    假期离校必备:Mac远程连接Win10桌面(设置断电自动重启.Win10配置远程桌面.Microsoft Remote Desktop Beta远程桌面连接.将Win作为服务器可以conda跑代码) ...

最新文章

  1. UPDATE 时主键冲突引发的思考
  2. 训练生成对抗网络的一些需要关注的问题
  3. 用神经网络分类远和近
  4. 清华计算机系媒体所,清华大学计算机系媒体所《时光机》新年联欢会小结
  5. I/O复用函数的使用——poll
  6. POJ_3262 Protecting the Flowers 【贪心】
  7. Sublime 资源汇总
  8. java移除input焦点_java – Eclipse editText在按下完成后删除焦点(光标)
  9. Android 系统(231)--OTA对要发布的编译版本进行签名
  10. activity中获取fragment布局_安卓开发入门教程Fragment
  11. 设计一款知识性产品需要考虑十二个基本问题
  12. 发布 学习进度条 博客要求
  13. ModelAndView简介
  14. VINS fusion软件架构分析(4)---后端处理processMeasurements()功能函数概览
  15. 五、原码、反码和补码
  16. php酷狗音乐API接口,酷狗音乐抓取api
  17. 面试(一)2019年春招面试(初学者面试,大佬别见笑)
  18. 网页制作怎么入服务器,网站后台是怎么做的 如何进入网站后台
  19. 在Hexo搭建的博客中插入音乐或者视频
  20. 480P、720P、1080P

热门文章

  1. 常用Latex表达式符号——组合数学篇
  2. Pycharm更改快速规整代码快捷键
  3. 严蔚敏算法约瑟夫环_极客算法训练笔记(三),链表详细图解,别再逃避了朋友...
  4. 进行java环境设置的原因_java环境变量的设置原因
  5. php中头部含义,PHP 常用的header头部定义汇总大全
  6. python如何读取tfrecord_tensorflow读取tfrecords格式文件
  7. python中的一些基础
  8. python四则运算器tkinter_Python基于Tkinter的二输入规则器(乞丐版)
  9. 更改计算机语言win7,windows7专业版怎么更改语言_如何更改windows7专业版语言
  10. php 编码规范哪些_PHP 代码规范有哪些【详细讲解】