深入浅出PINTOS.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入浅出PINTOS

深入浅出PINTOS ?? ? ? ?又名 ?? ? ? ? ? ? ? ? ? ?零基础学PINTOS ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?——哈哈重在恶搞。温帅哥出品。 忙活了一个周末,废寝忘食地啃特那保姆写的《现代操作作系统》,pintos的第一个实验才仅仅算是初见端倪。。。斯坦福阿斯坦福,你把这个pintos搞的这么难,坑爹阿!能独立完成这个实验的孩子你们伤不起阿! 言归正传,把我知道的一点点pintos实验project1的做法全都抖落出来,分享一下。已经会的大牛不要嫌我嘚瑟阿。。。 一、在pintos源码中找到最基本的概念: 本次实验至少需要阅读thread.h,tread.c,interrup.h,time.c这四个文件。 pintos在thread.h中定义了一个结构体struct thread,这个结构体就存方了有关进程的基本信息。 ? struct thread ? { ??? tid_t tid;????????????????????????? /* Thread identifier. */ ??? enum thread_status status;????????? /* Thread state. */ ??? char name[16];????????????????????? /* Name (for debugging purposes). */ ??? uint8_t *stack;???????????????????? /* Saved stack pointer. */ ??? int priority;?????????????????????? /* Priority. */ ??? struct list_elem allelem;?????????? /* List element for all threads list. */ ? ??? /* Shared between thread.c and synch.c. */ ??? struct list_elem elem;????????????? /* List element. */ ? #ifdef USERPROG ??? /* Owned by userprog/process.c. */ ??? uint32_t *pagedir;????????????????? /* Page directory. */ #endif ? ??? /* Owned by thread.c. */ ??? unsigned magic;???????????????????? /* Detects stack overflow. */ ? }; ? 大家不要被这么庞大的结构体所吓倒,其实他说的事情很简单,无非是这个线程的几个基本信息。值得注意的是enum thread_status这个枚举类型的变量,他的意思就是这个线程现在所处的状态。 ? enum thread_status ? { ??? THREAD_RUNNING,???? /* Running thread. */ ??? THREAD_READY,?????? /* Not running but ready to run. */ ??? THREAD_BLOCKED,???? /* Waiting for an event to trigger. */ ??? THREAD_DYING??????? /* About to be destroyed. */ ? }; ? 还有一个最最重要的概念是中断。所谓中断其实分两种,一种是IO设备向CPU发出的??断的信息,另一种是CPU决定切换到另一个进程时(轮换时间片)发出的指令。我们现在处理第二种。pintos的中断在interrupt.h和interrupt.c之中。其中这个枚举类型intr_lverl会在后面被反复提到: ? ?enum intr_level ? { ??? INTR_OFF,???????????? /* Interrupts disabled. */ ??? INTR_ON?????????????? /* Interrupts enabled. */ ? }; ? 其实这个intr_level表达的意思更简单,就是有两个单词,intr_off表示关中断,on表示开中断。大家都知道,执行原子级别操作的时候,中断必须是关着的。 ? 最后还要说以下,pintos是以ticks作为基本时间单位的,每秒有TIMER_FREQ个ticks: /* Number of timer interrupts per second. */ #de

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档