24. 同步 异步 阻塞 非阻塞
在 Linux 系统中,下面是对于同步、异步、阻塞和非阻塞的一般解释:
- 同步(Synchronous):同步是指一个操作的完成要等待另一个操作的结果。在同步操作中,当一个任务发起一个操作,它会一直等待操作完成并返回结果,然后才能继续执行下一步操作。同步操作可以确保顺序性和可靠性,但可能会造成阻塞,导致其它任务等待。
- 异步(Asynchronous):异步是指一个操作的发起和完成是相互独立的。在异步操作中,当一个任务发起一个操作,它可以立即继续执行后续的操作,而无需等待操作的结果。当操作完成时,通过回调或轮询的方式通知任务结果。异步操作能够提高系统的并发性和响应性,但可能增加编程复杂性。
- 阻塞(Blocking):阻塞是指当一个任务请求一个操作后,它会被暂时挂起(阻塞),直到该操作完成或条件满足。在阻塞状态中,任务将停止执行,无法继续进行其他操作,直到阻塞解除。典型的阻塞操作包括等待 IO 完成、等待锁释放等。
- 非阻塞(Non-blocking):非阻塞是指一个任务请求一个操作后,它会立即返回。即使操作未完成,任务也可以继续执行其他操作而不会被阻塞。非阻塞操作会立即返回一个状态,指示操作是否完成或应该重试。任务可以通过轮询或异步回调的方式来检查操作的状态。
25. 什么是MMU?为什么需要MMU?
MMU是一种硬件设备,主要用于实现虚拟内存管理。它的作用是将进程所使用的虚拟地址转换成对应的物理地址,并进行内存保护。
在没有MMU的系统中,所有进程共享同一块物理内存,因此进程间需要通过约定好的内存地址来进行通信,容易导致地址冲突和安全问题。而有了MMU之后,每个进程都有自己的虚拟地址空间,不会互相干扰。MMU还可以根据进程的访问权限,对虚拟地址空间进行访问控制和内存保护。
此外,MMU还可以通过虚拟地址和物理地址的映射关系,实现了虚拟内存技术,使得进程能够访问大于物理内存的虚拟地址空间,从而提高了内存利用率和系统性能。
26. 内存管理MMU的作用
- 地址映射。
- 内存分配和回收。
- 内存保护。
- 内存扩充。
27. Linux 系统中,VSS、RSS 和 PSS的区别
在 Linux 系统中,VSS、RSS 和 PSS 是进程内存使用的三种不同指标。
- VSS(Virtual Set Size)指的是进程的虚拟内存大小,即进程正在使用的虚拟地址空间的大小。它包括了进程的代码段、数据段、堆、栈以及共享库等。
- RSS(Resident Set Size)指的是进程占用的物理内存大小,即实际分配给进程的内存大小,包括共享库和页面文件等。
- PSS(Proportional Set Size)是 RSS 的一种变体,它是指进程占用的物理内存大小除以进程所共享的页面数。它考虑到了共享内存的情况,可以更准确地反映出进程的实际内存使用情况。
简单来说,VSS 是进程正在使用的虚拟内存大小,而 RSS 是进程实际占用的内存大小,而 PSS 则是将 RSS 考虑了共享内存后的更准确的内存使用情况指标。