当前位置: 首页 > news >正文

哪家手表网站成都 高端网站建设

哪家手表网站,成都 高端网站建设,买购网十大品牌官网,安卓 wordpress文章目录 一、信号入门 1.linux信号的基本概念 2.使用kill -l 命令可以查看系统定义的信号列表 3.信号处理常见方式 二、产生信号 1.通过终端按键产生信号 2.通过调用系统函数向进程发信号 3.由软条件产生信号 4.硬件异常产生信号 1. /0异常 2.模拟野指针 一、信号入门…

文章目录

一、信号入门

1.linux信号的基本概念

2.使用kill -l 命令可以查看系统定义的信号列表

3.信号处理常见方式

二、产生信号

1.通过终端按键产生信号

2.通过调用系统函数向进程发信号

3.由软条件产生信号

4.硬件异常产生信号

    1. /0异常

    2.模拟野指针



一、信号入门

1.linux信号的基本概念

  • 信号是进程之间事件异步通知的一种方式,属于软中断。
  • 如:用户输入命令,在shell下启动一个前台进程。用户按下ctrl+c,这个键盘输入产生一个硬件终端,被os获取,解释为信号,发送给目标前台进程,前台进程因为收到信号,进而引起进程退出。
  • 前台进程:一般是bash,或者自己设置的进程,ctrl+c 可以杀掉前台进程
  • ./pro & 后台进程,无法使用ctrl+c ,只能使用kill-9
  • shell可以同时运行一个前台进程和任意多个后台进程

2.使用kill -l 命令可以查看系统定义的信号列表

  • 每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到
  • 编号34以上的信号都是实时信号

3.信号处理常见方式

  1. 忽略此信号
  2. 执行该信号的默认处理动作
  3. 提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕捉(catch)一个信号

二、产生信号

1.通过终端按键产生信号

SIGINT默认处理动作是终止进程,SIGQUIT的默认处理动作是终止进程并且设置core dump

core dump:

  • 当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部 保存到磁盘上,文件名通常是core,这叫做Core Dump。进程异常终止通常是因为有Bug,比如非法内存访问导致段错误, 事后可以用调试器检查core文件以查清错误原因,这叫做Post-mortem Debug(事后调试)。
  • 一个进程允许产生多大的core文件取决于进程的Resource Limit(这个信息保存 在PCB中)。默认是不允许产生core文件的, 因为core文件中可能包含用户密码等敏感信息,不安全。在开发调试阶段可以用ulimit命令改变这个限制,允许产生core文件。 首先用ulimit命令改变Shell进程的Resource Limit,允许core文件最大为1024K: $ ulimit -c 1024

如,按下ctrl+c 产生kill进程的信号。 其具体过程是:键盘被按下,触发硬件终端控制器产生脉冲,cpu的某个引脚接收响应,寄存器x号设置为高点评,此时找到cpu中的终端向量表中下标为x的函数指针,函数指针中有对应的方法。os管理软硬件资源,此时知道要从键盘中读取响应的数据到内存,将键盘按下的组合键转化为信号,找到前台进程,将信号写入这个进程pcb的位图结构。

2.通过调用系统函数向进程发信号

  1. kill命令 是调用kill函数实现的,kill函数可以给一个指定的进程发送指定的信号
#include<signal.h>
int kill(pid_t pid,int signo);
//发送成功返回0,失败返回-1

     2.rasie函数,可以给当前进程发送指定的信号(自己给自己发信号)

int raise(int signo)
//成功返回0,失败返回-1

    3.abort函数 使当前进程接收到信号异常终止,就想exit一样

void abort(void);
abort函数总是回成功的,所以没有返回值

3.由软条件产生信号

#include<unistd.h>usigned int alarm(unsigned int seconds);
//调用alarm函数可以设定一个闹钟,告诉os在seconds秒之后向进程发送SIGALRM信号,该信号的默认处理动作是终止当前进程//该函数的返回值是0,或者是以前设定闹钟的时间还剩余的秒数
如:设定一个30s的闹钟,在20s时由于别的进程让alarm响了,此时函数返回10s

4.硬件异常产生信号

    1. /0异常

硬件异常被硬件以某种方式检测到并通知os,然后内核向当前进程发送适当的信号。例如,当前执行了/0的指令,cpu的状态寄存器溢出,os对软硬件资源管理,发现异常,os向进程中写入8号信号。

    2.模拟野指针


void handler(int sig)
{printf("catch a sig: %d\n",sig);
}int main()
{signal(SIGSEVE,handler);int * p = nullptr;*p = 100;
}

运行上述代码,发现有segmentation falut段错误。其具体原因是:在执行进程是,通过页表kv转换到物理内存,如果kv有映射,要看mmu权限,有权限,写入,无权限mmu报错,os找到进程pcb,向进程发送11号信号。如果kv无映射,mmu映射报错。


 

http://www.yayakq.cn/news/359620/

相关文章:

  • 做个网站多少钱大概成都两条传播链在成华区
  • 北京建设监理协会网站做百度网站
  • 网站实现搜索功能四川成都旅游
  • 1.网站开发的详细流程建设官方网站
  • 哪个网站专门做二手的个人网站域名起名
  • 北京网络职业学院怎么样营销优化型网站怎么做
  • 邵阳市网站建设电商系统网站建设
  • 建手机网站款软件做电影网站需要哪些证
  • 博业建站网WordPress文章添加地图导航
  • wordpress php推送示例成都高新seo
  • 太原网站建设全包高端做网站公司
  • 佛山做网站推广那些外国网站设计图多
  • 朝阳网站设计尚城装修公司官网
  • 专业的菏泽网站建设电脑优化软件
  • 烟台网站建设 共赢免费响应式模板网站模板下载
  • 昆明网站建设公司乐网大宗商品现货交易平台排名
  • 物流网站开发项目书9个广州seo推广神技
  • 内蒙古做网站找谁做企业网站一般要多少钱
  • 备案网站大全wordpress cache选PHp
  • 天津特定网站建设推广wordpress 菜单 icon
  • php做网站用什么软件wordpress编辑网页
  • 宇讯网站建设庆网站建设
  • 网站怎么做360免费优化网站服务器可以自己做吗
  • 阿里云的网站程序如何做网站服务器 优帮云
  • .win域名做网站怎么样可以做闪图的网站
  • 亚洲做爰直播网站企业管理十大系统
  • 企业电子网站的建设案例建立购物网站的目的
  • 做网站怎样做才有百度快照惠州网站建设方案推广
  • 网站图片如何做缓存百度手游排行榜
  • 优秀网站大全现在建个企业网站要多少钱