- 1、本文档共122页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UNIX内核结构
第十三章 UNIX进程子系统 第九章 UNIX内核结构 第一部分 UNIX进程子系统 9.1 UNIX概述 9.2 UNIX进程控制子系统 9.3 UNIX进程调度 9.4 UNIX进程通信 9.2.2 UNIX中的进程描述 UNIX采用段页式存储管理,段称为区。有程序区、数据区、栈区等。每个区又可分页。 UNIX把PCB分为四部分: proc结构(进程基本控制块) User结构(进程扩充控制块) 系统区表:各区的页表位置 本进程区表pprt(Per Process Region Table):指向系统区表 proc结构(进程基本控制块) 进程状态 进程用户标识 进程标识 进程存储大小 进程调度参数 软中断信号项 执行时间及资源使用 User结构起始址 进程区表指针 被挂起事件描述 user结构(进程扩充控制块) 指向proc的指针 系统调用参数 与用户标识有关项 与文件结构有关项 输入输出项 打开文件描述符 中断及软中断参数 错误信息 文件权限屏蔽项 交换数据项 9.2.4 进程映象 UNIX进程映象由三部分组成: 用户级上下文:包括用户正文段、用户数据段和用户栈 寄存器级上下文:程序寄存器(PC)、处理机状态寄存器(PSW)、栈指针、通用寄存器 系统级上下文: 静态部分(PCB和资源表格) 动态部分:核心栈(核心过程的栈结构,不同进程在调用相同核心过程时有不同核心栈) 9.3 UNIX进程调度 复习:多队列反馈调度算法 将就绪队列分为N级,每个就绪队列分配给不同的时间片,队列级别越高,时间片越长,级别越小,时间片越短; 系统从第一级调度,当第一级为空时,系统转向第二个队列,.....当运行进程用完一个时间片,放弃CPU时,进入下一级队列; 等待进程被唤醒时,进入原来的就绪队列; 当进程第一次就绪时,进入第一级队列 算法简要描述 1)给进程分配时间片 2)时间片结束时计算进程优先级 3) 用优先数做比较选出高优先级进程 4)调度高优先级进程开始运行 5)被抢夺了cpu的进程反馈到相应的优先级队列中 9.4 UNIX进程通信 UNIX进程通信有三种方式: 信号(signals)通信 管道(pipes)通信 IPC(Inter Process Communication)通信: 消息机制、共享内存机制、信号量(semaphore) 9.4.1 信号 概念: 信号是一个整数,范围从1-19,用于通知进程发生了某异常事件。 一个进程可以向另一个进程发送一个信号。 每个进程的PCB中都有一个信号域(19位),某进程向本进程发送一个信号时,信号域的对应位就会被置位。 19类信号好图13-10 进程从核态返回目态时要检测信号位,若某位被置位则中断正在执行的程序,转向与该信号对应的处理程序。完成后返回断点执行。 信号机制是对中断机制的模拟,故在早期又称软中断。 信号机制与中断机制的比较 相同点: 都采用异步通信方式 当检测到信号或中断时,暂停当前程序的执行,转去执行相应处理程序 处理完后回到断点 信号和中断都可进行屏蔽 不同点: 中断有优先级,信号没有 信号处理在目态,中断处理在管态 中断响应是及时的,信号响应通常都有较大的延迟。 信号的发送 发送进程把信号送到指定进程的信号域的某一位上。 进程可用kill向一个或一组进程发送一个信号。 int kill(pid,sig); 其中:pid为正数时,信号发送给进程pid pid 为0 时信号发送给与发送进程同组的所有进程。 sig为要发送的信号 预置对信号的处理方式 可用系统调用signal(sig,func)来预置对信号的处理方式。 func=1时,进程对sig信号不予理睬。 func=0时,进程在收到 sig信号后应终止自己 func 非0/1时,func是信号处理程序的指针 对信号的处理 进程从核态返回目态时,要检查是否已收到信号。而进程在核态时并不检查信号位。只有当它返回目态后才处理信号。 如果收到的信号是一个已决定忽略的信号(func==1),进程不做任何处理便立即返回。 若func==0,本进程要终止。对有些信号,进程在自我终止前,核心要将该进程的内存映像定入core文件,这可方便程序员调试程序。 func 非0/1时,执行用户设置的处理程序。 9.4.2 消息 消息是一个格式化的可变长的信息单元。 消息机制允许一个进程给其它任意进程发送一条消息。 消息机制的数据结构 1、 消息首部 消息分为首部及数据区。 消息首部中记录有消息的类型、大小、指向消息数据区的指针、消息队列的链指针。 2、 消息队列头表 其每一表项作为一个消息队列的头结点。 它包括如下内容: 指向消息队列的队首及队尾的指针 队列中消息的数目、 队列中消息数据的总字节数等。
文档评论(0)