3、系统编程入门:C++优势与安全挑战解析

系统编程入门:C++优势与安全挑战解析

1. 系统调用的安全隐患

在操作系统加载应用程序栈和执行 SYSRET 之间,可能会触发不可屏蔽中断(NMI)。这种竞态条件会导致以根权限执行的 NMI 代码使用应用程序栈而非内核栈,从而可能引发安全漏洞或系统损坏。不过,现代操作系统(如 Linux)有办法防范此类攻击。

2. Meltdown 和 Spectre 攻击

为支持系统调用的快速执行,采用 3:1 内存分割技术将内核内存映射到每个应用程序中,即应用程序内存与内核内存的比例为 3:1。为防止应用程序读写可能包含加密密钥和密码等敏感信息的内核内存,现代 CPU 架构提供了锁定内核内存部分的机制,使应用程序只能访问其非特权部分的内存。

为提高现代 CPU 的性能,大多数架构(如 Intel、AMD 和 ARM)采用了推测执行技术。例如以下代码:

if (x) {
    do_y();
}
do_z();

CPU 在执行该指令之前并不知道 x 是真还是假。如果 CPU 假设 x 为真,就可以节省一些 CPU 周期来提高性能。如果 x 实际上为真,CPU 就节省了周期;如果 x 为假,这种风险通常也是值得的,特别是当 CPU 能根据经验判断 x 为真的可能性时(例如,过去执行该语句时 x 为真)。这种优化方式称为推测执行,即 CPU 会执行代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值