广西建设教育网站,wordpress 安装环境,赶集的网站怎么做,合肥网站建设q479185700棒20145313张雪纯《信息安全系统设计基础》第11周学习总结 教材 异常控制流#xff08;ECF#xff09; 最简单的“平滑序列”类型的控制流是指PC中相邻的指令在存储器中也相邻。而异常控制流则是指程序变量表示的内部程序状态中的变化、系统状态的变化等突发情况使得控制系统做…20145313张雪纯《信息安全系统设计基础》第11周学习总结 教材 异常控制流ECF 最简单的“平滑序列”类型的控制流是指PC中相邻的指令在存储器中也相邻。而异常控制流则是指程序变量表示的内部程序状态中的变化、系统状态的变化等突发情况使得控制系统做出的反映。应用程序如何与操作系统实现交互。应用程序使用系统调用system call的ECF形式向操作系统请求服务实现并发的基本机制提供软件异常机制等等异常 处理器中的变化事件触发从应用程序到异常处理程序的突发的控制转移也就是异常。比如被零除缺页存储器访问违例断点算术溢出系统调用来着外部I/O设备的信号等等。在任何情况下当处理器检测到有事件发生时它就会通过一张叫做异常表的跳转表进行一个间接过程调用到一个专门处理这类时间的操作系统子程序异常处理程序当 exception handler处理结束之后会有三种结果 处理程序将控制返回给事件发生的时候正在执行的指令处理程序将控制返回给如果没有发生异常将会执行的下一条指令处理程序终止被终端的程序异常过程调用 过程调用的时候在跳转到处理程序之前处理器将返回地址压入栈中。然而根据异常的类型要么返回当前指令要么返回下一条指令异常虽然类似于过程调用但在压入栈的数据方面有不同。它会把一些额外的处理器状态压入栈中并且如果是转移到内核的程序压入的是内核栈中异常处理程序运行在内核模式下意味着它们对所有的系统资源都有完全的访问权限异常表其条目k中包含着异常k的处理程序的地址。其中异常表的起始地址放在异常表基址寄存器中而异常号是异常表中的索引相当于偏移地址中断异常类型1 原因由I/O设备的信号引起的结果类型异步不是由任何一条指令造成的处理i/o设备例如定时器芯片、网络控制器等通过处理器芯片上的一个引脚发信号并将异常号标识引起中断的设备放在系统总线上在当前指令完成之后处理器注意到引脚电压变化从系统总线中读取异常信号调用中断处理程序处理中断处理器返回无中断的时候应该执行的下一条指令。陷阱异常类型2 原因有意的异常是执行指令的结果类型同步处理用户程序需要或者希望向内核请求服务比如创建或者终止进程、读文件等的时候执行 syscall nn是想要请求的服务号指令把控制权交给处理程序陷阱处理程序运行处理程序结束之后返回到下一条指令。故障异常类型3 原因由潜在的可恢复的错误的情况引起类型同步可能能够被修复然后返回当前指令。过程当前指令导致故障控制转移给处理程序故障处理程序运行如果可以修正这个错误就将控制引起故障的指令从而重新执行它否则返回内核中的abort例程abort终止引起故障的程序。终止异常类型 4 原因由不可恢复的致命错误造成通常是一些硬件错误类型同步过程发生致命硬件错误传递控制给处理程序处理程序将控制返回给abort例程该例程终止此应用程序进程 定义一个执行中的程序的实例。系统中的每个程序都运行在某个进程的上下文中。上下文是由程序正确运行所需要的状态组成的。这个状态包括放在存储器中的程序的代码和数据等进程提供给了应用程序几个关键抽象 一个独立的逻辑控制流——提供好像程序独占处理器的假象一个私有的地址空间——提供好像程序独占存储系统的假象逻辑控制流 进程计数器PC中的每一个值都唯一地对应于包含在程序的可执行目标文件中的指令或者是包含在运行时动态链接的到程序的共享对象中的指令。这个PC值的序列叫做逻辑控制流。进程是轮流使用处理器的每个进程执行它的流的一部分然后被挂起其他进程执行。 对于一个运行在其中一个进程上下文中的程序而言它看上去就像是唯一地占用了处理器只不过如果精确测量的话会发现对于一个进程来说它在执行期间好像被停顿了若干个很短的时间。并发流 计算机系统中有很多逻辑流的不同形式比如异常处理程序、进程、信号处理程序等一个逻辑流的执行在时间上与另一个流重叠称为并发流多个流并发执行的现象称为并发一个进程和其他进程轮流运行称为多任务又叫做时间分片。如果两个流并发地运行在不同的处理器核或者计算机上那么我们称它们为并行流。私有地址空间 在一台有n位地址的机器上地址空间是一个2^n个可能地址的集合。一个进程为每个程序提供它自己的私有地址空间一般而言和这个空间中某个地址相关联的那个存储器字节是不能够被其他进程读或者写的所以说它是私有的存储器内容通用结构地址空间底部留给用户程序包括通常的文本、数据等地址空间顶部保留给内核包括内核在代表进程执行指令的时候使用的代码、数据和栈进程控制 获取ID每个进程都有一个唯一的进程IDPIDgetpid函数获取进程的PIDgetppid获取创建调用进程的进程即它的父进程的PID。以上两个函数的返回值为pid_t在linux系统中它在types.h中被定义为int创建和终止进程:父进程通过调用fork函数来创建一个新的运行子进程。新创建的子进程拥有和父进程相同的但是独立的用户级虚拟地址空间拷贝包括文本、数据和bss段、堆和用户栈等子进程和父进程拥有独立的地址空间所以二者对某一相同变量值的修改是互相不受影响的。终止进程 运行进程要么在CPU上运行要么在等待被执行且最终被内核调度停止进程的执行被挂起且不会被调度。【当进程收到SIGSTOP,SIGTSTP,SIDTTIN,SIGTTOU信号的时候进程就会停止并且保持停止直到它收到一个SIGCONT信号在此时再次运行】终止进程永远地停止。三种原因1收到一个信号其默认为终止程序2从主程序返回3调用exit函数exitint stauts,其中status是退出状态回收子进程当一个进程由于某种原因终止的时候内核并不是把它从系统中清除而是保持在已经终止的状态中直到被它的父进程回收。这时内核将子进程的退出状态传递给父进程然后抛弃已经终止的进程。这之后该进程才可以说是“不存在”了。 等待回收子进程一个进程可以通过调用waitpid函数来等待它的子进程终止或者停止。父进程创建N个子进程然后子进程以一个唯一的退出状态退出;waitpid函数被阻塞直到某个子进程终止然后进入while循环测试是否是正常终止的是正常的话就输出当回收了所有的子进程之后再调用waitpid就返回-1并且设置errno为ECHILD如果不是正常终止的就输出一个错误消息加载并运行程序非本地跳转C语言提供了一种用户级异常控制流形式称为非本地跳转它将一个函数转移到一个当前正在执行的函数而省略了调用-返回序列这一步 函数setjmp,longjmp。setjmp函数在env缓冲区中保存当前调用环境包括PC栈指针通用寄存器以供后面的longjmp使用并返回0longjmp函数从env缓冲区中回复调用环境然后触发一个从最近一次初始化env开始的setjmp函数调用的返回main函数先调用setjmp保存以前的调用环境然后调用函数foofoo调用bar如果这两个函数中一个遇到错误就立即通过longjmp调用从setjmp返回setjmp非零返回值指明了错误类型应用用于允许从一个深层嵌套的函数调用之中立即返回而不是费力地解开栈。用于使一个信号处理程序分支到一个特殊的代码位置而不是返回到被信号中断了的指令的位置。在程序第一次启动的时候调用setjmp保存上下文环境随后主函数进入无限处理循环用户键入ctrl-c之后外壳发送SIGINT信号给进程该进程捕获这个信号然后处理程序执行一个非本地跳转回到主函数开始的地方代码调试 exec代码中实现的是ls的功能 forkdemo1打印进程pid调用fork函数生成子进程休眠一秒后再次打印进程id forkdemo2调用两次fork forkdemo3fork产生子进程父进程返回子进程pid forkdemo4先打印进程pid然后fork创建子进程父进程返回子进程pid forkdemogdb父进程打印两句休眠一秒再打印一句子进程打印一句休眠一秒再打印两句 psh1调用函数 psh2加入了循环 testbuf1testbuf2testbuf3内容格式化输出到标准错误、输出流中 testpid输出当前进程pid和父进程pid waitdemo如果有子进程则终止子进程成功返回子进程pid waitdemo2把子进程分为3个状态exitsig和core environ打印环境变量 environvar简单打印环境变量表 consumermemset(void s,int ch,size_t n);将s中前n个字节用ch替换并返回s openconst char pathname,int flags);第一个参数是欲打开的文件路径字符串第二个参数是打开方式 producer代码托管 链接http://git.oschina.net/entropy_z/Linux 学习进度条 代码行数新增/累积博客量新增/累积学习时间新增/累积重要成长目标5000行30篇400小时第一周200/2001/120/20第二周300/5001/218/38第三周500/10001/322/60第四周150/11501/430/90第五周150/13001/530/120第六周50/13501/630/150第七周50/14001/720/170第八周50/14501/820/190第九周50/15001/920/210第十周300/18001/1020/230第十一周300/21001/1120/250参考资料 《深入理解计算机系统V2》学习指导转载于:https://www.cnblogs.com/entropy/p/6107166.html