操作系统的任务调度机制(三)调度器策略
Feb 14, 2021
操作系统中的调度器有任务调度、I/O 调度(以后再说)、内存调度(之前提到的换页策略)等多种类型,本文主要关注任务调度。在单核多进程并发的环境里,进程之间并不是“并行”执行的,实际上在任何时刻都只有一个 ...
操作系统中的调度器有任务调度、I/O 调度(以后再说)、内存调度(之前提到的换页策略)等多种类型,本文主要关注任务调度。在单核多进程并发的环境里,进程之间并不是“并行”执行的,实际上在任何时刻都只有一个 ...
进程模型 # 进程的概念是随着多道批处理系统的概念产生的,MULTICS 之前还叫 Job,后来它为了区别这个 IBM 公司发明的术语改为了 Process,进程不是程序,程序是放入内存的一段数据,而进程是带有状态的一 ...
之前说到了 Goroutine 的运行时调度机制,引发了我对操作系统调度的进一步回忆,发现已经非常模糊,只能从头再来。在很多大型系统中,包括编程语言,都有调度器的概念,其核心的作用都是对有限的处理器资源进行最大化利用。具 ...
继续复习操作系统,话说随着 CPU 计算资源的性能开始过剩,压在内存身上的担子越来越重了,堪称新时期的性能瓶颈,对操作系统来说,内存管理机制也要进行近乎极致的优化才可以充分发挥 CPU 的正常水平。 操作系统对内存管理 ...
正在看王爽的《汇编语言》,因为我在 Mac M1 环境,按书上做汇编实验的话,搜索了一圈发现 DOSBox 应该可以满足我的需要,它是一个跨平台的可以运行 MS-DOS 的模拟器。 DOSBox # 下载地址 https://www.dosbox.com/ 这个模拟器应该是被一些老玩家拿来玩上世纪 80 年代 ...
上篇已经介绍了 CPU 的寄存器种类,知道了程序是由指令和数据组成的,以及 CPU 是如何通过寄存器运行程序的,那么现在可以真正了解下汇编指令集了。 前提须知 # 因为不同 CPU 架构的指令集都不尽相同,汇编语言通常不具有可移植 ...
看 Go 语言的调度器相关内容的时候里面很多内存堆栈、寄存器的概念,一开始没怎么看懂,需要先回来复习下相关的基础知识,早知道大学就好好学了。 前提须知 # 下面的内容都以 16 位的 8086CPU 的情况为准。 通常写一条汇编指令或一 ...
Golang 的高并发能力是通过协程 goroutine 实现的,在 Go 语言的开发中,每涉及到 goroutine 的相关功能实现时,都会意识到自己需要对 MPG 的模型有一个大概的了解,在此基础上才能做好开发上的决策,本篇也即为 MPG 并发调度模型的学习笔记了。 进程 ...
研究 Context 的源码,有助于对结合运用 interface 和 struct 的理解,以及对其他三方框架对 Context 接口的重新实现也能有一定认识,在实际开发中更是非常有帮助。Context 的源码非常短小,加上大概一半的注释整个文件也才 500 行,500 行就 ...
关于 Go 并发设计的哲学中,最常见的一句话就是:不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存1。Go 语言采用 CSP(Communicating sequential processes)并发模型,底层运用 Channel 实 ...