网站大量收购独家精品文档,联系QQ:2885784924

杭电操作系统课程设计.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主要任务 线程的创建和撤消 FCFS调度 时间片轮转调度 同步机制的实现 消息缓冲队列 通信机制的实现 编程环境 16位的DOS模式:内存地址20位 Turbo C 2.0 DOS的内存管理 地址线为20根,即物理地址为20位; 内存空间不超过1M; 字长为16位; 分段存储管理方式: 每段长度不超过216B; 段表用寄存器的方式来实现: CS——代码段内存基址 DS——数据段内存基址 SS——堆栈段内存基址 DOS规定:段在内存的起始地址的低4位必须为0。 DOS的内存管理 二维的逻辑地址: seg:off 逻辑地址 seg×24+off 物理地址 DOS的内存管理 DOS系统,C语言中地址的两种表达方式: 指针 :如 char *p; 用两个无符号整数seg:off分别表示段内存基址的高16位,段内偏移: 如 0X100:0X20 Turbo C提供了宏函数,使两种方式之间可以互相转化: p=MK_FP(seg,off); seg=FP_SEG(p); off=FP_OFF(p). 线程的概念 线程是进程内一个相对独立的运行单位,一个进程可以有一个或多个线程(至少有一个),这些线程共享这个进程的代码、数据及大部分管理信息,但每个线程有自己的程序计数器、堆栈和线程控制块。 拥有资源的基本单位——进程; 执行的基本单位(即CPU调度和分派的单位)——线程。 堆栈的概念 堆栈其实是一段内存空间; 堆栈中最后压入数据的那个单元叫栈顶,该单元的地址就是栈顶指针; CPU执行很多指令时都会用到堆栈,比如: push 指令; pop指令; 函数调用指令 call; 函数返回指令ret和中断返回指令 iret; int指令 等等。 函数调用的参数及返回地址,程序的局部变量等信息通常都被保存在进程的堆栈中。 堆栈的概念 传统的进程由PCB、代码段、数据段和堆栈段四部分组成,但很多系统中把堆栈包含在数据段中。 引入线程后,每个线程都必须有自己的私有堆栈。 CPU切换时,要进行堆栈的切换,从而使新进程(或新线程)可以把信息保存在自己的堆栈中,而不是老进程(或线程)的堆栈中。 CPU正在使用的堆栈被称作现行堆栈,它的栈顶指针存放在CPU的栈顶指针寄存器中(如SS:ESP)。 堆栈的概念 线程控制块 #define NTCB 5 struct TCB{ unsigned char *stack; /* 线程堆栈的起始地址 */ unsigned ss; /* 堆栈段址 */ unsigned sp; /* 堆栈指针 */ char state; /* 线程状态:执行、就绪、阻塞 */ char name[10]; /* 线程的外部标识符 */ } tcb[NTCB]; /*NTCB是系统允许的最多任务数*/ 线程控制块 #define FINISHED 0 /* 表示线程处于终止态 或 TCB是空闲状态 */ #define RUNNING 1 /* 表示线程处于运行态 */ #define READY 2 /* 表示线程处于就绪态 */ #define BLOCKED 3 /* 表示线程处于阻塞态 */ CPU切换 CPU的指令计数器(X86中的CS,IP寄存器)中保存有下一条要执行的机器指令的地址; 每次CPU取指令后,指令计数器的值被加上所取指令的字节数,调整为下一条指令的地址; 修改指令计数器的方法: 跳转指令(如JMP,JNE等) 函数调用指令 中断。 CPU切换 跳转指令JMP的格式: JMP 操作数 CPU切换 函数调用指令CALL的格式: CALL 操作数 CPU切换 中断 -当CPU在执行指令1的期间收到8号中断信号,并在该指令执行完后响应中断时,硬件将完成下列动作: 将flags寄存器压栈; 将CS,IP寄存器压栈; 从中断向量表的第8个向量中获得8#中断处理程序的入口地址,将它们装入CS,IP中。 -Iret指令将从栈顶依次弹出ip,cs,flags。 X86实模式的寄存器 CPU切换时需要保存的现场信息

文档评论(0)

zyg_2930102 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档