首页 > 代码库 > 进程管理

进程管理

1. 程序执行特征?

  • 顺序执行
  • 封闭性
  • 执行结果可再现

2. 进程执行特征?

  • 并发程序在执行过程相互制约
  • 失去封闭性
  • 程序与计算不再一一对应(可能一对多)

3. 进程概念的引入

  • 程序的概念已经无法描述动态执行过程中的一些特性

4. 进程的定义?

  • 描述程序在并发环境中的执行过程

5. 进程和程序的区别?

  • 动与静:进程执行结束便自动消亡,程序却会仍留在磁盘
  • 独立单位可并发与不可并发
  • 程序和进程无一一对应关系:一个程序可被多个进程用,一个进程运行过程可能用到多个程序
  • 进程相互制约、异步性

6. 进程3种状态?

  • Running:资源满足 有CPU
  • Ready :资源满足 无CPU
  • Blocked:资源不满足 无CPU

7. 进程状态之间的转换?

  • Running -> Ready : 时间片到,中断
  • Running -> Blocked: 缺少资源或I/O操作
  • Blocked -> Ready: 获得资源
  • Ready -> Running: 拿到CPU

8. 进程的组成:

  • 程序
  • 数据集合
  • PCB

9. PCB的组成?

  • PCB是描述进程特性的数据结构,所包含的特性有:
    •   进程名:唯一标志
    •   特征信息:标志是用户进程还是系统进程
    •   状态信息:running/ready/blocked
    •   调度优先权:优先获得CPU
    •   通信信息:与其他进程的通信关系
    •   现场保护区:时间片到被中断,保留此刻的状态,待下次获得CPU继续运行
    •   资源需求、分配和控制方面的信息
    •   进程实体信息
    •   族系关系
    •   其他信息

10. PCB的作用?

  • 进程特性的描述
  • 是进程存在的唯一标志

11. 进程的组织方式?

  • 线性:预先创建好整个系统的进程的最大数目。缺点:不能扩展,调度选择时需要遍历整个表,效率低
  • 链接:按照状态分为多队列,调用时按先进先出的顺序调用
  • 索引:索引表

12. 进程的创建

  • 申请空闲PCB
  • 为新进程分配资源
  • 初始化新进程的PCB
  • 将新进程加入到就绪队列当中

13. 进程的终止(调用终止原语)

  • 找到PCB终止它
  •  回收进程所占的资源
  • 回收进程所有子孙进程的资源,如果存在的话
  • 释放终止进程的PCB,并从原来队列中摘走

14. 进程的阻塞(调用阻塞原语)

  • 找到PCB停止它
  • 保存现场
  • 修改PCB信息,由运行改为阻塞并插入阻塞队列
  • 转到调度程序,重新选取进程投入运行

15. 进程的唤醒(调用唤醒原语)

  • PCB从阻塞队列摘下
  • 由阻塞改为就绪并插入就绪队列中
  • 如果被唤醒优先级比运行进程优先级更高则设置重新调度标志

16. 进程映像的更换

  • 释放子进程原来的程序和数据所占用的内存空间
  • 从磁盘上找出子进程所要执行的程序和数据
  • 分配内存空间,装入新的程序和数据
  • 为子进程建立初始化的运行环境

17. Linux进程状态

  • 运行态
  • 可中断等待态
  • 不可中断等待态
  • 停止态
  • 僵死态

18. 进程的模式

  • 用户模式:用户程序,应用程序等
  • 内核模式:内存机制

19. 进程的类型

  • 用户进程
  • 系统进程

20. Linux task_struct结构

  • 标识符
  • 进程状态
  • 调度信息
  • 进程通信
  • 进程宗族
  • 时间和计时器
  • 文件系统:打开关闭文件
  • 虚拟内存:内存映射
  • 中断现场保护

21. 进程系统堆栈

  • 存放中断现场信息,在分配task_struct结构的内存空间时,分配了两个页8k,7k为堆栈,1k为task_struct结构 

