JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。JSON库如json-lib在Java开发中起到了关键作用,它允许开发者将Java对象转换为JSON格式,反之亦然,使得数据交换变得简单易行。 json-lib是一个开源的Java库,提供了多种方式来处理JSON数据,包括将Java对象序列化为JSON字符串,以及将JSON文本反序列化为Java对象。这个库特别适用于那些需要与JavaScript或其他支持JSON的语言进行交互的Java应用。 标题中的"json-lib api"指的是json-lib库提供的API接口,这是一套开发者可以使用的函数和方法集合,用于操作和处理JSON数据。通过这个API,开发者可以方便地进行以下操作: 1. **序列化**:将Java对象转换为JSON字符串。例如,一个Java的HashMap可以通过json-lib的API转化为JSON格式的字符串,便于在网络上传输或存储。 2. **反序列化**:将JSON字符串解析回对应的Java对象。这有助于将接收到的JSON数据还原为Java对象,以便进一步处理。 3. **JSON构造**:创建和修改JSON对象,包括JSON数组、JSON对象、JSON值等,以满足各种数据结构需求。 描述中提到的“json-lib api官方文档chm”是指官方提供的帮助文档,通常以CHM(Microsoft Compiled HTML Help)格式存在。CHM文件是一种包含HTML页面和索引的压缩文件,用户可以通过搜索和浏览目录来查找所需的信息。对于开发者来说,官方文档是理解和使用json-lib API的重要资源,其中包含了详细的API参考、示例代码和使用指南,有助于快速上手和解决问题。 标签中的"chm格式"表明文档是以CHM形式提供,这种格式便于离线阅读,且体积小,包含的搜索功能对开发者来说非常实用。 在压缩包子文件的文件名称列表中,"json-lib.sourceforge.CHM"很可能就是这个json-lib API的CHM帮助文件。用户解压后,可以通过打开这个文件,使用其内置的索引和搜索功能,快速查询json-lib库的各种API方法和功能,从而更有效地进行开发工作。 总结来说,json-lib是一个强大的Java JSON处理库,提供了丰富的API来处理JSON数据。官方的CHM文档是学习和使用该库的重要参考资料,能够帮助开发者快速掌握其用法,提高开发效率。
2026-05-19 09:59:22 250KB json-lib chm格式
1
JSP程序设计期末大作业涵盖了网站开发的多个重要方面,包括网站运行环境的搭建、设计思路、功能模块的实现以及关键技术的应用。在本大作业中,使用了NetBeans IDE 8.0作为主要的开发工具,MySQL作为后台数据库管理系统,同时辅助性地使用了Navicat for MySQL软件来进行数据库的测试和管理。 网站的结构由三个主要页面组成:Pnl1.jsp用于处理登录,pnl3.jsp呈现主静态页面,liuyanban.jsp用于显示留言信息。除此之外,还包括Pnl2.jsp进行身份验证,liuyan.jsp展示当前留言,update.jsp用于更新留言内容,delete.jsp用于删除留言。 关键技术部分,JSP(JavaServer Pages)作为核心,是一种动态网页技术,它能够在HTML代码中嵌入Java代码段和JSP标签,实现服务器端的动态内容处理。JSP技术基于Servlet,旨在将Web页面的表现逻辑与业务逻辑相分离,从而提高开发效率,简化Web应用的维护。此外,JSP支持跨平台的特性,允许开发者在不同的操作系统上部署应用。JSP与Java Servlet相互补充,共同构成了大型Web应用的基础。 HTML(HyperText Markup Language)作为网页的基础,通过特定的标签定义网页的结构和内容。HTML的发展经历了从简单到复杂的过程,CSS(Cascading Style Sheets)的出现解决了HTML由于功能的不断增强而变得臃肿的问题。CSS提供了对网页样式的控制,使得网页设计可以更加清晰、高效。 MySQL作为关系型数据库管理系统,在Web应用开发中扮演了重要角色。它将数据组织在不同的表中,通过SQL(Structured Query Language)查询语言来管理数据库。MySQL的轻量级、高性能和开源特点,使其成为众多开发者在中小型网站数据库开发时的首选。 在安装MySQL的过程中,通常会涉及到解压安装包并将其放置在适合的系统盘中。安装完成后,需要配置环境变量以及初始化数据库,以便在NetBeans IDE中顺利连接和操作MySQL数据库。 在功能模块的实现上,本次大作业涵盖了一个基本的社区论坛网页功能,包括用户登录验证、留言的显示、修改和删除等。这不仅考察了JSP技术的应用,还涉及到前端页面设计与数据库的交互。 此外,JSP应用的开发与部署还涉及对Web服务器的配置,如Apache Tomcat的使用。在开发过程中,还需要注意安全性和代码的优化,以确保应用的稳定性和用户的良好体验。 JSP程序设计期末大作业是一次全面的实践机会,学生可以通过此作业深入了解Web应用开发的整个流程,掌握前后端技术的融合,以及数据库的使用与管理。它不仅考验了学生对JSP及相关技术的理论掌握,更锻炼了实际应用和问题解决的能力。
2026-05-19 09:48:13 86KB
1
JSON_API.CHM是一个关于JSON API的离线帮助文档,它提供了关于JSON API的详细信息,以供开发者在处理JSON数据时进行查阅。JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,广泛用于Web服务和应用程序之间的数据传输。由于其简洁、易于读写和解析的特性,JSON已成为现代API设计的首选格式。 JSON API是规范API设计的一个标准,它定义了如何以JSON格式来构建和交互HTTP API。遵循JSON API规范可以帮助开发人员创建更加一致、高效和可维护的API接口。 在JSON_API.CHM文档中,可能包含以下知识点: 1. **基础概念**:解释JSON的基本结构,包括对象(键值对)和数组,以及字符串、数字、布尔值、null等基本类型。 2. **资源表示**:描述如何用JSON对象来表示API中的资源,包括资源ID、类型和属性。 3. **关系**:解释如何表示资源之间的关联,如嵌入式资源和链接,以及如何处理多对一、一对多和多对多的关系。 4. **请求和响应格式**:涵盖JSON API指定的HTTP方法(如GET、POST、PATCH、DELETE)的使用,以及如何构造请求和响应的头部和主体。 5. **错误处理**:介绍如何返回错误信息,包括状态码、错误对象和错误详情。 6. **分页**:说明如何在响应中实现分页,例如使用`links`和`meta`字段来指示页面信息。 7. **过滤、排序、限制和包含**:讲解如何通过查询参数实现对资源集合的筛选、排序、限制数量以及嵌入相关资源。 8. **版本管理**:讨论如何在API中引入版本控制,以适应接口的演化而不影响现有客户端。 9. **最佳实践**:提供有关如何设计高效、安全和可扩展的JSON API的建议。 10. **示例代码**:可能包含不同编程语言的示例,展示如何使用JSON API进行实际操作。 这个CHM文件对于正在学习或使用JSON API的开发者来说,是一个宝贵的参考资料,它能帮助理解JSON API的设计原则和操作方式,提升开发效率,并确保API的兼容性和一致性。通过阅读和理解这份文档,开发者可以更好地遵循JSON API规范,构建出符合标准的API接口。
2026-05-19 09:37:28 222KB JSON_API.CHM JSON_API JSON帮助文档
1
在嵌入式硬件领域,CCS(Code Composer Studio)是一款由TI(Texas Instruments)推出的集成开发环境,专门用于开发和调试基于TI DSP(数字信号处理器)的项目。本教程将详细解析如何在CCS 5.5版本中新建一个工程,以TMS320F28034芯片为例,这是一款常见的高性能、低成本的C28x DSP。通过这个过程,新手可以了解基本的工程配置、代码编写和调试方法。 1. **启动CCS 5.5**: 首次打开CCS,用户会看到主界面。点击菜单栏上的“File”(文件),然后选择“New”(新建)来创建一个新的工程。 2. **新建工程**: 在“New”对话框中,选择“CCS Project”(CCS工程)。接着,你需要为新工程命名,并选择保存的位置。在“Processor/Board”(处理器/板卡)下拉菜单中,找到并选择TMS320F28034对应的处理器型号。 3. **配置工程设置**: 在“Project Type”(工程类型)中,选择适合你的项目需求的类型,如“Empty Project”(空项目)或“Sample Application”(示例应用)。接着,确认编译器版本和调试器设置是否正确。 4. **添加源代码**: 工程创建完成后,可以在“Source Files”(源文件)目录下添加源代码文件。通常,这包括`.c`和`.h`文件。右键点击目录,选择“Add Files...”(添加文件)或“Add Folder...”(添加文件夹)。 5. **配置编译器选项**: 在工程属性中,可以配置编译器选项,如优化级别、警告等级等。这通常在“Project”(工程)菜单下的“Properties”(属性)中完成。 6. **设置链接器选项**: 同样在“Project Properties”中,选择“Linker”(链接器)选项,配置输出文件位置、内存模型等参数。对于TMS320F28034,需要确保链接器知道程序的入口点和内存分配。 7. **下载和烧录**: 当代码编写完成后,需要配置调试器进行下载和烧录。在CCS工具栏上,选择合适的调试器,如JTAG或SPI,然后点击“Debug”(调试)按钮开始下载程序到目标硬件。 8. **调试与测试**: 在下载完成后,CCS提供了丰富的调试工具,如断点、单步执行、变量观察窗口等。利用这些工具可以对代码进行逐行调试,找出可能的错误。 9. **学习资源**: 提供的压缩包中包含说明文档,详细解释了每个步骤,帮助新手更好地理解和操作。同时,工程文件可以直接打开,作为参考模板,以便于快速开始自己的项目。 10. **持续学习与实践**: 了解以上步骤只是开始,深入掌握CCS和DSP开发需要不断实践和学习。TI官方和其他在线社区提供了大量教程和资源,可以帮助开发者解决遇到的问题,提升技能水平。 通过这次CCS 5.5新建工程的实践,新手不仅能够掌握基础的工程配置,还能了解到嵌入式系统开发的基本流程。随着经验的积累,开发者可以逐步尝试更复杂的项目,实现更多功能,充分发挥TMS320F28034芯片的潜力。
2026-05-19 09:36:58 1.86MB 嵌入式硬件 DSP
1
**viPlugin 2.9.0 for Eclipse 插件详解** `viPlugin` 是一个针对 Eclipse 开发环境的插件,旨在将流行的 Vim 编辑器功能集成到 Eclipse 中,为习惯于 Vim 工作流的开发者提供更便捷的开发体验。版本 2.9.0 是该插件的一个更新版本,它不仅提供了基础的 Vim 模式支持,还额外附带了 `xx` 方法,以增强其功能和易用性。 在 Eclipse 中安装 `viPlugin` 可以帮助开发者利用 Vim 的快捷键和操作模式,提高代码编辑效率。Eclipse 用户可以享受诸如正常模式、插入模式、可视模式等 Vim 的经典特性,而无需离开他们熟悉的 Eclipse 环境。 **基础功能:** 1. **Vim 模式切换**:用户可以在 Eclipse 的编辑器中轻松地在 Vim 模式(正常模式、插入模式、可视模式)之间切换,实现类似 Vim 的操作方式。 2. **快捷键映射**:`viPlugin` 支持 Vim 的大部分快捷键,如 hjkl 键进行光标移动,dd 删除行,yy 复制行,p 插入复制内容等。 3. **多文件编辑**:与 Vim 类似,用户可以同时打开多个文件进行编辑,通过 :e 命令快速在文件间切换。 **`xx` 方法:** `xx` 方法是 `viPlugin` 特有的一个扩展功能,可能指的是某种特定的编辑或操作增强。由于具体的 `xx` 方法没有在描述中详细说明,我们可以推测它可能是为了提升某些特定操作的便捷性或增加新的自定义选项。例如,它可能提供了一种快速格式化代码、搜索替换的快捷方式,或者是在代码导航上有所改进。 **安装与使用:** 要在 Eclipse 中安装 `viPlugin 2.9.0`,用户通常需要遵循以下步骤: 1. 下载插件的 `.zip` 文件,包含 `plugins` 和 `features` 两个目录。 2. 在 Eclipse 中打开 "Help" > "Install New Software" 菜单。 3. 选择 "Add",然后在弹出的窗口中点击 "Archive...",导入下载的 `.zip` 文件。 4. 完成安装后,重启 Eclipse,插件就会生效。 5. 配置 `viPlugin` 的设置,如启用 Vim 模式、快捷键映射等,可以通过 "Window" > "Preferences" > "General" > "Keys" 进行设置。 **总结:** `viPlugin 2.9.0` 是一个旨在为 Eclipse 开发者提供 Vim 风格编辑体验的插件。通过集成 Vim 的多种功能,包括模式切换、快捷键映射以及可能的 `xx` 方法,它使得习惯于 Vim 的开发者在使用 Eclipse 时也能保持高效的工作节奏。尽管 `xx` 方法的具体细节未被详细阐述,但可以预见它增强了 `viPlugin` 的实用性和用户体验。正确安装和配置后,开发者将能够充分利用这个插件来提升他们的编程效率。
2026-05-19 09:33:25 996KB viPlugin eclipse
1
JSON Web Tokens(JWT)是一种开放标准(RFC 7519),用于在网络应用环境间安全地传输信息。作为数字身份验证令牌,它被广泛用于Web应用的身份验证和信息交换。JWT技术涉及多个方面,如加密签名、加密算法、认证流程等,本文将详细介绍JWT相关的技术和应用。 一、JWT基础概念 1. JSON Web Token的定义 JSON Web Token是一种紧凑的、URL安全的方式,用于表示在各方之间以JSON对象形式传输声明。一个JWT实际上是一个被编码的JSON字符串,由三个部分组成:头部(Header)、载荷(Payload)、签名(Signature),它们之间用点号(.)分隔。头部指明了该JWT所使用的签名算法,而载荷中则包含了实际传输的数据声明,最后的签名确保了数据在传输过程中没有被篡改。 2. JWT能解决什么问题? JWT提供了无需依赖服务器存储状态的无状态会话机制。这意味着用户的信息可以嵌入到Token中,从而避免了维护服务器端会话的需要,降低了服务器资源消耗,并使应用易于扩展。 3. JWT的历史 JWT最初是由网际工程任务组(IETF)开发的,并且被设计为一个开放的、行业标准的认证机制。它基于其他几种技术构建而成,包括JSON、Base64Url和公钥加密技术。 二、JWT的实际应用 1. 客户端/无状态会话 JWT在Web应用中常被用于客户端会话管理,它支持无状态的REST API设计。在这种情况下,客户端需要在请求时附带JWT,服务器通过验证JWT的签名来识别请求者的身份。 2. 安全考虑 JWT在使用时需要注意几个安全问题,例如签名剥离(Signature Stripping)、跨站请求伪造(CSRF)以及跨站脚本攻击(XSS)。开发者需要采取措施来确保应用的安全性,比如在存储和传输Token时使用HTTPS协议。 3. 客户端会话是否有益? 尽管客户端会话可以减少服务器负载,但其安全性问题也需要特别关注。开发者需要权衡应用场景的需求,决定是否使用客户端会话管理。 4. 联合身份 JWT常与其他身份认证协议如OAuth 2.0和OpenID Connect一起使用,为用户身份提供更全面的管理机制。JWT可以作为这些协议中的一个环节,加强身份验证的力度。 三、JWT的结构和生成 1. JWT的头部(Header) JWT的头部通常由两部分组成:令牌类型(即JWT)和所使用的签名算法。头部信息会经过Base64Url编码形成JWT的第一部分。 2. JWT的载荷(Payload) 载荷部分包含了Token的声明(Claims)。声明是关于实体(通常是用户)的陈述性信息。它包含三类声明:已注册的声明、公共声明和私人声明。 3. 不安全的JWT(Unsecured JWT) 不安全的JWT是没有签名的JWT,它不提供任何关于声明完整性的保证。在生产环境中,不建议使用不安全的JWT。 4. 创建和解析JWT 通过特定的库和工具,如node-jose,开发者可以方便地创建JWT以及验证和解析JWT。 四、JSON Web签名(JWS) 1. 有签名的JWT的结构 有签名的JWT包含头部、载荷和签名三个部分。签名用于验证消息在传输过程中未被篡改。 2. 签名算法的结构和实践 签名算法包括HS256(HMAC+SHA-256)、RS256(RSASSA+SHA256)和ES256(ECDSA使用P-256和SHA-256)。在实践中,这些算法需要通过合适的方式来使用,确保安全性和性能。 五、JSON Web加密(JWE) 1. 加密JWT的结构 加密的JWT包含头部、被加密的内容、加密密钥等部分。它通过加密算法保护Token内容的机密性。 2. 加密和解密Token 加密和解密Token的过程涉及到密钥管理、加密算法的选择和实际加密操作。开发者需要对相关技术有深刻理解,以确保数据的安全传输。 六、密钥管理 在使用JWT时,密钥管理是一个重要的部分。开发者需要妥善地生成、存储和管理密钥,避免密钥泄露带来的安全风险。node-jose库在这方面提供了便利,帮助开发者更加安全和高效地管理密钥。 以上便是JWT手册中涉及的核心知识点。通过这些内容的学习,开发者可以更好地理解JWT的工作原理,如何在实际项目中运用JWT,以及如何确保在使用JWT时的安全性。
2026-05-19 09:13:19 1.35MB JWT javascript
1
在当今企业管理软件市场中,用友系列软件以其强大的功能和灵活的配置获得了广泛的应用。用友U8及用友CO作为用友软件产品线中的重要组成部分,它们在企业的财务管理、供应链管理、生产管理等核心业务环节扮演着关键角色。而随着信息技术的发展,企业对于软件系统间的互操作性和数据集成提出了更高的要求,因此,用友Webseries接口的开发成为了用友U8和用友CO软件系统中一项重要的技术工作。 用友U8软件是一套面向中小型企业的综合管理软件,提供了包括财务管理、生产制造、供应链管理在内的多个管理模块。在企业实际运营中,U8软件通常需要与其他信息系统如电子商务平台、CRM系统等进行数据交换和业务流程协同。这就需要通过开发U8采购订单Web接口,实现U8软件与其他系统的无缝对接,确保数据的一致性和实时性。 用友CO软件则是针对企业成本管理需求设计的,帮助企业管理成本信息,实现成本核算、分析和控制。它通过精细的成本计算和管理,帮助企业有效降低成本,提高整体运营效率。同样地,用友CO软件也需要通过Web接口技术与财务系统、ERP系统等其他系统集成,以便及时准确地获取成本数据,进行成本控制。 用友Webseries接口开发,作为实现用友U8和用友CO系统集成的关键技术,使得企业能够更加灵活地处理跨系统的业务流程。Webseries接口包括了标准化的Web服务和API接口,可支持各种业务场景的定制开发。开发者可以通过Webseries接口实现多种数据交互,如订单信息同步、库存信息更新、财务报表传递等,从而打破系统间的信息孤岛,构建起流畅的数据交互机制。 在进行用友U8和用友CO的Web接口开发过程中,开发者需要深入理解用友软件的业务逻辑和数据结构,同时具备一定的编程和数据库知识。他们要编写接口程序,确保数据在各系统间按照既定规则进行传输和转换。此外,接口开发还需要考虑系统的安全性、稳定性和可扩展性,以应对企业未来可能的业务拓展需求。 接口开发完成后,需要进行严格的测试,确保接口的兼容性和性能满足企业业务的实际需求。测试过程中,开发者不仅要验证数据交换的准确性,还要关注系统接口对业务流程的影响,确保接口开发不会带来业务流程的异常或系统性能的下降。 随着企业信息化程度的不断加深,用友U8和用友CO软件的接口开发显得尤为重要。正确地实施Web接口开发,不仅能够提高企业信息化系统的集成效率,还能增强企业的市场竞争力。因此,掌握用友Webseries接口开发的相关技术和方法,对于企业信息化管理和技术支持团队来说,是一项不可或缺的技能。
2026-05-19 09:12:52 20.3MB
1
本文介绍了一种基于Xilinx MIG IP核的轻量级数据路由架构,用于解决多路数据源同时写入DDR4时的带宽竞争、地址冲突和实时性保障问题。通过参数化的FIFO缓存阵列和动态地址映射策略,实现了真正的智能分流,已在工业视觉和5G基站项目中验证,最高支持16路1080p视频流实时写入,DDR4接口利用率稳定在85%以上。文章详细阐述了多路数据存储的核心挑战、FIFO缓存阵列设计、动态地址映射策略、带宽分配与仲裁机制以及实战调试技巧,为高速数据采集和实时处理系统提供了有效的解决方案。 在当前数字时代,数据的存储和处理速度变得至关重要。为了满足这种需求,技术人员开发了一种基于Xilinx MIG IP核的轻量级数据路由架构,旨在处理多路数据源同时写入DDR4内存时可能出现的带宽竞争、地址冲突和实时性保障问题。这种方法采用了一种参数化的FIFO缓存阵列和动态地址映射策略,以实现所谓的智能分流。这种架构能够有效地分配带宽和仲裁机制,确保了数据的实时写入和高效处理。 在设计上,FPGA实现的DDR4智能分流架构深入考虑了多路数据存储的核心挑战。它不仅包括了对FIFO缓存阵列的详细设计,还涵盖了一套完整的动态地址映射策略。这样的策略使得系统能够灵活应对不同的数据流情况,从而优化内存的使用效率。此外,文章还提供了一系列带宽分配与仲裁机制的具体实现细节,确保了在高并发环境下数据能够被有效地存储和读取。 在实践中,该架构已经在工业视觉和5G基站项目中得到验证和应用。其中,它已经能够支持高达16路的1080p视频流实时写入,且DDR4接口利用率始终保持在85%以上。这一成绩证明了该架构在实际应用中的有效性与可靠性。对那些致力于高速数据采集和实时处理系统的开发者而言,文章所提供的技术细节和调试技巧无疑是一份宝贵的资料。 此外,文章还讨论了如何在设计中解决实时性保障问题。这涉及到一套细致的带宽分配和仲裁机制的设计,它们确保了即使在高数据流量的情况下,也能保持数据流的连续性和一致性。文章通过具体案例展示了这些技术如何在真实世界的应用中发挥作用,确保了系统在面对大量数据时的稳定性和效率。 为了进一步提升系统性能,文章还详细描述了如何利用FPGA的可编程性来优化和调整数据处理流程。通过动态调整FPGA内部的配置参数,系统可以适应不同的应用场景和性能要求。这不仅增强了系统的灵活性,还扩展了其在各种工业环境中的适用范围。 这项工作提供了一个高效的数据路由解决方案,通过使用参数化的FIFO缓存阵列和动态地址映射策略,显著提高了多路数据源向DDR4内存写入的效率和实时性。文章深入探讨了涉及的关键技术,并分享了在实际环境中应用这些技术的经验。对于那些寻求在高速数据采集和处理中实现更高性能的开发者和工程师来说,这篇文章是一个极有价值的资源。
2026-05-19 08:54:19 14KB 软件开发 源码
1
本书在详细分析操作系统原理的基础上,用丰富的实例代码,一步一步地指导读者用C语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架。本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图。书中讲解了大量在开发操作系统中需注意的细节问题,这些细节不仅能使读者更深刻地认识操作系统的核心原理,而且使整个开发过程少走弯路。全书共分7章。 本书适合各类程序员、程序开发爱好者阅读,也可作为高等院校操作系统课程的实践参考书。 折叠 作品目录 第1章 马上动手写一个最小的"操作系统"1 1.1 准备工作1 1.2 10分钟完成的操作系统1 1.3 Boot Sector3 1.4 代码解释3 1.5 水面下的冰山5 1.6 回顾6 第2章 搭建你的工作环境7 2.1 虚拟计算机(Virtual PC)7 2.1.1 Virtual PC初体验8 2.1.2 创建你的第一个Virtual PC9 2.1.3 虚拟软盘研究12 2.1.4 虚拟软盘实战14 2.2 编译器(NASM & GCC)18 2.3 安装虚拟Linux19 2.4 在虚拟Linux上访问Windows文件夹26 2.5 安装虚拟PCDOS26 2.6 其他要素29 2.7 Bochs29 2.7.1 Bochs vs. Virtual PC vs. VMware30 2.7.2 Bochs的使用方法31 2.7.3 用Bochs进行调试33 2.7.4 在Linux上开发34 2.8 总结与回顾36 第3章 保护模式(Protect Mode)37 3.1 认识保护模式37 3.1.1 GDT(Global Descriptor Table) 42 3.1.2 实模式到保护模式,不一般的jmp45 3.1.3 描述符属性47 3.2 保护模式进阶50 3.2.1 海阔凭鱼跃50 3.2.2 LDT(Local Descriptor Table)58 3.2.3 特权级62 3.3 页式存储82 3.3.1 分页机制概述83 3.3.2 编写代码启动分页机制84 3.3.3 PDE和PTE85 3.3.4 cr388 3.3.5 回头看代码88 3.3.6 克勤克俭用内存90 3.3.7 进一步体会分页机制100 3.4 中断和异常107 3.4.1 中断和异常机制109 3.4.2 外部中断111 3.4.3 编程操作8259A113 3.4.4 建立IDT116 3.4.5 实现一个中断117 3.4.6 时钟中断试验119 3.4.7 几点额外说明121 3.5 保护模式下的I/O122 3.5.1 IOPL122 3.5.2 I/O许可位图(I/O Permission Bitmap)123 3.6 保护模式小结123 第4章 让操作系统走进保护模式125 4.1 突破512字节的限制125 4.1.1 FAT12126 4.1.2 DOS可以识别的引导盘131 4.1.3 一个最简单的Loader132 4.1.4 加载Loader入内存133 4.1.5 向Loader交出控制权142 4.1.6 整理boot.asm142 4.2 保护模式下的"操作系统"144 第5章 内核雏形146 5.1 用NASM在Linux下写Hello World146 5.2 再进一步,汇编和C同步使用148 5.3 ELF(Executable and Linkable Format)150 5.4 从Loader到内核155 5.4.1 用Loader加载ELF155 5.4.2 跳入保护模式161 5.4.3 重新放置内核170 5.4.4 向内核交出控制权175 5.4.5 操作系统的调试方法176 5.5 扩充内核184 5.5.1 切换堆栈和GDT184 5.5.2 整理我们的文件夹191 5.5.3 Makefile191 5.5.4 添加中断处理200 5.5.5 两点说明218 5.6 小结219 第6章 进程221 6.1 迟到的进程221 6.2 概述222 6.2.1 进程介绍222 6.2.2 未雨绸缪--形成进程的必要考虑222 6.2.3 参考的代码224 6.3 最简单的进程224 6.3.1 简单进程的关键技术预测225 6.3.2 第一步--ring0→ring1227 6.3.3 第二步--丰富中断处理程序243 6.3.4 进程体设计技巧254 6.4 多进程256 6.4.1 添加一个进程体256 6.4.2 相关的变量和宏257 6.4.3 进程表初始化代码扩充258 6.4.4 LDT260 6.4.5 修改中断处理程序261 6.4.6 添加一个任务的步骤总结263 6.4.7 号外:Minix的中断处理265 6.4.8 代码回顾与整理269 6.5 系统调用280 6.5.1 实现一个简单的系统调用280 6.5.2 get_ticks的应用286 6.6 进程调度292 6.6.1 避免对称--进程的节奏感292 6.6.2 优先级调度总结300 第7章 输入/输出系统302 7.1 键盘302 7.1.1 从中断开始--键盘初体验302 7.1.2 AT、PS/2键盘304 7.1.3 键盘敲击的过程304 7.1.4 解析扫描码309 7.2 显示器325 7.2.1 初识TTY325 7.2.2 基本概念326 7.2.3 寄存器328 7.3 TTY任务332 7.3.1 TTY任务框架的搭建334 7.3.2 多控制台340 7.3.3 完善键盘处理346 7.3.4 TTY任务总结354 7.4 区分任务和用户进程354 7.5 printf357 7.5.1 为进程指定TTY357 7.5.2 printf()的实现358 7.5.3 系统调用write()361 7.5.4 使用printf()363 后记366
2026-05-19 08:52:19 62.6MB
1