深入理解计算机系统 第八章 异常控制流(2)

进程总是处于下面三种状态之一:

运行。进程要么在CPU上执行,要么在等待被执行且最终会被内核调度。

停止。进程的执行被挂起(suspended),且不会被调度。

终止。进程永远的停止了。进程会因为三种原因终止:1)收到一个信号,该信号的默认行为是终止进程,2)从主程序返回,3)调用exit函数。

父进程通过调用fork函数创建一个新的运行的子进程。

fork函数的特点:

调用一次,返回两次。fork函数被父进程调用一次,但是却返回两次-----一次是返回到父进程,一次是返回到新创建的子进程。

当一个进程由于某种原因终止时,内核并不是立即把它从系统中清除。相反,进程被保持在一种已终止的状态中,直到被它的父进程回收(reaped)。当父进程回收已终止的子进程时,内核将子进程的退出状态传递给父进程,然后抛弃已终止的进程,从此时开始,该进程就不存在了。一个终止了但还未被回收的进程称为僵死进程(zombie)。

一个进程可以通过调用waitpid函数来等待它的子进程终止或者停止。

waitpid函数默认情况下(当options=0时),挂起调用进程的执行,直到它的等待集合(wait set)中的一个子进程终止。如果等待集合中的一个进程在刚调用的时刻就已经终止了,那么waitpid就立即返回。在这两种情况下,waitpid返回导致waitpid返回的已终止子进程的PID。此时,已终止的子进程已经被回收,内核会从系统中删除掉它的所有痕迹。

传送一个信号到目的进程是由两个不同步骤组成的:

发送信号。内核通过更新目的进程上下文中的某个状态,发送(递送)一个信号给目的进程。发送信号可以有如下两种原因:1)内核检测到一个系统事件,比如除零错误或者子进程终止。2)一个进程调用了kill函数,显式的要求内核发送一个信号给目的进程。一个进程可以发送信号给它自己。

接收信号。当目的进程被内核强迫以某种方式对信号的发送做出反应时,它就接收了信号。进程可以忽略这个信号,终止或者通过执行一个称为信号处理程序(signal handler)的用户层函数捕获这个信号。

原文地址:https://www.cnblogs.com/zhishuiyushi/p/11794832.html

时间: 2024-11-09 00:37:30

深入理解计算机系统 第八章 异常控制流(2)的相关文章

第八章 异常控制流

第八章 异常控制流 ECF:(异常控制流)突变集合 平滑:顺序结构的指令 突变:跳转.调用.和返回等指令,不在同一栈 基本机制:ECF是操作系统用来实现I/O.进程和虚拟存器的基本机制   ECF是计算机系统中实现并发的基本机制 异常 控制流的突变 异常号: 系统为每种类型的异常分配的唯一的非负整数 异常表: 系统启动时操作系统就会初始化一张条转变,使得条目k包含异常k的处理程序的地址 用法: 从异常号到异常表的索引 类别: 中断:来自处理器外部的I/O设备的信号的结果,返回下一条指令 陷阱:陷

CSAPP:第八章 异常控制流1

CSAPP:第八章 异常控制流1 关键点:异常 8.1 异常8.2 进程 ??现代系统通过使控制流发生突变来对这些情况做出反应,一般而言,我们把这些突变称为异常控制流(Exceptional Control Flow,ECF).异常控制流发生在计算机系统的各个层次. 8.1 异常 ??异常是异常控制流的一种形式,它的一部分由硬件实现,一部分由操作系统实现.异常就是控制流中的突变,用来响应处理器中的一些变化.如图所示,当处理器状态发生一个重要的变化时,处理器正在执行某个当前指令Icurr.在处理器

csapp:第八章 异常控制流ECF

