深入理解计算机基础——ECH
异常
发生某个事件后将控制移交给kernel
异常表:
异步异常:处理器外部的事件引起
同步异常:执行指令时引起,包括Trap(如syscall), Fault(如page fault), abort(如非法指令)
其中,segmentation fault(缺页异常):当指令引用的地址不在存储器中,必须从磁盘中取出时会发生。
system call
过程(如open):
1.用户调用open(filename, options)函数
2.调用__open函数,将syscall number存放在%eax中,调用syscall
Context switch
进程
获取进程/父进程id
pid_t getpid(void)
pid_t getppid(void)
获取/设置进程组id
pid_t getpgrp(void)
void setpgid(pid_t)
进程状态:
- Prepared
- Running
- Stopped
- Terminated
进程终止原因:
- 收到终止信号
- 从main中返回
- 调用exit
fork函数
//子进程返回0,父进程返回子进程PID
//子进程获得父进程拷贝:虚拟地址空间,文件描述符
int fork(void)
wait函数:
//返回子进程pid
int wait(int *child_status)
execve函数:
//执行新的文件,参数为argv, 环境变量为envp
//永远不返回
int execve(char *filename, char *argv[], char *envp[])
当新程序开始时,用户栈的结构:
僵尸进程:当子进程结束时,它仍然消耗着系统的资源,如果父进程没有及时调用wait,子进程称为僵尸进程
孤儿进程:当父进程结束,子进程尚未结束,子进程称为孤儿进程,被Init(pid=1)进程收养。
Linux进程:
shell:接收用户命令,fork子进程,子进程调用exec执行命令
Signal
信号状态:
1.pending:已发送但尚未接收。如果某个信号pending,接下来所有的该信号都被丢弃
2.block:如果某个信号被阻塞,它仍可被发送,但不会被接收,直到取消阻塞。
kernel记录每个进程:
1.pending bit:发送信号设置,接收到信号时清除
2.blocked bit:通过sigprocmask设置
发送信号的方式:
1.linux shell
//发送SIGKILL给24818进程
kill -9 24818
//发送SIGKILL给24818进程组
kill -9 -24818
2.键盘输入
ctrl-c:发送SIGINT给所有后台进程组
ctrl-z:发送SIGSTP给所有后台进程组
3.调用kill函数
4.调用alarm函数发送信号给自己
接收信号
当kernel执行完exception handler,检查pending & ~block如果为0,则返回进程p。
否则:
1.选择最低的不为0的bit k并强制要求进程p接收信号k
2.进程p处理信号k
3.kernel重复执行直到bit全为0
4.返回控制权给进程p
信号处理函数
handler_t *signal(int signum, handler_t *handler)
异步信号安全函数:所有变量存放在栈上 或者 不会被信号中断
跳转
setjmp/longjmp
//将控制权交给某个位置
//记录寄存器上下文等
int setjmp(jmp_buf j)
//回到setjmp的地方,恢复寄存器上下文
void longjmp(jmp_buf j, int j)
深入理解计算机基础——ECH相关推荐
- 计算机基础课程教学创新,计算机基础课程教学学生创新能力的培养-计算机基础论文-计算机论文(12页)-原创力文档...
计算机基础课程教学学生创新能力的培养-计算机基础论文-计算机论文 --文章均为WORD文档,下载后可直接编辑使用亦可打印-- 摘要:作为高校教育中一门具有基础性的重要课程,计算机基础课程对于发展学生综 ...
- 808计算机基础考试时间,成都信息工程大学808计算机基础2020年考研大纲
成都信息工程大学808计算机基础2020年考研大纲已发布,文都考研网做如下整理,快随小编来看下吧~ 一.科目的总体要求 要求考生掌握并理解计算机基础知识.硬件体系结构.计算机软件基本知识.程序设计的基 ...
- 计算机基础应用教程王德俊,计算机应用基础教程
适用于各类高等学校计算机基础课程教学,也可作为广大初.中级读者实用的自学指导书. 素质养成 在突出知识性和基础性的同时,强调素质养成和技能性要求,为后续专业学习和终身学习以及高质量就业做好铺垫. 学用 ...
- 计算机基础知识_2020年河北省高职单招计算机基础知识和实践技能培训
本考纲是根据教育部2014年4月中华人民共和国教育部<中等职业学校专业教学标准(试行)>(教职成厅函[2014]11号)颁布的<中等职业学校计算机应用专业教学标准>.<中 ...
- 大学计算机基础知识点_自学录——大学计算机基础
昨天学习完西安交大的计算机基础,今天赶忙来知识输出,阅读本文大概需要两分钟,理解较难,但耗费本人巨量心血(本人小白,大佬请飘过) 课程:"中国大学" 主要获益有两点:(1)了解了计 ...
- 计算机基础在小学的教学论文,小学基础教育论文范文
一.小学数学教学中的语言表达 在小学数学教学中,提炼其中的语文因素,发掘出可资利用的教学方法和技能,可以有效提高数学课堂教学效率,有利于教师教学水平的提高,促进教师由经验型向科研型教师转变.如在教授. ...
- 计算机基础知识精品课程,计算机应用基础精品课
本精品课为校级精品课.<计算机应用基础>是我院所有各专业必须的公共基础课,直接关系到各专业人才培养的基本规格要求,即要求毕业生能熟练掌握计算机应用技能,培养和提高学生的计算机文化素质,为学 ...
- 第一章计算机基础知识第一节,第一章 计算机基础知识 第一节
第一章计算机基础知识 第一节.了解计算机 尊敬的各位评委老师: 大家好!我今天说课的题目是<了解计算机>.我将从以下五方面来谈谈对这节课的设计:即说教材.学情分析.说教法和学法.说教学过程 ...
- 电脑硬件知识学习_学习计算机基础必读的4本经典入门书籍,自学编程必备书单!...
点击蓝色"程序员书单"关注我哟 加个"星标",每天带你看好文,读好书! 文/黄小斜 转载请注明出处 新手学习计算机并非易事,作为一个自学编程的过来人,深知打好计 ...
最新文章
- Good Bye 2014 B. New Year Permutation(floyd )
- 总结六条对我们学习Linux系统有用的忠告
- php url映射,php – Laravel:将任意URL解析为相应的Controller / Route?
- kvm虚拟机命令梳理
- ai预测占比_2019-2021年中国AI芯片市场预测与展望数据
- 中国风海报灵感|几款各具特色的汉字活动海报设计
- datagrid嵌套和资源消耗
- stream场景用法总结
- 一款免费的网络时间校准小程序
- 【Verilog】verilog实现奇数次分频
- easyui datagrid deleteRow(删除行)的BUG!
- 传递函数的幅频特性计算方法
- MYSQL 的配置文件
- 微信小程序入门与实战笔记
- 滤镜怎么调好看?分享给图片调色的教程
- 【Pyhton TurtleArt】画一幅极简渐变风景图
- 【一步步学OpenGL 19】 -《镜面反射光》
- 【强烈推荐】Windows 更新疑难解答(转贴)
- 2021年Java发展怎么样?现在学了Java技术出来是否还能找到工作?
- 玩玩python之两个猥琐的爬虫
热门文章
- 索爱java好的机型,新款索爱手机型号(索爱半智能手机形象的索爱A200操作系统)...
- js 常用正则表达式表单验证代码
- mat2gray函数原理分析
- 【无人机通信优化】基于粒子群算法的多跳无线网络部署优化附matlab代码
- 【无人机】【2007.09】小型无人机通信链路可靠性研究
- 组织及其IT部门的职责划分
- 计算机我的文档data,将Win7用户文件夹(“我的文档”)的默认位置移至D_IT / Computer_Professional Inform...
- postgre创建存储过程_PostgreSQL存储过程用法实战详解
- CentOS6.5修改主机名
- 瑞星FOR VISTA 仍然不能升级!!!报错“抱歉,此安装包不能在当前版本的Windows上运行”...