首页 > 其他分享 >系统调用和高级语言可移植性

系统调用和高级语言可移植性

时间:2024-02-26 19:33:58浏览次数:21  
标签:调用 操作系统 编程语言 系统 高级 可移植性 硬件

在计算机中尚不存在操作系统的年代, 程序员需要编写出处理相关的所有程序。用机器语言编写程序,然后再使用开关将程序输入,这一过程非常麻烦。基于此,就有人开发出了仅具有加载和运行功能的监控程序,这就是操作系统的原型。操作系统也被称为基础软件,它是计算机运行时不可或缺的控制程序,以及在控制程序下运转的为其他软件运行提供操作环境的软件的统称。虽然它使用依旧比较麻烦,但比起之前工作量得到了很大的缓解 。操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的。这些函数及调用函数的行为统称为系统调用也就是应用对操作系统的功能进行调用的意思。另外需要强调的是,操作系统和高级编程语言会使硬件抽象化,在向其他人解释的时候一定要注意,不要说错了哦。
高级编程语言中,也存在着可以直接调用系统调用的编程语言。但用这样的方式做成的应用,移植性并不是很好,如直接调用Windows系统调用的应用,在Linux上显然无法运行通过调用操作系统提供的系统调用,程序员没必要编写直接控制硬件的程序,而且使用高级编程语言,有时甚至无需思考系统调用的存在,这是因为操作系统和高级编程语言能够使硬件抽象化。文件是操作系统对磁盘媒介空间的抽象化,如果直接对硬件进行操作的话,那就变成了通过磁盘用的I/O指定扇区位置对数据进行读写。
在这里插入图片描述。掌握基本的硬件知识,并借助操作系统进行抽象化,可以大大提高编程效率。在操作系统这个运行环境下,应用并不是直接控制硬件,而是通过操作系统间接控制硬件的。操作系统收到应用发出的指令后,首先对指令进行解析,然后再对硬件进行控制。操作系统的硬件控制功能,通常是一些小的函数集合体的形式来提供的,这些函数及调用函数的行为统称为系统调用,也就是应用对操作系统的功能进行调用的意思。用高级编程语言编写的应用在编译后,就转换成了利用系统调用的本地代码。

标签:调用,操作系统,编程语言,系统,高级,可移植性,硬件
From: https://www.cnblogs.com/sleeeep/p/18035019

相关文章

  • 2024 52pojie春节解题领红包之Windows 高级题
    202452pojie春节解题领红包之Windows高级题分析:crackme2024.exex64位程序upx脱壳,x64dbg设置异常,手动脱壳,略反调试cinit-->initterm_4定位到如下函数VEH_antiBP_140001670__int64VEH_antiBP_140001670(){qword_140020E58=findCC_1400022F0(0x64,0i64);AddVe......
  • .NET高级调试之sos命令输出看不懂怎么办
    一:背景1.讲故事很多.NET开发者在学习高级调试的时候,使用sos的命令输出会发现这里也看不懂那里也看不懂,比如截图中的这位朋友。.NET高级调试属于一个偏冷门的领域,国内可观测的资料比较少,所以很多东西需要你自己去探究源代码,然后用各种调试工具去验证,相关源代码如下:coreclr:......
  • SpringBoot应用调用Linkis进行任务调度执行SQl;进行数据质量分析
    基于Linkis的Rest-API调用任务官网示例:“https://linkis.apache.org/zh-CN/docs/1.3.2/api/linkis-task-operator”集合Springboot集成准备工作:SpringBoot-web应用:封装好支持cookie的restClient就行封装RestTemplateimportorg.apache.http.client.HttpClient;importo......
  • C# 引用DLL调用时注释无法显示
    C#引用DLL调用时注释无法显示修改前,调用DLL中的方法没有注释:修改后,调用DLL中的方法有注释:解决办法:在生成DLL时,将项目属性的生成页面中,勾选“XML文档文件”使用时,需要将XML文件和DLL文件放在同一目录下转载:https://www.cnblogs.com/KingKwon/p/7419508.html......
  • 常见问题 --- 语音视频呼叫系统调用嗨糠道闸一体机设备查看视频闪退问题排查
    调试设备是一个非常耗时的工作,主要是理解架构和分析流量上花去了很多时间,我这里大致说一下排查的流程问题描述在道闸一体机设备上点击呼叫按钮,呼叫后台,后台视频呼叫窗口没有响应或者出现一次后就立即消失。我们必须知道的常识,嗨糠openapi,嗨糠官方对他们自家的设备开放了第三方调......
  • golang 系统调用与阻塞处理
    所有在UNIX系统上运行的程序最终都会通过C系统调用来和内核打交道。用其他语言编写程序进行系统调用,方法不外乎两个:一是自己封装,二是依赖glibc、或者其他的运行库。Go语言选择了前者,把系统调用都封装到了syscall包。封装时也同样得通过汇编实现。当M一旦进入系统调用后,会......
  • 回调函数是把函数当参数供函数体调用的函数
    阅读下列代码,分析并思考下列问题:在selectProblem函数中,调用了problemStore.getProblemByTitle(),传递的参数是什么?传递给谁?getProblemByTitle函数体在哪里?callbackfunction函数体在哪里?在ajax请求中,callbackfunction(JSON.parse(resp))是什么意思,里面的参数传给了谁?//声明......
  • 在sequence 中 通过后门方式调用task
     可以使用void‘($cast(slaver_drv_use,uvm_top_find("xxxx")));在sequence中调用svt_axi_slave_agent(component) 的task。代码示意 svt_axi_slave_agent   slaver_drv_use;声明句柄void‘($cast(slaver_drv_use,uvm_top_find("uvm_test_top.te_env_inst.amba_s......
  • python调用Javascript实践
    一、背景知识1、Node.jsjavacript的运行环境有两个:浏览器、node.jsNode.js是一个开源与跨平台的JavaScript运行时环境。它是一个可用于几乎任何项目的流行工具!Node.js在浏览器外运行V8JavaScript引擎(GoogleChrome的内核)。这使Node.js表现得非常出色。运行js的命......
  • C++多线程 第九章 高级线程管理
    第九章高级线程管理注意:本章内容由于教材本身问题,例子存在较大问题.请自行在理解基础上重新设计.在大多数系统上面,为每个可以与其他任务并行执行的任务分配一个单独的线程是不切实际的.但线程池允许尽量充分利用硬件提供的并发性.在线程池帮助下,可以被并发执行的任务......