性能优化-CPU上下文
CPU上下文:CPU中的寄存器和程序计数器。切换出的CPU上下文,会保存到linux系统内核中。 分为3种:1、进程上下文,2、线程上下文,3、中断上下文(硬件通过触发信号,导致中断处理程序运行)。 进程的运行空间:内核空间、用户空间。 内核空间:具有最高权限,可以直接访问所以资源,包括硬件。 用户空间:只有有限资源,不能访问包括内存在内的硬件只有,必须通过系统调用嵌入到内核中,才可以调用这些资源。 从用户态到内核态,是通过系统调用实现的。比如我们要查看一个文件的内容,需要 1、调用系统调用open打开一个磁盘文件, 2、read读取一个文件内容, 3、write输入到标准输入, 4、close关闭文件。 一、 执行系统调用,也是需要切换CPU上下文的。需要先保存CPU上下文的当前状态,然后加载系统调用的上下文,再然后跳转到内核态,执行内核任务。 系统调用完成,需要保存CPU现在的上下文状态,加载上次新的上下文状态,进入用户态,执行。 一次系统调用,发生了2次CPU上下文切换。 系统调用,一直是在同一个进程中运行的。 二、 进程上下文切换 进程切换只能在内核态中运行。进程切换不只切换虚拟内存、栈、全局变量等用户空间资源,也包括内核堆栈、等内核态资源。 保存上下文和恢复上下文,也不是免费操作,需要内核占用CPU运行,进行切换。 如果进程切换太频繁