一、进程与线程
1. 进程与线程的区别是什么?
进程是系统进行资源分配和调度的基本单位,它拥有独立的内存空间和系统资源。线程是进程的一个执行实体,是CPU调度和分派的基本单位,线程之间共享进程所拥有的资源。它们的主要区别在于:
- 资源占用:进程有独立的内存空间和系统资源,而线程共享进程的资源。
- 切换开销:由于线程共享进程的资源,因此线程的切换开销通常比进程小。
- 并发性:线程之间的并发性更高,因为多个线程可以在同一个进程中并发执行。
2. 如何实现进程间的通信?
进程间的通信(IPC)主要有以下几种方式:
- 管道(Pipe):半双工的通信方式,数据只能单向流动,通常用于父子进程间的通信。
- 消息队列(Message Queue):消息的链接列表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区有限的缺点。
- 信号量(Semaphore):是一个计数器,可以用来控制多个线程对共享资源的访问。
- 共享内存(Shared Memory):允许多个进程访问同一块内存空间,是最快的一种IPC方式,因为进程是直接对内存进行存取。
- 套接字(Socket):可用于不同机器间的进程通信。
二、内存管理
1. 什么是虚拟内存?为什么需要虚拟内存?
虚拟内存是指计算机呈现出要比实际拥有的内存大得多的内存量。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。需要虚拟内存的原因主要有:
- 扩大内存空间:通过虚拟内存技术,可以将物理内存和磁盘空间整合起来,为应用程序提供一个远大于物理内存的虚拟内存空间。
- 提高内存使用效率:虚拟内存允许应用程序使用比物理内存更大的地址空间,从而提高了内存的使用效率。
- 保护内存安全:通过虚拟内存技术,可以为每个进程分配独立的地址空间,防止不同进程之间的地址冲突和数据干扰。
2. 分页和分段有什么区别?
分页和分段是两种常见的虚拟内存管理技术。它们的区别主要在于:
- 页的大小:分页的页大小通常是固定的,由系统决定;而分段的段大小是可变的,由程序决定。
- 地址空间:分页的地址空间是一维的,即单一的线性地址空间;而分段的地址空间是二维的,程序按照自身的逻辑关系划分为若干个段,每个段都有一个段名(也就是段号)和一个段长,以及一段连续的地址空间(称为基址),这个地址空间的大小由相应的段长规定。
- 内存碎片:分页的内存碎片较小,且易于管理;而分段的内存碎片较大,且难以管理。
三、文件与设备管理
1. 文件系统的主要功能是什么?
文件系统的主要功能包括:
- 文件存储:将用户数据以文件的形式存储在磁盘等存储设备上。
- 文件操作:提供文件的创建、删除、打开、关闭、读写等操作。
- 目录管理:管理文件的目录结构,实现文件的按名存取。
- 文件保护:通过访问控制等手段保护文件不被非法访问和修改。
- 文件共享:允许多个用户或进程同时访问同一个文件。
2. 什么是I/O设备?I/O设备如何与CPU进行通信?
I/O设备是输入输出设备的简称,是计算机系统中与CPU和主存储器之外的设备进行数据交换的设备。I/O设备与CPU进行通信的方式主要有:
- 轮询方式:CPU定期查询I/O设备的状态,以确定是否需要进行数据交换。
- 中断方式:当I/O设备完成数据交换或发生错误时,向CPU发出中断请求,CPU响应中断并处理相关事务。
- DMA(直接内存访问)方式:I/O设备与主存储器之间直接进行数据交换,无需CPU的干预。这种方式可以大大提高数据交换的速度和效率。