操作系统 进程的描述与控制

进程的描述与控制

进程的基本概念

PCB(Process Control Block)

  进程控制块,描述进程的基本情况和活动过程,进而控制和管理进程

  • 作用:

    • 独立运行基本单位的标志

    • 实现间断性运行方式

    • 提供进程管理所需要的信息

    • 提供进程调度所需要的信息

    • 实现与其他进程的同步与通信

  • 内容:

    • 进程标识符

    • 处理机状态

    • 进程调度信息

    • 进程控制信息

  • 组织方式

    • 线性方式

    • 链接方式

    • 索引方式

  • 进程实体:程序段,相关的数据段和PCB

  • 进程定义

    • 进程是程序的一次执行

    • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动

    • 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

  • 特征:动态性,并发性,独立性,异步性

进程状态转换图

进程控制

内核的定义和功能

处理机状态分为系统态和用户态,区别主要在于权限的大小

  • 内核的功能

    • 支撑功能

      • 中断处理

      • 时钟管理

      • 原语操作

    • 资源管理功能

      • 进程管理

      • 存储器管理

      • 设备管理

创建进程和进程的各种状态

  • Unix:父进程子进程,Windows:句柄,控制权

  • 引起创建进程的事件:

    • 用户登录

    • 作业调度

    • 提供服务

    • 应用请求

  • 过程:

    • 创建空白PCB

    • 为新进程分配所需的资源

    • 初始化PCB

    • 将新进程插入就绪队列(许可)

  • 进程的终止

    • 引起进程终止(Termination of Process)的事件:

      • 正常结束

      • 异常结束:异常事件发生

      • 外界干预

    • 过程:

  • 进程的阻塞和唤醒

    • 引起事件:

      • 向系统请求共享资源失败

      • 等待某种操作完成,如I/O操作

      • 新数据尚未到达

      • 等待新任务的到达

    • 阻塞原语block,唤醒原语wakeup

  • 进程的挂起与激活

    • 挂起原语suspend,激活原语active

进程同步

  • 同步机制应遵循的原则:空闲让进,忙则等待,有限等待,让权等待

  • 关中断

  • Test-and-Set指令:测试并上锁

  • Swap指令

信号量机制

  • 整型信号量

 

wait(S){ while(S<=0); S--; } signal(S){ S++; }

  • 记录型信号量:增加了进程链表指针list并使用原语block,wakeup,就不会一直忙等

  • And型信号量:一个进程需要多种(种类上)临界资源,这种情况要么全给,要么一个都不给(并挂到第一个缺乏资源的等待队列上)

  • 信号量集:检查条件,允许时,一次分配多个(数量上)资源,否则不分配

  • 管程:进程同步工具

    • 条件变量:使得被阻塞的进程及时放弃管程使用权x.wait()x.signal()

经典进程同步问题

  • 生产者-消费者问题:输入与计算,计算与输出

    • 使用mutex实现进程对缓存池临界资源的互斥使用

    • wait,signal:信号量empty,full来协调生产者和消费者,empty和full初始值分别为n, 0

    • 对mutex和empty,full的执行顺序要预防死锁(期末考会考),即占着茅坑要有屎拉

  • 哲学家进餐问题:五个哲学家围着圆桌坐,得到左右筷子进餐,筷子是临界资源

    • 不会有相邻的两个哲学家同时进餐,但会发生死锁问题

    • 解决办法:

  • 读者写者问题:有reader,writer要等待,reader之间可同时进行,writer不能和其他writer或reader同步进行,对readercount变量要进行互斥使用

    • 变形:规定最大reader数量,利用信号量L,初值RN(最多读者数量),执行wait(L,1,1)

进程通信

进程通信的类型

  • 共享存储器系统

    • 共享数据结构

    • 共享存储区

  • 管道通信系统:连接读、写进程的共享文件

    • 互斥,同步,确定对方是否存在

  • 消息传递系统:直接通信(利用操作系统通信原语)和间接通信(邮箱为中间实体)

  • 客户机-服务器系统

    • 套接字:一个通信标识类型的数据结构

    • 远程过程调用和远程方法调用

消息传递通信的实现方式

  • 直接通信原语:

    • 对称寻址方式:

      • send(receiver, message)

      • receive(sender, message)

    • 非对称寻址方式:

      • send(P, message)

      • receive(id, message)

    • 消息的格式:定长/变长

    • 进程的同步方式:发送进程和接收进程各自是否阻塞

    • 通信链路:单向通信链路,双向通信链路

  • 直接通信实例:

    • 消息缓冲区和PCB中有关通信的数据项

  • 发送原语send

  发送进程申请缓冲区i,复制消息a到缓冲区i,获得接受进程PCB标识符j,将缓冲区插入接受进程的消息队列j.mq

  • 接受原语receive

  • 信箱通信(间接)

    • 信箱通信原语

      • Send(mailbox, message)

      • Receive(mailbox, message)

    • 类型:私用邮箱,公用邮箱,共享邮箱

线程

  • 定义:调度和分配的基本单位,能独立运行的基本单位,但不是资源分配的基本单位(是进程)

  • 同一个进程的多个线程共享进程的资源

  • 线程控制块TCB

线程的实现方式

  • 内核支持线程KST (Kernel Supported Thread)

    • 优缺点:

  • 用户级线程ULT (User Level Threads)

    • 内核感知不到用户级线程的存在

    • 优缺点:

  • 组合方式:用户线程连接内核支持线程

  • 具体实现方法

    • 内核支持线程的实现

      • 创建进程时,分配任务数据区PTDA (Per Task Data Area),包含若干个TCB空间

      • 创建线程时,将信息填入TCB,并分配必要资源

    • 用户级线程的实现

      • 中间系统

        • 运行时系统(Runtime System):用于管理和控制线程的函数(过程)的集合

        • 内核控制线程:

          • 轻型进程LWP (Light Weight Process):可通过系统调用获得内核提供的服务,组成的缓存池为“线程池”

          • LWP会连接到内核级线程上

  • 线程的创建和终止

    • 初始化线程利用线程创建函数创建新进程

    • 虽已被终止但尚未释放资源的线程可以被需要它的线程所调用

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值