国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

編寫程序模擬完成動態分區存儲管理方式的內存分配和回收。

2019-11-14 17:36:23
字體:
來源:轉載
供稿:網友
#!/usr/bin/python#-*- coding: utf-8 -*-class Table(object):	#空閑分區表	#0:開始地址 1:長度	freeTable = []		#占用分區表	#0:程序名 1:開始地址 2:長度	useTable = []		def __init__(self):		ip()		memorySize = int(raw_input('請輸入進程大小:'))		if (memoryName != '' and memorySize > 0):			self._WorkAdd(memoryName, memorySize)		else:			print '輸入有問題'						def _WorkAdd(self, memoryName, memorySize):		minIndex = -1		minMemory = 0		for i in xrange(len(self.freeTable)):			if (self.freeTable[i][1] > memorySize):				if (minIndex == -1):					minMemory = self.freeTable[i][1]					minIndex = i				else:					if (self.freeTable[i][1] < minMemory):						minMemory = self.freeTable[i][1]						minIndex = i		if (minIndex == -1):			self.outOfMemory()		else:			start = self.freeTable[minIndex][0]			length = self.freeTable[minIndex][1]			self.freeTable.remove(self.freeTable[minIndex])			self.useTable.append([memoryName,start,memorySize])			self.freeTable.append([start + memorySize,length - memorySize])			self.display()		def display(self):		print '已用分區表/n程序進程名/t開始地址/t長度'		for i in xrange(len(self.useTable)):			print self.useTable[i][0], '/t/t', self.useTable[i][1], '/t', self.useTable[i][2]		print '空閑分區表/n開始地址/t長度'		for i in xrange(len(self.freeTable)):			print self.freeTable[i][0], '/t/t', self.freeTable[i][1]		def outOfMemory(self):		print '親,內存不夠了'		self.display()			def WorkDel(self):		memoryName = raw_input('請輸入進程名:')		memoryName = memoryName.strip()		if (memoryName == ''):			print '沒有輸入'		else:			self._WorkDel(memoryName)				def _WorkDel(self,memoryName):		index = -1;		for i in xrange(len(self.useTable)):			if (self.useTable[i][0] == memoryName):				index = i				break		if (index == -1):			print '不存在此進程'		else:			start = self.useTable[index][1]			length = self.useTable[index][2]			end = start + length			freeIndex1 = -1			freeIndex2 = -1			for i in xrange(len(self.freeTable)):				iStart = self.freeTable[i][0]				iLength = self.freeTable[i][1]				if (start == iStart + iLength):					freeIndex1 = i					break			for i in xrange(len(self.freeTable)):				if (self.freeTable[i][0] == end):					freeIndex2 = i					break			if (freeIndex1 != -1 and freeIndex2 != -1):				iStart = self.freeTable[freeIndex1][0]				iLength = self.freeTable[freeIndex1][1] + self.freeTable[freeIndex2][1] + length				self.freeTable.append([iStart,iLength])				self.freeTable.remove(self.freeTable[freeIndex1])				self.freeTable.remove(self.freeTable[freeIndex2])			elif (freeIndex1 != -1 and freeIndex2 == -1):				iStart = self.freeTable[freeIndex1][0]				iLength = self.freeTable[freeIndex1][1] + length				self.freeTable.append([iStart,iLength])				self.freeTable.remove(self.freeTable[freeIndex1])			elif (freeIndex1 == -1 and freeIndex2 != -1):				iStart = start				iLength = self.freeTable[freeIndex2][1] + length				self.freeTable.append([iStart,iLength])				self.freeTable.remove(self.freeTable[freeIndex2])			elif (freeIndex1 == -1 and freeIndex2 == -1):				iStart = start				iLength = length				self.freeTable.append([iStart,iLength])			else:				print '系統崩潰'			self.display()				def run(self):		while(True):			print '動態分區存儲管理'			print '1,增加程序'			print '2,結束程序'			print '3,退出'			print '請選擇操作:(輸入數字)'			chose = raw_input('請選擇操作:')			chose = chose.strip()			if (chose == '1'):				self.WorkAdd()			elif(chose == '2'):				self.WorkDel()			elif (chose == '3'):				break			else:				print '輸入有誤'			print '/n'										if __name__ == '__main__':	table = Table()	table.run()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博爱县| 若尔盖县| 孝昌县| 澄江县| 女性| 响水县| 佳木斯市| 永宁县| 内黄县| 定结县| 香港| 浏阳市| 翁源县| 海口市| 尼木县| 鹤庆县| 奉节县| 邓州市| 内黄县| 保亭| 甘谷县| 山阳县| 常德市| 泸西县| 凌海市| 砚山县| 西峡县| 衡阳县| 台东县| 茂名市| 鄂温| 乡宁县| 建湖县| 平罗县| 正阳县| 高淳县| 荔浦县| 颍上县| 唐河县| 兰考县| 龙山县|