2023年计算机操作系统内存分配实验报告.pdf
《2023年计算机操作系统内存分配实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年计算机操作系统内存分配实验报告.pdf(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、实 验 目 的 熟 悉 主 存 的 分 派 与 回 收。理 解 在 不 同 的 存 储 管 理 方 式 下,如 何 实 现 主 存 空 间 的 分 派 与 回 收。掌 握 动 态 分 区 分 派 方 式 中 的 数 据 结 构 和 分 派 算 法 及 动 态 分 区 存 储 管 理 方 式 及 其 实 现 过 程。二、实 验 内 容 和 规 定 主 存 的 分 派 和 回 收 的 实 现 是 与 主 存 储 器 的 管 理 方 式 有 关 的。所 谓 分 派,就 是 解 决 多 道 作 业 或 多 进 程 如 何 共 享 主 存 空 间 的 问 题。所 谓 回 收,就 是 当 作 业 运
2、营 完 毕 时 将 作 业 或 进 程 所 占 的 主 存 空 间 归 还 给 系 统。可 变 分 区 管 理 是 指 在 解 决 作 业 过 程 中 建 立 分 区,使 分 区 大 小 正 好 适 合 作 业 的 需 求,并 且 分 区 个 数 是 可 以 调 整 的。当 要 装 入 一 个 作 业 时,根 据 作 业 需 要 的 主 存 量 查 看 是 否 有 足 够 的 空 闲 空 间,若 有,则 按 需 要 量 分 割 一 个 分 区 分 派 给 该 作 业;若 无,则 作 业 不 能 装 入,作 业 等 待。随 着 作 业 的 装 入、完 毕,主 存 空 间 被 提 成 许 多 大
3、大 小 小 的 分 区,有 的 分 区 被 作 业 占 用,而 有 的 分 区 是 空 闲 的。实 验 规 定 使 用 可 变 分 区 存 储 管 理 方 式,分 区 分 派 中 所 用 的 数 据 结 构 采 用 空 闲 分 区 表 和 空 闲 分 区 链 来 进 行,分 区 分 派 中 所 用 的 算 法 采 用 初 次 适 应 算 法、最 佳 适 应 算 法、最 差 适 应 算 法 三 种 算 法 来 实 现 主 存 的 分 派 与 回 收。同 时、规 定 设 计 一 个 实 用 和 谐 的 用 户 界 面,并 显 示 分 派 与 回 收 的 过 程。同 时 规 定 设 计 一 个 实
4、用 和 谐 的 用 户 界 面,并 显 示 分 派 与 回 收 的 过 程。三、实 验 重 要 仪 器 设 备 和 材 料 实 验 环 境 硬 件 环 境:PC或 兼 容 机 软 件 环 境:V C+6.0四、实 验 原 理 及 设 计 分 析 某 系 统 采 用 可 变 分 区 存 储 管 理,在 系 统 运 营 当 然 开 始,假 设 初 始 状 态 下,可 用 的 内 存 空 间 为 6 40KB,存 储 器 区 被 分 为 操 作 系 统 分 区(40KB)和 可 给 用 户 的 空 间 区(60 0 K B)。(作 业 1 申 请 130KB、作 业 2 申 请 60K B、作 业
5、3 申 请 1 0 0KB、作 业 2 释 放 60K B、作 业 4 申 请 200KB、作 业 3 释 放 10 0 K B、作 业 1 释 放 1 3 0 K B、作 业 5 申 请 14 0KB、作 业 6 申 请 6 0KB、作 业 7 申 请 50KB)当 作 业 1进 入 内 存 后,分 给 作 业 1(1 3 0 K B),随 着 作 业 1、2、3 的 进 入,分 别 分 派 6 0KB、1 0 0 K B,通 过 一 段 时 间 的 运 营 后,作 业 2 运 营 完 毕,释 放 所 占 内 存。此 时,作 业 4 进 入 系 统,规 定 分 派 2 0 0 K B内 存。
6、作 业 3、1 运 营 完 毕,释 放 所 占 内 存。此 时 又 有 作 业 5 申 请 1 4 0 K B,作 业 6 申 请 6 0 K B,作 业 7 申 请 5 0KB。为 它 们 进 行 主 存 分 派 和 回 收。1、采 用 可 变 分 区 存 储 管 理,使 用 空 闲 分 区 链 实 现 主 存 分 派 和 回 收。空 闲 分 区 链:使 用 链 指 针 把 所 有 的 空 闲 分 区 链 成 一 条 链,为 了 实 现 对 空 闲 分 区 的 分 派 和 链 接,在 每 个 分 区 的 起 始 部 分 设 立 状 态 位、分 区 的 大 小 和 链 接 各 个 分 区 的
7、前 向 指 针,由 状 态 位 指 示 该 分 区 是 否 分 派 出 去 了;同 时,在 分 区 尾 部 还 设 立 有 一 后 向 指 针,用 来 链 接 后 面 的 分 区;分 区 中 间 部 分 是 用 来 存 放 作 业 的 空 闲 内 存 空 间,当 该 分 区 分 派 出 去 后,状 态 位 就 由“0”置 为“1”。设 立 一 个 内 存 空 闲 分 区 链,内 存 空 间 分 区 通 过 空 闲 分 区 链 来 管 理,在 进 行 内 存 分 派 时.,系 统 优 先 使 用 空 闲 低 端 的 空 间。设 计 一 个 空 闲 分 区 说 明 链,设 计 一 个 某 时 刻
8、主 存 空 间 占 用 情 况 表,作 为 主 存 当 前 使 用 基 础。初 始 化 空 间 区 和 已 分 派 区 说 明 链 的 值,设 计 作 业 申 请 队 列 以 及 作 业 完 毕 后 释 放 顺 序,实 现 主 存 的 分 派 和 回 收。规 定 每 次 分 派 和 回 收 后 显 示 出 空 闲 内 存 分 区 链 的 情 况。把 空 闲 区 说 明 徒 的 变 化 情 况 以 及 各 作 业 的 申 请、释 放 情 况 显 示 打 印 出 来。2.采 用 可 变 分 区 存 储 管 理,分 别 采 用 初 次 适 应 算 法、最 佳 适 应 算 法 和 最 坏 适 应 算
9、法 实 现 主 存 分 派 和 回 收。3、主 存 空 间 分 派(1)初 次 适 应 算 法 在 该 算 法 中,把 主 存 中 所 有 空 闲 区 按 其 起 始 地 址 递 增 的 顺 序 排 列。在 为 作 业 分 派 存 储 空 间 时,从 上 次 找 到 的 空 闲 分 区 的 下 一 个 空 闲 分 区 开 始 查 找,直 到 找 到 第 一 个 能 满足 规 定 的 空 闲 区,从 中 划 出 与 请 求 的 大 小 相 等 的 存 储 空 间 分 派 给 作 业,余 下 的 空 闲 区 仍 留 在 空 闲 区 链 中。(2)最 佳 适 应 算 法 在 该 算 法 中,把 主
10、存 中 所 有 空 闲 区 按 其 起 始 地 址 递 增 的 顺 序 排 列。在 为 作 业 分 派 存 储 空 间 时,从 上 次 找 到 的 空 闲 分 区 的 下 一 个 空 闲 分 区 开 始 查 找,直 到 找 到 一 个 能 满 足 规 定 的 空 闲 区 且 该 空 闲 区 的 大 小 比 其 他 满 足 规 定 的 空 闲 区 都 小,从 中 划 出 与 请 求 的 大 小 相 等 的 存 储 空 间 分 派 给 作 业,余 下 的 空 闲 区 仍 留 在 空 闲 区 链 中(3)最 坏 适 应 算 法 在 该 算 法 中,把 主 存 中 所 有 空 闲 区 按 其 起 始
11、地 址 递 增 的 顺 序 排 列。在 为 作 业 分 派 存 储 空 间 时,从 上 次 找 到 的 空 闲 分 区 的 下 一 个 空 闲 分 区 开 始 查 找,直 到 找 到 一 个 能 满 足 规 定 的 空 闲 区 且 该 空 闲 区 的 大 小 比 其 他 满 足 规 定 的 空 闲 区 都 大,从 中 划 出 与 请 求 的 大 小 相 等 的 存 储 空 间 分 派 给 作 业,余 下 的 空 闲 区 仍 留 在 空 闲 区 链 中。4、主 存 空 间 回 收 当 一 个 作 业 执 行 完 毕 撤 离 时,作 业 所 占 的 分 区 应 当 归 还 给 系 统。归 还 的
12、分 区 假 如 与 其 它 空 闲 区 相 邻,则 应 合 成 一 个 较 大 的 空 闲 区,登 记 在 空 闲 区 说 明 链 中,此 时,相 邻 空 闲 区 的 合 并 问 题,规 定 考 虑 四 种 情 况:(1)释 放 区 下 邻 空 闲 区(低 地 址 邻 接)(2)释 放 区 上 邻 空 闲 区(高 地 址 邻 接)(3)释 放 区 上 下 都 与 空 闲 区 邻 接(4)释 放 区 上 下 邻 都 与 空 闲 区 不 邻 接 五、程 序 流 程 图 m ain函 数 里 的 流 程 图二 生 封 骨、汪 C分 派 空 间 里 的 流 程 图回 收 空 间 里 的 流 程 图向
13、的 空 间 雨 粕 六、相 关 数 据 结 构 及 关 键 函 数 说 明 本 程 序 采 用 了 一 个 struct free_ t a b l e 数 据 结 构,里 面 包 含 分 区 序 号(n u m)、起 始 地 址(address)、分 区 长 度(le n g th)和 分 区 状 态(s ta t e)。还 用 了 线 性 表 的 双 性 链 表 存 储 结构(s tr u c t N o d e)理 面 包 含 前 区 指 针(prior)和 后 继 指 针(n e x t)。一 开 始 定 义 一 条(具 有 fi r s t 和 end)的 链,用 开 始 指 针 和
14、 尾 指 针 开 创 空 间 链 表。然 后 分 别 按 三 种 算 法 进 行 分 派 和 回 收。在 该 程 序 中 关 键 函 数 有,sort()、al 1 o c ation(),r e c o very()、和 Fi r st_ f it()、B es t _ f i t()、Worst_ f it();其 中 s o r t()函 数 是 用 来 整 理 分 区 序 号 的,如 在 删 序 号 3 时,她 与 前 面 序 号 2 相 连 在 一 起 了,然 后 序 号 2 中 的 长 度 总 满 足 申 请 的 内 存 大 小,就 会 在 序 号 2 中 分 派,然 后 序 号
15、在 2 的 基 础 上 加 1,一 直 加,加 到 与 原 本 序 号 3 的 下 一 个 序 号 也 就 是 4 相 等,这 时 s o r t()就 开 始 有 明 显 的 工 作 了;al 1 oca t i on()是 分 派 空 间 的,也 是 过 渡 到 三 个 算 法 中 的,当 三 个 算 法 中 满 足 或 者 不 满 足 分 派 请 求,都 会 又 返 回 值 给 allo c a tion();recovery()是 用 来 回 收 内 存 的,里 面 包 含 了 四 种 情 况 相 连 结 果,即 释 放 区 上 与 空 闲 区 邻 接、释 放 区 下 与 空 闲 区
16、邻 接、释 放 区 上 下 都 与 空 闲 区 邻 接、释 放 区 上 下 都 与 空 闲 区 不 邻 接 这 四 种 情 况 的 结 果。七、源 代 码#i nc 1 ude#include#defin e OK 1 完 毕#define E RROR 0 犯 错 ty p ed e f int S tatus;typedef str u c t fr e e_ table/定 义 一 个 空 闲 区 说 明 表 结 构(i nt num;/分 区 序 号 lo n g add r e s s;/起 始 地 址 1 ong 1 en g t h;分 区 大 小 int state;分 区 状
17、 态 E 1 emTyp e;typedef s t rue t No d e/线 性 表 的 双 向 链 表 存 储 结 构 E 1 em T y pe dat a;struct N o de*prio r;/前 趋 指 针 st r uct Node*n e x t;后 继 指 针 Node,*LinkL i st;Link L i s t f i rst;/头 结 点 L i nkList e n d;尾 结 点 int f la g,记 录 要 删 除 的 分 区 序 号 St a tus Ini t b 1 ock()开 创 带 头 结 点 的 内 存 空 间 链 表(f irst=
18、(LinkL i st)malloc(s i ze o f(No d e);end=(LinkL i s t)malloc(s i z e of(N ode);first-p r ior=NU L L;f irs t-n e x t=end;en d-pri o r=fi r st;end-nex t=NULL;en d-d a t a.num=1;e n d d ata.addre s s=40;e n d-d a t a.leng t h=6 0 0;end d at a.s t at e=0;return OK;voi d so r t()/分 区 序 号 重 新 排 序Node*p=f
19、 i rs t-next,*q;q=p-next;for(;p!=N ULL;p=p-next)(f o r(q=p-n e x t;q;q=q-next)(i f(p-d a ta.num=q-d a t a.n u m)(q-da t a.num+=1?)0/显 示 主 存 分 派 情 况 v oid show()(i n t f lag=0;/用 来 记 录 分 区 序 号 No d e*p=first;p-data.num=O;p-data.address=0;pdata.1 e n g t h=40;p-d a t a.s t a te=l;sor t();p rintf(Hnt t
20、 主 存 空 间 分 派 情 况(n);*En n)printf(分 区 序 号 t 起 始 地 址 t分 区 大 小 t分 区 状 态 n n);whil e(p)printf(dtt%d tt%d,p-data.n urn,p-d a ta.ad d ress,p-d a t a.length);i f(p-data.s t a te=O)p r intf(tt 空 闲 n n);e Ise pri n t f(t t 己 分 派 n n);p=p-n e xt;pri n tf(”*头*n nn);/初 次 适 应 算 法 Status First_ fit(int req u e s
21、t)/为 申 请 作 业 开 辟 新 空 间 且 初 始 化 N o de*p=f i rst-n e xt;LinkLi s 11 e mp=(Li n k List)m a lloc(s izeof(Nod e);tem p-d ata.l e ngth=r equ e st;temp-dat a.st a t e=1;p-data.num=l;while(p)i f(p d a ta.s t at e=0)&(p-data.l e ngth=re q uest)/有 大 小 恰 好 合 适 的 空 闲 块 p-data.state=l;r e t urn OK;b r e a k;)el
22、s e if(p-da t a.stat e=0)&(p-d a ta.lengthreq u est)/有 空 闲 块 能 满 足 需 求 且 有 剩 余 t emp-p r i or=p-p rior;temp-next=p;te m p-d a t a.a ddres s=p-d a ta.a dd r e s s;temp-data.num=p-d a ta.num;p p r i o r-ne x t=temp;p-pri o r=temp;p da t a.add r e s s=temp-d a t a.addr e ss+t empdata.lengt h;p-data.l e
23、 n g t h-=re q uest;p-data.n um+=1;r e t u r n OK;br e a k;)p=pnext;)re t u r n ERROR;)最 佳 适 应 算 法 Stat u s Bes t _fi t(i n t re q u es t)in t c h;记 录 最 小 剩 余 空 间 Node*p=first;N o d e*q=NU LL;/记 录 最 佳 插 入 位 置 L i nkLi s 11 e mp=(LinkL i s t)mallo c(si z eof(Node);t em p d a ta.lengt h=r e quest;t em
24、p-d a t a.st a te=l;p-d a t a.n um=1;whil e(p)/初 始 化 最 小 空 间 和 最 佳 位 置(if(p-d a ta.sta t e=0)&(p-d ata.length=r e quest)(if(q二 二 NULL)(q=P;c h=p-d ata.le n gt h-re q u e s t;else i f(q-da t a.leng t h p d a t a.1 ength)q=p;ch=p-d a ta.le n g th-re q uest;)p=p-n ex t;)i f(q=N U L L)r e t urn ERR OR;没
25、 有 找 到 空 闲 块el s e i f(q dat a.length二 二 r e q u e st)。q-d a t a.state=l;retu r n OK;)e Ise(temp-pri o r=q-p r ior;tem p-n ext=q;t e mp-da t a.add r es s=q-da t a.a ddr e s s;temp-d ata.num=q-d a ta.n um;q prio r next=temp;q-p r i or=t emp;q-da t a.a d dres s+=r e q uest;q-da t a.le n gth=ch;q-data.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 计算机 操作系统 内存 分配 实验 报告
限制150内