计算机内存系统详解:从RAM到虚拟内存

版权申诉
0 下载量 92 浏览量 更新于2024-07-03 收藏 3.98MB PPT 举报
"这是一份关于计算机组成原理的课件,主要讲解了计算机的内存系统,包括内存系统的概述、半导体RAM存储器、只读存储器、内存层次结构、缓存存储器、虚拟内存以及辅助存储器等内容。" 在计算机科学中,内存系统是计算机硬件的核心组成部分,它对计算机性能和效率起着至关重要的作用。本课件详细阐述了以下几个方面: 1. **内存系统概述**:计算机内存分为内部存储(主存储)和外部存储(次级存储)。内部存储器,如主内存、缓存和处理器寄存器,直接与处理器交互,提供快速的数据存取。外部存储,例如硬盘或固态驱动器,虽然存储容量大,但访问速度相对较慢,通常通过I/O模块进行数据交换。 2. **半导体RAM存储器**:随机存取存储器(RAM)是计算机中常用的临时数据存储媒介。它可以随时读取和写入数据,但断电后数据会丢失。根据其工作原理,RAM可分为动态RAM(DRAM)和静态RAM(SRAM),两者在速度和功耗上有所差异。 3. **只读存储器**:只读存储器(ROM)中的数据在制造时就被固化,一般用于存储固定的系统程序或初始化数据,如BIOS,即使电源断开,数据也能保持不变。 4. **内存层次结构**:内存层次结构是为了平衡性能和成本而设计的,从高速缓存(L1、L2、L3)到主内存,再到外部硬盘,形成了一个金字塔结构。高速缓存位于处理器附近,能提供最快的数据访问,而更慢但更大的存储设备则位于金字塔底层。 5. **缓存存储器**:缓存是一种非常小但速度极快的内存,用于存储处理器频繁访问的数据,以减少对主内存的访问次数,提高整体性能。缓存的工作机制基于局部性原理,即程序执行时,数据倾向于在一段时间内集中在较小的区域。 6. **虚拟内存**:当物理内存不足时,虚拟内存(也称为页面或交换空间)将部分硬盘空间作为内存使用。通过虚拟内存管理,操作系统可以运行超过实际物理内存大小的程序,但会导致性能下降,因为硬盘访问速度远低于主内存。 7. **辅助存储器**:次级存储通常指硬盘、SSD等,它们容量大、价格相对较低,但访问速度慢。这些设备用于长期存储大量数据,如操作系统、应用程序和用户文件。 理解计算机的内存系统对于深入学习计算机工作原理至关重要,它涉及到数据的存储、访问和管理,直接影响到计算机的性能和效率。本课件提供了全面的理论知识和实践背景,是学习这一主题的重要参考资料。

帮我把一下代码设置一个合理请求头,并加入一个延时import requests import os from bs4 import BeautifulSoup class NovelDownloader: def __init__(self, root_url): self.root_url = root_url self.book_list = [] self.chapter_list = [] def get_url(self, url): while True: try: res = requests.get(url) if res.status_code == 200: print("页面获取成功!") return res.text else: print("页面返回异常!", res.status_code) except: print("页面获取错误!") def get_book_list(self): res = self.get_url(self.root_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.book_list] self.book_list.remove('http://www.biquge5200.cc/') 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): self.get_book_list() for book in self.book_list: self.get_chapter_list(book) for chapter in self.chapter_list: self.get_content(chapter) if __name__ == '__main__': root_url = "http://www.biquge5200.cc/" nd = NovelDownloader(root_url) nd.main()

2023-06-02 上传

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()这是一段爬虫代码,找出里面的错误并改正

2023-06-02 上传