操作系统存储器管理:从装入链接到虚拟存储

版权申诉
0 下载量 161 浏览量 更新于2024-07-03 收藏 3.81MB PPT 举报
"操作系统课件:Chapter-04存储器管理.ppt" 在计算机科学中,存储器管理是操作系统的核心功能之一,它涉及到程序如何在内存中有效地存储和访问。本课件主要涵盖了存储器管理的多个重要方面,包括程序的装入和链接,以及多种存储分配策略。 首先,我们讨论程序的装入和链接。装入是将编译后的程序加载到内存的过程,而链接则是将多个目标模块组合成一个可执行文件的过程。课程中提到了三种装入方式: 1. 绝对装入方式:程序按照其在编译时确定的地址直接装入内存,程序中的逻辑地址与物理地址一致,无需进一步的地址转换。 2. 可重定位装入方式:程序装入时,所有逻辑地址都会根据其在内存的实际位置进行调整,即重定位。这种调整一次性完成,且在程序运行期间不再改变。 3. 动态运行时装入方式:在程序运行时才进行地址转换,允许程序在内存的任意位置装入,提供了更大的灵活性。 接下来,课件介绍了几种存储分配方式: 1. 连续分配方式:包括单一连续分配(所有程序都在一个连续区域)、固定分区分配(预先划分固定的内存区域)和动态分区分配(根据程序大小动态创建分区)。 2. 分页存储管理方式:将内存划分为固定大小的页,同时将程序分割为同样大小的页框。这种方式可以有效解决内部碎片问题,但可能产生外部碎片。 3. 分段存储管理方式:以逻辑段为单位分配内存,每个段代表程序的一个逻辑部分,如数据结构或函数。这种方式更适合于多道程序设计,但可能导致外部碎片。 4. 虚拟存储器:通过结合主存和辅存,使得程序可以使用超过实际主存容量的地址空间。虚拟存储器的关键在于页替换算法,例如LRU(最近最少使用)、FIFO(先进先出)等,它们决定了何时将哪些页面从主存交换到辅存。 5. 请求分页和分段存储管理:在虚拟存储器基础上,只有当程序真正需要某部分代码或数据时,才将其调入主存。这样减少了对主存的需求,提高了系统效率。 存储器的分级结构是现代计算机系统中常见的设计,由高速缓存、主存和磁盘等组成,以提供不同速度和容量的存储层次,优化性能和成本。 这节课件详细讲解了存储器管理的多个关键概念,对于理解操作系统如何管理和优化内存资源具有重要意义。学习这些知识有助于我们更好地设计和分析高效的计算机系统。

import requests import os from bs4 import BeautifulSoup class book_spider(): def __init__(self,root_url): self.root_url=root_url self.book_list=[] #一级页面中获取的数据(二级页面地址)存放于此列表 self.chapter_list=[] #二级页面中获取的数据(三级页面地址和章节名)存放于此列表 def get_url(url): while True: try: res=requests.get(url) if res.status_code==200: res.encoding =res.apparent_encoding print("页面获取成功") return res.text else: print("页面返回异常",res.status_code) except: print("页面获取错误") def get_book_list(self.url): res = self.get_url(url) html = BeautifulSoup(res,"html.parser") a_list = html.find_all("a",{"class":"name"}) for a in a_list: self.book_list.append(a["href"]) self.book_list = [self.root_url+i for i in self.bbok_list] self.book_list.remove('http://10.1.88.252:7000/庆余年') print(book_list) def get_chapter_list(self,url): res = self.get_url(url) html = BeautifulSoup(res,"html.parser") a_list = html.find_all("a",{"class":"chapter"}) for a in a_list: self.chapter_list.append((a["href"],a.text.replace("\n",""))) def get_content(self.chapter): url = self.root_url + chapter[0] print(url) book_name = chapter[0].split("/")[1] print(book_name) if not os.path.exists(book_name): os.mkdir(book_name) res = self.get_url(url) html = BeautifulSoup(res,"html.parser") content = html.find("div",{"id":"content"}).text print(content) path = os.path.join(book_name,chapter[1]) with open(path,"w",encoding="utf8") as f: f.write(content) def main(): self.get_book_list(self.root_url) for book in self.book_list: self.get_chapter_liat(book) for chapter in chapter_list: self.get_content(chapter) book_s = book_spider("http://10.1.88.252:7000") book_s.main()这是一段爬虫代码,找出里面的错误并改正

140 浏览量