操作系统知识3
1.什么是孤儿进程?
孤儿进程是指那些父进程已经终止,但子进程仍然在运行的进程。操作系统会将这些孤儿进程的父进程ID(PID)设置为1,即系统的init进程(在现代系统中通常是systemd或类似的进程),以便这些进程能被正确管理和清理。
2.进程的调度算法有哪些?
进程调度算法是操作系统用来决定哪个进程获得CPU时间的一种方法。常见的调度算法有:
- 先来先服务(FCFS,First-Come, First-Served):按照进程请求CPU的顺序进行调度。
- 短作业优先(SJF,Shortest Job First):优先调度执行时间最短的进程。
- 优先级调度(Priority Scheduling):根据进程的优先级来进行调度,优先级高的进程先被调度。
- 轮转法(RR,Round Robin):给每个进程分配一个固定的时间片,时间片用完后,调度下一个进程。
- 多级队列调度(Multilevel Queue Scheduling):将进程分为不同的队列,每个队列有不同的调度策略。
- 多级反馈队列(Multilevel Feedback Queue Scheduling):结合了多个队列和时间片的调度策略,允许进程在不同队列之间调整。
3.进程终止的方式有哪些?
(1)正常终止:进程在完成所有任务后正常退出,通常通过调用exit
系统调用。
(2)被中断终止:进程因外部因素被中断,可能是由其他进程或系统调用发起的中断。
(3)异常终止:由于进程出现了严重错误(如非法内存访问或除零错误)而终止。
(4)强制终止:通过操作系统命令(如kill
命令)强制终止进程。
4.乐观锁和悲观锁有什么区别?
乐观锁和悲观锁是两种处理并发控制的策略:
-
悲观锁:假设会发生冲突,操作前对数据加锁,确保在操作期间其他线程无法访问同一数据。常用的悲观锁实现方式包括行级锁和表级锁。悲观锁的特点是锁的粒度较大,容易导致性能瓶颈,但能够保证数据一致性。
-
乐观锁:假设不会发生冲突,操作过程中不加锁,而是在提交时检查数据是否被其他线程修改。如果数据已被修改,则操作会失败,需要重新尝试。乐观锁通常通过版本号或时间戳来实现。乐观锁的特点是可以提高并发性能,但在冲突频繁时可能会增加重试的次数。