学习笔记之汤小丹《计算机操作系统第四版》----第二章 进程的描述与控制

本文深入探讨了进程的并发执行特性,包括前趋图、进程控制块(PCB)的作用及组织方式,进程的状态转换,以及并发进程中临界资源访问的同步机制。同时,对比了进程与线程的区别,并介绍了信号量机制和锁机制在资源访问控制中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 前趋图:起始结点,终止结点,重量(终止时间)
  • 顺序执行特征:顺序性、封闭性、可再现性
  • 程序间可并发执行,只要程序间不存在前趋关系。如

其中,s1: a = x + 2; s2: b = y + 4; s3:c = a + b; s4:d = c + b  因此,s1与s2无前趋关系,s1和s2可以并发执行

  • 并发执行的特征:间断性、失去封闭性、不可再现性

如:两个程序A,B. A:N = N + 1; B:print(N);N = 0;

情况1: N = N + 1发生在print(N)之前,则N的值变化为:N+1,N+1,0

情况2: N = N + 1发生在print(N)与N=0之间,则N的值变化为:N,N+1,0

情况3: N = N + 1发生在N=0之后,则N的值变化为:N,0,N+1

计算结果与并发程序的执行速度有关!!!

  • 进程控制块PCB(Process Control Block):描述进程的基本情况和活动过程,进而控制和管理进程
  • 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
  • 进程的特征:动态性、并发性(程序没有建立PCB,不能参与并发执行)、独立性、异步性(按各自独立的、不可预知的速度向前推进)
  • 进程在并发执行时共享系统资源
  • 进程的三种基本状态:
  1. 就绪状态:已分配除CPU之外的所有必要资源;就绪队列
  2. 执行状态
  3. 阻塞状态:由于一些原因阻塞进程,使得进程暂停,等待一段时间后可能引发进程调度;阻塞队列,根据阻塞原因的不同可能有多个阻塞队列
  • 三态五换:

  • 另两种常见状态:
  1. 创建状态
  2. 终止状态:进入终止状态的进程以后不能再执行
  • 引入挂起(Suspend)操作的原因
  1. 终端用户的需要
  2. 父进程的请求
  3. 负荷调节的需要
  4. 操作系统的需要
  • 挂起原语:Suspend  激活原语:Active
  • 活动就绪   -------》   静止就绪(不会再被调度执行):使用Suspend
  • 活动阻塞   -------》   静止阻塞:在阻塞状态时使用Suspend。当处于静止阻塞的进程在其所期待的事件出现后,它将从静止阻塞变为静止就绪
  • 静止就绪   -------》   活动就绪:使用Active
  • 静止阻塞   -------》   活动阻塞:使用Active
  • PCB的作用:
  1. 作为独立运行基本单位的标志
  2. 能实现间断性运行方式(PCB保留CPU现场信息)
  3. 提供进程管理所需要的信息,如该进程所需要哪些资源
  4. 提供进程调度所需要的信息
  5. 实现与其他进程的同步与通信
  • PCB的组织方式
  1. 线性方式
  2. 链接方式:具有相同状态的PCB放在一起;阻塞状态的PCB会因为其阻塞原因不同而有多个阻塞队列
  3. 索引方式
  • 处理机的执行状态:系统态(管态、内核态)、用户态(目态)
  • 操作系统三中最基本的支撑功能:中断处理、时钟管理、原语操作
  • 子进程可以继承父进程所拥有的资源。当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程。进程不能拒绝其子进程的继承权
  • 在Windows中,不存在任何进程层次的概念,所有的进程都具有相同的地位。句柄;句柄可传递
  • 引起创建进程的事件
  1. 用户登录
  2. 作业调度
  3. 提供服务
  4. 应用请求
  • 进程创建的过程:
  1. 申请空白PCB
  2. 为新进程分配其运行所需的资源
  3. 初始化PCB
  4. 将新进程插入就绪队列(如果可以插入)
  • 并发进程的两种形式的制约关系
  1. 间接相互制约关系:访问临界资源
  2. 直接相互制约关系
  • 每个进程访问临界资源的代码称为临界区
