• 进程管理


    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. 活锁与饥饿

    • 活锁:相当于忙等,测试询问
    • 饥饿:看似有机会执行的进程但却是永远得不到执行
  • 相关阅读:
    poj 1579(动态规划初探之记忆化搜索)
    hdu 1133(卡特兰数变形)
    CodeForces 625A Guest From the Past
    CodeForces 625D Finals in arithmetic
    CDOJ 1268 Open the lightings
    HDU 4008 Parent and son
    HDU 4044 GeoDefense
    HDU 4169 UVALive 5741 Wealthy Family
    HDU 3452 Bonsai
    HDU 3586 Information Disturbing
  • 原文地址:https://www.cnblogs.com/gzhu-lkun/p/5976593.html
Copyright © 2020-2023  润新知