pintos_task 1 threads
pintos
Pintos Task 1: ThreadsPaul Marinescu, Mark RutlandImperial College London
February 3, 2011
Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P
February 3, 2011
1/ 18
pintos
Introduction
GoalMake Pintos more amenable for multithreading
Tasksi Non-busy sleep ii Priority scheduling iii Priority donation iv BSD-style scheduler
Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P
February 3, 2011
2/ 18
pintos
Getting Started
Where do I work?All work should be done under src/threads/& src/devices/ Compilation should occur under src/threads Any new les should be added to src/Make le.build
TestingTests can be run with: make check Single tests can be run with make build/tests/threads/test.result Some tests (mlfqs-*) take much longer to run than others
Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P
February 3, 2011
3/ 18
pintos
Important Files
Files to (possibly) modify:Most of your work will be done in the‘threads’ directory. i threads/thread.cHandles creation, modi cation, and destruction of threads Scheduling code goes here
ii threads/synch.cContains basic synchronisation constructs for multithreading
iii devices/timer.cHandles busy sleeping Calls thread tick() in threads/thread.c once every timer tick
Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P
February 3, 2011
4/ 18
pintos
Important FilesFiles with useful functionsi<debug.h>ASSERT() macro UNUSED quali er macro
ii<list.h>Generic linked-list implementation
iii<stdio.h>In-kernel implementation of printf()
iv"threads/interrupt.h"intr yield on return() makes the current thread yield after returning from an interrupt
v"threads/thread.c"thread tick() called every timer tick
Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P
February 3, 2011
5/ 18
pintos
Pintos InitialisationInitial threadInitial thread (threads/init.c: main()) is started by the boot loader Initial thread starts threads subsystem and‘promotes’ itself to a standard Pintos thread in thread init() Initialises other subsystems Parses command-line arguments Starts other threads, via thread create()
WarningThe initial thread is not created by thread create(). You may need to add initialisation code for any structures you add to thread init() also.
Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P
February 3, 2011
6/ 18
pintos
Threads in Pintos
How are threads implemented in Pintos?Threads de nes as struct thread in src/threads/thread.h Each thread is stored at the start of a 4KB page The rest of the page is used as stack space for the thread
SchedulingPreemptive Next thread chosen by next thread to run() Context switch is handled via assembly code, you should not modify it
Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P
February 3, 2011
7/ 18
pintos
Threads in Pintos
Thread statesThread
s exist in 1 of 4 possible states at any given time: THREAD RUNNING only the case for the current running thread (thread current()) THREAD READY ready to be scheduled, but not currently running (in ready list) THREAD BLOCKED unable to be run, waiting on some event (e.g. semaphore up) THREAD DYING nished with execution, waiting to be destroyed by the kernel
Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P
February 3, 2011
8/ 18
pintos
SynchronisationPintos synchronisation constructsPintos o ers several general-purpose synchronisation mechanisms (in threads/synch.c): Semaphores Locks Monitors
Interrupt handler synchronisationDisabling interrupts
WarningDo not disable interrupts unless you need exclusive access to data modi ed by an interrupt handler. Disabling interrupts is not a general-purpose synchronisation mechanism. You will lose marks for using it as such.Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P February 3, 2011 9/ 18
pintos
Project Requirements
Non-busy sleep Priority schedulingAllow processes to modify& query their priority
Priority donation for locks BSD-style schedulerFixed-point math routines
Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P
February 3, 2011
10/ 18
pintos
Non-busy sleepIdeaWhile a thread is sleeping, it must not consume any CPU.
timer sleep(int64 t ticks)Blocks the calling thread The thread must be unblocked after ticks ticks have occurred A call with a negative value for ticks should not block Allows other threads to run whilst calling thread is blocked Multiple threads may call timer sleep() simultaneously
WarningPart of your code will be in an interrupt handler. Think about shared data that must be protected from concurrent access.Paul Marinescu, Mark Rutland (Imperial College London) intos Task 1: Threads P February 3, 2011 11/ 18
pintos
Priority schedulingIdeaMake sure that at any point in time, the highest priority ready thread is running.
Yielding the processorAt certain points, another thread may have the highest priority. This could occur when: A new thread is created A thread is unblocked from a synchronisation construct A thread is woken from timer sleep If this happens the current thread should yield to it immediately
WarningSleeping threads should not be woken early, regardless of priority.Paul Marinescu, Mark Rutland (Imperial College London) intos Task …… 此处隐藏:5818字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用文档]李践-有效提升销售的12大黄金法则8-大
- [实用文档]党支部换届工作方案
- [实用文档]2013年下期电子商务专业部宣传工作计划
- [实用文档]方庄一矿通风、钻探绩效工资考核管理办
- [实用文档]项目一 认识企业物流认识企业物流
- [实用文档]MBI_Display_产品蓝图规画
- [实用文档]北京市建筑业劳务作业人员普法维权培训
- [实用文档]锅炉燃烧调整与运行优化
- [实用文档]4支付结算业务的核算
- [实用文档]米什金_货币金融学_第9版各章学习指导
- [实用文档]水泥混凝土路面硬化工程施工组织设计
- [实用文档]钢筋工程安全技术交底书
- [实用文档]关于公布华中师范大学本科毕业论文
- [实用文档]太原市园林绿化施工合同范本 2
- [实用文档]周日辅导 初中英语分类复习单项选择题(
- [实用文档]第四章 文化经纪人的管理形式 第二节
- [实用文档]学宪法讲宪法竞赛题库
- [实用文档]《数值计算方法》期末考试模拟试题二
- [实用文档]爱词霸学英语:每日一句( 十月)
- [实用文档]2014年国家公务员面试:无领导小组讨论
- 新课程主要理念和教学案例分析汇编(24
- 英国人的快乐源于幸福的家庭生活
- 七年级上册第一次月考模拟数学试卷
- 真丝及仿真丝的种类有哪些?
- 【最新】华师大版八年级数学下册第十六
- 高中英语3500个必背单词
- 我可以接受失败,但我不能接受放弃!
- 最近更新沪科版八年级物理上册期末试卷
- 绿化工作先进乡镇事迹材料
- 鲁教版九年级上册思想品德教学计划
- 英语音标的分类
- 地下室底板无梁楼盖与普通梁板结构形式
- 美容师黄金销售话术
- 雅思写作满分作文备考方法
- 血清甲状腺激素测定与高频彩色多普勒超
- 1度浅析装修对室内空气品质的影响
- 2017-2022年中国汞矿行业深度分析与投
- 计算机二级VB公共基础知识
- (何勇)秸秆禁烧_重在寻找出路
- 内外墙抹灰工程分包施工合同1