while(true){
    进入区(判断是否可以进入临界区)
    临界区(对临界资源操作)
    退出区(退出临界区)
    剩余区
}
  • 同步机制应遵循的规则
  1. 空闲让进
  2. 忙则等待
  3. 有限等待:避免进程陷入死等状态
  4. 让权等待:在有限时间到后,若进程还未进入自己的临界区,应释放处理机,该进程转为就绪状态
  • 锁机制、信号量机制(不是太明白,争取之后在JAVA的学习中弄明白)
  • 信号量只能通过两个原子操作wait(s)和signal(s)来访问,俗称为P、V操作
  • 四种信号量
  1. 整型信号量
  2. 记录型信号量:整型信号量 + 进程链表指针
  3. AND型信号量:一次分配进程所需所有资源,避免死锁
  4. 信号量集:一次可申请多个资源
  • 线程:作为调度和分派的基本单位
  • 进程拥有系统资源,而线程本身并不拥有系统资源
  • 一个进程下的多个线程共享该进程所拥有的资源
  • 同一进程下的所有线程都具有相同的地址空间
  • 每个进程都拥有一个独立的地址空间和其他资源
  • 每个线程都有用户自己的一个堆栈以及一个核心栈
  • 由进程为其下的线程提供资源和运行环境
  • Java的运行环境是单进程多线程
  • 进程是一个可拥有资源的基本单位
  • 线程是独立运行的基本单位
  • 线程必须依赖于进程而存在

 

 

### 计算机操作系统第四版的学习资源 对于《计算机操作系统第四版》(汤小丹主编),以下是关于该书籍的一些学习资源和笔记整理: #### 1. 官方教材配套资源 官方教材通常会附带一些教学辅助材料,例如课件、实验指导书等。可以通过出版社官网或者学校图书馆获取这些资源[^1]。 #### 2. 在线视频课程 B站上有许多基于《计算机操作系统第四版》的讲解视频,其中一位UP主提供了详细的章节解析,涵盖了从基础概念到高级主题的内容。具体链接如下: [Bilibili - 操作系统系列](https://www.bilibili.com/video/BV1jv41147h8?p=1)[^1] #### 3. 学习笔记汇总 一份较为全面的学习笔记已经由某位学生整理完成,并分享在网络平台上。这份笔记按照章节顺序进行了梳理,适合用于复习和巩固知识点。具体内容包括但不限于以下几个方面: - **第一章:操作系统引论** - 明确了操作系统的定义及其主要目标,如提高系统资源利用率、增强用户体验等[^2]。 - **第二章进程描述控制** - 进程的概念、状态转换以及同步机制等内容均得到了清晰阐述。 - **第三章:处理机调度死锁** - 针对不同类型的任务调度策略进行了对比分析,并探讨了解决死锁的方法。 - **第四章:存储器管理** - 主要涉及内存分配方法、分页分区技术和虚拟存储原理等方面的知识点[^1]。 此外还有一份更加精炼版本的思维导图可供下载使用,它能够帮助快速掌握全书框架结构[^3]: ![思维导图](https://example.com/image_path) #### 4. 英文原著补充阅读建议 如果希望进一步提升自己对该领域理论的理解程度,则可以尝试接触部分经典英文著作作为扩展参考资料。不过需要注意的是某些国外作品可能存在表述晦涩难懂的情况,在这种情况下不必过分纠结于每一个细节而是抓住核心思想即可[^4]。 ```python # 示例代码展示如何加载外部库并执行基本功能 import os def load_system_info(): """模拟函数用于演示目的""" info = { 'os_name': os.name, 'platform': platform.system(), 'release': platform.release() } return info if __name__ == "__main__": system_details = load_system_info() print(f"Operating System Details:\n{system_details}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值