02 - 深入理解系统调用
创始人
2024-06-03 14:20:31
0

---- 整理自狄泰软件唐佐林老师课程

查看所有文章链接:(更新中)Linux系统编程训练营 - 目录

文章目录

  • 1. Linux系统架构
    • 1.1 模式切换的本质(系统调用的本质)
    • 1.2 系统调用的真面目
    • 1.3 系统API的真面目
    • 1.4 系统调用和系统API实现示例
    • 1.5 编程实验:系统调用的本质
    • 1.6 值得思考的问题
      • 1.6.1 相同功能代码实现
      • 1.6.2 strace -- 系统调用探测器
      • 1.6.3 不同语言的系统调用
      • 1.6.4 strace -- 程序逆向分析
      • 1.6.5 strace -- 程序数据分析

1. Linux系统架构

在这里插入图片描述

1.1 模式切换的本质(系统调用的本质)

  • 系统模式切换依赖于CPU提供的工作方式
  • 一般来说,大部分CPU至少具有两种工作方式
    • 高特权级Ring0(内核模式):可以访问任意的数据,包括外围设备,比如网卡、硬盘等
    • 低特权级Ring3(用户模式):只能 受限的 访问内存,并且不允许访问外围设备,可被打断
  • 系统模式切换通过特殊的CPU指令发起(int 0x80,触发中断
  • 应用程序(进程)无法直接切换CPU的工作方式
  • 系统调用 是应用程序(进程)请求模式切换的唯一方式

在这里插入图片描述

1.2 系统调用的真面目

在这里插入图片描述

1.3 系统API的真面目

在这里插入图片描述

1.4 系统调用和系统API实现示例

在这里插入图片描述

1.5 编程实验:系统调用的本质

【参看链接】:02 - 深入理解系统调用 / program.c

在这里插入图片描述

注释1:
  -fno-builtin 用于解决当用户自定义的函数与C语言的内建函数(C库函数)冲突的问题。当用户自定义的函数与内建函数冲突时,若在gcc的编译选项中加上-fno-builtin时,则表示不使用C语言的内建函数。
   对于有些函数不想用内建函数,而其他的某些函数还是希望使用内建函数时的场景,可以使用 -fno-builtin-function 选项,其中的function就是冲突的函数名,例如 -fno-builtin-printf。

注释2:
  -nostartfiles 选项的作用是通知编译器不自动加入启动函数以及别的库级别的初始化。

1.6 值得思考的问题

  • 如何判断一个应用程序(进程)触发了系统调用?
  • strace

1.6.1 相同功能代码实现

在这里插入图片描述

1.6.2 strace – 系统调用探测器

  • strace用于监控进程与内核的交互(监控系统调用)
  • strace用于追踪进程内部状态(定位运行时问题)
  • strace按序输出进程运行过程系统调用名称、参数和返回值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:ldd 用来打印或者查看程序运行所需的共享库(访问共享对象依赖关系),常用来解决程序因缺少某个库文件而不能运行的一些问题。

在这里插入图片描述

1.6.3 不同语言的系统调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

==> 编译型语言(如C、C++)执行效率较高,解释型语言(如python、perl)效率较低
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.6.4 strace – 程序逆向分析

【参看链接】:02 - 深入理解系统调用 / fcopy.c

在这里插入图片描述
在这里插入图片描述

1.6.5 strace – 程序数据分析

-x:print non-ascii strings in hex,
-xx:print all strings in hex
-s strsize:limit length of print strings to STRSIZE chars (default 32)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关内容

热门资讯

我 想 对 您 说作文 我 想 对 您 说作文我 想 对 您 说  妈妈我想对您说,每当您正在批评我时,我心里明白你是为我好...
什么让我回味无穷作文800字 什么让我回味无穷作文800字(通用26篇)  在平平淡淡的学习、工作、生活中,大家最不陌生的就是作文...
美好时光作文 美好时光作文(通用24篇)  在学习、工作、生活中,大家一定都接触过作文吧,通过作文可以把我们那些零...
肩膀的作文 关于肩膀的作文5篇  在学习、工作或生活中,大家都写过作文,肯定对各类作文都很熟悉吧,作文根据写作时...
抽签猜动作作文 抽签猜动作作文抽签猜动作四年一班 黄绍祯今天上午上课时,老师对我们说:“今天我们玩一个游戏。”我们听...
叛逆作文750字 叛逆作文750字  我在网吧里正玩着游戏看看时间,已经八点了回去该哎骂了,下机后我喘着气回到家里父亲...
读书破万卷,下笔如有神作文 读书破万卷,下笔如有神作文读书破万卷,下笔如有神读书破万卷,下笔如有神 读书破万卷,下笔如有神董书君...
激励自己的好句子 有关激励自己的好句子  在日常的学习、工作、生活中,大家都收藏过令自己印象深刻的句子吧,不同类型的句...
我明白了一个道理作文450字 我明白了一个道理作文450字(精选28篇)  在平平淡淡的学习、工作、生活中,大家一定都接触过作文吧...
描写大年三十的作文 描写大年三十的作文(精选24篇)  大年三十是一个喜庆的日子。阵阵爆竹声响车云霄,束束烟花直窜天空,...
语文老师我想对你说 语文老师我想对你说  语文老师我想对你说(一)  古人曾说:“春蚕到死丝方尽,蜡炬成灰泪始干。”这句...
校运会精神的作文 关于校运会精神的作文  11月27日,我校开展了一年一度的校运会。  那天下午,有一个最激动人心的项...
童年梦想作文300字 童年梦想作文300字(通用60篇)  在平时的学习、工作或生活中,大家一定都接触过作文吧,借助作文人...
乞讨者作文650字 乞讨者作文650字  说到乞丐,大家一定都不陌生,五山的街道旁随处可见。在路上开车的时候,车窗旁也会...
小朋友友谊作文400字 关于小朋友友谊作文400字汇总5篇  在平凡的学习、工作、生活中,大家总免不了要接触或使用作文吧,根...
我心目中的父母作文 我心目中的父母作文我心目中的父母有一种爱是无私的,有一种爱是伟大的,有一种爱是永恒的!这爱,刚开始起...
>有感 -作文 >有感 -作文  在平日的学习、工作和生活里,大家都不可避免地要接触到作文吧,借助作文人们可以反映客...
洛阳“龙门石窟”游记作文 洛阳“龙门石窟”游记作文  在日常学习、工作抑或是生活中,大家对作文都不陌生吧,借助作文人们可以实现...
掌声的作文 掌声的作文(10篇)  在平凡的学习、工作、生活中,大家都尝试过写作文吧,借助作文人们可以反映客观事...
写字之星作文 写字之星作文  我们班有一个“写字之星”—孔奕如!她的“雄伟事迹”已经很多了,准确来说是多的数不清!...