22. 有关进程操作的命令

  • ps:查看进程状态的相关信息(PID/UID/PPID//C/STIME/USER/%CPU/%MEM/VSZ/RSS/STAT/TTY/TIME/CMD)
  • kill:相当于control + c,终止进程
  • sleep:暂停进程,后面时间值单位为·秒

23. 有关系统调用的格式和功能

  • fork:创建一个子进程,在父进程中返回子进程PID号,在子进程返回0,失败返回-1
  • getpid:返回当前进程的PID,getppid则返回父进程PID
  • execl:更换映像
  • exit:终止调用程序,参数状态有:正常退出0,非正常退出为其他数值
  • wait:等待其他进程终止,成功返回终止进程的PID,否则返回-1
  • sleep:挂起进程指定时间
  • nice:改变进程优先级,成功返回0,否则返回-1

24. 引入线程概念原因

  • 同一进程的不同线程可共享同一地址空间,资源可共享,而不同进程间地址不同,不可共享
  • 易于创建,切换,代价低
  • 改善系统性能

25. 什么是线程

  • 资源分配,处理机调度的基本单位

26. 线程的组成

  • 标识符:线程的唯一标识
  • 寄存器:调度状态信息
  • 栈指针:指向核心栈指针,指向用户栈指针
  • 存储区:保护现场信息

27. 线程的状态

  • 运行
  • 就绪
  • 阻塞
  • 终止

28. 线程和进程的关系

  • 多对一或一对一
  • 线程共享进程的所有资源
  • 真正在CPU上运行的是线程
  • 线程执行过程需要协作同步,不同进程的线程间通过消息机制实现同步

29. 线程的实现方式

  • 用户级线程:线程表放置在用户空间,线程的切换不涉及核心层,速度快,但不能享受多处理器的优点
  • 核心级线程:线程表放置在核心空间,每次线程的创建删除等操作都要系统调用,花费一定的开销,但可以享受多处理器的优点,实现真正的并行

30. 进程同步机制

  • 互斥:资源互斥
  • 同步:缓存区协作,时间次序
  • 通信:直接通信交换信息

31. 竞争条件

  • 两个或多个进程同时访问和操控相同的数据时,最后的执行结果取决于进程运行的精确时序
  • 临界区和临界资源
  • 临界区设置原则是避免竞争条件

32. 实现互斥方式

  • 硬件:
    • 禁止中断(进临界区后关闭所有的中断,出临界区后再开放)
    • 专用机器指令(原语:原则是要么全做要么全不做)
  • 软件:软件锁(用0、1表示锁的状态,忙等)

33. 信号量及P、V操作原语

  • 结构体信号量:信号量的值(+表示现所持有的资源数;-表示现等待队列的长度;信号的值只能通过P、V原语修改)+  指向PCB的指针
  • P操作(wait)
    • 信号量减一 
    • 判断信号量是否小于0
  • V操作(signal)
    • 信号量加一
    • 判断信号量是否大于0

34. 信号量的一般应用

  • 实现进程互斥:打印机的使用实例
  • 实现进程同步:生产者和消费者问题

35. 进程通信

  • 低级:P、V原语操作
  • 高级:
    • 共享存储器:类似于线程共享进程的内存地址空间一样,共享存储器在内存中分配一块内存作为共享存储区,各进程把共享存储区加载到自己的地址空间
    • 管道文件:是一个打开文件,连接读和写两个命令,向该文件写如数据的进程叫写者,读出数据的进程叫读者
    • 消息传递
      • 直接通信方式(消息缓冲区):系统管理一组缓冲区,发送进程像系统申请缓冲区,写入后把它挂到接受者的消息队列,然后通知它。接收者取出后释放缓冲区并通知发送者
      • 间接通信方式(信箱:信箱头+信箱体)

36. 管程组成

  • 管程名
  • 局部于管程的共享数据的说明
  • 对数据进行操作的一组过程
  • 对该共享数据赋初值的语句

37. 管程三大特性:

  • 管程内部局部变量不允许外部直接访问
  • 进程进入管程必须调用管程内的某个过程
  • 管程内一次只能有一个进程进入

38. 经典进程同步问题

  • 读者写者问题
  • 哲学家思考问题
  • 打瞌睡的理发师问题

 39. 死锁定义

  • 系统循环等待的一种状态

40. 产生死锁原因

  • 资源有限且操作不当

41. 产生死锁的必要条件

  • 互斥
  • 不可抢占
  • 占有且申请
  • 环路等待

42. 对待死锁的策略

  • 忽略死锁问题
  • 死锁的预防:静态。在申请资源之前,先把所有可能导致死锁的可能扼杀在摇篮。
  • 破坏互斥条件:不太科学,这是取决于资源本身的属性
  • 破坏占有且等待条件:一次性申请所有资源
  • 破坏非抢占条件:优先级
  • 破坏环路等待条件:编号排序
  • 死锁的避免:动态,边申请边检测判断,如果可能导致死锁,则不分配,银行家算法

43. 安全状态

  • 至少有一个序列可让进程顺利执行完毕则是安全状态
  • 死锁状态是不安全状态
  • 不安全状态不意味着死锁状态,表示存在产生死锁的危险

44. 银行家算法的数据结构

  • Available:每类资源的可用数量
  • Max:每个进程对资源的需求的最大数
  • Allocation:当前已经分配给每个进程的资源数
  • Need:每个进程还缺多少个资源

45. 银行家的分配算法

46. 死锁中恢复

  • 抢占资源:缺什么从别的进程拿
  • 回退执行:如操作系统的还原点
  • 杀掉进程:如操作系统某个进程卡死导致系统死机,这时杀掉这个进程就可以恢复

47. 活锁与饥饿

  • 活锁:相当于忙等,测试询问
  • 饥饿:看似有机会执行的进程但却是永远得不到执行

进程管理