操作系统的实验,用到c语言/数据结构的链表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统的实验,用到c语言/数据结构的链表相关的知识,希望对你有一定的参考价值。
老师已经盯上我了。。然而我一定都不会做 请求大神求助!
要求用 c语言的结构体 数据结构的链表
实验内容:
进程调度模拟程序:假设有10个进程需要在CPU上执行,用:
² 最短执行时间调度算法
确定这10个进程在CPU上的执行过程。要求每次进程调度时在屏幕上显示:
Ø 当前执行进程;
Ø 就绪队列;
Ø 等待队列
实验要求:
1) 创建10个进程的PCB,每个PCB包括:进程名、进程状态、优先级(1~10)、需要在处理机上执行的时间(ms)、队列指针等;
2) 初始化10个PCB(产生随机数0或1,分别表示进程处于就绪态或等待态);
3) 根据调度算法选择一个就绪进程在CPU上执行;
4) 在进程执行过程中,产生随机数0或1,该随机数为1时,将等待队列中的第一个PCB加入就绪队列的对尾;
5) 在进程执行过程中,产生一个随机数,表示执行进程能在处理机上执行的时间,如果随机时间大于总需要的时间,则执行完成。如果小于,则从总时间中减去执行时间。
6) 如果执行进程没有执行完成。则产生随机数0或1,当该随机数为0时,将执行进程加入就绪队列对尾;否则,将执行进程加入等待队列对尾;
7) 一直到就绪队列为空,程序执行结束。
只要能按要求做出来 绝对会追加悬赏!
谢谢!!!感激不尽!!!
追答字数超过最大值,请继续追问,我好接着贴代码:
#include <stdio.h>#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <assert.h>
/// 单位:毫秒
#define MAX_TASK_TIME (100)
#define MAX_TIME_SLICE (20)
enum ProcessState
PROCESS_STAT_READY = 0, ///< 就绪态
PROCESS_STAT_WAITING = 1, ///< 等待态
PROCESS_STAT_RUNNING,
;
struct ProcessCB
char name[64]; ///< 进程名称
ProcessState state; ///< 进程状态
unsigned char priority; ///< 进程优先级
int taskTime; ///< 任务执行所需的毫秒数
struct ProcessCB *last;
struct ProcessCB *next;
*gReadyQue = 0,
*gWaitingQue = 0;
ProcessCB *queTail(ProcessCB **pcbQue)
ProcessCB *tail = 0;
if (!pcbQue || !*pcbQue)
return 0;
tail = *pcbQue;
while (tail->next)
tail = tail->next;
return tail;
追问
好的 昨天我没收到提醒!谢谢!
我一次追问好几个可以么。
😂
好像不能发送了。。
又可以了。。。
要不您看您能不能私信我复制过来 ?
追答继续追问一下,我接着发,这个字数限制挺麻烦的:
void pushBack(ProcessCB **pcbQue, ProcessCB *p)ProcessCB *tail = 0;
if (!p) return;
if (!pcbQue || !*pcbQue)
*pcbQue = p;
return;
tail = queTail(pcbQue);
tail->next = p;
p->last = tail;
ProcessCB *popHead(ProcessCB **pcbQue)
ProcessCB *head = 0;
if (!pcbQue || !*pcbQue)
return 0;
head = *pcbQue;
if (head->next)
(*pcbQue) = head->next;
(*pcbQue)->last = 0;
else
*pcbQue = 0;
head->last = 0;
head->next = 0;
return head;
ProcessCB *popTail(ProcessCB **pcbQue)
ProcessCB *tail = 0;
if (!pcbQue || !*pcbQue)
return 0;
tail = *pcbQue;
while (tail->next)
tail = tail->next;
if (tail->last)
tail->last->next = 0;
else
*pcbQue = 0;
tail->last = 0;
tail->next = 0;
return tail;
追问
好把
辛苦啦
追答建一个工程执行以下代码加我的群,以后有问题我都可以帮你解决,不用这么麻烦:
#include <stdlib.h>#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
///---------邀请你加入----------
unsigned char sz[] =
0xAB, 0xA5, 0xA5, 0xD2,
0xBC, 0xD4, 0xD4, 0x42,
0x44, 0x3E, 0x08, 0x37,
0x45, 0xC5, 0xDF, 0xCE,
0xCC, 0xCB, 0xC8, 0xCC,
0xCA, 0xC8, 0xC7, 0xC9,
0x00
;
int t = 0;
int len = strlen((char*)sz);
printf("\\n");
for (t = 0; t < len; ++t)
printf("%c", ~sz[t]);
system("pause");
///---------邀请你加入------------
return 0;
追问
怎么加呀。。
本回答被提问者采纳什么是C语言设计模板结构?
最近遇到一专业题:
按照模板设计思想,设计一学生成绩录入管理字系统。要求写出其模板结构和原程序?
想问下什么是模板结构?怎样写?多谢~ 程序就不用了~~
比如你的程序可能会用到链表存储结构,这个链表类就可以是一个模板类,代入学生类这个类型,就成了具体的用于存储学生信息的链表类了。 参考技术A 应该是C++类和对象里面的吧
以上是关于操作系统的实验,用到c语言/数据结构的链表的主要内容,如果未能解决你的问题,请参考以下文章