10.9作业

#include <iostream>

using namespace std;

class Per
{
private:
    string name;
    int age;
    float *height;
    float *weight;
public:
    Per()//无参构造函数
    {
        cout << "无参构造函数" << endl;
    }
    Per(string name,int age,float *height,float *weight) //有参构造函数
    {
        cout << "有参构造函数" << endl;
    }
    ~Per()
    {

        cout << "析构函数" << endl;
    }
    Per(const Per &other):name(other.name),age(other.age),height(other.height),weight(other.weight)//拷贝构造函数
    {
        cout << "拷贝构造函数" << endl;
    }
};
class Stu
{
private:
    double score;
    Per p1;
public:
    Stu()
    {
        cout << "无参构造函数" << endl;
    }
    Stu(double score ,string name,int age,float *height,float *weight):score(score),p1(name,age,height,weight)
    {
        cout << "有参构造函数" << endl;
    }
    ~Stu()
    {
        cout << "析构函数" << endl;
    }
    Stu(const Stu &other):score(other.score),p1(other.p1)
    {
        cout << "拷贝构造函数" << endl;
    }
};
int main()
{
    Per p1;
    float h=180;
    float w=10;
    Per p2("zz",11,&h,&w);
    Per p3=p2;

    Stu s1;
    Stu s2(100,"xx",22,&h,&w);
    Stu s3=s2;
    return 0;
}

在这里插入图片描述

首先,我们需要将作业按照需要的主存量进行排序: D (10K) < E (20K) < C (50K) < A (15K) < B (60K) 接下来,我们进行可变式分区存储管理。 初始状态下,整个主存空间都是一个空闲分区,大小为 100K。 10.1 时刻,作业 A 进入输入井。由于需要 15K 主存,我们选择将其放入空闲分区的前端,剩余空间为 85K。 10.3 时刻,作业 B 进入输入井。由于需要 60K 主存,我们选择将其放入空闲分区的后端,剩余空间为 25K。 10.5 时刻,作业 C 进入输入井。由于需要 50K 主存,我们需要寻找一个空闲分区来存放它。此时,我们可以选择将作业 A 移动到空闲分区的后端,腾出一个大小为 50K 的空闲分区,将作业 C 放入其中。此时,剩余空间为 35K。 10.6 时刻,作业 D 进入输入井。由于需要 10K 主存,我们选择将其放入空闲分区的前端,剩余空间为 25K。 10.7 时刻,作业 E 进入输入井。由于需要 20K 主存,我们需要寻找一个空闲分区来存放它。此时,我们可以选择将作业 D 移动到空闲分区的后端,腾出一个大小为 10K 的空闲分区,将作业 E 放入其中。此时,剩余空间为 15K。 现在,所有作业都已经进入了主存。接下来,我们进行高级调度和低级调度。 首先,根据 SJF 算法进行高级调度。当前在主存中的作业按照需要计算时间从小到大排列: D (24 分钟) < E (12 分钟) < C (24 分钟) < A (42 分钟) < B (30 分钟) 接下来,根据 SJF 算法进行低级调度。先选择运行需要计算时间最小的作业 E,运行时间为 12 分钟,结束运行时间为 10.7 + 0.2 = 10.9 时刻。此时,空闲分区的情况如下: 前段空闲分区(10K)- D - 中段空闲分区(50K)- C - 后段空闲分区(15K) 接下来,选择运行需要计算时间最小的作业 D,运行时间为 24 分钟,结束运行时间为 10.9 + 0.4 = 11.3 时刻。此时,空闲分区的情况如下: 前段空闲分区(34K)- C - 后段空闲分区(15K) 接下来,选择运行需要计算时间最小的作业 C,运行时间为 24 分钟,结束运行时间为 11.3 + 0.48 = 11.78 时刻。此时,空闲分区的情况如下: 前段空闲分区(34K)- 空闲分区(50K)- 后段空闲分区(15K) 接下来,选择运行需要计算时间最小的作业 A,运行时间为 42 分钟,结束运行时间为 11.78 + 0.84 = 12.62 时刻。此时,空闲分区的情况如下: 前段空闲分区(34K)- 空闲分区(50K)- 后段空闲分区(43K) 最后,选择运行需要计算时间最小的作业 B,运行时间为 30 分钟,结束运行时间为 12.62 + 0.6 = 13.22 时刻。此时,空闲分区的情况如下: 前段空闲分区(34K)- 空闲分区(10K)- 后段空闲分区(43K) 至此,所有作业都已经运行完毕。计算各作业进入主存时间、开始运行时间、结束运行时间、周转时间(以分钟为单位),结果如下: 作业名 进入主存时间 开始运行时间 结束运行时间 周转时间 A 10.1 11.78 12.62 1.52 B 10.3 13.22 13.82 3.52 C 10.5 11.3 11.78 1.28 D 10.6 10.9 11.3 0.7 E 10.7 10.9 10.9 0.2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值