9、内部碎片和外部碎片
【内部碎片】
内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;(已分配却用不了)
内部碎片 是处于 (操作系统分配的用于装载某一进程的内存)区域内部的存储块,占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。
单道连续分配只有内部碎片。 多道固定连续分配既有内部碎片,又有外部碎片。
【外部碎片】
外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。(太小了还不配分配出去)
外部碎片是处于任何两个已分配区域或页面之间的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。
10、局部性原理
主要分为时间局部性和空间局部性。
时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)
空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放的,并且程序的指令也是顺序地在内存中存放的)
11、分页式、分段式比较⭐️
(1)概念:
页是信息的物理单位,分页是为实现离散分配方式,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要(也是对用户透明的)。段是信息的逻辑单位,它含有一组其意义相对完整的信息(比如数据段、代码段和堆栈段等)。分段的目的是为了能更好的满足用户的需要(用户也是可以使用的)。
(2)区别:
页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。
【一句话:分页是为了系统管理,页是物理单位,具有固定大小;分段是为了用户需求,段是逻辑单位,长度不固定】
12、内存管理方式(段/页/段页)
1、块式管理 :将内存分为几个固定大小的块,每个块中只包含一个进程。(一个进程分一块,进程大分的块就大)
2、页式管理 :把主存分为大小相等且固定的一页一页的形式,页较小,相对相比于块式管理的划分力度更大,提高了内存利用率,减少了碎片。页式管理通过页表对应逻辑地址 和物理地址。
3、段式管理 :页式管理虽然提高了内存利用率,但是页式管理其中的页实际并无任何实际意义。 段式管理把主存分为一段段的,最重要的是段是有实际意义的,每个段定义了一组逻辑信息。 段式管理通过段表对应逻辑地址和物理地址。例如,有主程序段 MAIN、子程序段 X、数据段 D 及栈段 S 等。 段式管理通过段表对应逻辑地址和物理地址。
4、段页式管理:段页式管理机制结合了段式管理和页式管理的优点。段页式管理机制就是 把主存先分成若干段,每个段又分成若干页。(分段完后再分页)
13、请你说一说并发和并行
并发(concurrency):指宏观上看起来两个程序在同时运行,比如说在单核cpu上的多任务。但是从微观上看两个程序的指令是交织着运行的,你的指令之间穿插着我的指令,我的指令之间穿插着你的,在单个周期内只运行了一个指令。这种并发并**不能提高计算机的性能,只能提高效率。
并行(parallelism):指严格物理意义上的同时运行,比如多核cpu,两个程序分别运行在两个核上,两者之间互不影响,单个周期内每个程序都运行了自己的指令,也就是运行了两条指令。这样说来并行的确提高了计算机的效率。所以现在的cpu都是往多核方面发展。
【一句话:并发是同一时刻只有一个程序运行;并行是同一时刻多个程序运行】
14、多进程和多线程
多线程之间共享同一个进程的地址空间,线程间通信简单,同步复杂,线程创建、销毁和切换简单,速度快,占用内存少,适用于多核分布式系统。但是线程间会相互影响,一个线程意外终止会导致同一个进程的其他线程也终止,程序可靠性弱。多线程模型主要优势为线程间切换代价较小,因此适用于I/O密集型的工作场景,因此I/O密集型的工作场景经常会由于I/O阻塞导致频繁的切换线程。
多进程间拥有各自独立的运行地址空间,进程间不会相互影响,程序可靠性强。但是进程创建、销毁和切换复杂,速度慢,占用内存多,进程间通信复杂,但是同步简单,适用于多核、多机分布。多进程模型的优势是CPU,适用于CPU密集型。
【一句话:多线程:同一进程里存在多个线程共享内存,线程间切换、创建简单,但线程间会相互影响,适用于I/O密集型场景(I/O需要频繁的切换);多进程:拥有独立空间,程序可靠,适用于CPU密集型(需要频繁的计算)】
15、进程状态转换
进程的五状态模型:
(1)运行态:该进程正在执行。
(2)就绪态:进程已经做好了准备,等待CPU调度运行。
(3)阻塞态(等待态):进程在某些事情发生前不能执行,等待阻塞进程的事件完成。
(4)创建态:刚刚创建的进程,操作系统还没有把它加入到可执行进程组中,通常是进程控制块已经创建但是还没有加载到内存中的进程。
(5)终止态:操作系统从可执行进程组中释放出的进程,或由于自身或某种原因停止运行。
【一句话:创建–>(就绪–>运行–>阻塞)–>终止】
16、请你说一说用户态和内核态区别
用户态和内核态是操作系统的两种运行级别,两者最大的区别就是特权级不同。用户态拥有最低的特权级,内核态拥有较高的特权级。运行在用户态的程序不能直接访问操作系统内核数据结构和程序。内核态和用户态之间的转换方式主要包括:系统调用,异常和中断。