深入理解计算机系统:异常控制

本文深入探讨了操作系统中异常处理机制,包括中断、陷阱、故障和终止的区别,以及进程的概念、时间特性、私有地址空间和上下文切换。重点介绍了进程的创建、回收、休眠、加载程序的方法,同时讨论了信号处理机制。最后,提供了操作进程的常用工具及使用场景。

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

1、当出现某种事件时,系统就会查异常表,这个异常表是在系统启动的时候建立的,上面有异常号与处理程序之间的对应关系。在计算机中,处理器定义了一些异常,如缺页等,操作系统也定义了一些异常,系统调用都对应一个异常号,exit()编号为1

2、异常的类别:中断、陷阱、故障和终止。

中断:来自处理器外部的io设备信号,是异步的。

陷阱:最总要的用途是系统调用,从程序员的角度看,系统调用和函数调用是一样的,然而他们的实现时非常不同的,普通函数运行在用户模式,系统调用运行在内核模式。同步。

故障:由错误情况引起,调用故障处理程序,可能修正也可能终止应用。同步。

终止:不可恢复的知名错误造成的结果,通常是一些硬件错误。同步。

3、进程:

  3.1、时间上:在进程执行的过程中,我们感觉好像cpu在为这一个进程服务,其实不是,我们把每个进程看做一个独立的逻辑控制流,不同的逻辑流会抢占cpu,真正执行的只有一个,这里引出一个并发流的概念,如果两个逻辑流执行时间有重叠,我们称之为并发流,即使他们是运行在同一个处理器上,这种现象叫做并发。

  3.2、又有自己的私有地址空间,存放数据代码等。

  上下文:就是进程的状态,包括寄存器,内核栈,代码、数据等信息。

  内核通过上下文切换实现进程的调度,保存当期上下文,回复之前上下文,执行新进程的上下文。

4、进程控制:

  4.1、进程的创建:进程的创建使用forkfork返回两个值,由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因此fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的,fork创建的进程和父进程有完全一样的上下文,把父进程的子进程也复制。

  4.2、回收子进程:子进程执行完成之后,仍然在内存中,需要父进程进行回收,不回收的话,由init进程回收,父进程回收的方式waitid(pid,&status,0)pid指定子进程id-1表示所有子进程,status返回子进程的结束状态。Wait(&status),相当于waitid(-1,&status,0)。返回pid,没有子进程返回-1,执行时会阻塞。

  4.3、进程休眠:sleeppause

  4.4、加载程序:execve函数。

  4.5、程序是一堆代码和数据,进程是执行中程序的一个具体实例,fork作用进程,execve作用程序。

5、信号的问题:同一类型的信号最多只有一个待处理,一个处理,另一个阻塞。当有第三个同类型的信号来时,直接丢掉。

6.、操作进程的工具:

Strace:打印正在运行的程序和他的子程序调用的每个系统调用的轨迹。

Ps

Top:当前进程资源使用的信息。

Tmap:显示进程的存储器映射、

/proc:内核数据的内容

转载于:https://www.cnblogs.com/shaotenghan/archive/2011/12/02/2271721.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值