CMU15213 Intro to Computer Systems学习笔记(14) Exceptional Control Flow: Signals and Nonlocal Jumps

Shell

要先讲信号的话,先要了解一下shell程序的内容,正如上次所提到的一样,我们只有一种方法在Linux下创建进程,那就是使用fork调用

Linux Process Hierarchy

Shell Programs

shell是以用户身份执行程序的程序

Problem with Simple Shell Example

简单shell存在一个问题,shell会等待收割前台的工作。那么后台的工作呢?

  • 停止时变成“僵尸”
  • 由于shell不停止永远不会被替换
  • 创造引发内存耗尽的内存泄漏

ECF to the Rescue!

解决办法:Exceptional control flow

当后台进程完成时,内核会干扰打断常规的进程发送警告,在unix下,警告机制叫做sinal【信号】。

Signals

信号和上节课学习的异常机制很像,除了它是完全由软件实现的。

当我们在命令行按下ctrl+c的时候会触发sigint信号,内核像每个进程发送信号,收到sigint时的默认操作是终止任务

SIGKILL和SIGINT效果是一样的,都是kill了进程。

SIGCHLD这个信号是每当子进程被终止或者结束的时候kernel就会通知它们的父进程,我们会看到这就是shell回收进程的做法。

 

Signal Concepts: Sending a Signal

Signal Concepts: Receiving a Signal

收到信号是目标进程最终发生的事情,内核强制它以某种方式作出响应。

Signal Concepts: Pending and Blocked Signals

Sending Signals: Process Groups

Sending Signals with /bin/kill Program

Sending Signals from the Keyboard

Receiving Signals

Signals Handlers as Concurrent Flows

信号是并发的一种形式。

Another View of Signal Handlers as Concurrent Flows

Nested Signal Handlers

Guidelines for Writing Safe Handlers

后面就开始听不懂了。。。网上也有小伙伴留言是这样。。。哈哈哈

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值