计算机前端和后端区别/广州优化seo

计算机前端和后端区别,广州优化seo,做网站怎么签订协议,淘宝网页制作教程视频一、早期系统 从内存来看,早期的机器并没有提供多少抽象给用户。基本上,机器的物理内存如图13.1所示 操作系统曾经是一组函数(实际上是一个库),在内存中(在本例中,从物理地址0开始)&…

一、早期系统

       从内存来看,早期的机器并没有提供多少抽象给用户。基本上,机器的物理内存如图13.1所示

        操作系统曾经是一组函数(实际上是一个库),在内存中(在本例中,从物理地址0开始),然后有一个正在运行的程序(进程),目前在物理内存中(在本例中,从物理地址64KB开始), 并使用剩余的内存。这里几乎没有抽象,用户对操作系统的要求也不多。

二、多道程序和时分共享

        由于机器昂贵,人们开始更有效地共享机器。因此,多道程序系统时代开启,其中多个进程在给定时间准备运行,比如当有一个进程在等待 I/O 操作的时候,操作系统会切换这些进程,从而增加了 CPU 的有效利用率

        但很快,分时系统的时代诞生了,许多人意识到批量计算的局限性,尤其是程序员本身,厌倦了长时间的(低效率的)编程——调试循环。交互性变得很重要,因为许多用户可能同时在使用机器,每个人都在等待(或希望)它们执行的任务及时响应。

        一种实现时分共享的方法,是让一个进程单独占用全部内存运行一小段时间(见图 13.1),然后停止它,并将它所有的状态信息保存在磁盘上(包含所有的物理内存),加载其他进程的状态信息,再运行一段时间,这就实现了某种比较粗糙的机器共享。 

        这种方法的问题:太慢,特别是当内存增长的时候。虽然保存和恢复寄存器级的状态信息(程序计数器、通用寄存器等)相对较快,但将全部的内存信息保存到磁盘就太慢了。因此,在进程切换的时候,我们仍然将进程信息放在内存中,这样操作系统可以更有效率地实现时分共享(见图13.2)。

        在图13.2中,有3个进程(A、B、C),每个进程拥有从 512KB 物理内存中切出来给它们的一小部分内存。假定只有一个CPU,操作系统选择运行其中一个进程(比如A),同时其他进程(B和C)则在队列中等待运行。 

       随着时分共享变得更流行,对操作系统又有了新的要求。特别是多个程序同时驻留在内存中,使保护(protection) 成为重要问题不希望一个进程可以读取其他进程的内存,更别说修改

