当前位置:   article > 正文

【操作系统真象还原】第0章:一些迷惑的问题(下)_mbr表示大端

mbr表示大端

目录

15. 局部变量和函数参数为什么要放在栈中

16. 为什么说汇编语言比C语言快

17. 先有的语言,还是先有的编译器,第一个编译器是怎么产生的

18. 编译型程序与解释型程序的区别

19. 什么是大端子节序、小端字节序

20. BIOS中断、DOS中断、Linux中断的区别

21. Section和Segment的区别

22. 什么是魔数

23. 操作系统是如何识别文件系统的

24. 如何控制CPU的下一条指令

25. 指令集、体系架构、微架构、编程语言

26. 库函数是用户进程与内核的桥梁

27. 转义字符与ASCII码

28. MBR、EBR、DBR 和 OBR 各是什么


15. 局部变量和函数参数为什么要放在栈中

局部变量:顾名思义其作用域属于局部,并不是像 static 那样属于全局性的;

全局的变量:意味着谁都可以随时随地访问,所以其放在数据段中。

堆:是程序运行过程中用于动态内存分配的内存空间,是操作系统为每个用户进程规划的,属于软件范畴;往高地址发展;

栈:也叫堆栈,是处理器运行必备的内存空间,是硬件必需的,但又是由软件(操作系统)提供的;往低地址发展;

很多知识都是通过实践后才搞明白的(不明白的地方可以先放一放啦~)

16. 为什么说汇编语言比C语言快

汇编语言本身就是机器指令的符号化,汇编语言编译器并不会添加额外的语句,因此汇编语言写的程序会更直接;

C 编译器往往会在背后加入额外的C语言代码来支撑一些功能,因此实际的代码量就变得很大,另外在编译阶段,C代码会率先被编译成汇编代码,然后再由汇编器将汇编代码翻译成机器指令。

17. 先有的语言,还是先有的编译器,第一个编译器是怎么产生的

先是设计好语言的规则,然后编写能够识别这套规则的编译器;

编译器只要能根据规则编译出指令/输出对应要求的文件即可(迷糊?

18. 编译型程序与解释型程序的区别

解释型语言:也称脚本语言,本身是文本文件,输入到脚本解释器中;脚本中的代码在解释器看来与字符串无异,解释器时时分析这个脚本,动态根据关键字和语法来做出相应的行为;在CPU看来,只有解释器这个进程在运行,完全不知道脚本的存在;因此哪怕脚本中有错误,前面正确的部分也会正常执行。

编译型语言:先将代码编译称指令程序(若是有误则会无法通过编译),由操作系统加载到内存后,操作系统将 CS: IP 寄存器指向这个程序的入口,使它直接上 CPU 运行,其本身就是一个进程。调度器在就绪队列中能看到此进程,而解释型程序是无法让调度器“入眼”的,调度器只会看到该脚本语言的解释器。

19. 什么是大端子节序、小端字节序

内存是以字节为单位读写的,其最小的读写单位就是字节(即内存是按字节寻址的)。

小端字节序:数值的低字节放在内存的低地址处,数值的高字节放在内存的高地址;(因为低位在低字节,强制转换数据型时不需要再调整字节了)。

大端字节序:数值的低字节放在内存的高地址处,数值的高字节放在内存的低地址;(有符号数,其字节最高位不仅表示数值本身,还起到了符号的作用(?)。符号位固定为第一字节,也就是最高位占据最低地址,符号直接可以取出来,容易判断正负)。

编译器的转换原则:强制转换到低精度类型时,会丢弃数值的高字节位,只保留数值的低字节。

20. BIOS中断、DOS中断、Linux中断的区别

BIOS是什么?

DOS是什么?

Linux是什么?

BIOS,DOS都是存在于实模式下的程序,由它们建立的中断调用都是建立在中断向量表( Interrupt Vector Table, IVT )中的,它们都是通过软中断指令 int 中断号来调用的。

BIOS 中断调用的主要功能是提供了硬件访问的方法,该方法使对硬件的操作变得简单易行。

DOS 是运行在实模式下的,故其建立的中断调用也建立在中断向量表中,只不过其中断向量号和 BIOS 的不能冲突,其也可以调用 BIOS 中断。

Linux 内核是在进入保护模式后才建立中断例程的,不过在保护模式下,中断向量表己经不存在了, 取而代之的是中断描述符表( Interrupt Descriptor Table, IDT )。

21. Section和Segment的区别

section 称为节:是指在汇编源码中经由关键字 section 或 segment 修饰,逻辑划分的指令或数据区域,汇编器会将这两个关键字修饰的区域在目标文件中编译成节,也就是说“节”最初诞生于目标文件中。

segment 称为段:是链接器根据目标文件中属性相同的多个 section 合并后的 section 集合,这个集合称为 segment,也就是段,链接器把目标文件链接成可执行文件,因此段最终诞生于可执行文件中,我们平时所说的可执行程序内存空间中的代码段和数据段就是指的 segment。

(目标文件—将汇编语言编译转换成目标机器平台上的机器指令?链接—将目标文件连接成可执行文件?)

22. 什么是魔数

“一种司空见惯的东西,即使不知道是怎么来的,但由于大脑经常被其训练,对其己经形成深刻的印象,似乎理所当然地接受了”

——其实遇到拦路虎的时候,真的不要太为难自己,可以不求甚解的,后面再回过头来多看看,学习本来就是需要反复理解记忆和运用的,实在理解不了,就先记忆一下,久而久之,兴许也就理解了!(这本书真的是,在传输知识的时候,还解决了我学习中的困惑,这些个情景真的都是一模一样啊

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/58696
推荐阅读
相关标签