1. OS如何启动的?
2. OS的三个interface,分别通过什么实现的?
3. 中断、系统调用和异常分别是什么意思?
4. OS 的三种接口有何区别?
5. 具体事件是如何产生的呢?
2019.4.18
6. 程序如何进行system call呢?
7. 什么叫用户态,什么叫内核态?
8. 系统调用和函数调用的区别?
9. 以上三种接口跨越了操作系统,具有什么额外的开销?
10. Cpu的五个组成部分?
11. 并发与并行的区别?
12. 关于操作系统与软件的关系?
13. OS具有的四个特征?
14. 什么是RAM和ROM ?
15. 操作系统的演变历程。
16. unix操作系统属于哪类操作系统?
2019.5.18
17. 软件的内核态和用户态的权限有什么区别?
18. 一个C程序经过了哪些步骤才能被执行?
2019.5.22
19. 编译与汇编操作的区别?
20. 汇编器的作用?
21. CPU由哪几个部分组成,MMU有何用?
22. CPU的寄存器有哪些?
分段
23. 操作系统进行内存合并和分配的几种算法?
24. 编译过程对于地址空间转变的帮助,操作系统干了什么工作?
25. 什么是分段?分段和分页属于硬件的层面还是软件层面?
分页
26. 分段与分页在内存大小上的区别?
2019.5.24
27. 页与框中,每一页的大小与每一框的大小相同,但总页数和框数,也就是页号数和页框数不同,页号数大于页框数,因为逻辑地址空间大于物理地址空间。
28. 页表由谁来维护?页表有什么作用?
29. 帧与页的区别?
30. 页表本质上是什么数据结构?一个操作系统只有一个页表吗?
31. 页表是由一条条的页表项组成的,页表项包含了哪些内容?
32. 什么是TLB,TLB有什么用?
33. 什么是覆盖技术?
34. 为了让大程序跑在内存有限的计算机上,可以采取哪些办法?
35. 在写程序的时候,要注意考虑到程序的局部性原理,题目中的两种写法有什么区别?
36. 多级页表有什么用?
37. 在页表项中,有几个特殊的标志符,方便对页表项的操作,具体有哪几个?
1.
电源开启后,BIOS进行自检(对电脑进行初始化检查),由BIOS(Basic I/O System)调用bootLoader来把操作系统从disk 调用到内存当中。
BootLoader是用来加载OS的, 一般放在硬盘的第一个主引导扇区。
2.
interface就是接口,三个接口
3.
这是三种OS的接口:
中断是OS与外设的接口,也就是于OS与所有外设的连接方式。
系统调用是正常的程序与OS的对接接口,为了保证安全性,应用程序不能随便动用资源,要统一用向OS发出请求的方式来进行,也就是系统调用。
异常是异常的程序或其他异常状态与OS的对接接口,是异常错误向OS发出请求的方式。
中断是外设的事件。
异常是内部Cpu的事件。
4.
(1)源头不同
一个是外设
一个是应用程序
一个是异常错误
(2) 时间类型
处理时间类型有两种:同步和异步
同步和异步取决于,是不是没有任何预期,随时可能发生的。
Interruption: 异步,因为不知道何时外设会给出指令,比如按键盘
Exception: 同步,因为必须走到一定的程序,才会随之报错
System Call: 同步或异步,比如发消息。然后一直等着回来的消息,是同步,如果发消息之后去干别的了,有消息回来了再去处理的话,就是异步。
(3)响应
响应方式不同:
中断是透明的,OS基本不管
System Call的响应是:持续或等待
Exception的响应是:杀死程序,或重新执行一次指令。
5.
事件分为内部事件和外部事件,即异常和中断,
异常和中断的产生分为硬件和软件两个层面:
不同的外设会对应不同的编号,这里计算机会有一个表
首先中断和异常里面硬件做的工作都是一样的:
中断后软件做的工作,也就是OS所做的工作:
异常时 OS做的工作:
6. 程序并不能直接进行System Call,这样会很危险,所以所有操作系统都定义了程序调用system call的接口:
Windows系统定义了:Win32 API
Unix、LINUX和macOS X的所有版本定义了:POSIX API
JAVA 虚拟机(JVM)定义了JAVA API。
当程序通过接口调用system call的时候,会实现从用户态向内核态的转变,使得控制权从应用程序转向了操作系统,
7. 用户态和内核态是指的应用程序在CPU中的特权的一种状态,当处于内核态时,才有权利去控制整个计算机系统,
8. 有两点:
(1)所处空间不同:当应用程序进行函数调用时,实在同一个栈空间内进行的。
而在系统调用的时候:操作系统(内核)与应用程序各含有一个堆栈。
(2)开销不同:系统调用的开销更大,因为涉及到了一个内核态跟用户态的转化,还有系统调用涉及到了堆栈的转换,所以前者开销更大。
9.
10.
11. 并发是一种感觉,是宏观的,并行是指微观和宏观的,也就是说单核处理器里面多进程可以并发,但是不可以并行。
并行指同一时刻同时发生,同一时刻单个处理器只能运行一个进程,并发是指同一时间段同时发生。
13.
14. 无语,学了这么久这俩都不知道:
RAM: random access memory 就是主存
ROM:Read-only memory 只读内存,由于硬盘是外存,所以Rom和硬盘不等价,
查的资料:
电脑中的ROM是在主板上的电池旁边的一块写着BIOS的芯片。ROM只读内存,它固化了指令和数据在芯片里,断电后数据不会消失。
Ram你就大概理解为内存条就成,Rom现在好像不用了,计算机启动的BOIS芯片貌似就是用的Rom
15.
操作系统的演变
16.
分时操作系统。
17.
CPU处于内核态时可以执行任何一条指令,可以完全控制整个计算机,在用户态时 CPU 无法执行一些特殊的机器指令,也无法访问IO
18.
首先是编译过程,会把程序转换为汇编语言,但是汇编语言仍然不是机器语言,再经过汇编过程,转换为机器语言,然后一个大文件往往由很多个小文件组成,需要把他们用link操作连接起来,这样就能生成一个exe文件,位于硬盘上,最后要使用exe的时候,会通过一个loader将该文件载入内存,通过程序重定位,最终运行程序。
总结如下:
编译————汇编————链接————载入(程序重定位)
19.
编译是将语言变为,汇编语言,汇编语言是一种介于编程语言与机器语言的中间语言,机器语言是010101的二进制编码,而编程语言则是完全面向用户使用的语言。
20.
把汇编语言转换为机器语言。
21.
寄存器,计数器,缓存和MMU。(忘了还有一个控制器)
MMU,内存管理单元:用于将程序给的逻辑地址转换为实际的物理地址。如果MMU找不到,会到内存中的map里面去找。
22. 基址寄存器和界限寄存器,用来设置逻辑地址空间的相关信息,一个记录空间的起始位置,一个记录逻辑地址空间的长度。
23.
最基本的有三种:
首次适配算法:从0地址开始找,直到找到满足条件的区间
优点:简单,快 缺点:碎片多
最优适配算法:什么是最适合?也就是区间差值是最少的
优点:减少大块的内存被分割的情况,比较简单
缺点:重分配慢,仍然有碎片,容易产生很多微小的碎片
最差适配算法:选取最大的块,进行拆分分配。
优点:适合全是中等尺寸块的分配,分配很快(提前建立了一个块体积排列表)
缺点:重分配慢,仍然有外部碎片,后面很可能有无法分配出大块的内存空间。
24.
编译能够让程序中的逻辑地址空间转换为实际内存中的物理地址空间,操作系统是记载下了这个映射过程。
25.
分段是将一个程序分为堆、栈等部分,分别进行储存,而分页是将物理内存进行小规模的划分,属于硬件层面。
26.
分段中每段的大小是不固定的,而分页中每页的大小是固定的。
28.
由操作系统维护页表,可以通过页号找到对应的帧号。
29.
30.
页表其实就是一个大数组,每一个运行的程序都有一个动态变化的页表。
具体过程如下:
PTBR是页表的基址寄存器。
resident bit:用于表示当前帧是否存在,若不存在则为0。
32.
TLB:Translation Lookaside Buffer,旁路转换缓冲,即页表缓冲,又称快表缓冲。
TLB的作用:由于“页表”存储在主存储器中,查询页表所付出的代价很大,防止对内存中的页表进行二次访问(一次是寻找帧号,第二次是使用数据)。
TLB就是一块缓存,它利用了程序局部性原理,把CPU附近访问的页表项放在缓存里。
如果TLB命中,可以很快获得目标的帧地址,否则的话,到CPU中寻找页表项,把它加载到TLB中。
33.
如图,由于B和C,D、E和F不能同时存在于内存中,所以最大内存取流程的最大内存即可,对于原来的程序可以直接进行覆盖。
还有其他的覆盖方式,只要分区的程序不可能再流程上同时执行,就可以进行分区覆盖:
34.
目前有以下技术:
可以使用覆盖和交换技术,二者的区别如下:
覆盖操作是程序内部进行的,它往往需要耗费程序员的代码工作;
交换操作的操作对象是进程,要把整个进程的空间进行换入和换出,加大了处理器的开销。
更好的办法:虚存。
虚存实际上是覆盖操作和交换操作的升级与结合,因为它是基于分页操作的。
35.
int在32位里面是4个字节,1024*4正好是4K,程序里面默认地址顺序是先行后列的。
36.
多级页表,说白了,就是利用时间去换取空间。
第一,多级页表通过分级的方法,用链表的方式将所有页表项连接起来
第二,多级页表是把原来的页表拆分成了多段,只看第一段,就可以得知,页表项的resident bit是否为1,如果为0,说明没有对应的物理空间,也就没有其物理地址,所以也就没有其二级页表项等后续数据。
第三,缺点: