读书笔记之计算机系统(2)

本文介绍了进程间的依赖关系表示——前驱图的概念,详细解析了进程控制块的作用及构成,探讨了进程异常终止的原因,解释了信号量操作的特性,并讨论了线程的基本概念、线程控制块的作用以及如何避免因互斥访问引发的死锁。

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

1.前驱图是一个有向无循环图,记为DAG,用于描述进程之间执行的前后关系
2.1.5进程控制块
1.进程控制块,系统为每个进程定义了一个数据结构——pcb,pcb是进程实体的一部分,是操作系统中最重要的记录型数据结构
2.寄存器包括:通用寄存器,又称用户可视寄存器,用户程序可以访问;指令计数器,存放了处理机要访问的下一条指令的地址;程序状态字psw;用户栈指针
2.2.2进程的终止
异常终止
(1) 越界错误。这是指程序所访问的存储区已越出该进程的区域。
(2) 保护错。这是指进程试图去访问一个不允许访问的资源或文件,或者以不适当的方式进行访问,例如,进程试图去写一个只读文件。
(3) 非法指令。这是指程序试图去执行一条不存在的指令。出现该错误的原因,可能是程序错误地转移到数据区,把数据当成了指令。
(4) 特权指令错。这是指用户进程试图去执行一条只允许OS执行的指令。
(5) 运行超时。这是指进程的执行时间超过了指定的最大值。
(6) 等待超时。这是指进程等待某事件的时间超过了规定的最大值。
(7) 算术运算错。这是指进程试图去执行一个被禁止的运算,例如被0 除。
(8) I/O 故障。这是指在I/O 过程中发生了错误等。
外界干预
外界干预并非指在本进程运行中出现了异常事件,而是指进程应外界的请求而终止运行。这些干预有:
(1) 操作员或操作系统干预。由于某种原因,例如,发生了死锁,由操作员或操作系统终止该进程。
(2) 父进程请求。由于父进程具有终止自己的任何子孙进程的权力,因而当父进程提出请求时,系统将终止该进程。
(3) 父进程终止。当父进程终止时,OS也将它的所有子孙进程终止。
2.信号量的操作是原子操作,不可被中断的
3.系统吞吐量:系统在单位时间内完成的作业量
4.线程是系统调度和分派的基本单位,进程是资源拥有的基本单位
5.线程有TCB--线程控制块
6.只利用mutex来实现互斥访问可能会引起死锁,需配合条件变量来,创建一个互斥锁时,便联系着一个条件变量,互斥锁保证对临界区的互斥进入,而条件变量则用于线程的长期等待,等待至资源可用
7.线程首先对mutex执行关锁操作,若成功便进入临界区,然后查找用于描述该资源状态的数据结构,以了解资源的情况。只要发现所需资源R 正处于忙碌状态,线程便转为等待状态,并对mutex 执行开锁操作后,等待该资源被释放;若资源处于空闲状态,表明线程可以使用该资源,于是将该资源设置为忙碌状态,再对mutex 执行开锁操作。
8.只利用mutex 来实现互斥访问可能会引起死锁,我们通过一个例子来说明这一点。有一个线程在对mutex 1 执行关锁操作成功后,便进入一临界区C,若在临界区内该线程又须访问某个临界资源R,同样也为R 设置另一互斥锁mutex 2。假如资源R此时正处于忙碌状态,线程在对mutex 2 执行关锁操作后必将被阻塞,这样将使mutex 1 一直保持关锁状态;如果保持了资源R的线程也要求进入临界区C,但由于mutex 1 一直保持关锁状态而无法进入临界区,这样便形成了死锁
9.所谓“运行时系统”,实质上是用于管理和控制线程的函数(过程)的集合,其中包括用于创建和撤消线程的函数、线程同步和通信的函数以及实现线程调度的函数等
10.内核控制线程:LWP.当一个用户级线程运行时,只要将它连接到一个LWP上,此时它便具有了内核支持线程的所有属性。这种线程实现方式就是组合方式。
11.当用户级线程不需要与内核通信时,并不需要LWP.,在一个任务中,如果同时有5 个用户级线程发出了对文件的读、写请求,这就需要有5 个LWP 来予以帮助,即由LWP 将对文件的读、写请求发送给相应的内核级线程,再由后者执行具体的读、写操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值