1 对 1 直播源码:运行多个任务,资源如何切换?
1 对 1 直播源码是个用户数规模庞大的 app,在系统运行的过程当中,后端服务能同时运作好几个任务,为很多客户提供服务,提升用户体验。实际上,1 对 1 直播源码并不是真正的同时运作好几个任务,而是靠 CPU 布置任务轮着运作,让日常任务体验起来好像同时运行,那 CPU 是怎样进行分配任务的呢?这和 CPU 寄存器和程序计数器相关。
一、CPU 上下文
在 1 对 1 直播源码的 CPU 运作每一个任务之前,一定要知道任务是在什么地方加载、如何开始运作的,这个时候就需要 CPU 上下文的支持。CPU 上下文便是 CPU 寄存器和程序计数器,是 CPU 运作一定要存在的自然环境。CPU 寄存器是 CPU 内置的内存,尽管存储量非常小,可是运作的时候特别快;程序计数器就是用来储存 CPU 指令的位置,包含正在执行或即将执行的指令位置。
二、CPU 如何实现任务切换
CPU 任务切换是 CPU 的上下文切换,1 对 1 活源将 CPU 执行任务之前的 CPU 上下文存储,然后加载新的任务上线,并存储在 CPU 寄存器和程序计数器中,然后把任务指令跳转到存储新的要求的程序计数器中,开始运行新的任务。
不管上一个任务的上下文是什么,还是新任务的上下文是什么,1 对 1 的活动源代码都将存储在系统内核中。当前一个任务再次运行时,它会再次加载到 CPU 中,这样既可以不影响原来任务的运行状态,又可以使任务看起来是连续运行的。
三、CPU 上下文是如何切换的
1、进程上下文切换
部署后端业务时,会部署 Linux 操作系统,方便操作。Linux 操作系统根据权限级别将进程运行空间划分为内核空间和运行空间,包括 Ring0、Ring1、Ring2 和 Ring3。CPU 特权级别包括 Ring0 和 Ring3。Ring0 是内核空间,Ring3 是用户空间。因此,进程上下文切换是内核模式和用户模式之间的转换。
2、线程上下文切换
线程上下文转换出现的场景,与进程有一定的关系,假如前后转换的两个线程,并不是归属于同一进程,是因为 2 个线程不能资源共享,因此线程切换就和进程切换都是一样的;假如前后切换的线程归属于相同的进程,在开展线程切换时,能保持虚拟内存设置中资源不动,只转换 1 对 1 直播源码的部分无法共享的数据信息。
3、中断上下文切换
有时候在 1 对 1 直播源码处理日常任务时,为了能快速反应硬件,会终止进程的调度与执行,为了后续日常任务持续执行,系统需要把中断时的工作任务状态保留下来。
评论