线程调度与切换

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
General register
内核栈顶
用户栈顶
线程用户栈 Local variable Stack pointer Return address
:
两个线程的切换
线程1内核部分
线程2内核部分
Ip register
2
Ip register
Sp register
Sp register
1
Bp register
Thread 2 Some code Producing…… v_sema(&semaphore); // wakeup thread 1
Running Queue
Thread 2
Waiting Queue
Semaphore Counter = -1
Thread 1
P操作和V操作
Thread 1 Some code p_sema(&semaphore); // waiting thread 2 Cosuming product……
一个线程
线程内核部分 Ip register Sp register Bp register
General register
线程用户部分 Ip register Sp register Bp register
General register
一个线程的出入内核
内核栈顶
线程用户现场 Ip register Sp register Bp register
Thread 2
Thread 2 Some code Producing…… v_sema(&semaphore); // wakeup thread 1
线程的组织
线程状态
时间片耗尽
竞争上岗
Running Queue
Create_thread()
P 操作等
Waiting Queue
V 操作等
Pending Queue
同步和互斥-同步
• Thread 1 p_sema(&semaphore); // waiting thread 2 Cosuming product……
Thread 1
Thread 2 Some code Producing…… v_sema(&semaphore); // wakeup thread 1
Running Queue
Thread 2
Waiting Queue
Semaphore CounterBaidu Nhomakorabea= 0
P操作和V操作
Thread 1 Some code p_sema(&semaphore); // waiting thread 2 Cosuming product……
Thread 2 Some code Producing…… v_sema(&semaphore); // wakeup thread 1
Running Queue
Thread 2
Thread 1
Waiting Queue
Semaphore Counter = 0
P操作和V操作
Thread 1 Some code p_sema(&semaphore); // waiting thread 2 Cosuming product……
• Thread 2 Producing…… v_sema(&semaphore); // wakeup thread 1
同步和互斥-互斥
• Thread 1 take_mutex(&mutex); critical section…… release_mutex(&mutex);
• Thread 2 take_mutex(&mutex); critical section…… release_mutex(&mutex);
General register
用户栈顶
线程用户栈 Local variable Stack pointer Return address
:
线程内核部分 Ip register Sp register Bp register
General register
线程用户部分 Ip register Sp register Bp register
Semaphore 和 Mutex 区别
• Semaphore 可以跨进程 • Semaphore 主要用于同步 • Mutex 有 owner • Mutex 主要用于互斥
P操作和V操作
Thread 1 Some code p_sema(&semaphore); // waiting thread 2 Cosuming product……
General register
Bp register
General register
3
线程1用户部分 Ip register Sp register Bp register
General register
线程2用户部分
Ip register
Sp register
4
Bp register
General register
用户空间 Application code and data (app image)
Application heap Application stack DLL memory space Other segment
多个进程内存映像
内核空间 Kernel code and data
Kernel heap Kernel stack Application Thread Kernel Stack
APP1-用户空间 Application code and data
Application heap Application stack DLL memory space Other segment
APP2-用户空间 Application code and data
Application heap Application stack DLL memory space Other segment
线程调度与切换
一些基本概念
• 物理地址 • 虚拟地址 • 地址空间(用户, 内核) • 进程 • 线程 • 同步 • 互斥 • 现场-Context
一个进程内存映像
内核空间 Kernel code and data (kernel image)
Kernel heap Kernel stack Application Thread Kernel Stack
相关文档
最新文档