azure011328

导航

 

 

实验一:进程调度模拟算法

一、实验目的

通过进程调度模拟算法

 

理解进程调度的基本概念和调度算法原理

 

掌握优先级调度和时间片轮转算法的实现方法

 

通过模拟实验比较不同调度算法的特点

 

提高C语言编程能力和系统程序设计能力

 

二、实验要求

设计包含6个字段的PCB结构体

 

实现两种调度算法程序

 

规范显示每次调度后的进程状态(R/W/F)

 

按要求处理就绪队列和完成队列

三、实验过程

1. 准备

A. 查阅《操作系统原理》中进程调度相关章节

B. 设计PCB结构体(代码片段):

struct PCB {

    char name[10];

    int prio;

    int round;

    int cputime;

    int needtime;

    char state;

    struct PCB *next;

};

  1. 上机调试

进程数量:3

进程1(P1)NeedTime=5

进程2(P2)NeedTime=3  

进程3(P3)NeedTime=4

3. 主要流程

 

  1. 关键实现

优先级调度核心逻辑:

void prisch() {

    // 遍历就绪队列找出最高优先级进程

    if(p->prio > max_prio) {

        max_prio = p->prio;

        max_prio_p = p;

    }

    // 从队列移除并设置为运行状态

}

5. 问题解决

A. 问题:进程状态未及时更新

解决:在priority_run()中增加run->state = 'R'

B. 问题:轮转法时间片计算错误

解决:修正round_run()中needtime -= 2的逻辑

 

四、实验结果

 

 

 

 

 

五、实验总结

通过本实验,我深入理解了进程调度的实现机制。优先级算法能快速响应高优先级任务但可能导致饥饿现象,而轮转算法公平但上下文切换开销大。在调试过程中,通过解决队列管理问题,提升了我的指针操作和调试能力。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实验二:存储管理动态分区分配及回收算法

一、实验目的

通过存储管理动态分区分配及回收算法的实验

 

掌握动态分区管理的内存分配原理

 

理解首次适应和最佳适应算法的区别

 

实现内存回收时的相邻区合并功能

 

培养系统内存管理模块的设计能力

二、实验要求

实现分区描述器结构

 

编写两种分配算法及回收算法

 

规范输出空闲区队列信息

 

验证算法正确性

 

三、实验过程

1. 准备

A. 研究内存分配算法相关文献

B. 设计分区结构体(代码片段): 

struct Node {

    int addr;

    int size;

    Node* next;

};

  1. 测试案例

初始内存:32767KB

 

操作序列:

 

First Fit分配2000KB

 

Best Fit分配5000KB

 

释放2000KB

 

分配3000KB

 

  1. 算法对比

 

操作

First Fit耗时

Best Fit耗时

分配2000KB

0.1ms

0.2ms

分配5000KB

0.1ms

0.3ms

 

4. 关键实现

 

Best Fit算法核心:

Node* bestFitAssignment(FreeList& freeList, int size) {

    while(p != NULL) {

        if(p->size >= size && (bestFit == NULL || p->size < bestFit->size)) {

            bestFit = p; // 寻找最小足够块

        }

        p = p->next;

    }

}

 

 

5. 问题解决

A. 问题:回收时合并判断错误

解决:修正边界条件(*pp)->addr + (*pp)->size == node->addr

B. 问题:内存泄漏

解决:在main函数退出前添加链表释放代码

 

 

四、实验结果

 

 

 

 

五、实验总结

本实验让我认识到First Fit算法效率高但容易产生外部碎片,Best Fit减少浪费但会增加搜索时间。通过实现回收合并功能,深入理解了内存紧凑化的实现原理。在调试过程中,指针操作的精确定位是关键难点。

 

posted on 2025-06-11 08:41  淮竹i  阅读(10)  评论(0)    收藏  举报