系统调用接口

article/2025/11/5 0:03:13

1、系统调用

操作系统作为系统软件,它的任务是为用户的应用程序提供良好的运行环境。因此,由操作系统内核提供一系列内核函数,通过一组称为系统调用的接口提供给用户使用。系统调用的作用是把应用程序的请求传递给系统内核,然后调用相应的内核函数完成所需的处理,最终将处理结果返回给应用程序。因此,系统调用是应用程序和系统内核之间的接口。Linux系统调用,包含了大部分常用的系统调用和由系统调用派生出的函数。

系统调用接口是由一系列系统调用函数构成的特殊的接口。程序员或应用程序通过该特殊的接口取得操作系统内核所提供的服务,它是专为程序员编程时使用,是应用程序和系统内核通信的桥梁。也就是说,在应用程序中使用的系统调用是以函数的形式展现在用户面前,提供给用户使用。例如,用户可以通过和文件系统相关的系统调用,请求系统打开文件、关闭文件或读、写文件等。

操作系统提供的各种服务之所以需要通过系统调用来提供给用户程序的根本原因是对系统进行保护。Linux运行空间分为内核空间与用户空间,它们各自运行在不同的级别上,逻辑上相互隔离。用户进程通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间函数。但很多情况下,用户程序在执行过程中需要调用系统程序来获得相应的系统服务,这时就必须利用系统提供给用户的系统调用了。系统调用规定了用户进程进入内核的具体位置,即用户访问内核的路径是事先规定好的,只能从规定位置进入内核,而不准许肆意跳入内核,这样才能保证用户程序的执行不会威胁到内核的安全。

2、Linux中的系统调用

Linux系统利用系统调用进行内核与用户空间的通信,而且linux系统的系统调用相比其他的操作系统更加简洁和高效。总的来讲,系统调用在系统中主要用途如下:

(1)控制硬件。例如,把用户程序的运行结果写入到文件中,可以利用write系统调用来实现,由于文件所在的介质必然是磁盘等硬件设备,所以该系统调用就是对硬件实施控制。

(2)设置系统状态或读取内核数据。例如,用户程序可以通过time系统调用来读取属于内核数据的系统时钟。

(3)进程管理。例如,用户程序可以利用fork系统调用来创建子进程,可以利用wait等系统调用来实现进程通信。

3、API与系统调用的关系

API(Application Programming Interface)又称为应用程序接口。通过该接口用户程序员可以间接的访问到系统硬件和操作系统资源。操作系统的主要作用之一就是把系统硬件和操作系统资源进行封装并对上层用户进行屏蔽,防止用户有意无意的对系统造成破坏。操作系统就像一个保护壳一样保护系统资源不被外界破坏。因此,当用户需要对系统资源进行访问的时候,就必须通过操作系统向用户提供的接口才能实现用户对系统资源的访问,取得内核的服务。

API一般以函数定义的形式出现,如read()、malloc()、abs()等。但API并不需要和系统调用一一对应,它们之间的关系可以是一对一、一对多、多对一或者无关系。例如read()接口就和read系统调用对应,而abs()作用是求绝对值,不需要任何系统调用。而且一般API主要是通过C函数库来实现。
--------------------- 
作者:nail1991 
来源:CSDN 
原文:https://blog.csdn.net/nail1991/article/details/53151965 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

总结:


C标准库,系统调用,系统接口API,内核函数

一、用户空间:

1)C标准库:是适用于所有c语言编写的程序,没有平台差异性。

                  在用户空间程序员可以直接调用的。

                  用C语言和汇编语言实现的。

                  有的库函数封装了系统调用函数(调用库函数就可以间接调用系统调用)。

2)系统API(以库的形式提供): 具有平台差异性,比如windows API 就不能在Linux平台上使用

                   它是操作系统提供给用户的接口,可以让用户直接使用操作系统的某个服务。

                  一个API可能调用了一个系统调用,也可能对应好几个系统调用。

二、内核空间:

 1)系统调用:由内核提供给用户的接口,使用户可以对内核做操作。

                  但是需要进入内核态,才能调用。

系统调用是用户进程进入内核的接口层,它本身并非内核函数,但他是由内核函数实现的,进入系统内核后,不同的系统调用会找到各自对应的内核函数,这写内核函数被称为系统调用的“服务例程”。也可以说系统调用是服务例程的封装例程。

2)内核函数:实现内核功能的函数


http://chatgpt.dhexx.cn/article/W4QarvcO.shtml

相关文章

java调用接口实现的方法_java调用接口的实现方法

java调用接口的实现方法 发布时间:2020-06-29 11:08:46 来源:亿速云 阅读:78 作者:Leah 本篇文章给大家分享的是有关java调用接口的实现方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读…

前端调用接口

调用接口 jquery的ajax使用方法案例调用的接口get请求post请求在接口中调用接口 fetch案例调用的接口案例 axios使用方法 vue-resource jquery的ajax 该方法是 jQuery 底层 AJAX 实现。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下无需直接操作该函数&#xff0c…

vue调用接口

目录 简单获取和追加数据铺页面 用 post 给接口传值 post 用 url 问号拼接数据 简单获取和追加数据铺页面 一、在api中新建该页面的js文件用于存放该页面的所有接口 二、引用所需组件,调用接口(已经全局配置了接口地址) import axios fr…

接口调用方法详解

