异常是异常控制流的一种形式,它一部分由硬件实现,一部分由操作系统实现。
异常就是控制流中的突变,用来响应处理器状态中的某些变化。
处理器发现异常时会进行一个间接过程调用,到一个操作系统子程序,即异常处理程序。
异常处理程序完成处理后会依据异常类型,产生以下三种情况:
异常号:系统为每种类型的异常分配的唯一的非负整数。
异常表:系统启动时操作系统就会初始化一张条转变,使得条目k包含异常k的处理程序的地址。
关系:
异常号是到异常表中的索引,异常表的起始地址放在异常表基址寄存器。
异常是允许操作系统提供进程的概念所需要的基本构造块。
进程的一个经典定义就是一个执行中的程序的实例。
进程提供给应用程序的关键抽象:
一个私有的地址空间:独占的使用存储器系统
一系列的程序计数器pc的值,分别唯一的对应于包含在程序的可执行目标文件中的指令,或者是包含在运行时动态链接到程序的共享对象中的指令,这个PC值的序列就叫做逻辑控制流。
进程是轮流使用处理器的。每个进程执行它的流的一部分,然后被抢占,然后轮到其他进程。但是进程可以向每个程序提供一种假象,好像它在独占的使用处理器。
一个逻辑流的执行在时间上与另一个流重叠,称为并发流。
多个流并发地执行的一般现象称为并发。
如果两个流并发地运行在不同的处理器核或者计算机上,我们称它们为并行流,它们并行的运行,且并行的执行。
每个进程都有一个唯一的正数进程ID(PID)。
getpid返回调用进程的PID。
getppid返回它的父进程的PID。
进程总是处于以下三种状态:
进程终止后还要被父进程回收,否则处于僵死状态。
如果父进程没有来得及回收,内核会安排init进程来回收他们。init进程的PID为1。
一个进程可以通过调用waitpid函数来等待它的子进程终止或停止。
成功返回子进程PID,如果WNOHANG,返回0,其他错误返回-1。
错误条件:
wait函数:waitpid的简单版本。成功返回子进程的PID,出错返回-1。
sleep函数使一个进程挂起一段指定的时间。
返回值是剩下还要休眠的秒数,如果到了返回0。
让调用函数休眠,直到该进程收到一个信号。
execve函数加载并运行可执行目标文件filename,且带参数列表argv和环境变量列表envp。
只有当出现错误时,例如找不到filename,execve才会返回到调用程序。
execve一次调用从不返回。
原文:http://www.cnblogs.com/huyufeng/p/4986337.html