我现有分数349分。现提供最低100分,最高150分寻求高手帮助。
问题:操作系统实验
  实验内容:实验一 处理机调度1、实验内容
选择一个调度算法,实现处理机的调度。
3、实验题目
1) 设计一个按优先权调度算法实现处理机调度的程序;
2) 设计按时间片轮转算法实现处理机调度的程序。
5、要求
1) 可以随机输入若干进程,并按优先权排序(为了方便演示,排序单独写成一个函数来调用,实际在加入队列时就排序会更好些);
2) 从就绪队列的首选进程开始运行:优先权-1/要求运行时间-1,要求当运行时间=0时,撤销该进程;
3) 重新排序,进行下一轮调度;
4) 采用图形界面实现,可以适当加入动态动画效果;
5) 可以随时增加进程;
6) 规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可以自动从后备队列(不在内存中吗?)调度一作业进入。被挂起进程进入挂起队列,设置解挂功能用于将指定挂起进程解挂并加入就绪队列。
7) 每次调度后,显示各进程的状态。
6、实验报告
1) 程序中使用的数据结构及符号说明;
2) 打印一份源程序并附上注释;
3) 针对输入的数据,给出程序执行结果。实验二 主存储器空间的分配和回收1、实验内容
主存储器空间的分配和回收。
2、实验目的
计算机系统不仅要有足够容量、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。主存的分配和回收的实现是与主存储器的管理方式有关的,本实验有助于了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。
3、实验题目在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。
4、提示与要求
1) 假设主存空间大小,预设操作系统所占大小并构造未分分区表;未分分区表目内容:起址、长度、状态(未分/空表目);
2) 结合实验一,PCB的内容增加为:
PID;
要求运行时间;
优先权;
状态;
所需主存大小;
主存起始位置;
PCB指针;
3) 采用最先适应算法分配主存空间;
4) 进程完成后,回收主存,并与相邻空闲分区合并。试验三  银行家算法实现资源分配
要求:设计一个4个并发进程共享10个同类资源的系统,进程可动态申请资源和释放资源,系统根据申请动态分配资源
      设计用银行家算法和随机分配算法,实现资源分配的两种程序,显示各种进程依次要求申请的资源数以及依次分配资源的情况
三个试验尽量用一个程序完成,语言可以是C,java.....可以是网上的资料。本人QQ:497740419。。合格即给分,最低100,最高150.。须用图形界面

解决方案 »

  1.   

    CSDN的分有这么值钱吗?呵呵!
      

  2.   

    http://download.csdn.net/source/440964
    我操作系统实验课的代码,看看有没有你有用的...呵呵...
      

  3.   

    java2000_net反问的有点意思,我想问来着,呵呵,没好意思开口...
      

  4.   

    呵呵楼主这题冒似需要人民币解决比较妥当,CSDN的货币已经无法满足我们的需求了.
      

  5.   

    1. 实验目的
    1。掌握进程的各个状态及其之间的转换        
    2。了解cpu的调度算法及其实现原理
    3。学会创建一个进程并会调度该进程2.实验原理和内容
    根据单cpu系统任何一个时刻最多只能有一个进程处于cpu中处于执行状态,在进行进程调度时应按一定的原则实现进程的调度。
     cpu优先调度是根据系统事先分配好的各优先级及编程者自己规定的进程优先级实现进程调度。优先级高的进程可以中断优先级低的进程而进入运行状态。
    3. 实验步骤
    首先输入各个进程的优先级和进程号,进入进程链表。建立好的链表是一个无序的进程链表。再利用冒泡法各个进程按优先级进行排序,得到一个按进程优先级由小到大的进程序列。在CPU进行调度时,如一个进程正在执行,碰到一个更高级的进程,则中断当前进程执行进入的进程。否则,当前进入的进程进入等待队列,继续执行正在执行的进程。
    4.程序及运行结果(或实验数据记录及分析)
    #include <stdio.h>
    #include <string.h>
    #define NULL 0
    #define LEN sizeof (struct table)
     struct table
     { int key;
       int priority;
       char condition[10];
       struct table *next;
     }; 
    int n; 
     struct table *creat(void) /*定义函数,建立链表*/
     { struct table *head;
       struct table *p1,*p2;
       n=0;
       p1=p2=(struct table *)malloc(LEN);
       scanf("%d,%d",&p1->key,&p1->priority);
       gets(p1->condition);
       head=NULL;
       while (p1->key!=0)
       {n=n+1;
         if (n==1) head=p1;
     else p2->next=p1;
     p2=p1;      
     p1=(struct table *) malloc (LEN);
     scanf("\n%d,%d",&p1->key,&p1->priority);
     gets(p1->condition);
       }
       p2->next=NULL;
       return(head);
     }
     void print (struct table *head)  /*输出链表*/
     { struct table *p;
       printf("\n The table is:\n",n);
       p=head;
       if(head !=NULL)
       do{printf("%d,%d,%s\n",p->key,p->priority,p->condition);
          p=p->next;
       }
       while(p!=NULL);
     }
      printf("The table is:\n");  
       head=q=q1=q2=creat(); /*输入进程控制表*/
       print(head);
       {while (q!=NULL) 
       {if(q->condition=="ready")
            while(q2->next!=NULL)
    {q3=q2->next;
                   if(q2->priority > q3->priority)
     {j=q3->priority;
      k=q3->key;
      q3->priority=q2->priority;
      q3->key=q2->key;
      q2->priority=j;
      q2->key=k;
     }
     q1=q2;
     q2=q2->next;
    }
       q=q->next;
                 printf("%d,%d,%s\n",q->key,q->priority,q->condition);
    }  
    }
    getch(); } void main()
     {int j,k;
      struct table *head,*q,*q1,*q2,*q3;
      printf("The table is:\n");  
       head=q=q1=q2=creat(); /*输入进程控制表*/
       print(head);
       {while (q!=NULL) 
       {if(q->condition=="ready")
            while(q2->next!=NULL)
    {q3=q2->next;
                   if(q2->priority > q3->priority)
     {j=q3->priority;
      k=q3->key;
      q3->priority=q2->priority;
      q3->key=q2->key;
      q2->priority=j;
      q2->key=k;
     }
     q1=q2;
     q2=q2->next;
    }
       q=q->next;
                 printf("%d,%d,%s\n",q->key,q->priority,q->condition);
    }  
    }
    getch(); }