进程(process)
定义:进程,是一个程序的执行过程,是一个程序及其数据在处理机上顺序执行时所发生的活动。进程是一个实体,每个进程都拥有自己独立的地址空间。进程是执行中的程序。进程由进程控制块,程序段,数据段三部分组成。
状态:产生,就绪,运行,阻塞,退出。
产生的步骤:
- 申请空白PCB
- 为新进程分配资源
- 初始化PCB
阻塞终止的原因:
- 请求系统服务
- 启动某种操作
- 新数据尚未到达
- 无新工作可做。
进程的调度算法:
- FIFO(先进先出)
- RR(时间片轮转法)
- HRF(最高优先级)
线程(Thread)
定义:进程的一部分,轻量级进程,独立调度和分派的基本单位,可并发执行,共享进程内存,资源。
线程跟进程的区别
Answer:
线程:
- 一个程序,至少有一个进程,一个进程至少有一个线程。
- 进程运行时拥有独立的内存单元,而同一进程内的多个线程共享内存。进程是分配资源的基本单位,而线程独立运行和独立调度的基本单位。
- 进程间通信IPC,线程之间可以直接读写。
- 线程调度切换比进程快。
- 在多线程OS中,进程不是一个可执行的实体。
Linux进程间通信
- 管道及命名管道(Pipe)
- 信号(Signal)
- 消息队列(Message报文)
- 共享内存
- 信号量
- 套接口(Socket)
Linux多线程同步的几种方法
- 互斥锁(mutex)
- 条件变量(cond)
- 信号量
- 事件
进程死锁
定义:多个进程抢占资源导致互相等待现象。
产生死锁的原因:
- 系统资源不足
- 资源分配不当
- 进程执行顺序不合适。
产生死锁的四个必要条件:
- 互斥条件:一个资源只能被一个进程使用。
- 请求与保持条件:一个进程因请求资源而阻塞时,对已经持有的资源保持不放。
- 不剥夺条件:进程已获得资源,在未使用完成之前,不得强行剥夺。
- 循环等待条件:若干进程之间行程一种头尾想接的循环等待资源的关系。
处理死锁的方法:
- 忽略该问题。鸵鸟算法。
- 检测死锁并且恢复。
- 资源有序分配,避免环路的产生。
- 破坏死锁产生的条件。
分页与分段
说说分段和分页
- 页是信息的物理单位,分页目的是为实现离散分配方式,以消减内存的外零头,提高内存的利用率、
- 段是信息的逻辑单位,分段的目的是为了能更好的满足用户编程的需要。
- 页的大小固定且由系统确定,段的长度却不固定。
- 分页的作业地址空间是一维的,只需给出地址。分段的作业地址空间是二维的,需给出段名,又需给出段内地址。
进程参考资料:http://www.cnblogs.com/memewry/archive/2012/08/25/2656966.html