接口调用方法详解 基础知识 接口定义: 接口是一组已命名的方法签名。所以接口里可以定义方法、属性、事件,因为这些本质上都是方法。但是,接口不能定义任何的构造函数。 接口的可访问性: 类本身的修饰符可以为public,internal等(VS2008里试过)。但是显示实现接口方…

如何优雅的调用接口?

目录 一、背景 二、分析 三、编码 InterfaceDescriptor ServiceProviderInterface ServiceProviderInterfaceClient ServiceProviderInterfaceClientImpl 四、测试 SendSmsRequest SendSmsResult SendSmsProvider TestController 五、总结 一、背景 一般我们的项…

软件测试 (7) web项目测试

前言 之前说了APP项目的测试,今天来总结一下web项目的测试,其实大多数过程是差不多类似的。对比平常移动端手机的高频率使用来说,对于部分人使用pc端浏览器的概率就不会这么高,讲APP项目测试的时候没怎么涉及到网络协议部分的介绍…

项目流程_软件测试

软件测试属性 1.按测试阶段划分 单元测试:单元测试是对软件基本组成单元进行的测试,是为了尽早发现错误(错误发现越早,成本越低,发现问题比较容易,修正问题更容易),单个的软件单元或者一组相关的软件单元所进行的测试&…

[SpringBoot系列]项目测试

文章目录 加载测试专用属性加载测试专用配置Web环境模拟测试数据层测试回滚测试用例数据设定 加载测试专用属性 测试是保障程序正确性的唯一屏障,在企业级开发中更是不可缺少。 测试过程本身并不是一个复杂的过程,但是很多情况下测试时需要模拟一些线上情…

如何找软件测试的项目

10年测试经验分享:新手怎么找软件测试的项目?_程序员二黑的博客-CSDN博客_软件测试项目去哪里找测试新手不知道上哪找测试项目,这应该是每个测试自学人的困扰。https://erhei.blog.csdn.net/article/details/119416292?spm1001.2014.3001.55…

IT项目管理之软件测试

1. 定义 软件测试是使用人工或者自动的手段来运行或者测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 在软件投入使用前,要经过一系列的严格测试,才能保证交付质量。 2. QC & QA &a…

软件项目测试的具体内容

功能测试: 对指定业务所有功能进行测试,撰写测试用例,执行测试用例,出具测试报告和BUG列表,专用BUG管理工具进行测试管理。 根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们…

Linux下轻量级数据库-SQLite3(嵌入式设备)

一、概念 数据库是用来存储和管理数据的专用软件,使得管理数据更加安全,方便和高效。数据库对数据的管理的基本单位是表(table)。 二、常见的数据库 大型数据库(大型机) —————- Oracle(亿级) 中型数据库(分布式超大型) ———— mysql(百万级) 轻…

二、MySQL

MySQL是一个小型关系数据库管理系统。与其他大型数据库管理系统 (例如Oracle、DB2、SQL Server 等)相比,MySQL规模小、功能有限,但是它体积小、速度快、成本低,并且提供的功能对稍微复杂的应用来说已经够用&#xff0c…

数据库——多种方法导入Excel数据

文章目录 一、SQL Server导入Excel数据二、小技巧导入Excel数据三、使用Microsoft.ACE.OLEDB导入Excel数据四、手动添加一行数据五、手动添加多行数据五、解决类型不匹配致导入失败 一、SQL Server导入Excel数据 接下来就一直点击NEXT,直到完成 此时EXCEL的数据就被…

MySQL数据库简介

MySQL数据库简介 MySQL数据库是一种关系型数据库管理系统,是一种开源软件由瑞典MySQL AB公司开发,08年1月16日被Sun公司收购,09年Sun公司又被Oracle公司收购。 由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点&a…

Linux中的小型数据库 SQLite3

数据库(SQLite) 数据库后缀 .db(data base) gcc时加 -lsqlite3 这些是小希归纳的SQLite的一些重要语句,与示例应用 如果想要进一步学习,大家可以去网上搜 SQLite3的书籍

在JSTL 中使用小型数据库 SQLite

文章目录 一、Sqlite 数据库命令行工具的下载下载地址: 二、Sqlite 数据库 shell 工具的使用方法1.创建数据库2.Sqlite 数据库中表的创建:3.表中数据的插入4.Sqlite 数据库命令行的退出 三、ER图转化为数据库3.1建表3.2 向表中插入数据3.3 输出数据库中相…

实现一个小型数据库--记一次中级软件设计实作浮沉历程

说在前头:本篇文章主要是记录这次项目的过程,不全是贴代码,具体的程序移步这里,不喜欢的同学请轻喷。 事件起因:大三狗一枚,专业是软件应用。这学期的中级软件设计实作题目是实现一个小型的数据库&#xf…

用xml充当小型数据库案例

利用dom4j工具&#xff0c;将user.xml作为一个小型的数据库&#xff0c;然后控制台输入进行用户名与密码的匹配 /*user.xml文件放在src下*/ <?xml version"1.0" encoding"utf-8"?> <users><user id"001" name"ecri" …

数据库上机3(小型数据库应用程序开发)

注&#xff1a; ①各上机报告均根据《数据库技术与应用》课程的上机任务所做。 ②课程教材为 《数据库系统概论&#xff08;第五版&#xff09;》/王珊, 萨师煊编著/北京:高等教育出版社,2014 上机要求&#xff1a; 1、自学上层应用访问数据库的方式&#xff08;如ODBC、ADO、…