目录

一、操作系统的重要性

二、系统调用和编程语言的移植性


一、操作系统的重要性

对于程序员来说,程序员创造的不是硬件,而是各种应用程序,但是如果程序员只做应用不懂硬件层面的知识的话,是无法成为硬核程序员的

在操作系统诞生之后,程序员不需要在硬件层面考虑问题,所以程序员的数量就增加了。哪怕自称 对硬件一窍不通的人也可能制作出一个有模有样的程序。不过,要想成为一个全面的程序员,有一点需要清楚的就是,掌握硬件的基本知识,并借助操作系统进行抽象化,可以大大提高编程效率

下面就看一下操作系统是如何给开发人员带来便利的,在Windows 操作系统下,用C语言制作一个具有表示当前时间功能的应用。time()是用来取得当前日期和时间的函数,printf()是把结果打印到显示器上的函数,如下:

#include <stdio.h>
#include <time.h>void main(){// 保存当前日期和时间信息time_t tm;// 取得当前的日期和时间time(&tm);// 在显示器上显示日期和时间printf("%s\n",ctime(&tm));
}

● 通过time_ttm,为time_t类型的变量申请分配内存空间

● 通过time(&tm),将当前的日期和时间数据保存到变量的内存空间中

● 通过printf("%s\n",ctime(&tm)),把变量内存空间的内容输出到显示器上

应用的可执行文件指的是,计算机的CPU可以直接解释并运行的本地代码,不过这些代码是无法直接控制硬件的,事实上,这些代码是通过操作系统来间接控制硬件的。变量中涉及到的内存分配情况,以及time0和printf0这些函数的运行结果,都不是面向硬件而是面向 操作系统 的。操作系统收到应用发出的指令后,首先会对该指令进行解释,然后会对 时钟IC 和显示器用的1/0进行控制

计算机中都安装有保存日期和时间的实时时钟(Real-time clock),上面提到的时钟IC就是值该实时时钟。

应用程序通过OS调度硬件:

二、系统调用和编程语言的移植性

操作系统控制硬件的功能,都是通过一些小的函数集合体的形式来提供的。这些函数以及调用函数的行为称为 系统调用,也就是通过应用进而调用操作系统的意思。在前面的程序中用到了 time()以及printf()函数,这些函数内部也封装了系统调用

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

高级语言的函数调用在编译后变成了系统调用:

在高级语言中也存在直接调用系统调用的编程语言。不过,利用这种方式做成应用,移植性并不友好

移植性:移植性指的是同样的程序在不同操作系统下运行时花费的时间,时间越少证明移植性越好

操作系统的重要性及系统调用和编程语言的移植性相关推荐

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

    操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的.这些函数及调用函数的行为统称为系统调用(system call),也就是应用对操作系统(system)的功能进行调用(call)的意 ...

  2. 我国自主研发的计算机操作系统是,浅谈我国自主研发计算机操作系统的重要性...

    龙源期刊网 http://doc.docsou.com 浅谈我国自主研发计算机操作系统的重要性作者:向思宇 来源:<新生代·上半月>2018年第12期 [摘要]:现如今知识产权的问题只被少 ...

  3. FPGA之道(72)提高设计的综合性能(四)提高设计的移植性与保密性

    文章目录 前言 提高设计的移植性 保持良好的代码风格 按照硬件依赖性区分代码 少使用专有IP核 提高设计的保密性 动态配置参数法 采用具有保密性的技术 前言 本文节选自<FPGA之道>. ...

  4. INT_PTR 更好的移植性

    不知道是从哪个版本的SDK开始,微软引入了一个新的类型--INT_PTR(其实也就是typedef了一把).看下面的定义就知道了. #if defined(_WIN64)     typedef __ ...

  5. 利用Linux的强大移植性和兼容性将操作系统轻松安装到硬盘

    Linux的强大移植性和兼容性将操作系统轻松安装到硬盘先前在http://dgd2010.blog.51cto.com/1539422/392310写过一篇文章,<创新性试验:我的第一次实现Li ...

  6. STM32贪吃蛇(流畅,高移植性)

    目录 一.一些前言: 二.完整代码 2.2.snake.c 2.3.中断处理 2.4.startup 三.后言 一.一些前言: 自己用2.4寸TFTSPI的屏写了个贪吃蛇,蛇行走画面流畅,不会有一顿一 ...

  7. python特性高移植性_Python特性图文盘点|微胜教育《九大编程语言全解析》系列...

    原标题:Python特性图文盘点|微胜教育<九大编程语言全解析>系列 ​ 又到了每周<九大编程语言全解析>的时候了,小伙伴们五一马上到了,想好去哪浪了吗? 今天我们盘Pytho ...

  8. java的移植性_详细介绍JAVA的可移植性

    软件可移植性指与软件从某一环境转移到另一环境下的难易程度.为获得较高的可移植性,在设计过程中常采用通用的程序设计语言和运行支撑环境.尽量不用与系统的底层相关性强的语言.下面介绍JAVA的可移植性. 1 ...

  9. python特性高移植性_用户选择使用Python的原因有哪些

    如今有众多可选的编程语言,这往往是入门者首先要面对的问题.开发工具的选择有时取决于特定的约束条件或者个人喜好. 过去的16年中对近260个团体组织和4000名学生的Python培训过程,让我见证了人们 ...

最新文章

  1. 若不能连接到sql server的localhost
  2. all the input arrays must have same number of dimensions
  3. 运行SSIS包的几种方式
  4. 微信公众号开发(python+werobot)-自动回复
  5. shell 函数的高级用法
  6. 教你玩转CSS 下拉菜单
  7. linux qt应用程序全屏,QT中MDI应用程序中更改子窗口大小或是全屏显示子窗口的方法...
  8. 【5】测试用例设计-状态迁移图
  9. Win10电脑定时关机无效怎么办
  10. 标准SPI、DUAL SPI、Quad SPI
  11. C语言程序设计(第三版)何钦铭著 习题4-10
  12. 单行/多行文本溢出的省略样式
  13. 一层一层的剥开你的心之StringBuilder
  14. php网站系统说明,飞飞php影视cms系统v3.0模版最全标签说明
  15. java 模拟天眼查登陆,模拟天眼查登陆问题
  16. 后补贴时代-新能源车企商业模式之“柳州模式”
  17. 电感器的正确测量电感同BuH的关系
  18. 微机原理与接口技术的基础知识
  19. mysql中设计suk表_电商项目-商品表(spu)、规格表(sku)设计
  20. 数据结构之链表(java语言实现)

热门文章

  1. 51单片机串口通讯介绍和实现
  2. Python的10种谋生方法,你们都知道了吗?
  3. sap2000计算带对撑梁的井形结构(水池)
  4. 通过游戏编程学Python(6)— 英汉词典、背单词
  5. 软件设计师总结-含括学习方法和学习过程,可参考
  6. 赛迪智库:政务数据不愿共享的成因及对策
  7. 【FTK Imager篇】FTK Imager制作镜像详细介绍
  8. OFDMA/SC-FDMA技术
  9. maven 警告:Description Resource Path Location Type Classpath entry org.eclipse.m2e.MAVE
  10. UDP和TCP(Java版)