共计 651 个字符,预计需要花费 2 分钟才能阅读完成。
计算机体系
数学: Leibniz 无穷小分析 (非标准无穷小分析) 数学: 微分 积分物理: ; 力学: 电磁学: 集总原件组成的简化电路数字电路: 记忆 运算处理器: 记忆(寄存器) 运算(算术逻辑运算) 控制(时钟、记忆、运算) ; 主存: 记忆(指令、数据) 指令: 取指令, 译码, 执行, 检查中断 (若有中断则保存当前状态, 并段间跳转到中断服务) 操作系统: 编译器 ; 解释器应用程序: java c cpp python …
x86 体系任务切换(线程切换)
每个核心 (每个处理器) 有一个定时器电路,
几百毫秒后定时器 1 发出中断信号,处理器 1 在当前指令的 ” 检查中断 ” 阶段跳转到一段代码,
这段代码先保存当前线程 1 状态(比如执行到哪条指令:PC 寄存器),然后从就绪线程队列中找一个线程 2 覆盖处理器 1 的状态(比如 PC 寄存器),
此时处理器再进行指令周期,执行的就是线程 2 的指令了。
这就是任务切换(线程切换)
从处理器 1 的视角来看: 先执行了线程 1 的一部分指令, 接着执行了一段中断(用于切换线程), 再接着执行了线程 2 的一部分指令, 又执行了那一段中断(用于切换线程), 又再接着执行了线程 3 的一部分指令. 这就是处理器 1 的常态. 处理器 1 并不知道每条指令属于谁的, 有啥差别.
x86 的分段
实模式的分段是真实分段,物理地址 == 段号 * 段尺寸 + 段内偏移
保护模式的分段是 带检查的间接的真实分段, 物理地址 == ” 表[段号]* 段尺寸 + 段内偏移, 再由一检查电路来检查是否符合一定规则:’ 比如段内偏移不能为任意值, 因为段内偏移足够大的话可能会延伸覆盖到别的段或操作系统的段, 这就是保护的含义之一 ’ ”