-
计算机的五大单元是什么?
- 运算器:执行算术和逻辑运算,如加法、减法、与或非等操作。
- 控制器:控制和协调计算机各部件的工作,解释和执行指令。
- 存储器:存储数据和程序,包括主存储器(RAM)和辅助存储器(硬盘、SSD)。
- 输入设备:将外界信息输入到计算机系统,如键盘、鼠标、扫描仪等。
- 输出设备:将计算机处理后的信息输出给用户,如显示器、打印机等。
-
什么是操作系统?
- 操作系统是管理计算机硬件和软件资源的系统软件。它为用户和应用程序提供一个接口,管理任务调度、内存管理、文件系统和设备驱动等功能。
-
程序、进程、线程的区别是什么?
- 程序:一组有序的指令集合,是静态的代码和数据的组合。
- 进程:程序的一次执行实例,拥有自己的内存空间、资源等,是操作系统进行资源分配的基本单位。
- 线程:进程中的一个执行流,线程共享进程的资源,是CPU调度的基本单位。
-
什么是并发和并行?
- 并发:指在同一时间间隔内管理多个任务的执行,但这些任务并不一定同时运行。
- 并行:指多个任务在同一时间点上同时执行,通常需要多核处理器来实现。
-
高并发系统的特点是什么?
- 可扩展性:能够通过增加资源来提升系统处理能力。
- 高可用性:系统能够在任何时候保持可用状态。
- 负载均衡:有效分配任务以避免某些部分的过载。
- 快速响应:能够快速响应用户请求,减少延迟。
-
进程是由哪些部分组成的?
- 程序代码:可执行的指令。
- 数据段:全局变量、静态变量等。
- 堆栈段:局部变量、函数调用栈等。
- 堆段:动态内存分配(如malloc等)。
- 进程控制块(PCB):记录进程的状态信息,包括进程ID、寄存器状态、调度信息等。
-
进程的状态有哪些?
- 就绪(Ready):进程已经准备好,可以运行,但等待CPU分配。
- 运行(Running):进程正在使用CPU执行指令。
- 等待(Blocked):进程等待某些条件满足,如I/O操作完成。
- 终止(Terminated):进程执行完毕或因某种原因被终止。
-
什么是虚拟内存?
- 虚拟内存是一种内存管理技术,允许程序使用比实际物理内存更大的地址空间。操作系统通过分页或分段将虚拟地址映射到物理内存。
-
操作系统的内存管理方式有哪些?
- 分页:将内存划分为固定大小的页和页框,虚拟地址与物理地址通过页表进行映射。
- 分段:将内存分为不同大小的段,虚拟地址由段号和段内偏移组成。
- 分页+分段混合:结合分页和分段技术,提供灵活的内存管理。
-
什么是页面置换算法?
- 页面置换算法决定在内存已满时,将哪个页面从物理内存中替换出去以加载新页面。常见的算法有FIFO(先进先出)、LRU(最近最少使用)、LFU(最少使用频率)等。
-
页表的作用是什么?
- 页表用于将虚拟地址转换为物理地址,记录每个虚拟页与物理页框的对应关系,是实现虚拟内存的重要数据结构。
-
上下文环境是什么?
- 上下文环境指的是当前进程或线程的运行状态,包括寄存器内容、程序计数器、堆栈指针等。上下文切换时,操作系统保存当前进程的上下文,并加载下一个进程的上下文。
-
进程间通信的方式有哪些?
- 管道(Pipe):单向通信,常用于父子进程之间。
- 命名管道(FIFO):允许无亲缘关系的进程之间通信。
- 共享内存:多个进程共享一块内存区域,速度快。
- 消息队列:通过消息传递机制进行通信,消息存储在队列中。
- 信号量:用于进程同步和互斥。
- 套接字(Socket):用于不同机器之间或同一机器的进程间通信。
-
什么是僵尸进程和孤儿进程?
- 僵尸进程:进程结束但其父进程尚未调用wait()回收资源的进程,状态为"僵尸"。
- 孤儿进程:父进程终止,但子进程仍在运行的进程,这些进程会被init进程接管。
-
操作系统是如何调度进程的?
- 操作系统通过调度算法决定进程的执行顺序。常见调度算法包括先来先服务(FCFS)、最短作业优先(SJF)、轮转调度(Round Robin)、优先级调度等。
-
多线程与多进程的区别是什么?
- 多进程:每个进程有独立的内存空间,进程间的通信和切换开销大,但安全性更好。
- 多线程:线程共享进程的内存空间,线程间通信和切换开销小,但需要同步机制避免数据竞争。
-
CPU和内存的工作关系是什么?
- CPU从内存中读取指令和数据,并执行相应操作。内存为CPU提供高速数据存取,二者通过总线进行通信。
-
什么是内存对齐?
- 内存对齐是指数据在内存中的地址要按照数据类型大小进行对齐。对齐要求通常是数据类型大小的倍数,如int类型数据在32位系统上要对齐到4字节地址。
-
为何需要内存对齐?
- 内存对齐可以提高CPU的存取效率,因为大部分CPU通过访问内存块来读取数据,对齐数据可以减少访存次数。
-
线程的状态有哪些?
- 新建(New):线程被创建但尚未启动。
- 就绪(Ready):线程已经准备好等待CPU调度。
- 运行(Running):线程正在执行。
- 阻塞(Blocked):线程等待某些事件完成。
- 终止(Terminated):线程执行结束。
-
线程调度的方式有哪些?
- 抢占式调度:操作系统可以中断线程的执行,分配CPU给其他线程。
- 非抢占式调度:线程执行直到自愿放弃CPU或进入等待状态,操作系统不会强制中断。
-
进程管理的主要内容是什么?
- 进程的创建、调度、执行、阻塞、唤醒、终止,以及资源分配、进程间通信、进程同步和进程控制等。
-
什么是信号量?
- 信号量是一种用于进程同步的机制,它通过控制信号量的计数值来管理资源的并发访问。分为计数信号量和二进制信号量。
-
进程间通信使用共享内存的优势是什么?
- 共享内存是最快的进程间通信方式,因为它避免了数据在进程间的复制,只需不同进程共享同一内存区域即可。
-
什么是管道通信?
- 管道通信是一种半双工的通信方式,允许数据在两个相关联的进程之间单向传递。它基于内存缓冲区,并通过文件描述符进行读写。
-
如何处理僵尸进程?
- 通过使用wait()或waitpid()系统调用来回收僵尸进程的资源。如果父进程不处理僵尸进程,可以使用信号SIGCHLD来通知父进程处理
,也可以让init进程接管子进程。
-
什么是进程控制块(PCB)?
- PCB是操作系统用来管理进程的主要数据结构,包含进程的状态、程序计数器、CPU寄存器、内存管理信息、文件描述符等信息。
-
进程的生命周期是怎样的?
- 进程的生命周期包括创建、就绪、运行、等待、终止等状态的转换,进程通过这些状态的切换完成从启动到结束的全过程。
-
什么是调度算法?
- 调度算法是操作系统用于决定在何时、以何种顺序分配CPU给各个进程或线程的规则。常见的调度算法有FCFS、SJF、Round Robin、优先级调度等。
-
多线程的应用场景有哪些?
- 并发处理:在服务器中,多个线程处理不同的用户请求。
- 背景任务:在GUI应用程序中,主线程处理用户界面,后台线程执行耗时操作。
- 数据并行:在大数据处理或科学计算中,多个线程同时处理不同数据块。