- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七八章内容缩减
回顾:程序的机器级表示与执行
int sum(int a[ ], unsigned len) sum:
{ …
.L3:
int i ,sum = 0;
for (i = 0; i = len–1; i++) …
movl -4(%ebp), %eax
sum += a[i]; movl 12(%ebp), %edx
return sum; subl $1, %edx
} cmpl %edx, %eax
程序的正常执行顺序有哪两种? jbe .L3
…
(1) 按顺序取下一条指令执行
(2) 通过CALL/RET/Jcc/JMP等指令跳转到转移目标地址处执行
CPU所执行的指令的地址序列称为CPU的控制流 ,通过上述两种方
式得到的控制流为正常控制流。
程序始终按正常控制流执行吗?
异常控制流
• CPU会因为遇到内部异常或外部中断等原因而打断程序的正
常控制流,转去执行操作系统提供的针对这些特殊事件的处
理程序。
• 由于某些特殊情况引起用户程序的正常执行被打断所形成的
意外控制流称为异常控制流 (Exceptional Control of
Flow ,ECF )。
• 异常控制流的形成原因:
– 内部异常(缺页、越权、越级、整除0、溢出等) 发生在
– 外部中断(Ctrl-C、打印缺纸、DMA结束等) 硬件层
– 进程的上下文切换 (发生在操作系统层)
– 一个进程直接发送信号给另一个进程 (发生在应用软件层)
本章主要介绍发生在OS层和硬件层的异常控制流
“程序”和 “进程”
程序(program )指按某种方式组合形成的代码和数据,代码即是
机器指令序列,因而程序是一种静态概念。
进程( process )指程序的一次运行过程。更确切说,进程是具有
独立功能的一个程序关于某个数据集合的一次运行活动,因而进
程具有动态含义 。同一个程序处理不同的数据就是不同的进程
• 进程是OS对CPU执行的程序的运行过程的一种抽象。进程有自
己的生命周期 ,它由于任务的启动而创建,随着任务的完成(或
终止)而消亡,它所占用的资源也随着进程的终止而释放。
• 一个可执行目标文件(即程序)可被加载执行多次,也即,一个
程序可能对应多个不同的进程。
– 例如,用word程序编辑一个文档时,相应的用户进程就是
winword.exe ,如果多次启动同一个word程序,就得到多
个winword.exe进程,处理不同的数据。
进程的概念
• 操作系统(管理任务)以外的都属于“用户”的任务。
• 计算机处理的所有 “用户”的任务由进程完成。
• 为强调进程完成的是用户的任务,通常将进程称为用户进程。
• 计算机系统中的任务通常就是指进程。例如,
– Linux内核中通常把进程称为任务,每个进程主要通过一个称为
进程描述符(process descriptor )的结构来描述,其结构类型
定义为task_struct ,包含了一个进程的所有信息。
– 所有进程通过一个双向循环链表实现的任务列表(task list )来
描述,任务列表中每个
文档评论(0)