【操作系统学习笔记04】

2023-11-15 00:46·11 次阅读

【操作系统学习笔记04】

以下是下面链接中教程的笔记,如有侵权请联系我删除。随便学学可能不严谨,但如果有离谱错误烦请指正。
https://www.bilibili.com/video/BV1YE411D7nH?p=3&vd_source=febdc1a8028af6b442667407286a2750

进程 #

进程概念#

程序:静态的可执行文件,指令集合
进程:动态,进程实体的运行过程,系统进行资源分配和调度的单位

进程实体

  • PCB:Process Control Block,进程控制块,一种数据结构,是进程存在的唯一标志
  • 程序段:指令序列
  • 数据段:运行过程中产生的数据

PCB

  • 进程描述信息(PID、UID)
  • 进程控制和管理信息(CPU、磁盘、网络使用,进程状态:运行/阻塞...)
  • 资源分配清单(正在使用的文件、内存、I/O设备)
  • 处理机相关信息(寄存器值等)

进程特征#

  • 动态性:略
  • 并发性:略
  • 独立性:能独立运行,能接受调度,获得资源的基本单位
  • 异步性:略
  • 结构性:指每个进程实体都有PCB、数据段、程序段

进程状态#

  • 创建态:进程资源分配,PCB初始化
  • 就绪态:创建完成,具备运行条件,等待CPU
  • 运行态:略
  • 阻塞态:进程等待某个事件发生
  • 终止态:进程执行exit系统调用,OS之后会控制进程下CPU,回收PCB

PCB中有变量state记录进程状态

image

进程的组织#

通过一系列指针进行:执行指针、就绪队列指针、XX资源相关阻塞队列指针等

  • 链接方式:指针指向按优先级排序的PCB链表第一个元素
  • 索引方式:指针指向索引表,由索引表管理PCB

进程控制#

即对状态转换的实现

如何实现:使用原语(有原子性的程序)
原语使用 关中断指令、开中断指令 两个特权指令实现若干特权指令的原子性
关中断指令会让CPU不再检查是否有外部中断信号。开中断略。

进程控制相关原语

  • 创建原语
    • 申请空白PCB
    • 新进程分配资源
    • 初始化PCB
    • PCB插入就绪队列
  • 撤销原语
    • 找到PCB
    • 剥夺CPU,分配CPU给其它资源
    • 终止所有子进程
    • 释放进程拥有的资源
    • 删除PCB
  • 阻塞原语
    • 找到PCB
    • 保护进程运行环境,PCB状态改为阻塞态
    • PCB插入等待队列
  • 唤醒原语
    • 找到PCB
    • PCB从等待队列移出,设置为就绪态
    • PCB插入就绪队列
  • 切换原语
    • 运行环境存入PCB
    • PCB移到对应队列(就绪或运行)
    • 选择另一个进程执行,更新其PCB
    • 根据PCB中的运行环境信息,恢复运行环境

PCB中保存的运行环境信息包括各类寄存器内容

认识两个寄存器:
PC:存下一条指令的地址
IR:存当前正在运行的指令

进程间通信 #

  • 共享存储:进程可以通过系统调用申请共享存储区与其它进程共用,需要使用操作系统内核的同步互斥工具,保证对该区域互斥操作

    • 基于存储区
      • 高级通信方式
      • 速度快、限制少
    • 基于数据结构
      • 低级通信方式
      • 速度慢、限制多
  • 消息传递:通过操作系统的发送消息/接收消息 两个原语交换格式化的消息

    • 直接通信:收发都指定目标进程(PCB里有进程的消息队列)
    • 间接通信:收发制定目标信箱
  • 管道通信:通过系统调用申请一个管道文件(pipe,大小固定的内存缓冲区,特殊的共享文件,先进先出)

    • 管道通信是半双工通信,某一时段只能单向传输。全双工要设置两个管道。
    • 操作系统需要让进程互斥访问管道
    • 管道写满时,写进程会阻塞
    • 管道为空时,读进程会阻塞
    • 管道数据读出后彻底消失
posted @   Yukkurii  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示
目录