linux系统中什么是系统调用?

linux中什么是系统调用

1.什么是系统调用

系统调用,指的是操作系统提供给用户程序调用的一组特殊接口,用户程序可以根据这组接口获得操作系统内核的服务。它规定了用户进程陷入内核的具体位置,或者说规划了用户访问内核的路径,只能从固定位置进入内核。

2.linux的系统调用

对于现代操作系统来说,系统调用是用户空间和内核通讯的普遍手段,linux也不例外。按照功能区域,linux系统调用大致分为进程控制,文件访问,系统控制,存储管理,网络管理,进程通讯等,详细说明可以通过man 2 syscalls命令查看manpage说明。

系统调用,仅仅通过软中断机制向内核提交请求,进入系统调用对应服务。linux提供的用户编程接口遵循了POSIX标准,这套标准除了定义一些标准的C函数外,提供了一套封装例程将系统调用封装供用户编程使用。不过封装并非必须的,如果你愿意直接调用,linux内核也提供了一个syscall()函数来实现调用。通过下面一个例子了解C库调用和直接调用的区别。

/*** file: demo.c** author: eric.xu** date: 2016-02-25*/#include #include #include #include int main(void){ long id1, id2; /* system call no 20, __NR_getpid equal to SYS_getpid */ id1 = syscall(__NR_getpid); printf(“sys_call getpid %ldn”, id1); /* libc getpid */ id2 = getpid(); printf(“libc getpid %ldn”, id2); return 0;}

编译运行,可以看到两者结果一致。

sys_call getpid 2899libc getpid 2899

3.linux系统调用实现

当用户态的进程调用一个系统调用时,CPU切换到内核态并开始执行内核函数。因为内核中每个系统调用都有唯一的标号,所以用户态调用必须传递一个系统调用号的参数来确定具体的系统调用函数。所有的系统调用函数都是整数,在内核中,整数和0表示系统调用成功结束,负数则表示出错条件,而这个错误值会存放在errno变量中作为出错码返回给应用程序。

linux系统调用使用软中断实现,在x86架构中调用int $0x80汇编指令,这条指令会产生向量为128的异常。而在arm架构中通过SWI指令进入内核空间,下面看下这条指令的格式:

SWI {cond} immed24;其中immed24表示24位立即数

SWI异常中断处理程序需要通过读取引起软件中断的SWI指令,取得24位立即数。基本步骤是在SWI异常产生后,访问SPSR寄存器判断该指令是ARM指令还是Thumb指令,然后通过访问LR寄存器得到整条指令地址,紧接着拿到该条指令,获取最低24位立即数。

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月21日
下一篇 2022年6月21日

相关推荐

  • 爱彼迎启动迁移计划,帮助中国房东对接入驻其他平台

    钛媒体App 6月3日消息,6月3日,爱彼迎启动迁移计划,帮助中国地区房东将房源信息、点评等数据一键迁入包括途家,美团,飞猪等在内的其他平台。有房东表示,接口开放没多久,自家房源在…

    2022年7月2日
  • 大嘤帝国的官网移除了jQuery依赖

    很长一段时间,一直服役中的JQuery,终于被开发人员从帝国的网站拿下了。拿下之后,有如下响应: 整体前端处理时间更少。75 %的情况下,阻塞时间减少了 11% 。95% 用户的阻…

    2022年6月28日
  • 去年花2.4w买的全套python教程用不着了,现在送给有缘人,不要钱

    当年2w买的全套python教程用不着了,现在送给有缘人,不要钱,一个月教你从入门到精通 1、本套视频共487集,本套视频共分4季 第—季:Python基础。 第二季:Python…

    2022年6月13日
  • 执行神舟十四号载人飞行任务的航天员乘组确定

    据中国载人航天工程办公室消息,经空间站阶段飞行任务总指挥部研究决定,陈冬(中)、刘洋(右)、蔡旭哲3名航天员将执行神舟十四号载人飞行任务,由陈冬担任指令长。新华社发 这是神舟十四号…

    2022年8月16日
  • win11和win10哪个好用?兼容性更高?

      win11和win10哪个好用?兼容性更高?虽然电脑系统已经更新了好多代了,但要说好用,那还是得看自己的习惯,win11虽然高一个版本,更新了不少内容,也要看自己是否用的上。 …

    2022年7月26日
  • 吉利“转型”魅族“改嫁”,手机车机美梦成真

    [爱卡汽车 深度观察 原创] 6月13日,一则消息让汽车圈与科技圈炸开了锅,根据国家市场监督管理总局发布的公示文件显示,星纪时代正式收购魅族79.09%的股权。收购完成后,星纪时代…

    2022年6月18日
  • 鼎桥p50在8月28日发布?使用骁龙888处理器,支持5g网络

    鼎桥p50也快发布了,基本上相当于华为p50的5g版本吧。 这款手机会在8月28日发布,使用骁龙888处理器,并且是内置4100毫安的电池,系统虽然不是鸿蒙,但基本上支持鸿蒙2.0…

    2022年8月30日
  • Nothing Phone (1) 上手体验:从创意到创新

    在离开一加后,明星企业家裴宇用了将近 1 年的时间,才下定决心杀回手机市场,Nothing Phone (1) 是这家明星创业公司的第一份答卷。 在这篇文章里,我希望可以根据我短暂…

    2022年8月6日
  • 中国地区唯一上榜的单品手机 小米NTE11

    Redmi Note 11 LTE 今天我们来讲下,2022年上半年全球前10大手机产品销售唯一上榜的是小米 Note 11 LTE,5G 天玑810 33W快充 5000mah …

    2022年8月22日
  • 如何查看服务器配置信息

    学习Linux命令,我们需要有一台Linux服务器。有了服务器,就想看看它的性能怎样。翻出自己较早前写的一个脚本,一键查看系统大部分参数。在这个基础上,对命令进行了注释,方便。 T…

    2022年6月18日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息