异常

发生某个事件后将控制移交给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)

进程状态:

  1. Prepared
  2. Running
  3. Stopped
  4. Terminated

进程终止原因:

  1. 收到终止信号
  2. 从main中返回
  3. 调用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相关推荐

  1. 计算机基础课程教学创新,计算机基础课程教学学生创新能力的培养-计算机基础论文-计算机论文(12页)-原创力文档...

    计算机基础课程教学学生创新能力的培养-计算机基础论文-计算机论文 --文章均为WORD文档,下载后可直接编辑使用亦可打印-- 摘要:作为高校教育中一门具有基础性的重要课程,计算机基础课程对于发展学生综 ...

  2. 808计算机基础考试时间,成都信息工程大学808计算机基础2020年考研大纲

    成都信息工程大学808计算机基础2020年考研大纲已发布,文都考研网做如下整理,快随小编来看下吧~ 一.科目的总体要求 要求考生掌握并理解计算机基础知识.硬件体系结构.计算机软件基本知识.程序设计的基 ...

  3. 计算机基础应用教程王德俊,计算机应用基础教程

    适用于各类高等学校计算机基础课程教学,也可作为广大初.中级读者实用的自学指导书. 素质养成 在突出知识性和基础性的同时,强调素质养成和技能性要求,为后续专业学习和终身学习以及高质量就业做好铺垫. 学用 ...

  4. 计算机基础知识_2020年河北省高职单招计算机基础知识和实践技能培训

    本考纲是根据教育部2014年4月中华人民共和国教育部<中等职业学校专业教学标准(试行)>(教职成厅函[2014]11号)颁布的<中等职业学校计算机应用专业教学标准>.<中 ...

  5. 大学计算机基础知识点_自学录——大学计算机基础

    昨天学习完西安交大的计算机基础,今天赶忙来知识输出,阅读本文大概需要两分钟,理解较难,但耗费本人巨量心血(本人小白,大佬请飘过) 课程:"中国大学" 主要获益有两点:(1)了解了计 ...

  6. 计算机基础在小学的教学论文,小学基础教育论文范文

    一.小学数学教学中的语言表达 在小学数学教学中,提炼其中的语文因素,发掘出可资利用的教学方法和技能,可以有效提高数学课堂教学效率,有利于教师教学水平的提高,促进教师由经验型向科研型教师转变.如在教授. ...

  7. 计算机基础知识精品课程,计算机应用基础精品课

    本精品课为校级精品课.<计算机应用基础>是我院所有各专业必须的公共基础课,直接关系到各专业人才培养的基本规格要求,即要求毕业生能熟练掌握计算机应用技能,培养和提高学生的计算机文化素质,为学 ...

  8. 第一章计算机基础知识第一节,第一章 计算机基础知识 第一节

    第一章计算机基础知识 第一节.了解计算机 尊敬的各位评委老师: 大家好!我今天说课的题目是<了解计算机>.我将从以下五方面来谈谈对这节课的设计:即说教材.学情分析.说教法和学法.说教学过程 ...

  9. 电脑硬件知识学习_学习计算机基础必读的4本经典入门书籍,自学编程必备书单!...

    点击蓝色"程序员书单"关注我哟 加个"星标",每天带你看好文,读好书! 文/黄小斜 转载请注明出处 新手学习计算机并非易事,作为一个自学编程的过来人,深知打好计 ...

最新文章

  1. Good Bye 2014 B. New Year Permutation(floyd )
  2. 总结六条对我们学习Linux系统有用的忠告
  3. php url映射,php – Laravel:将任意URL解析为相应的Controller / Route?
  4. kvm虚拟机命令梳理
  5. ai预测占比_2019-2021年中国AI芯片市场预测与展望数据
  6. 中国风海报灵感|几款各具特色的汉字活动海报设计
  7. datagrid嵌套和资源消耗
  8. stream场景用法总结
  9. 一款免费的网络时间校准小程序
  10. 【Verilog】verilog实现奇数次分频
  11. easyui datagrid deleteRow(删除行)的BUG!
  12. 传递函数的幅频特性计算方法
  13. MYSQL 的配置文件
  14. 微信小程序入门与实战笔记
  15. 滤镜怎么调好看?分享给图片调色的教程
  16. 【Pyhton TurtleArt】画一幅极简渐变风景图
  17. 【一步步学OpenGL 19】 -《镜面反射光》
  18. 【强烈推荐】Windows 更新疑难解答(转贴)
  19. 2021年Java发展怎么样?现在学了Java技术出来是否还能找到工作?
  20. 玩玩python之两个猥琐的爬虫

热门文章

  1. 索爱java好的机型,新款索爱手机型号(索爱半智能手机形象的索爱A200操作系统)...
  2. js 常用正则表达式表单验证代码
  3. mat2gray函数原理分析
  4. 【无人机通信优化】基于粒子群算法的多跳无线网络部署优化附matlab代码
  5. 【无人机】【2007.09】小型无人机通信链路可靠性研究
  6. 组织及其IT部门的职责划分
  7. 计算机我的文档data,将Win7用户文件夹(“我的文档”)的默认位置移至D_IT / Computer_Professional Inform...
  8. postgre创建存储过程_PostgreSQL存储过程用法实战详解
  9. CentOS6.5修改主机名
  10. 瑞星FOR VISTA 仍然不能升级!!!报错“抱歉,此安装包不能在当前版本的Windows上运行”...