
操作系统
文章平均质量分 79
ComputerInBook
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
操作系统——并发相关问题
并发编程原创 2022-10-19 12:57:11 · 3327 阅读 · 0 评论 -
操作系统——多处理器和多核架构
操作系统——多处理器和多核架构原创 2022-09-28 17:04:22 · 4395 阅读 · 0 评论 -
Linux/Unix平台X64函数调用约定
X64调用约定利用寄存器来传递部分函数参数,不规范的函数调用规则逐渐减少。现主要有两种比较通用的函数调用规则。一种是Microsoft X64函数调用约定,参见以下链接:MSVC平台下X64处理器函数调用规则——底层机制_ComputerInBook的博客-优快云博客目录1. 默认的调用规则2. 内存边界对齐问题3. 解开性(Unwindability)4. 参数传递5. 可变数量参数的传递6. 非原型函数7. 函数返回值8. 调用函数或被调函数存储寄存器9. 函数指针10. 对较旧代码的浮点支持11.原创 2022-05-27 18:07:46 · 1420 阅读 · 0 评论 -
MSVC环境下X64 prolog和epilog
目录1. prolog的代码(在MASM中)2. epilog的代码(在MASM中)每一个函数需要分配栈空间、进一步调用其函数、保存非易失性寄存器、或者使用异常处理机制,都必须有一段序言代码(prolog),它的地址限制在解开数据(unwind)中描述,unwind数据与相应的函数地址条目相关。更多信息,参见X64异常处理文档。如有必要,prolog会将数据参数寄存器值保存在它的起始地址上(home address)(即,栈的最底下分出的一块地址,用于存放函数参数寄存器值和返回地址,称其为h翻译 2022-04-24 12:32:00 · 438 阅读 · 0 评论 -
MSVC平台下X64处理器函数调用规则——底层机制
目录1. 默认的调用规则2. 内存边界对齐问题3. 解开性(Unwindability)4. 参数传递5. 可变数量参数的传递6. 非原型函数7. 函数返回值8. 调用函数或被调函数存储寄存器9. 函数指针10. 对较旧代码的浮点支持11. 浮点状态和控制寄存器(Float Point Status and Control Register,简记为FPSCR)12. 多媒体扩展控制和状态寄存器(Multimedia Extensions Control and翻译 2022-04-22 12:20:29 · 1328 阅读 · 0 评论 -
X64汇编语言寄存器结构及其与X86架构编程区别
目录1. 关于X64架构2. X64架构的寄存器结构2.1 通用目的寄存器2.2浮点数寄存器2.3指令指针寄存器2.4段寄存器2.5标识寄存器2.6控制寄存器2.6.1控制寄存器CR02.6.2控制寄存器CR22.6.3控制寄存器CR32.6.4控制寄存器CR42.6.5控制寄存器CR82.6.6控制寄存器CR1,CR5-7, CR9-152.7 模式指定寄存器(MSRs)(Model Specific Registers)2.7.1 IA32原创 2022-02-16 01:04:00 · 8922 阅读 · 1 评论 -
什么是有效地址和逻辑地址
这2个概念在计算机体系结构、计算机原理与接口技术、汇编语言等课程中常常出现,却又无明确定义和讲解,常常混淆不清,今天我就来彻底的拔个明白。1. 什么是有效地址 从运行实体(指进程、线程、中断处理器、内核组件,等)的角度来讲,有效地址就是一个可以用于指定哪个内存位置可以用来执行存取操作的值。例如:一个寄存器存储了一个值10000,系统正在执行一条指令获取一个由寄存器内容指定的内存位置的内容,那么这个获取数据操作的有效地址就是10000。也就是说,这个内存位置由寄存器的内容...原创 2020-10-08 18:34:19 · 13802 阅读 · 0 评论 -
操作系统中的缺页
缺页是引入了虚拟内存后的一个概念。操作系统启动后,在内存中维护着一个虚拟地址表,进程需要的虚拟地址在虚拟地址表中记录。一个程序被加载运行时,只是加载了很少的一部分到内存,另外一部分在需要时再从磁盘载入。被加载到内存的部分标识为“驻留”,而未被加载到内存的部分标为“未驻留”。操作系统根据需要读取虚拟地址表,如果读到虚拟地址表中记录的地址被标为“未驻入”,表示这部分地址记录的程序代码未被加...原创 2019-09-21 18:12:59 · 32653 阅读 · 2 评论 -
并发编程中的互斥与自旋互斥异同
在现在多处理器多核模式架构的CPU下,多线程并发编程是系统编程程序员必须要掌握的技能。在数据同步中,用得比较多的就有互斥。 在早期的系统中,只有互斥,后来增加了自旋互斥,那么这个互斥和自旋互斥有什么区别呢,到底怎么选择二者呢? 提到互斥,不得不提到线程的上下文切换,线程上下文切换是有代价的,需要进入内核模式,要保存线程的相关数据与状态,以及寄存器数据,程序...原创 2019-09-04 22:05:37 · 226 阅读 · 0 评论 -
什么是操作系统中所说的原语(Primitives)
很多定义都没有讲清楚什么是计算机操作系统中的原语(Primitives),很多定义都只是直接给出定义,而依然没有讲清楚,为什么计算机操作系统中要引入这个词来表示不可分割的动作。primitive作为adjective ,指的是原始的东西,远古的,早期的。而作为noun,表示原始人。而这里原语明显是一个名词,不能翻译成“原始人”?这里应该是英语世界里老外用于表示未经加工的东...转载 2019-07-15 14:55:56 · 20204 阅读 · 3 评论