linux prctl系统调用触发IPI

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,影响系统的确定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值