怎样申请建立自助网站,网站加载效果怎么做的,网站开发月薪,微信公众号怎么创建文章目录
一、进程和线程
二、线程上下文切换
三、线程与协程区别 一、进程和线程
线程是可以由调度程序对立管理的最小程序指令集#xff0c;而进程是程序运行的实例。
大多情况下#xff0c;线程是进程的组成部分#xff0c;一个进程中可以存在多个线程#xff0c;这些线…目录
一、进程和线程
二、线程上下文切换
三、线程与协程区别 一、进程和线程
线程是可以由调度程序对立管理的最小程序指令集而进程是程序运行的实例。
大多情况下线程是进程的组成部分一个进程中可以存在多个线程这些线程并发执行并共享进程的内存等资源。进程之间相互独立不同进程具有不同的内存地址空间、代表程序运行的机器码、进程状态、操作系统资源描述符等。
操作系统调度到CPU中执行的最小单位是线程
二、线程上下文切换
为了平衡每个线程能够被CPU处理的时间并最大化利用CPU资源操作系统需要在适当的时间通过定时器中断、I/O设备中断、系统调用时执行上下文切换
当发生线程上下文切换时需要从操作系统用户态转移到内核态记录上一个线程的重要寄存器值、进程状态等信息这些信息存储在操作系统线程控制块中。当切换到下一个要执行的线程时需要加载重要的CPU寄存器值并从内核态转移到操作系统用户态。如果线程在上下文切换时属于不同的进程那么需要更新额外的状态信息及内存地址空间同时将新的页表导入内存。
三、线程与协程区别 调度方式go 的协程是通过runtime 调度的它属于某一个线程它和线程的关系属于M:N。GO语言调度器可以将多个协程调度到一个线程中一个协程也可以切换到多个线程中执行 上下文切换速度协程切换不用经过系统用户态和内核态切换协程切换只需要保留极少的状态和寄存器变量值SP/BP/PC而线程切换会保留额外的寄存器变量值例如浮点寄存器线程切换的速度大约是12微秒协程切换的速度为0.2微秒 调度策略线程的调度是抢占式的而协程不会被轻易抢占 栈的大小线程的栈运行时不能修改协程栈动态地进行扩容线程栈默认是2MB, go 协程栈默认2KB