第八章 异常控制流ECF 8.1 异常 Exception graph LR E[异常Exception]-->E2[中断:异步异常] E-->E3[同步异常] E3-->陷阱 E3-->故障 E3-->中止 异常是异常控制流的一种形式,他一部分由硬件实现,一部分由操作系统实现. 在任何情况下,当处理器检测到有事情发生时,他就会通过一张叫做异常表(exception table)的跳转表,进行一个简介过程调用(异常),到一个专门用来处理这类事件操作系统子程序(异常处理程序 e

[CSAPP笔记][第八章异常控制流]

异常控制流 控制转移 控制流 系统必须能对系统状态的变化做出反应,这些系统状态不是被内部程序变量捕获,也不一定和程序的执行相关. 现代系统通过使控制流 发生突变对这些情况做出反应.我们称这种突变为异常控制流( Exceptional Control Flow,ECF) 异常控制流发生在系统的各个层次. 理解ECF很重要 理解ECF将帮助你理解重要的系统概念. 理解ECF将帮助你理解应用程序如何与操作系统交互 通过陷阱(trap)或者系统调用(system call)的ECF形式,向操作系统请求服

第八章 异常控制流 笔记

异常控制流存在于操作系统的方方面面,最底层的机制称为异常(Exception),由硬件和操作系统共同实现.另外还有: 进程切换(Process Context Switch): 硬件计时器和操作系统实现: 信号(Signal): 操作系统实现: 非本地跳转(Nonlocal Jumps):运行时实现. 异常 这里的异常指的是把控制交给系统内核来响应某些事件(例如处理器状态的变化),其中内核是操作系统常驻内存的一部分,而这类事件包括除以零.数学运算溢出.页错误.I/O 请求完成或用户按下了 ctr

异常控制流 第十周11.15~11.22

第八章 异常控制流 控制流:控制转移序列. 控制转移:从一条指令到下一条指令. 异常控制流:现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流. 作为程序员,理解ECF很重要,这有很多原因: 理解ECF将帮助你理解重要的系统概念.ECF是操作系统用来实现I/O.进程和虚拟存储器的基本机制,在能够真正理解这些重要概念之前,你必须须理解ECF. 理解ECF将帮助你理解应用程序是如何与操作系统交互的.应用程序通过一个叫做陷阱或者系统调用的ECF形式,向操作系统请求服务. 理解

对找工作功不可没——评《深入理解计算机系统》

对找工作功不可没——评<深入理解计算机系统> 引子: 在我刚刚进入中科院计算所读研的时候,同宿舍的师兄便向我推荐了一本<深入理解计算机系统>,这本书从一个程序员的视角详细剖析了整个计算机系统,涵盖了组成原理.汇编语言.体系结构.操作系统.网络等计算机基础知识. 由于时间所限,我并没有立刻阅读,而是将其列入了找工作前的复习书单.2010年8月,我用了一个月的时间读完了这本书的原版<Computer System:A programmer's perspective>.后来

速读《深入理解计算机系统(第三版)》问题及解决

第一章 计算机漫游 P13:用户栈和运行时堆有什么区别?数据结构中经常说堆栈,这里的堆和栈一样吗?和操作系统的堆.栈有什么区别? 参考:堆和栈的区别(内存和数据结构) 操作系统: 栈:由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等.操作方式类似于数据结构中的栈. 堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,与数据结构中的堆是两回事,分配方式类似于链表 数据结构: 堆:一棵倒过来的树 栈:一种先进后出的数据结构. 第二章 信息的表示和处理 P31:C格式化指令"

8.0 异常控制流 第8章 《深入理解计算机系统 原书第2版》

异常控制流 定义:现代操作系统对于控制流发生突变所作出的反应 全称:Exception Control Flow 缩写:ECF 各层形态: 1.硬件层:硬件检测到的事件会触发控制突然转移到异常处理程序: 2.操作系统层:在操作系统层,内核通过上下文转换,将控制从一个用户进程转移到另外一个用户进程: 3.应用层:一个进程可以发信号到另外一个进程,而接收者会将控制突然转移到它的一个信号处理程序. 描述:一个程序可以通过回避通常的栈规则,并执行到其他函数中任意位置的非本地跳转来对错误做出的反应. 工作