prctl系统调用提供了一系列操作进程的方法。

这里主要说明一下PR_SET_SECCOMP参数是如何触发IPI的。

seccomp 是 secure computing 的缩写,是 Linux kernel 从2.6.23版本引入的一种简洁的沙盒 sandboxing 机制。
在 Linux 系统里,大量的系统调用(system call)直接暴露给用户态程序。但是,通常的程序并不需要所有的系统调用,滥用系统调用会对系统造成安全威胁。
seccomp安全机制能使指定的进程进入到一种“安全”运行模式,该模式下的进程要么只能调用4种系统调用(system call),即 read(), write(), exit() 和 sigreturn(),要么只能运行用户指定的系统调用,这些可以运行的系统调用放到白名单中,如果调用其他系统调会发送错误信号给进程。

进程调用系统调用prctl,如果参数为PR_SET_SECCOMP,那么后面会为安全考虑,会将一些页面的权限设置为只读,这是通过调用set_memory_ro函数实现。
更新了页面的权限后,需要刷新TLB,因此会调用flush_tlb_all,这样就会向所有线上cpu发送IPI来刷新TLB。

因此,在实时系统中使用prctl系统调用必须小心,因为有可能因为刷新TLB触发IPI,影响系统的确定性。

linux prctl系统调用触发IPI相关推荐

  1. linux系统列表,Linux常用系统调用列表-20210415054405.docx-原创力文档

    Linux Linux常用系统调用列表作者:雷震 2002年3月 本文列出了大部分常见的Linux系统调用,并附有简要中文说明. 以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调 ...

  2. linux mkdir 系统调用,Linux Rootkit 系列四:对于系统调用挂钩方法的补充

    免责声明:本文介绍的安全知识方法以及代码仅用于渗透测试及安全教学使用,禁止任何非法用途,后果自负 前言 我将会把系列文章继续写下去,由于本系列文章novice同学也在写,所以我俩的顺序可能有点乱,不过 ...

  3. Linux的系统调用、网络连接状态、磁盘I/O;可疑行为监控/日志收集、SHELL命令执行流程

    http://man7.org/linux/man-pages/man7/capabilities.7.html http://www.cnblogs.com/LittleHann/p/3850653 ...

  4. 文件编程之Linux下系统调用

    说明: linux下文件编程可使用两种方法: ****linux系统调用 ****C语言库函数 前者依赖于linux系统,后者与操作系统是独立的. 在任何操作系统下,使用C语言库函数操作文件的方法都是 ...

  5. linux中系统调用和库函数的区别

    linux中系统调用和库函数的区别 2013-05-03 22:18:20 分类: LINUX 首先,要说一下两者的概念: 系统调用 :是操作系统为用户态运行的进程和硬件设备(如CPU.磁盘.打印机等 ...

  6. open函数返回-1_4.6 linux的系统调用执行探究(1)

    arm64大约支持280个系统调用,我们平时使用的这些系统调用,到底工作原理是什么,调用后又是到哪里实现的呢,这篇文章初步了解下内核系统调用的流程,并告诉跟踪这个流程的方法. 废话不多说,如上就是li ...

  7. linux网络系统调用,Linux网络系统调用接口--待续

    [内核版本:linux-2.6.30] Linux网络系统调用接口其定义在:linux/net/socket.c 其中主要的接口,如下所示. 1. socket Function: Definitio ...

  8. linux内核中获取虚拟地址api,Linux内核-系统调用

    Linux内核-系统调用 1.与内核通信 #系统调用在用户空间进程和硬件设备之间添加了一个中间层 作用:1.为用户空间提供了一种硬件的抽象接口 2.系统调用保证了系统的稳定和安全 3.出于每一个进程都 ...

  9. linux内核-系统调用execve()

    读者在linux内核-系统调用fork.vfork与clone中已经看到,进程通常是按其父进程的原样复制出来的,在多数情况下,如果复制出来的子进程不能与父进程分道扬镳,走自己的路,那就没多大意义.所以 ...

最新文章

  1. 转载:QT图形视图框架(The Graphics View Framework)
  2. mvn test BUILD FAILURE
  3. 最新版Xshell 6安装教程详解
  4. C++ 动态内存管理:c/c++的动态内存管理,new/delete,operator new/delete,placement-new, 内存泄漏
  5. 在VC中使用MATLAB C++函数库
  6. java 多线程池_Java ThreadPoolExecutor线程池 同时执行50个线程
  7. Win10 Nodejs搭建http-server注意点
  8. Audio Session Programming Guide
  9. Cocos creator之javascript闭包
  10. 【游戏开发实战】Unity逆向怀旧经典游戏《寻秦OL》,解析二进制动画文件生成预设并播放(资源逆向 | 二进制 | C#)
  11. python时间序列进行线性插值_精解Python实现线性插值法——一看就会
  12. 厦门龙凤419_福建生物工程职业技术学校2019招生通知书EMS单号
  13. php7从入门到入坟,《在对家的坟头做直播》
  14. oracle 转chr,[Oracle]Oracle之Chr函数返回
  15. 小米,山寨杀手,国货的希望
  16. ZZULIOJ:1125: 上三角矩阵的判断
  17. 阿里云大数据助理工程师认证考试考什么内容?
  18. 基于Spring+SpringMVC+MyBatis博客系统的开发教程(十六)
  19. 基于图像的三维重建——对极几何(3)
  20. 小程序遇到回车换行怎么处理

热门文章

  1. java 整数乘法的算法,大整数乘法——分治算法的时间复杂度
  2. YOLOv5中FPS计算
  3. plt.subplot 用法
  4. JAVA宠物领养系统计算机毕业设计Mybatis+系统+数据库+调试部署
  5. 解决Vue中Object.assign清空数据的报错
  6. EL表达式和JSTL标签:简化JSP的Java代码
  7. 微信小程序实现轮播图根据图片大小自适应高度
  8. JMeter之断言 - 响应文本
  9. 51自学网python爬虫_Python爬虫知识点梳理
  10. SQL语句中Cast的用法