1.内部碎片与外部碎片分别是什么?
内部碎片---(在数据页内部)产生的碎片
- 内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;
外部碎片---(在数据页外部)产生的碎片
- 外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。
2.系统调用与库函数的区别
系统调用执行后会产生中断陷入内核。
系统调用 | 库函数 | |
实现 | 实现在函数库中 | 实现在内核中 |
调用 | 属于过程调用 | 调用需要进行用户态和内核态的上下文切换 |
开销 | 较小 | 较大 |
3.中断与系统调用
中断
中断机制,宏观上讲就是cpu在执行某件事情时可以暂停执行当前的任务而转去执行其他任务的能力。
中断分为:
- 外部中断:cpu指令以外事件中断引起的中断。例如:I/O中断、控制台中断
- 异常:cpu指令内部事件中断引起的中断。例如:地址越界、算法溢出
系统调用
- 内核提供的、功能十分强大的一系列的函数。
-
系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。
-
系统调用是用户程序和内核交互的接口。
4.虚拟内存的理解
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
目的是为了减少程序对内存的消耗。
5.什么是临界资源
临界资源:一次仅允许一个进程使用的共享资源。
临界区:每个进程中访问临界资源的那段代码
6.内存池、进程池、线程池
- 内存池是一种内存分配方式。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是,使得内存分配效率得到提升。从线程安全的角度来分,内存池可以分为单线程内存池和多线程内存池。
- 进程池是由服务器预先创建的一组子进程,这些子进程的数目一般在3~10 个之间。
- 线程池中的线程数量应该和 CPU 数量差不多。