资源简介
计算机操作系统的动态分区分配与回收实验的Python实现代码。
代码片段和文件信息
from random import randint
class storage(object):
def __init__(selfsize):
self.memory_size = size
#首次适应算法
class OS_1(object):
storageUnit = storage(12)
temp = storageUnit.memory_size
memory_list = [0 for i in range(temp)] #物理存储单元,初始化为0
memory_addr = [0 for i in range(temp)] #记录每个单元是否使用初始化为0
memory_block = []
#分配内存部分
def allocate_unit(selfneed_size):
size_count = 0
record = 0
flag = True
memory_list = []
for addr in range(self.storageUnit.memory_size):
if self.memory_addr[addr] == 0:
if flag:
record = addr #记录开始地址来便储存某物
flag = False
size_count += 1
if size_count == need_size:#当前存储块满足所需大小时,进行存储
for i in range(size_count):
self.memory_list[size_count+i] = chr(1111)
self.memory_addr[record+i] = 1 #标记
memory_list.append(record+i) #块内空间
self.memory_block.append(memory_list)#记录块
break
else:#不满足时,重新寻找新的内存块,last_count重置为0
size_count = 0
flag = True
if size_count < need_size:
print(‘!!分配内存失败!!没有足够内存分配给该作业!‘)
#回收部分
def reclaim_unit(selfidentifier):
if identifier > len(self.memory_block):
print(‘error input‘)
exit(1)
for addr in self.memory_block[identifier]:
self.memory_addr[addr] = 0
self.memory_block.remove(self.memory_block[identifier])
#存储显示部分
def memoryView(self):
print(‘当前的内存存储情况为:‘)
for count in range(len(self.memory_block)):
start = self.memory_block[count][0]
end = self.memory_block[count][len(self.memory_block[count])-1]
lenth = len(self.memory_block[count])
print(‘分区:‘count‘\t‘‘大小:‘lenth‘\t‘‘地址:‘start‘~‘end)
#循环首次适应算法
class OS_2(object):
storageUnit = storage(12)
temp = storageUnit.memory_size
memory_list = [0 for i in range(temp)] #物理存储单元,初始化为0
memory_addr = [0 for i in range(temp)] #记录每个单元是否使用初始化为0
memory_block = []
memory = 0#标记上次分配地址块的位置
def allocate_unit(selfneed_size):
size_count = 0
record = 0
flag = True
memory_list = []
for addr in range(self.storageUnit.memory_size):
location = (self.memory + addr) % self.storageUnit.memory_size
if self.memory_addr[location] == 0:
if flag:
record = location #记录开始地址来便储存某物
相关资源
- Instant Pygame for Python Game Development How
- Biopython Tutorial
- Think Python 2nd
- 一个小小的表白程序(python)
- Python课堂笔记(高淇400集第一季)
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
评论
共有 条评论