济南移动网站制作,施工企业岗位证书有哪些,营销型网站内容,公司网站建设文章GMP原理和调度 1.Golang调度器的由来1.1单进程时代不需要调度器1.2多进程/线程时代有了调度器需求1.3协程来提高cpu利用率 1.Golang调度器的由来
1.1单进程时代不需要调度器
早期的操作系统每个程序就是一个进程#xff0c;直到一个程序运行完毕调度器的由来1.1单进程时代不需要调度器1.2多进程/线程时代有了调度器需求1.3协程来提高cpu利用率 1.Golang调度器的由来
1.1单进程时代不需要调度器
早期的操作系统每个程序就是一个进程直到一个程序运行完毕才能进行下一个进程就是单进程时代一切的程序只能串行发生 早期的单进程操作系统面临2个问题 单一的执行流程计算机只能一个任务一个任务处理进程阻塞所带来的cpu时间浪费
1.2多进程/线程时代有了调度器需求
在多线程/进程的操作系统中就解决了阻塞的问题因为一个进程阻塞cpu可以立刻切换其他进程中去执行而且调度cpu的算法可以保证在运行的进程都可以被分配到cpu的运行时间片 进程拥有太多的资源进程的创建、切换、销毁都会占用很长的时间。
1.3协程来提高cpu利用率 多进程、多线程已经提高了系统的并发能力但是在当今互联网高并发场景下为每个任务都创建一个线程是不现实的因为会消耗大量的内存(进程虚拟内存会占用4GB[32位操作系统]而线程也要大约4MB) 大量的进程/线程出现了新的问题 高内存占用调度的高消耗CPU 一个“用户态线程”必须要绑定一个“内核态线程”但是CPU并不知道有“用户态线程”的存在它只知道它运行的是一个“内核态线程”(Linux的PCB进程控制模块)