zoukankan      html  css  js  c++  java
  • 进程管理

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

    • 活锁:相当于忙等,测试询问
    • 饥饿:看似有机会执行的进程但却是永远得不到执行
  • 相关阅读:
    Linux服务器上监控网络带宽的18个常用命令
    基于anaconda安装cudarray和deeppy模块
    How to Install CUDA on NVIDIA Jetson TX1
    Ubuntu-tegra 修复sudoers误操作产生的没有sudo权限
    caffe安装指南—吐血整理
    二进制和格雷码转换
    liunux下升级python
    Word Break
    Longest Valid Parentheses
    Multiply Strings
  • 原文地址:https://www.cnblogs.com/gzhu-lkun/p/5976593.html
Copyright © 2011-2022 走看看