前言:Linux是一个多任务的操作系统,可以支持远大于CPU数量的任务同时运行,但是我们都知
道这其实是一个错觉,真正是系统在很短的时间内将CPU轮流分配给各个进程,给用户造成多任务
同时运行的错觉。所以这就是有一个问题,在每次运行进程之前CPU都需要知道进程从哪里加载、
从哪里运行,也就是说需要系统提前帮它设置好CPU寄存器和程序计数器。
1、CPU上下文
CPU上下文其实是一些环境正是有这些环境的支撑,任务得以运行,而这些环境的硬件条件便是CPU寄
存器和程序计数器。CPU寄存器是CPU内置的容量非常小但是速度极快的存储设备,程序计数器则是
CPU在运行任何任务时必要的,里面记录了当前运行任务的行数等信息,这就是CPU上下文。
2、CPU上下文切换
根据任务的不同,CPU的上下文切换就可以分为进程上下文切换、线程上下文切换、中断上下文切换
,进程上下文切换。
在Linux中,Linux按照特权等级,将进程的运行空间分为内核空间和用户空间:
内核空间具有最高权限,可以直接访问所有资源
用户空间只能访问受限资源,不能直接访问内存等硬件设备,要想访问这些特权资源,必须通过系
统调用
对于一个进程来说,一般是运行在用户态的,但是当需要访问内存、磁盘等硬件设备的时候需要陷入到
内核态中,也就是要从用户态到内核态的转变,而这种转变需要通过系统调用来实现,例如一个打开文
件的操作,需要调用open()打开文件,read()读取文件内容,write()将文件内容输出到控制台,最后
close()关闭文件,这就是系统调用