三、地址空间

        操作系统需要提供一个易用的物理内存抽象。这个抽象叫做地址空间,是运行的程序看到的系统中的内存。理解这个基本的操作系统内存抽象,是了解内存虚拟化的关键。

         一个进程的地址空间包含运行的程序的所有内存状态。比如:程序的代码(code,指令) 必须在内存中,因此它们在地址空间里。当程序在运行的时候,利用(stack)来保存当前的函数调用信息分配空间给局部变量传递参数和函数返回值。最后,(heap)用于管理动态分配的、用户管理的内存,就像从C语言中调用 malloc() 或面向对象语言(如C ++ 或Java)中调用new 获得内存。当然,还有其他的东西(例如,静态初始化的变量),但现在假设只有这3个部分:代码、栈和堆

        在图 13.3 的例子中,有一个很小的地址空间(16KB)。程序代码位于地址空间的顶部(本例中从 0 开始,并且装入到地址空间的前 1KB)。代码是静态的(因此很容易放在内存中),所以可以将它放在地址空间的顶部,我们知道程序运行时不再需要新的空间。

        接下来,在程序运行时,地址空间有两个区域可能增长(或者收缩)。它们就是堆(在顶部) 和栈(在底部)。通过将它们放在地址空间的两端,可以允许这样的增长:它们只需要在相反的方向增长。因此堆在代码(1KB) 之下开始并向下增长(当用户通过 malloc()请求更多内存时),栈从 16KB 开始并向上增长(当用户进行程序调用时)。然而,堆栈和堆的这种放置方法只是一种约定,如果你愿意, 可以用不同的方式安排地址空间 [当多个线程(threads)在地址空间中共存时,就没有像这样分配空间的好办法了]。

        当然,描述地址空间时,所描述的是操作系统提供给运行程序的抽象。程序不在物理地址0~16KB的内存中,而是加载在任意的物理地址。回顾图13.2中的进程 A、B和C,可以看到每个进程如何加载到内存中的不同地址。因此问题来了:

                                                 关键问题:如何虚拟化内存

        操作系统如何在单一的物理内存上为多个运行的进程(所有进程共享内存)构建一个私有的、可能很大的地址空间的抽象?

        当操作系统这样做时,我们认为操作系统在虚拟化内存(virtualizing memory),因为运行的程序认为它被加载到特定地址(例如 0)的内存中,并且具有非常大的地址空间(例如 32 位或64位)。现实很不一样。

        例如,当图13.2中的 进程A 尝试在地址0(我们将称其为虚拟地址,virtual address) 执行加载操作时,然而操作系统在硬件的支持下,出于某种原因,必须确保不是加载到物理地址0,而是物理地址320KB(这是A载入内存的地址)。这是内存虚拟化的关键,这是世界上每一个现代计算机系统的基础。

四、目标

        操作系统的工作——虚拟化内存。操作系统不仅虚拟化内存,还有一定的风格。为了确保操作系统这样做,我们需要一些目标来指导。

         虚拟内存(VM)系统的一个主要目标透明(transparency)。操作系统实现虚拟内存的方式,应该让运行的程序看不见。因此,程序不应该感知到内存被虚拟化的事实,相反,程序的行为就好像它拥有自己的私有物理内存。在幕后,操作系统(和硬件)完成了 所有的工作,让不同的工作复用内存,从而实现这个假象。

         虚拟内存的另一个目标是效率(efficiency)。操作系统应该追求虚拟化尽可能高效 ,包括时间上(即不会使程序运行得更慢)和空间上(即不需要太多额外的内存来支持虚拟化)。在实现高效率虚拟化时,操作系统将不得不依靠硬件支持,包括TLB这样的硬件功能。

         虚拟内存第三个目标是保护(protection)。操作系统应确保进程受到保护(protect), 不会受其他进程影响,操作系统本身也不会受进程影响。当一个进程执行加载、存储或指令提取时,它不应该以任何方式访问或影响任何其他进程或操作系统本身的内存内容(即在它的地址空间之外的任何内容)。因此,保护让我们能够在进程之间提供隔离(isolation) 的特性,每个进程都应该在自己的独立环境中运行,避免其他出错或恶意进程的影响。

        在接下来的章节中,我们将重点介绍虚拟化内存所需的基本机制(mechanism),包括硬件和操作系统的支持。我们还将研究一些较相关的策略(policy),你会在操作系统中遇到它们,包括如何管理可用空间,以及在空间不足时哪些页面该释放。通过这些内容,你 会逐渐理解现代虚拟内存系统真正的工作原理①。

五、小结

        介绍了操作系统的一个重要子系统:虚拟内存。虚拟内存系统负责为程序提供一 个巨大的、稀疏的、私有的地址空间的假象,其中保存了程序的所有指令和数据。操作系统在专门硬件的帮助下,通过每一个虚拟内存的索引,将其转换为物理地址,物理内存根据获得的物理地址去获取所需的信息。操作系统会同时对许多进程执行此操作,并且确保程序之间互相不会受到影响,也不会影响操作系统。整个方法需要大量的机制(很多底层机制)和一些关键的策略。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Axure RP 9.0教程: 基于动态面板的元件跟随来实现【音量滑块】

