📄 os-lib.txt
字号:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<bios.h>
#include<graphics.h>
typedef struct PCB_Info /*进程PCB*/
{
int id;
int static_prior;
int dynamic_prior;
int Source_state;
int need_time;
int used_time;
int state;
int M_size;
struct PCB_Info *next;
}PCB;
int M_room[40];
int Source=3, Rest_Source; /*资源数*/
int Length; /*进程个数*/
int key, Delay_time, Cpu_time, xx;
int Begin;
struct PCB_Info *Pro_head;
char number[11][24]={
{0x00,0x00,0x18,0x00,0x24,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x24,0x00,0x18,0x00},
{0x00,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x7c,0x00},
{0x00,0x00,0x3c,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x41,0x00,0x7e,0x00},
{0x00,0x00,0x3c,0x00,0x42,0x00,0x42,0x00,0x04,0x00,0x18,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x42,0x00,0x44,0x00,0x38,0x00},
{0x00,0x00,0x04,0x00,0x04,0x00,0x14,0x00,0x24,0x00,0x24,0x00,0x44,0x00,0x44,0x00,0x7e,0x00,0x04,0x00,0x04,0x00,0x1e,0x00},
{0x00,0x00,0x7e,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x58,0x00,0x64,0x00,0x02,0x00,0x02,0x00,0x42,0x00,0x44,0x00,0x38,0x00},
{0x00,0x00,0x1c,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x58,0x00,0x64,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x24,0x00,0x18,0x00},
{0x00,0x00,0x7e,0x00,0x4c,0x00,0x44,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00},
{0x00,0x00,0x3c,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x24,0x00,0x18,0x00,0x24,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x3c,0x00},
{0x00,0x00,0x18,0x00,0x24,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x26,0x00,0x1a,0x00,0x02,0x00,0x02,0x00,0x24,0x00,0x38,0x00},
{0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10}
}; /*数字+斜线*/
char baifen[]={
0x00,0x01,0x18,0x02,0x24,0x04,0x24,0x08,0x24,0x10,0x18,0x20,0x00,0x40,0x00,0x80,
0x01,0x00,0x02,0x18,0x04,0x24,0x08,0x24,0x10,0x24,0x20,0x18,0x40,0x00,0x80,0x00}; /*----%-----*/
char biaoti[]={
0x21, 0xf8, 0x21, 0x08, 0x21, 0xf8, 0xf8, 0x00, 0x23, 0xbc, 0x22, 0xa4, 0x2a, 0xa4, 0x33, 0xbc,
0x60, 0x40, 0xa7, 0xfe, 0x20, 0x60, 0x20, 0xd0, 0x21, 0x48, 0x22, 0x4e, 0xac, 0x44, 0x40, 0x40,
0x08, 0x80, 0x0c, 0x80, 0x09, 0x00, 0x13, 0xfe, 0x12, 0x80, 0x34, 0x88, 0x50, 0xfc, 0x90, 0x80,
0x10, 0x80, 0x10, 0x84, 0x10, 0xfe, 0x10, 0x80, 0x10, 0x80, 0x10, 0x80, 0x10, 0x80, 0x10, 0x80,
0x00, 0x7c, 0x3f, 0x80, 0x02, 0x20, 0x04, 0x20, 0x08, 0x40, 0x1f, 0x80, 0x03, 0x20, 0x0c, 0x10,
0x3f, 0xf8, 0x10, 0x8c, 0x04, 0xa0, 0x08, 0x90, 0x10, 0x88, 0x20, 0x84, 0x42, 0x84, 0x01, 0x00,
0x10, 0x40, 0x10, 0x20, 0x23, 0xfe, 0x20, 0x40, 0x44, 0x40, 0xf8, 0x88, 0x09, 0x04, 0x13, 0xfe,
0x20, 0x94, 0x7c, 0x90, 0x00, 0x90, 0x00, 0x90, 0x1d, 0x12, 0xe1, 0x12, 0x02, 0x0e, 0x04, 0x00,
0x40, 0x00, 0x21, 0xfc, 0x31, 0x24, 0x21, 0xfc, 0x01, 0x24, 0xe1, 0x24, 0x21, 0xfc, 0x20, 0x20,
0x27, 0xfe, 0x20, 0x60, 0x20, 0xb0, 0x29, 0x28, 0x32, 0x26, 0x24, 0x24, 0x00, 0x20, 0x00, 0x20,
0x0d, 0xf8, 0x71, 0x08, 0x11, 0x08, 0x11, 0x08, 0xfd, 0x08, 0x11, 0xf8, 0x30, 0x00, 0x3b, 0xfc,
0x54, 0x40, 0x50, 0x40, 0x93, 0xfc, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x17, 0xfe, 0x10, 0x00,
0x01, 0x00, 0x00, 0x80, 0x3f, 0xfe, 0x28, 0x04, 0x46, 0x88, 0x04, 0x80, 0x08, 0x80, 0x06, 0x80,
0x04, 0x80, 0x7f, 0xfe, 0x00, 0x80, 0x01, 0x40, 0x02, 0x20, 0x04, 0x10, 0x18, 0x18, 0x60, 0x10,
0x00, 0x00, 0xf8, 0x40, 0x08, 0x40, 0x48, 0xa0, 0x48, 0x90, 0x49, 0x0e, 0x4b, 0xf0, 0x7c, 0x00,
0x04, 0x84, 0x06, 0x44, 0x35, 0x48, 0xc5, 0x48, 0x04, 0x10, 0x17, 0xfe, 0x08, 0x00, 0x00, 0x00
} ; /*操作系统课程实验*/
char mingcheng[]={
0x10, 0x20, 0x18, 0x20, 0x10, 0x20, 0x20, 0x20, 0x3e, 0x20, 0x22, 0x30, 0x62, 0x28, 0x52, 0x26,
0x94, 0x24, 0x14, 0x20, 0x08, 0x20, 0x14, 0x20, 0x23, 0x20, 0x40, 0xc0, 0x80, 0x3e, 0x00, 0x00,
0x00, 0x00, 0x03, 0xfc, 0xfa, 0x44, 0x22, 0x44, 0x23, 0xfc, 0x22, 0x44, 0xfa, 0x44, 0x23, 0xfc,
0x22, 0x44, 0x20, 0x40, 0x23, 0xfc, 0x38, 0x40, 0xc0, 0x40, 0x00, 0x40, 0x0f, 0xfe, 0x00, 0x00,
0x10, 0x00, 0x10, 0xf8, 0x10, 0x88, 0xfe, 0x88, 0x10, 0x88, 0x10, 0x88, 0x38, 0x88, 0x34, 0x88,
0x54, 0x88, 0x50, 0x88, 0x91, 0x08, 0x11, 0x0a, 0x12, 0x0a, 0x12, 0x0a, 0x14, 0x06, 0x10, 0x00,
0x43, 0xfc, 0x22, 0x44, 0x32, 0x44, 0x23, 0xf4, 0x02, 0x44, 0xe3, 0xf4, 0x22, 0x04, 0x22, 0xf4,
0x22, 0x94, 0x22, 0x94, 0x2a, 0xf4, 0x32, 0x94, 0x24, 0x04, 0x04, 0x04, 0x08, 0x14, 0x10, 0x08,
0x01, 0x00, 0x00, 0x80, 0x3f, 0xfe, 0x22, 0x20, 0x22, 0x20, 0x2f, 0xfc, 0x22, 0x20, 0x23, 0xe0,
0x20, 0x00, 0x27, 0xf8, 0x22, 0x10, 0x21, 0x20, 0x20, 0xc0, 0x41, 0x30, 0x46, 0x0e, 0x98, 0x04,
0x40, 0x80, 0x20, 0x40, 0x27, 0xfe, 0x04, 0x04, 0x83, 0xf8, 0x50, 0x40, 0x13, 0xf8, 0x22, 0x48,
0x23, 0xf8, 0x22, 0x48, 0xc2, 0x48, 0x43, 0xf8, 0x40, 0x00, 0x41, 0x10, 0x41, 0x08, 0x42, 0x08,
0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x01, 0x00, 0x01, 0x00,
0x11, 0x20, 0x11, 0x10, 0x21, 0x08, 0x41, 0x0c, 0x81, 0x04, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00,
0x0d, 0xf8, 0x71, 0x08, 0x11, 0x08, 0x11, 0x08, 0xfd, 0x08, 0x11, 0xf8, 0x30, 0x00, 0x3b, 0xfc,
0x54, 0x40, 0x50, 0x40, 0x93, 0xfc, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x17, 0xfe, 0x10, 0x00,
0x01, 0x00, 0x00, 0x80, 0x3f, 0xfe, 0x20, 0x00, 0x27, 0xf8, 0x21, 0x10, 0x20, 0xa0, 0x20, 0x40,
0x2f, 0xfe, 0x20, 0x44, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x40, 0x40, 0x41, 0x40, 0x80, 0x80
}; /*处理机调度演示程序*/
char jincheng[]={
0x01, 0x10, 0x41, 0x10, 0x21, 0x10, 0x37, 0xfc, 0x21, 0x10, 0x01, 0x10, 0x01, 0x10, 0xf7, 0xfe,
0x11, 0x10, 0x11, 0x10, 0x12, 0x10, 0x12, 0x10, 0x14, 0x10, 0x28, 0x00, 0x47, 0xfe, 0x00, 0x00,
0x0d, 0xf8, 0x71, 0x08, 0x11, 0x08, 0x11, 0x08, 0xfd, 0x08, 0x11, 0xf8, 0x30, 0x00, 0x3b, 0xfc,
0x54, 0x40, 0x50, 0x40, 0x93, 0xfc, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x17, 0xfe, 0x10, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xf8, 0x10, 0x4c, 0x10, 0x46, 0x10, 0x42, 0x10, 0x42,
0x10, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x46, 0x10, 0x4c, 0x7c, 0xf8, 0x00, 0x00, 0x00, 0x00
}; /*进程ID*/
char dongtai[]={
0x00, 0x20, 0x00, 0x20, 0x7e, 0x20, 0x00, 0x20, 0x00, 0xfc, 0xff, 0x24, 0x10, 0x24, 0x10, 0x24,
0x24, 0x24, 0x22, 0x24, 0x4f, 0x44, 0xfa, 0x44, 0x40, 0x84, 0x01, 0x14, 0x02, 0x08, 0x00, 0x00,
0x01, 0x00, 0x01, 0x00, 0x7f, 0xfc, 0x01, 0x00, 0x02, 0x80, 0x02, 0x40, 0x05, 0x20, 0x08, 0x98,
0x30, 0x06, 0x01, 0x00, 0x04, 0x88, 0x24, 0x84, 0x24, 0x12, 0x64, 0x12, 0x43, 0xf0, 0x00, 0x00,
0x10, 0x80, 0x18, 0xa0, 0x10, 0x98, 0x20, 0x90, 0x37, 0xfc, 0x61, 0x40, 0xa1, 0x40, 0x21, 0x40,
0x21, 0x40, 0x21, 0x40, 0x21, 0x40, 0x22, 0x44, 0x22, 0x44, 0x24, 0x46, 0x28, 0x3c, 0x20, 0x00,
0x01, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1f, 0xf8, 0x11, 0x00, 0x21, 0x00, 0x21, 0x00, 0x7f, 0xfc,
0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x08, 0x42, 0x10, 0x42, 0x20, 0x3e, 0x40, 0x00,
0x10, 0x00, 0x13, 0xf8, 0x20, 0x88, 0x24, 0x88, 0x44, 0x90, 0xf8, 0x90, 0x10, 0xbe, 0x21, 0x44,
0x7d, 0x44, 0x41, 0x48, 0x02, 0x28, 0x1a, 0x10, 0xe4, 0x30, 0x08, 0x48, 0x11, 0x8e, 0x06, 0x04
}; /*动态优先级*/
char jingtai[]={
0x10, 0x40, 0xfe, 0x40, 0x10, 0x78, 0x7c, 0x90, 0x10, 0x20, 0xfe, 0xfc, 0x00, 0x24, 0x7d, 0xfe,
0x44, 0x24, 0x7c, 0xfc, 0x44, 0x20, 0x7c, 0x20, 0x44, 0x20, 0x44, 0x20, 0x54, 0xa0, 0x48, 0x40,
0x01, 0x00, 0x01, 0x00, 0x7f, 0xfc, 0x01, 0x00, 0x02, 0x80, 0x02, 0x40, 0x05, 0x20, 0x08, 0x98,
0x30, 0x06, 0x01, 0x00, 0x04, 0x88, 0x24, 0x84, 0x24, 0x12, 0x64, 0x12, 0x43, 0xf0, 0x00, 0x00,
0x10, 0x80, 0x18, 0xa0, 0x10, 0x98, 0x20, 0x90, 0x37, 0xfc, 0x61, 0x40, 0xa1, 0x40, 0x21, 0x40,
0x21, 0x40, 0x21, 0x40, 0x21, 0x40, 0x22, 0x44, 0x22, 0x44, 0x24, 0x46, 0x28, 0x3c, 0x20, 0x00,
0x01, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1f, 0xf8, 0x11, 0x00, 0x21, 0x00, 0x21, 0x00, 0x7f, 0xfc,
0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x08, 0x42, 0x10, 0x42, 0x20, 0x3e, 0x40, 0x00,
0x10, 0x00, 0x13, 0xf8, 0x20, 0x88, 0x24, 0x88, 0x44, 0x90, 0xf8, 0x90, 0x10, 0xbe, 0x21, 0x44,
0x7d, 0x44, 0x41, 0x48, 0x02, 0x28, 0x1a, 0x10, 0xe4, 0x30, 0x08, 0x48, 0x11, 0x8e, 0x06, 0x04
}; /*静态优先级*/
char jindu[]={
0x40, 0x00, 0x23, 0xfc, 0x30, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0xfe, 0xe0, 0x80, 0x21, 0x20,
0x21, 0x10, 0x22, 0x08, 0x24, 0x7c, 0x2f, 0xcc, 0x20, 0x08, 0x58, 0x00, 0x87, 0xfe, 0x00, 0x00,
0x08, 0x00, 0x1c, 0x00, 0x31, 0xfc, 0x40, 0x00, 0x88, 0x00, 0x0c, 0x00, 0x1b, 0xfe, 0x30, 0x20,
0x50, 0x20, 0x90, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, 0xa0, 0x10, 0x40,
0x01, 0x10, 0x41, 0x10, 0x21, 0x10, 0x37, 0xfc, 0x21, 0x10, 0x01, 0x10, 0x01, 0x10, 0xf7, 0xfe,
0x11, 0x10, 0x11, 0x10, 0x12, 0x10, 0x12, 0x10, 0x14, 0x10, 0x28, 0x00, 0x47, 0xfe, 0x00, 0x00,
0x01, 0x00, 0x00, 0x80, 0x3f, 0xfe, 0x22, 0x20, 0x22, 0x20, 0x2f, 0xfc, 0x22, 0x20, 0x23, 0xe0,
0x20, 0x00, 0x27, 0xf8, 0x22, 0x10, 0x21, 0x20, 0x20, 0xc0, 0x41, 0x30, 0x46, 0x0e, 0x98, 0x04
}; /*运行进度*/
char neicun[]={
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3f, 0xfc, 0x21, 0x04, 0x21, 0x04, 0x21, 0x84, 0x22, 0x44,
0x22, 0x24, 0x24, 0x14, 0x28, 0x14, 0x30, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x14, 0x20, 0x08,
0x03, 0x00, 0x02, 0x00, 0x7f, 0xfc, 0x04, 0x00, 0x04, 0x00, 0x0b, 0xf8, 0x18, 0x10, 0x10, 0x20,
0x30, 0x20, 0x57, 0xfe, 0x90, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, 0xa0, 0x10, 0x40,
0x10, 0xa0, 0x10, 0x90, 0x10, 0x98, 0x90, 0x88, 0x50, 0x80, 0x5f, 0xfe, 0x10, 0xa0, 0x10, 0xa0,
0x31, 0x20, 0x51, 0x20, 0x91, 0x10, 0x12, 0x10, 0x12, 0x08, 0x14, 0x0e, 0x18, 0x04, 0x10, 0x00,
0x01, 0x00, 0x01, 0x00, 0x7f, 0xfc, 0x01, 0x00, 0x02, 0x80, 0x02, 0x40, 0x05, 0x20, 0x08, 0x98,
0x30, 0x06, 0x01, 0x00, 0x04, 0x88, 0x24, 0x84, 0x24, 0x12, 0x64, 0x12, 0x43, 0xf0, 0x00, 0x00
}; /*内存状态*/
char zhuangtai[4][64]={
{
0x40, 0x00, 0x23, 0xfc, 0x30, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0xfe, 0xe0, 0x80, 0x21, 0x20,
0x21, 0x10, 0x22, 0x08, 0x24, 0x7c, 0x2f, 0xcc, 0x20, 0x08, 0x58, 0x00, 0x87, 0xfe, 0x00, 0x00,
0x08, 0x00, 0x1c, 0x00, 0x31, 0xfc, 0x40, 0x00, 0x88, 0x00, 0x0c, 0x00, 0x1b, 0xfe, 0x30, 0x20,
0x50, 0x20, 0x90, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, 0xa0, 0x10, 0x40}, /*运行*/
{
0x10, 0x20, 0x08, 0x28, 0xff, 0x24, 0x00, 0x24, 0x00, 0x20, 0x7f, 0xfe, 0x42, 0x50, 0x42, 0x50,
0x7e, 0x50, 0x08, 0x50, 0x2c, 0x50, 0x2a, 0x90, 0x4a, 0x92, 0x89, 0x12, 0x2a, 0x0e, 0x10, 0x00,
0x10, 0x40, 0x10, 0x40, 0x21, 0xf4, 0x20, 0x44, 0x48, 0x48, 0xfb, 0xfe, 0x10, 0x20, 0x20, 0x40,
0x41, 0xf8, 0xfb, 0x08, 0x05, 0x08, 0x01, 0xf8, 0x39, 0x08, 0xc1, 0x08, 0x01, 0xf8, 0x01, 0x08}, /*就绪*/
{
0x7c, 0x00, 0x4b, 0xf8, 0x4a, 0x08, 0x52, 0x08, 0x62, 0x08, 0x53, 0xf8, 0x4a, 0x08, 0x4a, 0x08,
0x4a, 0x08, 0x6b, 0xf8, 0x52, 0x08, 0x42, 0x08, 0x42, 0x08, 0x42, 0x08, 0x4f, 0xfe, 0x40, 0x00,
0x02, 0x00, 0x01, 0x00, 0x7f, 0xfe, 0x44, 0x42, 0x1f, 0xf8, 0x04, 0x40, 0x1f, 0xf8, 0x04, 0x40,
0x7f, 0xfe, 0x04, 0x20, 0x09, 0x18, 0x3f, 0xfe, 0xc1, 0x04, 0x01, 0x00, 0x7f, 0xfc, 0x00, 0x00}, /*阻塞*/
{
0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x13, 0xfc, 0xfc, 0x40, 0x10, 0x40, 0x17, 0xfe, 0x18, 0x40,
0x30, 0x40, 0xd0, 0x40, 0x13, 0xfc, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x57, 0xfe, 0x20, 0x00,
0x08, 0x00, 0x08, 0x00, 0x08, 0xf8, 0x7e, 0x08, 0x08, 0x08, 0x08, 0x08, 0xfe, 0xf8, 0x08, 0x80,
0x48, 0x80, 0x4e, 0x84, 0x48, 0x84, 0x48, 0x7c, 0x48, 0x00, 0xa8, 0x00, 0x9f, 0xfe, 0x00, 0x00} /*挂起*/
};
char caozuo1[2][64]={
{
0x08, 0x00, 0x7e, 0xfc, 0x10, 0x80, 0x28, 0x80, 0x7e, 0xfe, 0x08, 0x88, 0x0e, 0x88, 0xf9, 0x08, /*暂停*/
0x0a, 0x08, 0x1f, 0xf0, 0x10, 0x10, 0x1f, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x1f, 0xf0, 0x00, 0x00,
0x08, 0x40, 0x0c, 0x20, 0x0b, 0xfe, 0x10, 0x00, 0x11, 0xf8, 0x31, 0x08, 0x51, 0xf8, 0x90, 0x00,
0x17, 0xfe, 0x14, 0x02, 0x11, 0xfc, 0x10, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, 0xa0, 0x10, 0x40},
{
0x20, 0x20, 0x32, 0x20, 0x22, 0x24, 0x43, 0x24, 0x4a, 0xa8, 0xfa, 0x20, 0x13, 0xfe, 0x22, 0x70, /*继续*/
0x42, 0x68, 0xfa, 0xa4, 0x02, 0xa4, 0x03, 0x20, 0x1a, 0x20, 0xe2, 0x00, 0x03, 0xfe, 0x00, 0x00,
0x10, 0x40, 0x18, 0x40, 0x11, 0xfc, 0x20, 0x40, 0x4b, 0xfe, 0xf1, 0x24, 0x10, 0xa8, 0x22, 0xa0,
0x41, 0x20, 0xf7, 0xfe, 0x00, 0x20, 0x00, 0x50, 0x18, 0x48, 0xe0, 0x84, 0x01, 0x04, 0x00, 0x00}
};
char caozuo2[]={
0x10, 0x00, 0x08, 0x0e, 0x7f, 0x70, 0x22, 0x40, 0x14, 0x40, 0xff, 0x7e, 0x08, 0x48, 0x08, 0x48,
0xff, 0x48, 0x08, 0x48, 0x2c, 0x48, 0x2a, 0x88, 0x4a, 0x88, 0x89, 0x08, 0x2a, 0x08, 0x10, 0x08,
0x00, 0x40, 0x78, 0x40, 0x0b, 0xf8, 0x10, 0x48, 0x17, 0xfe, 0x20, 0x48, 0x7b, 0xf8, 0x08, 0x40, /*新建进程*/
0x4b, 0xfc, 0x48, 0x40, 0x28, 0x40, 0x17, 0xfc, 0x28, 0x40, 0x46, 0x40, 0x81, 0xfe, 0x00, 0x00,
0x01, 0x10, 0x41, 0x10, 0x21, 0x10, 0x37, 0xfc, 0x21, 0x10, 0x01, 0x10, 0x01, 0x10, 0xf7, 0xfe,
0x11, 0x10, 0x11, 0x10, 0x12, 0x10, 0x12, 0x10, 0x14, 0x10, 0x28, 0x00, 0x47, 0xfe, 0x00, 0x00,
0x0d, 0xf8, 0x71, 0x08, 0x11, 0x08, 0x11, 0x08, 0xfd, 0x08, 0x11, 0xf8, 0x30, 0x00, 0x3b, 0xfc,
0x54, 0x40, 0x50, 0x40, 0x93, 0xfc, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x17, 0xfe, 0x10, 0x00};
char caozuo3[]={
0x00, 0x00, 0xff, 0x80, 0x22, 0x7e, 0x22, 0x44, 0x3e, 0x44, 0x22, 0x44, 0x22, 0x44, 0x3e, 0x28, /*取消进程*/
0x22, 0x28, 0x22, 0x90, 0x27, 0x10, 0x3a, 0x28, 0xc2, 0x46, 0x02, 0x84, 0x02, 0x00, 0x02, 0x00,
0x20, 0x40, 0x10, 0x40, 0x12, 0x44, 0x81, 0x48, 0x49, 0x50, 0x4b, 0xfc, 0x12, 0x04, 0x12, 0x04,
0x23, 0xfc, 0x22, 0x04, 0xe2, 0x04, 0x23, 0xfc, 0x22, 0x04, 0x22, 0x04, 0x22, 0x14, 0x22, 0x08,
0x01, 0x10, 0x41, 0x10, 0x21, 0x10, 0x37, 0xfc, 0x21, 0x10, 0x01, 0x10, 0x01, 0x10, 0xf7, 0xfe,
0x11, 0x10, 0x11, 0x10, 0x12, 0x10, 0x12, 0x10, 0x14, 0x10, 0x28, 0x00, 0x47, 0xfe, 0x00, 0x00,
0x0d, 0xf8, 0x71, 0x08, 0x11, 0x08, 0x11, 0x08, 0xfd, 0x08, 0x11, 0xf8, 0x30, 0x00, 0x3b, 0xfc,
0x54, 0x40, 0x50, 0x40, 0x93, 0xfc, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x17, 0xfe, 0x10, 0x00};
char caozuo4[]={
0x04, 0x00, 0x3f, 0xbe, 0x04, 0x24, 0x3f, 0xa8, 0x04, 0x28, 0x7f, 0xa4, 0x04, 0x32, 0x08, 0xac, /*帮助*/
0x10, 0xa0, 0x2f, 0xf8, 0x48, 0x88, 0x08, 0x88, 0x08, 0xa8, 0x08, 0x90, 0x00, 0x80, 0x00, 0x80,
0x00, 0x20, 0x3e, 0x20, 0x22, 0x20, 0x22, 0x20, 0x22, 0xfc, 0x3e, 0x24, 0x22, 0x24, 0x22, 0x24,
0x3e, 0x24, 0x22, 0x24, 0x22, 0x44, 0x27, 0x44, 0xf8, 0x84, 0x01, 0x14, 0x02, 0x08, 0x00, 0x00};
char caozuo5[]={
0x40, 0x00, 0x27, 0xf0, 0x24, 0x10, 0x07, 0xf0, 0x04, 0x10, 0x04, 0x10, 0xe7, 0xf0, 0x24, 0x88, /*退出*/
0x24, 0x50, 0x24, 0x20, 0x25, 0x10, 0x26, 0x18, 0x24, 0x08, 0x50, 0x00, 0x8f, 0xfe, 0x00, 0x00,
0x01, 0x00, 0x01, 0x00, 0x21, 0x04, 0x21, 0x04, 0x21, 0x04, 0x21, 0x04, 0x3f, 0xfc, 0x21, 0x04,
0x01, 0x00, 0x21, 0x04, 0x21, 0x04, 0x21, 0x04, 0x21, 0x04, 0x3f, 0xfc, 0x20, 0x04, 0x00, 0x00};
char fuhao[]={
0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0xff,0xff,
0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80};
char Creat_gr1[]={
0x00, 0x40, 0x47, 0xfc, 0x30, 0x40, 0x23, 0xf8, 0x00, 0x40, 0x07, 0xfe, 0xf0, 0x00, 0x13, 0xf8,
0x12, 0x08, 0x13, 0xf8, 0x12, 0x08, 0x13, 0xf8, 0x16, 0x08, 0x1a, 0x08, 0x12, 0x28, 0x02, 0x10,
0x20, 0x40, 0x20, 0x40, 0xfc, 0xa0, 0x21, 0x18, 0x43, 0xf6, 0x54, 0x00, 0xfc, 0x04, 0x53, 0xd4,
0x12, 0x54, 0x1f, 0xd4, 0xf2, 0x54, 0x13, 0xd4, 0x12, 0x54, 0x12, 0x54, 0x13, 0x44, 0x12, 0x8c,
0x0c, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x80, 0x02, 0x80, 0x04, 0x40,
0x04, 0x20, 0x08, 0x20, 0x08, 0x10, 0x10, 0x08, 0x20, 0x0e, 0x40, 0x04, 0x80, 0x00, 0x00, 0x00,
0x01, 0x10, 0x41, 0x10, 0x21, 0x10, 0x37, 0xfc, 0x21, 0x10, 0x01, 0x10, 0x01, 0x10, 0xf7, 0xfe,
0x11, 0x10, 0x11, 0x10, 0x12, 0x10, 0x12, 0x10, 0x14, 0x10, 0x28, 0x00, 0x47, 0xfe, 0x00, 0x00,
0x0d, 0xf8, 0x71, 0x08, 0x11, 0x08, 0x11, 0x08, 0xfd, 0x08, 0x11, 0xf8, 0x30, 0x00, 0x3b, 0xfc,
0x54, 0x40, 0x50, 0x40, 0x93, 0xfc, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x17, 0xfe, 0x10, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xf8, 0x10, 0x4c, 0x10, 0x46, 0x10, 0x42, 0x10, 0x42,
0x10, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x46, 0x10, 0x4c, 0x7c, 0xf8, 0x00, 0x00, 0x00, 0x00
}; /*请输入进程ID*/
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
initgraph(&gd, &gm, "");
}
void drawmat(char *mat,int matsize,int x,int y,int color)
/*依次:字模指针、点阵大小、起始坐标(x,y)、颜色*/
{
int i, j, k, n;
n = (matsize - 1) / 8 + 1;
for(j = 0; j < matsize; j++)
for(i = 0; i < n; i++)
for(k = 0;k < 8; k++)
if(mat[j * n + i] & (0x80 >> k)) /*测试为1的位则显示*/
putpixel(x + i * 8 + k, y + j, color);
}
void menu(void)
{
int i;
setfillstyle(1, 7);
bar(2,430,630,470);
setcolor(15); /*画菜单*/
line(2,428,636,428);
line(3,429,635,429);
line(2,428,2,481);
line(3,429,3,482);
setcolor(8);
line(3,481,635,481);
line(2,482,636,482);
line(635,481,635,431);
line(636,480,636,430);
setfillstyle(1, 2); /*四种状态*/
bar(12,448,22,462);
setfillstyle(1, 14);
bar(62,448,72,462);
setfillstyle(1, 4);
bar(112,448,122,462);
setfillstyle(1, 8);
bar(162,448,172,462);
for(i=0;i<4;i++)
{
drawmat(zhuangtai[i],16,27+50*i,448,4);
drawmat(zhuangtai[i]+32,16,43+50*i,448,4); /*操作菜单*/
}
if(!xx)
{
drawmat(caozuo1[1],16,267,448,4);
drawmat(caozuo1[1]+32,16,283,448,4);
}
else
{
drawmat(caozuo1[0],16,267,448,4);
drawmat(caozuo1[0]+32,16,283,448,4);
}
drawmat(caozuo2,16,333,448,4);
drawmat(caozuo2+32,16,349,448,4);
drawmat(caozuo2+64,16,365,448,4);
drawmat(caozuo2+96,16,381,448,4);
drawmat(caozuo3,16,431,448,4);
drawmat(caozuo3+32,16,447,448,4);
drawmat(caozuo3+64,16,463,448,4);
drawmat(caozuo3+96,16,479,448,4);
drawmat(caozuo4,16,529,448,4);
drawmat(caozuo4+32,16,545,448,4);
drawmat(caozuo5,16,595,448,4);
drawmat(caozuo5+32,16,611,448,4);
if(key==1)
drawmat(fuhao,16,245,448,4);
if(key==2)
drawmat(fuhao,16,311,448,4);
if(key==3)
drawmat(fuhao,16,409,448,4);
if(key==4)
drawmat(fuhao,16,507,448,4);
if(key==5)
drawmat(fuhao,16,573,448,4);
}
void board(void)
{
int i, str[5];
setcolor(15); /*面板*/
line(0,0,638,0);
line(0,1,637,1);
line(0,0,0,638);
line(1,0,1,637);
setcolor(8);
line(1,479,638,479);
line(2,478,638,478);
line(638,1,637,479);
line(638,2,638,479);
setfillstyle(1, 7);
bar(2,2,636,477);
setcolor(1);
setfillstyle(1, 1);
bar(4,4,634,12);
setcolor(15);
outtextxy(5,5,"CSU_XINXI0502_XieJun");
str[0]=Cpu_time/1000;
str[1]=Cpu_time%1000/100;
str[2]=Cpu_time%100/10;
str[3]=Cpu_time%10;
setcolor(9);
outtextxy(10,82,"Cpu_time");
for(i=0;i<4;i++)
drawmat(number[str[i]],12,90+i*8,78,9);
for(i=0;i<32*8;i+=32)
drawmat(biaoti+i,16,240+i/2,30,4); /*操作系统实验*/
for(i=0;i<32*9;i+=32)
drawmat(mingcheng+i,16,230+i/2,60,4); /*处理机调度*/
for(i=0;i<32*3;i+=32)
drawmat(jincheng+i,16,5+i/2,100,4); /*进程ID*/
for(i=0;i<32*5;i+=32)
drawmat(jingtai+i,16,60+i/2,100,4); /*静态优先及*/
for(i=0;i<32*5;i+=32)
drawmat(dongtai+i,16,150+i/2,100,4); /*动态优先级*/
for(i=0;i<32*4;i+=32)
drawmat(jindu+i,16,300+i/2,100,4); /*运行进度*/
for(i=0;i<32*4;i+=32)
drawmat(neicun+i,16,510+i/2,100,4); /*内存状态*/
menu();
}
void Draw_Process()
{
PCB *p;
int i, j, m;
float n;
int str[3];
p=Pro_head;
for(i=0;p!=NULL;i++,p=p->next)
{
drawmat(number[p->id],12,20,130+30*i,4); /*进程ID*/
drawmat(number[p->static_prior],12,88,130+30*i,4); /*静态优先级*/
str[0]=p->dynamic_prior/100; /*动态优先级*/
str[1]=(p->dynamic_prior%100)/10;
str[2]=p->dynamic_prior%10;
drawmat(number[str[0]],12,170,130+30*i,4);
drawmat(number[str[1]],12,178,130+30*i,4);
drawmat(number[str[2]],12,186,130+30*i,4);
drawmat(baifen,16,468,130+30*i,4); /*------%-------*/
n=p->used_time;
n=(n/p->need_time)*100;
j=n;
str[0]=j/100; /*比例*/
str[1]=(j%100)/10;
str[2]=j%10;
drawmat(number[str[0]],12,440,130+30*i,4);
drawmat(number[str[1]],12,448,130+30*i,4);
drawmat(number[str[2]],12,456,130+30*i,4);
for(m=0;m<=j;m++) /*画进度条*/
{
if(p->state==0)
setfillstyle(1,2);
if(p->state==1)
setfillstyle(1,14);
if(p->state==2)
setfillstyle(1,4);
if(p->state==3)
setfillstyle(1,8);
bar(230+m*2,130+30*i,230+m*2+1,140+30*i);
}
setcolor(8); /*画进度条框*/
line(230,128+30*i,430,128+30*i);
line(231,129+30*i,431,129+30*i);
line(230,128+30*i,230,141+30*i);
line(231,129+30*i,231,142+30*i);
setcolor(15);
line(231,141+30*i,430,141+30*i);
line(230,142+30*i,431,142+30*i);
line(430,141+30*i,430,131+30*i);
line(431,140+30*i,431,130+30*i);
}
/*画内存状态框*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -