模拟动态分区存储分配算法程序发布

版权申诉
0 下载量 187 浏览量 更新于2024-10-08 收藏 8KB RAR 举报
资源摘要信息:"本资源主要涉及操作系统中的分区存储分配算法,特别是最佳适应算法(Best Fit Algorithm)。文档描述了一位用户在操作系统实验课程中,独立编写的一个模拟动态分区存储分配的程序。该程序使用最佳适应算法进行存储管理,已通过VC++6.0编译器的编译,并且经过多次测试,输出结果稳定可靠。" 知识点详细说明: 1. 分区存储概念: 分区存储是操作系统中的一种内存管理技术,用于分配和管理计算机的物理内存。在这种存储管理策略中,内存被划分为若干大小不等的分区,每个分区可以分配给一个进程使用。当进程需要内存时,操作系统会根据进程的需求,在内存中找到一个合适的空闲分区进行分配。 2. 动态分区存储分配: 动态分区存储分配,也称为动态内存分配,是指在进程运行期间,根据进程的实际需要动态地分配内存。这种方法与静态分区存储分配不同,后者在系统启动时或编译时就确定了分区的大小和位置。 3. 最佳适应算法(Best Fit Algorithm): 最佳适应算法是一种常用的动态分区分配策略。在这种算法中,系统维护一个空闲分区列表,当进程请求内存时,算法会在列表中找到一个大小刚好可以满足进程需求的空闲分区。如果存在多个这样的分区,通常会选择最小的那一个。选择最小合适分区的好处是保留了尽可能多的大分区,以适应未来可能的大内存请求。然而,这种策略可能会导致内存碎片化问题,随着时间的推移,可能会产生大量小的难以利用的内存空隙。 4. VC++6.0编译器: VC++6.0是由微软公司发布的一个集成开发环境(IDE),主要用于C++语言的开发。它提供了一系列开发工具,包括源代码编辑器、编译器、调试器和其他辅助开发工具。在这个资源中,程序开发者使用VC++6.0作为开发环境,编写并编译了模拟动态分区存储分配算法的程序。 5. 测试与验证: 为了确保编写的程序能够正确执行,需要进行详尽的测试和验证工作。测试过程包括确保程序的逻辑正确、性能满足预期以及没有出现程序崩溃等问题。经过多次测试,开发者验证了程序的稳定性和可靠性,确认程序在提供动态分区存储分配功能时表现良好。 6. 输出结果: 在操作系统的上下文中,输出结果通常指的是程序执行后产生的数据或信息。它可能包括内存分配的前后状态、内存碎片的情况、分配失败的情况(如果有的话)等。在本资源描述中,程序经过测试后未发现问题,意味着输出结果能够正确反映内存分配的状态,且程序逻辑无误。 7. 存储管理: 存储管理是操作系统的一个核心功能,它负责跟踪内存的使用情况,确保进程能够高效地使用内存资源。存储管理的策略包括分区存储、分页存储、分段存储等多种方式,每种方式都有其适用场景和优缺点。动态分区存储分配是存储管理技术中的一种,主要用于提高内存资源的利用率。 8. 文件名称列表中的"mp"和"***.txt": 文件名称列表中的"mp"可能是指编写的动态分区存储分配算法的程序文件名。而"***.txt"则可能是一个文本文件,通常用于说明程序的详细信息、版权声明或者是操作指南。在资源上传过程中,这类文本文件可能会提供关于程序的额外信息,帮助用户更好地理解和使用程序。PUDN通常是一个代码分享平台,提供各种源代码和相关文档的下载。

