Linux CPU的排程 邱姸婕.

Slides:



Advertisements
Similar presentations
© 2001 孟静制作 版权所有 第二章 CPU 管理和进程、线程管理 2.1 CPU 管理概述 2.2 进程管理 2.3 进程模型实例分析 :UNIX 早期版本的 CPU 管理 子系统 ( 进程模型 ) 2.4 处理机管理实例分析 (2):linux CPU 管理(进程 模型) 2.5 线程模型.
Advertisements

第 3 章操作系统基础 3.1 操作系统概述 3.2 操作系统的功能模块 3.3 典型操作系统概述.
进 程. “ 程序 ” 和 “ 进程 ” 进程是 OS 对 CPU 执行的程序的运行过程的一种抽象。进程有自 己的生命周期,它由于任务的启动而创建,随着任务的完成(或 终止)而消亡,它所占用的资源也随着进程的终止而释放。 Linux 内核中通常把进程称为任务,每个进程主要通过一个称为进程描 述符(
Foundations of Computer Science
4.5 实时调度算法 实时调度是为了完成实时处理任务而分配计算机处理器的调度方法。实时处理任务要求计算机在用户允许的时限范围内给出计算机的响应信号。 实时处理任务可分为 硬实时任务(hard real-time task) 软实时任务(soft real-time task)。 其中,前者要求计算机系统必须在用户给定的时限内完成,后者允许计算机系统在用户给定的时限左右处理完毕。
集群作业管理系统简介 报告人:罗正平 导 师:肖炳甲研究员.
OSDI.
期中考檢討 助教:鄧執中 實驗室:720A.
中央广播电视大学开放教育试点课程 计算机操作系统.
前言 1.课程安排: 第一章 操作系统引论(7学时) 第二章 进程管理(14学时) 第三章 处理机调度与死锁(10学时)
第十六章 排程.
第五章 处理机管理 5.1 引言 5.2 调度算法 5.3 调度算法性能分析 5.4 实时调度 5.5 多处理机调度 5.6 调度算法举例
2012届(数计院) 企业人事管理系统 ——指导老师: 学生:.
第二章 进程、线程与作业 多道程序设计 Multi-programming 进程的引入 Process 线程与轻进程
操作系统结构.
第三章 处理机调度与死锁 3.1 处理机调度的基本概念 3.2 调度算法 3.3 实时调度 3.4 多处理机系统中的调度
第四章 存储体系.
第10章 多处理器和实时调度 主要内容: 多处理器调度 实时调度 操作系统调度例 分类与粒度 设计问题 进程调度 实时进程的要求与特点
性能测试培训 在组设置中可使用此模板作为演示培训材料的起始文件。 节
Operating System CPU Scheduing - 2 Monday, August 11, 2008.
Operating System CPU Scheduing - 3 Monday, August 11, 2008.
第6章 電腦軟體 應用軟體 多元程式處理 系統軟體 記憶體配置 作業系統簡介 虛擬記憶體 作業系統的演進與發展 行程管理
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
C H A P T E R 11 体系结构对操作系统的支持.
计算机应用基础 第二章 操作系统基础 2018/11/16.
Applied Operating System Concepts
第4章 作業系統的介紹及操作.
第8章作業系統.
第二章 行程管理 朱肇明 資管系 講師 大華技術學院.
作 業 系 統 第三組 楊育翰 顏瑞霖.
第三章 处理机调度与死锁 3.1 处理机调度的层次和调度算法的目标 3.2 作业与作业调度 3.3 进程调度 3.4 实时调度
作業系統 第八章 記憶體管理.
Operating System Concepts 作業系統原理 CHAPTER 2 系統結構 (System Structures)
Chapter 3 行程觀念 (Process Concept)
ICT RTOS Research Group 胡伟平,王剑
第一章 認識Java Java 程式設計入門(I).
Chapter 4 多執行緒 (Multi Thread)
1-1-1作業系統的功能 提供使用者操作介面 提供程式執行環境 控制輸入\輸出程序 分配系統資源 管理與維護磁碟中的檔案
线程(Thread).
作業系統 (Operating System)
邹佳恒 第十八届全国科学计算与信息化会议 • 威海,
第三章 用户接口与作业管理 用户与操作系统的接口 批处理操作系统的作业管理 作业的基本概念:作业、作业步、作业流 交互式系统作业管理
第2章 作業系統面面觀.
Operating System Principles 作業系統原理
李元金 计算机与信息工程学院 第 3 讲 进程管理(1) 李元金 计算机与信息工程学院 1/
第3章 認識處理元.
作業系統 第三章 作業系統結構.
Operation System(OS).
第四章 存储器管理 4.1 存储器的层次结构 4.2 程序的装入和链接 4.3 连续分配方式 4.4 基本分页存储管理方式
RTOS.
中国科学技术大学计算机系 陈香兰 2013Fall 第七讲 存储器管理 中国科学技术大学计算机系 陈香兰 2013Fall.
中国科学技术大学计算机系 陈香兰 Fall 2013 第三讲 线程 中国科学技术大学计算机系 陈香兰 Fall 2013.
计算机系统结构(2012年春) ----存储层次: Cache基本概念
进程概念.
Chap2 Stack & Queue.
第7章 進階的同步 觀念與實務.
Process Description And Control
1.3操作系统提供的服务和用户接口 操作系统提供的用户接口 程序接口与系统调用 操作接口与系统程序
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab7.
第一章 操作系统引论 1.1 操作系统的目标和作用 1.2 操作系统的发展过程 1.3 操作系统的基本特性 1.4 操作系统的主要功能
作業系統概論 授課老師: 羅習五.
MultiThread Introduction
作業系統實習課(二) -Scheduler-Related System Calls-
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Nachos Project Assignment 2
作業系統概論 授課老師: 羅習五.
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab11 1.
Chapter 4 Multi-Threads (多執行緒).
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
中正大學,資工系,作業系統實驗室 陽春副教授 羅習五
Presentation transcript:

Linux CPU的排程 邱姸婕

Outline Process Control Block (PCB) Process State Scheduling Policy Completely Fair Scheduler (CFS) Multi-thread Linux Kernel

Process Control Block (1/2) 每個Process在OS中都有一個對應的PCB PCB記載Process的相關資訊包含: Process ID : 唯一的(Unique) Process State : Ready, Running, Wait Programming Counter : 放Process下一個要執行的指令位置 CPU Registers : Process所需的暫存器 CPU Scheduling Info : Process的優先權 Memory Management Info : Base, limit registers Accounting Info : 使用了多少CPU的時間、時間限制 I/O State : 未完成的I/O請求、分配給Process的Devices編號

Process Control Block (2/2)

Outline Process Control Block (PCB) Process State Scheduling Policy Completely Fair Scheduler (CFS) Multi-thread Linux Kernel

Process State Process : 執行中的程式

Outline Process Control Block (PCB) Process State Scheduling Policy Completely Fair Scheduler (CFS) Multi-thread Linux Kernel

Scheduling Policy (1/2) 在Ready Queue中的process會互相爭奪CPU,所以利用Scheduling Policy 來決定下一個被CPU執行的Process 在Linux中的scheduling policy又可分為兩大類 Real-time Policy Normal Policy

Scheduling Policy (2/2) Real-time Policy Normal Policy Real-time Policy的Process會優先被排程 優先權範圍為1到99 Real-time Policy中分為兩種Policy SCHED_FIFO SCHED_RR Normal Policy 優先權範圍為100到139 Normal Policy中分為三種Policy SCHED_OTHER SCHED_BATCH SCHED_IDLE

Real-time Policy(1/2) SCHED_FIFO (First In First Out ) 擁有最高優先權的Process優先執行 持續執行此Process直到它自行釋出或遇到更高優先權的Process Process Priority Burst time P1 2 3 P2 1 15 P3

Real-time Policy(2/2) SCHED_RR (Round Robin) 擁有最高優先權的先執行  若有兩個優先權相同的Process,Kernel 會分配一個 time slice 去限制執行 時間 Process Priority Burst time P1 1 15 P2 10 Time slice = 5 ms

Normal Policy SCHED_OTHER SCHED_BATCH SCHED_IDLE 每個Process都有time slice 使用Completely Fair Scheduler (CFS)機制運行 SCHED_BATCH 比 SCHED_OTHER 的優先權低 適合Batch Process,非急迫且與User互動性低的process SCHED_IDLE 最低優先權 在System Idle時此process才會被執行

Scheduling Policy Short Job First (SJF) 最短作業優先排班法 優先選擇具有最小CPU Burst Time的Process 若遇到兩個Burst Time一樣的Process,則在使用FIFO Process Burst time P1 6 P2 8 P3 7 P4 3

Outline Process Control Block (PCB) Process State Scheduling Policy Completely Fair Scheduler (CFS) Multi-thread Linux Kernel

Completely Fair Scheduler (1/3) 由Ingo Molnar提出 在Linux 2.6.23 (2007.10) 之後,Linux Kernel採用了CFS機制 解決某些Process因為優先權較低而始終沒被CPU處理到的問題 導入了“Virtual Runtime”

Completely Fair Scheduler (2/2) Virtual Runtime (vruntime) 每個Process都有自己的vruntime與Nice值 假設一process的執行時間為 t ns,則每一輪排程時 vrntime越小表示此process距離上一次被執行時間間隔最久 選擇vrntime最小的process為下一個CPU執行的Process Nice 用來調整Process的執行優先順序 Nice範圍為 -20到19,越小優先權越高 Vruntime += t * nice

Completely Fair Scheduler (3/3) Round1: 例子 Process Nice t P1 -2 5 P2 -1 P3 10 P1: Vruntime = 5*(-2)=-10 P2: Vruntime = 5*(-1)=-5 P3: Vruntime = 10*(-2)=-20 Round2: Process Nice t P1 -2 5 P2 -1 P1: Vruntime = -10+5*(-2)=-20 P2: Vruntime = -5+5*(-1)=-10 Round3: Process Nice t P2 -1 5 P4 10 P2: Vruntime = -10+5*(-1)=-15 P4: Vruntime = 10*(-1)=-10

Outline Process Control Block (PCB) Process State Scheduling Policy Completely Fair Scheduler (CFS) Multi-thread Linux Kernel

Thread Thread 又稱Light Weight Process (LWP) CPU執行時的一個基本單位 由一個Thread ID、程式計數器、一組暫存器及一個Stack組成 一個Process可能包含多個Thread 同一個Process中的Thread彼此共享 Code section Data section OS Resources (Open Files, signals)

Multi-thread (1/4) Thread又可分為User Level的User Thread與Kernel的Kernel Thread User Thread 由 User Level 的 Thread Library 來產生、排班、管理Thread Kernel Thread 由 OS來產生、排班、管理Thread

Multi-thread (2/4) Many to One 多個User Thread對應到一個Kernel Thread 由Thread Library管理 如果有一個Thread呼叫系統暫停,則整個Process就會被暫停 一次只有一個Thread可以存取Kernel

Multi-thread (3/4) One to One 一個User Thread對應到一個Kernel Thread 如果有一個Thread呼叫系統暫停時,其它Thread可以繼續被執行 產生一個新的User Thread就連帶要產生一個新的Kernel Thread 成本高,因此限制Thread產生的個數

Multi-thread (4/4) Many to Many 多個User Thread對應到較少或相等的Kernel Thread 如果有一個Thread呼叫系統暫停時,其它Thread可以繼續被執行 成本比一對一對的模式低

Outline Process Control Block (PCB) Process State Scheduling Policy Completely Fair Scheduler (CFS) Multi-thread Linux Kernel

Linux Kernel kernel_init( ) init_post( ) start_kernel( ) rest_init( ) kthreadd

Linux Kernel - kthreadd 負責所有Kernel Thread的創建、調度及管理 去查看kthread_create_list中是否有kernel thread 需要創建, 若有則使用create_kthread()創建, 接著用wake_up_process()喚醒這個task讓他運行 使用kthread_stop()來刪除kernel thread Linux/kernel/kthred.c kthreadd( ) Check kthread_create_list create_kthread( ) wake_up_process( )

Linux Kernel - khelper 透過khelper來使Kernel Thread帶起User Mode的應用程式執行 首先去查看WorkQueue裡是否有user thread需要執行, 若有則透過call_usermodehelper_setup()設定這個user thread相關路徑及參數, 最後使用call_usermodehelper_exec()來達到執行user thread的目的 Linux/kernel/kmod.c __init usermodehelper_init() Check khelper_wq call_usermodehelper_setup( ) call_usermodehelper_exec( )

Linux Kernel - Code(1/2) call_usermodehelper_setup( ) 設定預被執行的user thread其相關路徑及參數 Linux/kernel/kmod.c

Linux Kernel - Code(2/2) call_usermodehelper_exec( ) 達到執行user thread的目的 Linux/kernel/kmod.c