文章目录 引言I 音量滑块的实现步骤添加底层边框添加覆盖层基于覆盖层创建动态面板添加滑块按钮设置滑块拖动效果引言 音量滑块在播放器类APP应用场景相对较广,例如调节视频的亮度、声音等等。 I 音量滑块的实现步骤 添加底层边框 在画布中添加一个矩形框:500 x 32,圆…

网络基础-路由器和交换机工作配置

三、路由器和交换机的工作原理配置以及华为体系下的小型网络的搭建 3.1路由基础 3.1.1数据转发 通过链路层交换机和网络层路由器进行数据转发 交换机(链路层)mac地址表的数据转发路由器(网络层) ip路由表的数据转发 隔离广播域…

爱普生SG-3031CMA有源晶振在汽车雷达中的应用

随着自动驾驶技术的普及,汽车雷达已成为高级驾驶辅助系统(ADAS)和自动驾驶系统的核心感知组件。雷达模块需要精确的时钟信号来确保发射/接收时序的准确性、信号处理的同步性以及低功耗运行。这些系统对时钟信号的稳定性、抗干扰性及环境适应性…

案例实践 | 招商局集团以长安链构建“基于DID的航运贸易数据资产目录链”

概览 案例名称 基于DID的航运贸易数据资产目录链 业主单位 招商局集团 上线时间 2024年10月 用户群体 供数用数企业和个人 用户规模 集团内20企业 案例背景 招商局集团深入落实“促进数据高效流通使用、赋能实体经济”精神,深化集团数字化水平&#xff0c…

【docker】docker-compose安装RabbitMQ

docker-compose安装RabbitMQ 1、配置docker-compose.yml文件(docker容器里面的目录请勿修改)2、启动mq3、访问mq4、查看服务器映射目录5、踩坑5.1、权限不足 1、配置docker-compose.yml文件(docker容器里面的目录请勿修改) versi…

Maven工具学习使用(二)——Maven基础用法

pom常见属性说明 详细见官方文档说明 https://maven.apache.org/ref/3.8.6/maven-model/maven.html#class_releases <modelVersion>4.0.0</modelVersion> POM模型的版本 <groupId>org.apache.maven.plugins</groupId> 项目属于哪个组&#xff…

蓝桥杯高频考点——二分(含C++源码)

二分 基本框架整数查找&#xff08;序列二分的模版题 建议先做&#xff09;满分代码及思路solution 子串简写满分代码及思路solution 1&#xff08;暴力 模拟双指针70分&#xff09;solution 2&#xff08;二分 AC&#xff09; 管道满分代码及思路样例解释与思路分析solution 最…

鸿蒙开发之ArkTS联合类型

在鸿蒙开发中&#xff0c;ArkTS是一种基于TypeScript的编程语言&#xff0c;专为鸿蒙应用开发而设计。联合类型&#xff08;Union Types&#xff09;在ArkTS中是一个重要的概念&#xff0c;它允许一个变量存储多种类型的数据&#xff0c;从而增加了代码的灵活性&#xff0c;同时…

K8S学习之基础五十五:k8s中jenkins部署blueOcean

jenkins部署blueOcean 安装插件 BLUE OCEAN 之后会多出一个菜单&#xff0c;可以更详细方便的查看pipeline流程

学习记录(14):iOS部署

时隔多年后&#xff0c;再次部署开发iOS&#x1f601;&#x1f601; 1. Unity端设置&#xff0c;在此不再进行赘述&#xff08;网上一大堆&#xff09; 2. ⚠️&#xff1a;要保证mac比待部署的设备版本要高 3. Xcode: (1) 打开从 Unity 3D 里打包的文件中&#xff0c;找到有…

9.4分漏洞!Next.js Middleware鉴权绕过漏洞安全风险通告

今日&#xff0c;亚信安全CERT监控到安全社区研究人员发布安全通告&#xff0c;Next.js 存在一个授权绕过漏洞&#xff0c;编号为 CVE-2025-29927。攻击者可能通过发送精心构造的 x-middleware-subrequest 请求头绕过中间件安全控制&#xff0c;从而在未授权的情况下访问受保护…

