究竟什么是上下文切换?
栏目:公司资讯 发布时间:2024-12-27 08:34
咱们常常听到高低文切换这个词语,然而毕竟什么是高低文切换呢?本文援用地点:观点Linux是一个多义务的操纵体系,能够同时多个义务并发履行,义务数超越CPU中心数。固然统一时辰在履行的义务数,最多也就只能是CPU中心数,只不外CPU时光片在多个义务之间往返切换而已。高低文切换就是为了保留义务切换时辰的基础信息,当CPU从新履行义务的时间能够加载高低文信息,从事先退出的地位、状况从新开端履行义务。这里所说的高低文信息,既包含虚构内存、栈、全局变量等用户态的资本,也包含内核客栈、存放器等外核态的资本。高低文包括什么信息一个过程的信息包括良多,能够懂得为多少个方面:CPU-状况信息、I/O状况信息、父子过程信息等:· 过程状况:如停当、运转、梗阻等,表现过程以后的履行状况。· 顺序计数器(PC):记载过程下一条指令的地点。· 存放器内容:包含通用存放器、特别存放器等,保留过程切换时的 CPU 状况。· 内存治理信息:如页面表、段表、内存限度等,用于治理过程的内存调配。· 调理信息:如过程优先级、调理行列中的地位等,用于过程调理。· I/O 状况信息:记载过程以后所应用的 I/O 装备、文件描写符等。· 过程标识符(PID):独一标识过程的 ID。· 父过程跟子过程信息:包含父过程 PID、子过程链表等。· 时光信息:如过程的启动时光、CPU 时光片耗费等。这些信息在内核中是经由过程构造体存储的,即PCB(Process Control Block)过程把持块,下图只是表示,不包括全部内容,在过程让出CPU的时间,这些高低文信息会保留到内核中,当下次履行的时间再从内核中加载返来。在Linux源码中是经由过程构造体task_struct来存储的:高低文切换的范例· 过程高低文切换:最常常听到高低文切换,多个过程并发,很好懂得。· 线程高低文切换:包括了统一个过程内的跟差别过程内的,差别过程内的耗费同等于过程高低文切换。· 中止高低文切换:由于外设把持器履行速率平日慢于CPU,比方打印一个数据这个时间须要内核挪用表现装备,很慢怎样办呢?这个是时间就会触发中止,让CPU先干其余过程,等打印实现了再返来。剖析东西vmstat:检查全部体系的高低文切换情形· cs(context switch)是每秒高低文切换的次数。· in(interrupt)则是每秒中止的次数。· r(Running or Runnable)是停当行列的长度,也就是正在运转跟等候 CPU 的过程数。· b(Blocked)则是处于弗成中止就寝状况的过程数。· cswch 表现每秒被迫高低文切换(voluntary context switches)的次数。· nvcswch 表现每秒非被迫高低文切换(non voluntary context switches)的次数。
申明:新浪网独家稿件,未经受权制止转载。 -->