scheduler.h

来自「LINUX 下NACHOS 系统的页面调度算法的实现」· C头文件 代码 · 共 58 行

H
58
字号
// scheduler.h //	Data structures for the thread dispatcher and scheduler.//	Primarily, the list of threads that are ready to run.//// Copyright (c) 1992-1993 The Regents of the University of California.// All rights reserved.  See copyright.h for copyright notice and limitation // of liability and disclaimer of warranty provisions.#ifndef SCHEDULER_H#define SCHEDULER_H#include "copyright.h"#include "list.h"#include "thread.h"#include "timer.h"enum SchedPolicy {   SCHED_FCFS,     // 5.3.1 First-come first-served scheduling (MP1)    SCHED_SJF,    // 5.3.2 Shortest job first scheduling     SCHED_PRIO_NP,// 5.3.3 Nonpreemptive Priority scheduling (MP1)    SCHED_PRIO_P, // 5.3.3 Preemptive     Priority scheduling (MP1)    SCHED_RR,     // 5.3.4 Round robin scheduling (MP1)    SCHED_MLQ,    // 5.3.5 Multilevel queue scheduling (MP1)    SCHED_MLFQ    // 5.3.6 Multilevel feedback queue scheduling};		     // The following class defines the scheduler/dispatcher abstraction -- // the data structures and operations needed to keep track of which // thread is running, and which threads are ready but not running.class Scheduler {  public:    Scheduler();		        // Initialize list of ready threads     ~Scheduler();			// De-allocate ready list    void ReadyToRun(Thread* thread);	// Thread can be dispatched.    Thread* FindNextToRun();		// Dequeue first thread on the ready 					// list, if any, and return thread.    bool ShouldISwitch(Thread* oldThread, Thread* newThread);    void Run(Thread* nextThread);	// Cause nextThread to start running    void Print();			// Print contents of ready list    void Suspend(Thread *thread);    void Resume(Thread *thread);    void SetSchedPolicy(SchedPolicy pol);     void SetNumOfQueues(int level);   // set the number of queues for MLQ    void InterruptHandler( int dummy );  private:    SchedPolicy policy;            // scheduling policy to be used    List<Thread *> *readyList; 	   // queue of threads that are ready to run,				   // but not running    List<Thread *> *suspendedList; // List of suspended threads.    Timer * ptimer;                // A timer, if needed.};#endif // SCHEDULER_H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?