简单谈一谈进程和线程以及它们的区别
程序被操作系统运行起来即为进程,进程是操作系统进行资源调度和分配资源的独立单位,例如QQ
线程是进程的实体,是CPU调度的基本单位,是独立运行的基本单位,例如QQ的语音通话功能
一个进程可以包括多个线程,多个线程可以并发执行
进程有独立地址空间,线程没有
进程上下文切换开销大,线程开销小
说一下进程同步
进程同步的任务是,对多个相关进程在执行次序上进行协调,使各进程有效共享资源和合作
遵循的原则
- 空闲让进
- 忙则等待
- 有限等待,避免死等
- 让权等待,当进程不能进入自己临界区时,应当释放处理机,以免陷入忙等状态
进程通信方式有哪些
-
管道,一种半双工的通信方式,数据单向流动
-
消息队列,是消息的链表,存放着在内核中并由消息队列标识符标识
-
信号量是一个计数器,控制多个进程对资源的访问,通常作为一种锁机制
-
共享内存是映射一段能被其他进程访问的内存,这段共享内存由一个进程创建,多个进程可以访问
什么是死锁,死锁产生的条件
在两个及更多并发程序中,如果每个进程持有一种资源,并且等待着其他进程释放他们现在所保持的资源,在未改变这种状态之前都不能向前推进,此为死锁
通俗讲是两个或多个进程无限期的阻塞,互相等待的状态
死锁产生的四个条件(有一个条件不成立,则不会死锁)
- 互斥条件
- 请求与保持条件,一个进程因请求资源而阻塞时,对已获得资源保持不放
- 不剥夺条件,进程获得的资源,在未完全使用完之前,不能强行剥夺
- 循环等待条件
怎样处理死锁
预防死锁,避免死锁,检测死锁,解除死锁
并发并行的区别
并行:两个或多个事件在同一时刻发生
并发:两个或多个事件在同一时间间隔内发生
进程的几种状态
- 就绪状态,进程获得除了处理机外所有的资源,等待分配处理机资源
- 运行状态,
- 阻塞状态,进程在等待某种条件,条件未满足前无法执行
几种进程调度算法
- 先来先服务
- 短作业优先
- 优先权调度算法,分为抢占式和非抢占式
- 高响应比优先调度算法,等待时间+服务时间=响应时间,响应比=响应时间/服务时间
- 时间片轮转法
- 多级反馈队列调度算法