优化这个sql SELECT count( 1 ) FROM ( SELECT B.ID, B.PURCHASE_REQUEST_ID, B.MATERIAL_ID, B.MATERIAL_CODE, B.MATERIAL_NAME, B.STANDARD, B.MODEL_ID, B.BILL_ROW_ID, B.BILL_NO, BILL_NAME, B.MODEL_CODE, B.MODEL_NAME, B.PARENT_MODEL_ID, B.PARENT_MODEL_CODE, B.PARENT_MODEL_NAME, B.UNIT_CODE, B.UNIT_NAME, B.PURCHASE_TYPE_CODE, CAST( NVL( B.APPLY_NUM, 0 ) AS NUMBER ( 24, 10 ) ) AS APPLY_NUM, CAST( NVL( B.DEAL_NUM, 0 ) AS NUMBER ( 24, 10 ) ) AS DEAL_NUM, CAST( NVL( B.RETURN_NUM, 0 ) AS NUMBER ( 24, 10 ) ) AS RETURN_NUM, B.DEAL_USER_ID, B.DEAL_USER_NAME, CAST( NVL( B.PRICE, 0 ) AS NUMBER ( 24, 10 ) ) AS PRICE, CAST( NVL( B.AMOUNT, 0 ) AS NUMBER ( 24, 10 ) ) AMOUNT, B.IMPLEMENT_CODE, B.IMPLEMENT_NAME, B.IMPLEMENT_INVEST_AMOUNT, B.PURCHASE_MANAGER_ID, B.PURCHASE_MANAGER_NAME, B.PROVIDER_ID, B.PROVIDER_NAME, B.REMARK, B.DELIVER_AREA, B.DELIVER_ADDRESS, B.RECEIVE_PEOPLE, B.RECEIVE_PEOPLE_PHONE, B.ITEM_STATUS, B.COST_CENTER, B.COST_BUDGET_CODE, B.COST_IMPLEMENT_NAME, B.FRAME_CONT_ID, B.FRAME_CONT_CODE, B.FRAME_CONT_NAME, B.DETAIL_CONFIG, B.PURCHASE_CATEGORY_CODE, B.INVOICE_TITLE_CODE, B.INVOICE_SEND_ADDRRSS, B.MATERIAL_REQUEST_ITEM_ID, B.YEAR, B.DELETE_FLAG, B.PROVINCE_CODE, B.REASON, B.PARENT_ITEM_ID, B.FRAME_CONT_ITEM_ID, B.SUB_MATERIAL_REQUEST_ID, B.SUB_MATERIAL_REQUEST_CODE, B.MATERIAL_URL, B.RECOMMEND_PROVIDER_NAMES, C.PURCHASE_REQUEST_CODE, C.PURCHASE_REQUEST_NAME, C.APPLY_TYPE_CODE, C.CREATOR_NAME, C.APPLY_TELEPHONE, C.COMPANY_NAME, C.DEPT_NAME, B.CREATE_TIME, TO_CHAR( B.CREATE_TIME, 'YYYY-MM-DD' ) CREATE_TIME_STR, C.ARRIVE_TIME, C.IS_TO_END, C.MONEY_WAY_CODE, C.OWN, C.APPLY_CATEGORY_CODE, C.manu_Type, C.BILL_ID, MMD.MATERIAL_TYPE_CODE, B.BRANCH_COMPANY_DEAL_USER_ID, B.BRANCH_COMPANY_DEAL_USER_NAME, ( SELECT ORG_NAME FROM ORGANIZATIONS WHERE DELETE_FLAG = '0' AND ORG_CODE = ( SELECT PARENT_COMPANY_NO FROM ORGANIZATIONS WHERE ID = B.MATERIAL_DEPT_ID )) AS MATERIAL_COMPANY_NAME, B.ORIGINAL, B.PROVIDER_PRODUCT_MODEL, B.PROVIDER_PRODUCT_NAME, B.PRODUCT_DESC, B.Back_Flag, CASE WHEN MMD.material_type_code = 'WZ' THEN '1' WHEN MMD.material_type_code = 'FW' THEN '2' ELSE '3' END apply_category_code_item, NVL( C.IS_CARDSYSTEM_REQUEST, '0' ) IS_CARDSYSTEM_REQUEST, B.APPLY_GROUP_AUTHORITES, B.SCIENTIFIC_RESEARCH_ID, B.SCIENTIFIC_RESEARCH_CODE, B.SCIENTIFIC_RESEARCH_NAME, B.PREQUALFY_CODE, nvl( C.IS_QUICK, '0' ) AS IS_QUICK, C.PURCHASE_WAY_CODE, C.PURCHASE_TYPE_CODE PURCHASE_TYPE_CODE_P, C.ORIGINAL_TYPE, C.PURCHASE_REQUEST_BILLS_TYPE, B.IS_FRAME_CONT_MONAD FROM PURCHASE_REQUEST_ITEM B LEFT JOIN PURCHASE_REQUEST C ON B.PURCHASE_REQUEST_ID = C.ID LEFT JOIN MATERIAL_DATA MMD ON MMD.ID = B.MATERIAL_ID AND MMD.DELETE_FLAG = '0' WHERE B.delete_flag = '0' AND B.Item_Status IN ( 1 ) AND NOT EXISTS ( SELECT * FROM purchase_request_item_log pril WHERE B.id = pril.purchase_request_item_id AND pril.lock_status = '1' AND pril.delete_flag = '0' ) AND ( ( c.apply_type_code NOT IN ( '20', '41', '3' ) AND nvl( B.Apply_Num, 0 ) > nvl( B.Deal_Num, 0 )) OR c.apply_type_code IN ( '20', '41', '3' ) ) AND B.Deal_User_Id =: 1 AND C.MONEY_WAY_CODE =: 2 AND C.APPLY_TYPE_CODE =: 3 AND C.PAY_OUT_TYPE_CODE =: 4 AND C.APPLY_CATEGORY_CODE =: 5 AND NVL( C.IS_CARDSYSTEM_REQUEST, '0' ) = : 6 AND NOT EXISTS ( SELECT * FROM purchase_request_item p left join material_province mp ON p.material_id = mp.material_id WHERE p.delete_flag = 0 AND mp.delete_flag = 0 AND mp.material_status = 03 AND mp.org_code = p.province_code AND p.id = B.id ) ORDER BY C.ID, B.ID ASC)

2023-06-08 上传
2023-06-07 上传