资源简介
计算机操作系统的动态分区分配与回收实验的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 #记录开始地址来便储存某物
相关资源
- Python3爬虫入门到精通课程视频附软件
- 续Python3.x+Pyqt5实现主窗体里QToolBox导航
- Python3.x+Pyqt5实现主窗体里的工具栏,
- Python3.x+Pyqt5实现界面左侧树形导航栏
- Python3.x+Pyqt5实现绘图界面MainWindow类型
- Python3.x+Pyqt5实现界面和逻辑分离案例
- Doolittle法矩阵LU分解求解方程组pytho
- 差分进化算法Python实现.zip
- Python操作同花顺客户端自动化测试
- python pmw模块
- 计算机体系结构Tomasulo算法模拟pytho
- TF-ID算法实现Python源码
- 基于python写的几个图片处理源码
- python+selenium+unittest测试demo
- 线性回归的最小二乘法与梯度下降法
- python+OpenCV人间检测源码
- 第十一届蓝桥杯青少组Python竞赛规则
- GRU神经网络 Python代码
- 堆优化的Dijkstra算法用PYTHON实现
- python TCP聊天程序
- python 用户登录界面及code
- Python imutils包
- python实现新邮件短信通知
- Authorware7中调用外部python程序的
- 老男孩Python高级全栈开发工程师视频
- Python 实现 Linear_Threshold 线性阈值模型
- crf--python编码
- 基于用户的协同过滤算法Python实现
- 合肥工业大学python实验报告
- 某网Python3.6电商实战VueDjango.zip
评论
共有 条评论