⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpu.h

📁 这是一个在C环境下编写的操作系统课程设计 包含了内存管理 CPU管理 文件管理 设备管理
💻 H
字号:
// CPU.h: interface for the CCPU class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CPU_H__97889265_1962_4506_98CA_91ACED5CFA25__INCLUDED_)
#define AFX_CPU_H__97889265_1962_4506_98CA_91ACED5CFA25__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


enum event_source {null,timeout,waiting,processing};
enum event_type {a,b,c};

class PCB
{
public:
	CString pcb_name;// 进程名
	int pcb_no;//进程号
	CString *command;//进程文件
	int linesnum;//进程文件指令数
	int current;//当前指针
	int result;//计算结果
	enum event_source event;//事件 
	enum event_type eventtype;//阻塞事件请求的资源
	int event_time;//使用资源时间
	PCB *link;
};

class QUEUE
{
	PCB *first,*last;
	int count;
public:
    QUEUE() {first=NULL;last=NULL;count=0;}
	void add(PCB * a)
	{
		if(first==NULL)
		{
			first=a;
			last=a;
		}else
		{
			last->link=a;
			last=a;

		}
		count++;
	}
	void gethead(PCB **a) 
	{
		*a=first;
		//摘到的结点link域不一定为空
	}
	int getcount() {return count;}
	void takeoffhead()
	{
		if(first!=NULL)
			first=first->link;
		count--;
	}
		
};


class CCPU  
{
public:
	CCPU();
	virtual ~CCPU();
public:
    //时间片辅助控制
	int timepieces;
	//时间片长度
	int timelength;
	//当前处理进程进程块
	PCB * currPCB;
	//设备状态标志
	int useA;
	int useB;
	int useC;
	//进程个数
    int pcbnum;
	//运行过进程总个数
	int totalnum;
	//就绪队列
	QUEUE ready;
	//使用设备阻塞队列,
	QUEUE block_0;
	//得不到设备A,B,C阻塞队列
	QUEUE block_1,block_2,block_3;
public:
	//一个时钟周期操作
	void Process();
	//进程创建操作,并加入就绪队列
	void Creat(CString name,CString *command,int number);
	//撤消进程操作
	void Destroy(PCB *pcb);
	//阻塞队列操作
	void Block(PCB *pcb);
	//唤醒操作
	void Wake();
	//进程调度操作
	void scheduling(); 

	void InitCpu(PCB *pcb);
	int GetCpuStatus();

};

#endif // !defined(AFX_CPU_H__97889265_1962_4506_98CA_91ACED5CFA25__INCLUDED_)

⌨️ 快捷键说明

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