day07 操作系统面试题

本文详细解读了进程和线程的基本概念,探讨了两者之间的区别,解释了引入线程的原因,以及进程状态转换和进程间通信。重点介绍了死锁的概念、产生原因及解决策略,包括预防死锁的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.进程和线程的基本概念

进程:进程是系统进行资源分配和调度的一个独立单位,是系统中的并发执行的单位

线程:线程是进程的一个实体,也是cpu调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,有时又被称为轻权进程或轻量级进程。

2.进程和线程的区别?

1.进程是资源分配的最小单位,而线程是cpu调度的最小单位

2.创建进程或撤销进程,系统都要为之分配或回收资源,操作系统的开销远大于创建或撤销线程时的开销;

3.不同进程地址空间相互独立,同一进程内的线程共享同一地址空间。一个进程的线程在另一个进程内是不可见的

4.进程间不会相互影响,而一个线程挂掉将可能导致整个进程挂掉

3.为什么有了进程,还要有线程呢?

进程可以使多个程序并发执行,以提高资源的利用率和系统的吞吐量,但是其带来了一些缺点:

1.进程在同一时间只能干一件事情;

2.进程在执行的过程中如果阻塞,整个进程就会被挂起,即使进程中有些工作不依赖与等待的资源,仍然不会执行。

基于以上的缺点,操作系统引入了比进程粒度更小的线程,作为并发执行的基本单位,从而减少程序在并发执行时所付出的时间和空间开销,提高并发性能。

4.进程的状态转换

进程包括三种状态:就绪态、运行态和阻塞态

5.进程间的通信方式有哪些?

进程间通信(IPC,InterProcess Communication)是指不同进程之间传播或交换信息。IPC的方式通常由管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams支持不同主机上的二个进程IPC

6.什么是死锁

死锁,是指多个进程在运行中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用都将无法向前推进。如下图所示:如果此时有一个线程A,已经持有了锁A,但是试图获取锁B,线程B持有锁B,而试图获取锁A,这种情况下就会产生死锁。

7.产生死锁的原因

由于系统中存在一些不可剥夺资源,而当二个或二个以上进程占有自身资源,并请求对方资源时,会导致每个进程都无法向前推进,这就是死锁。

竞争资源

例如:系统中只有一台打印机,可供进程A使用,假定A已占用了打印机,若B继承要求打印机打印将被阻塞。

系统中的资源可以分为两类:

1. 可剥夺资源:是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺, CPU 和主存均属于可剥 夺性资源;
2. 不可剥夺资源,当系统把这类资源分配给某进程后,再不能强⾏收回,只能在进程⽤完后⾃⾏释放,如磁带机、打印机等。
进程推进顺序不当
例如:进程A和进程B互相等待对方的数据

8.死锁产生的必要条件?

1.互斥条件:进程要求对所分配的资源进行排他性控制,即在一段时间内某资源仅为一进程所占。

2.请求和保持条件:当进程因请求资源而堵塞,对已获取的资源保持不放。

3.不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时自己释放。

4.环路等待条件:在发生死锁时,必然存在一个进程-资源的环形链。

9.解决死锁的基本方法

1.预防死锁

2.避免死锁

3.检测死锁

4.解除死锁

10.怎么预防死锁?

1.破坏请求条件:一次性分配所有资源,这样就不会再有请求了。

2.破坏请保持的条件:只要有一个资源得不到分配,也不给这个进程分配其他的资源

3.破坏不可剥夺条件:当某进程获得了部分资源,但得不到其他资源,则释放已占有的资源

4.破坏环路等待条件:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值