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继承要求打印机打印将被阻塞。
系统中的资源可以分为两类:
8.死锁产生的必要条件?
1.互斥条件:进程要求对所分配的资源进行排他性控制,即在一段时间内某资源仅为一进程所占。
2.请求和保持条件:当进程因请求资源而堵塞,对已获取的资源保持不放。
3.不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时自己释放。
4.环路等待条件:在发生死锁时,必然存在一个进程-资源的环形链。
9.解决死锁的基本方法
1.预防死锁
2.避免死锁
3.检测死锁
4.解除死锁
10.怎么预防死锁?
1.破坏请求条件:一次性分配所有资源,这样就不会再有请求了。
2.破坏请保持的条件:只要有一个资源得不到分配,也不给这个进程分配其他的资源
3.破坏不可剥夺条件:当某进程获得了部分资源,但得不到其他资源,则释放已占有的资源
4.破坏环路等待条件:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反。