WinSCP使用教程:(SFTP、SCP、FTP 和 WebDAV)

WinSCP 是一款免费开源的 Windows 环境下的 SFTP、SCP、FTP 和 WebDAV 客户端&#xff0c;主要用于在本地计算机与远程服务器之间安全地传输文件&#xff0c;并提供基本的文件管理功能。 WinSCP是Windows环境下使用SSH的开源图形化的SFTP的客户端 SSH 的全称是 Secure Shell&…

Dify本地安装部署笔记

目录 方式一【docker安装】&#xff1a; 步骤 1&#xff1a;准备工作 步骤2: 克隆dify仓库 步骤3:部署启动dify 步骤 4&#xff1a;访问 Dify 步骤5:升级dify 方式二【源码安装】&#xff1a; 步骤1. 硬件&#xff1a;最低安装要求 步骤2: 业务服务前的3个服务 1. 安…

质检LIMS系统在食品生产加工企业的应用 如何保证食品生产企业的安全

在食品生产加工领域&#xff0c;质量安全是贯穿全产业链的生命线。随着《食品安全法》对全过程追溯要求的深化&#xff0c;传统实验室管理模式已难以满足高效、精准的质量管控需求。质检实验室信息管理系统&#xff08;LIMS&#xff09;作为数字化升级的核心工具&#xff0c;正…

自动驾驶VLA模型技术解析与模型设计

1.前言 2025年被称为“VLA上车元年”&#xff0c;以视觉语言动作模型&#xff08;Vision-Language-Action Model, VLA&#xff09;为核心的技术范式正在重塑智能驾驶行业。VLA不仅融合了视觉语言模型&#xff08;VLM&#xff09;的感知能力和端到端模型的决策能力&#xff0c;…

UDP套接字编程(代码)

什么是socket套接字编程&#xff1f; 通过Ip地址 端口号这种方式定位一台主机&#xff0c;这样的方式我们就叫做socket套接字。 Udp Socket 接口介绍 这些案列我们使用的接口基本都是一样的&#xff0c;所以在这里我先把接口介绍完&#xff0c;具体的细节后面在说明。 创…

汽车行业可信数据空间研究探索

近期&#xff0c;相关老师在新能源汽车国家大数据联盟微课堂发表了题为“汽车行业可信数据空间研究探索”的演讲&#xff0c;主要包括可信数据空间的概念内涵、汽车行业可信数据空间的发展现状、数据流通场景和技术需求研究、汽车行业可信数据空间的场景建设建议四个方面展开。…

圆弧插补相关算法汇总(C++和ST源代码)

运动控制需要了解相关的插补概念,在阅读本篇博客之前需要了解相关的准备知识,常用链接如下: SMART PLC直线插补详解-CSDN博客文章浏览阅读2.1k次,点赞2次,收藏4次。本文介绍了SMART PLC中轴组对象的概念,详细讲解了直线插补的原理和指令使用,包括SMART PLC从V2.7版本开…

简历含金量的描述和注意事项!

背景 最近&#xff0c;在公司负责后端相关面试&#xff0c;简历看了不下 50 份&#xff0c;面试 10&#xff0c;纯手码 2000 多字&#xff0c;说说我对简历的看法&#xff0c;希望给大家一点启发。 教育经历 在众多求职面试中&#xff0c;我发现多数求职者容易忽视教育背景的…

【加密社】如何创建自己的币圈工具站

需要准备的工作 1.域名 2.服务器 周末的时候主要弄了快讯这方面的代码 我这里用的是星球日报的api&#xff0c;也可以订阅他们的rss&#xff0c;这部分在github上是开源的 https://github.com/ODAILY 我这里用的是WordPressonenav主题&#xff0c;然后用小工具在主页展示&am…