生活中的信号
- 交通信号灯案例
- 交通信号灯可以看作是一种 “信号” 机制。在十字路口,交通信号灯(类比操作系统)向不同方向的车辆和行人(类比进程)发送信号。例如,红灯信号就像是一个 “停止” 信号(类似于 SIGSTOP 信号,暂停进程)。当红灯亮起时,车辆和行人需要停止前进,这就如同进程接收到信号后暂停执行。绿灯信号则是一个 “运行” 信号(类似于 SIGCONT 信号,继续进程),车辆和行人可以通行。
- 学校铃声案例
- 在学校里,铃声是一种信号。上课铃响就如同给学生和老师(进程)发送一个 “开始上课” 的信号。学生和老师听到铃声后,会结束课间活动状态,开始进入课堂教学和学习状态。下课铃响则是一个 “下课” 信号,让师生结束课堂进程,开始课间休息。
- 智能手机通知案例
- 智能手机的通知系统也类似于进程信号。当你在使用手机上的一个应用程序(进程),比如正在阅读电子书,此时有新的短信进来。系统会发送一个通知信号(类似于操作系统向进程发送信号),手机屏幕上会弹出短信通知,还可能伴有声音或震动。你可以选择暂时忽略这个信号(继续阅读电子书),或者响应这个信号(打开短信应用查看短信),这就如同进程可以选择捕获并处理信号或者忽略信号。
一、信号是什么?
- 在计算机操作系统中,进程信号是一种异步通知机制。它用于通知进程发生了某个事件。就好像在一个工厂(操作系统)里,有许多生产线(进程)在工作,信号就像是一个警报系统。当某个特殊情况发生时(比如设备故障、原材料用完等),警报(信号)就会被触发,通知对应的生产线(进程)做出相应的反应。
- 信号可以由操作系统发送给进程,也可以由进程发送给其他进程。常见的信号包括 SIGINT(通常由用户在终端中按下 Ctrl + C 产生,用于终止一个正在运行的前台进程)、SIGTERM(用于请求一个进程正常终止)、SIGKILL(强制终止一个进程,这个信号不能被进程捕获或忽略)等。
- 信号是进程之间事件异步通知的一种方式,属于软中断。
- 注意
- Ctrl-C 产生的信号只能发给前台进程。一个命令后面加个&可以放到后台运行,这样Shell不必等待进程 结束就可以接受新的命令,启动新的进程。
- Shell可以同时运行一个前台进程和任意多个后台进程,只有前台进程才能接到像 Ctrl-C 这种控制键产生