所有公开日志
跳到导航
跳到搜索
所有osdev公开日志的联合展示。您可以通过选择日志类型、输入用户名(区分大小写)或相关页面(区分大小写)筛选日志条目。
(最新 | 最旧) 查看(前50个 | 后50个)(20 | 50 | 100 | 250 | 500)- 2022年2月14日 (一) 07:31 Zhang3 讨论 贡献创建了页面Preparing GCC Build (创建页面,内容为“{{Rating|1}} <noinclude>'''请注意,本文旨在包含于GCC Cross-Compiler和Building GCC中,因为它们共享此公共部分。'''</noinclude> GNU编译器集合是一个具有依赖关系的高级软件。 为了构建GCC,你需要以下内容: * 类Unix的环境(Windows用户可以使用Linux或Cygwin的Windows子系统) * 足够的内存和硬盘空间 (视情况而定,256 MiB不够)。 * GCC(有的待替换发行版)或其他sys…”)
- 2022年2月11日 (五) 09:55 Zhang3 讨论 贡献创建了页面Bochs (创建页面,内容为“{{Emulators}} '''Bochs'''是一个用于x86平台的模拟器,至今它还在稳步改进中。 它极大地改善了操作系统开发,因为虚拟机的重启速度比实际硬件快得多,此外,它还提供了详细的调试功能,可以在内核开发过程中提供很大帮助。 强烈建议安装两台Bochs- 除了开箱即用的版本(可以选择二进制程序包下载)之外,您还应该编译第二个启用了内部…”)
- 2022年2月11日 (五) 03:19 Zhang3 讨论 贡献创建了页面NASM (创建页面,内容为“'''Netwide汇编器(NASM)'''是x86/x64体系结构的一种流行汇编器。 NASM是开源软件,可从 [http://www.nasm.us 其官方网站] 免费获得。 NASM可用于许多操作系统,包括(但不限于)Windows、GNU/Linux、BSD和Solaris。 因为它是开源的,所以NASM可以在几乎任何操作系统上运行,并且是爱好者开发操作系统的常见选择。 == 与[[GAS]的比较 == 那些更喜欢NASM而不喜欢GAS的人声…”)
- 2022年2月11日 (五) 03:02 Zhang3 讨论 贡献创建了页面GAS (创建页面,内容为“{{Stub}} {{Infobox_Tool |name=GNU Assembler |website=http://www.gnu.org/software/binutils/ }} “'''GNU 汇编器'''(简称'''GAS''',可执行文件名也是'gas')是binutils包的一部分。 GCC 生成 汇编 源代码,并自动调用GAS,该GAS将代码汇编为 目标文件 中的机器代码。 GCC允许开发人员使用内联汇编功能将汇编直接转发给汇编程序。 GAS不是 '一个' 单独的汇…”)
- 2022年2月8日 (二) 09:44 Zhang3 讨论 贡献创建了页面ARM System Calls (创建页面,内容为“{{Template:In Progress}} ==System Calls== <pre>swi 0x420000</pre> 这里向你介绍如何在ARM上做System Call。 指令 <span style="font-family:monospace">swi</span> 跳转到预定义的地址,该地址又跳转到System Call处理程序。 System Call处理程序执行特定函数,并返回用户代码: <pre>mov pc, lr</pre> 在大多数情况下,您无需担心从中断返回,因为GCC设置为针对ARM交叉编译,可以在C中编写中断…”)
- 2022年2月8日 (二) 09:14 Zhang3 讨论 贡献创建了页面OSDev Wiki CN (创建页面,内容为“== 使用建议 == https://wiki.osdev.org/ 原站是一个关于操作系统开发的WIKI知识库,所以整体风格并不是一个导师编写的教材指南,而是由很多创作者觉得可能需要的'''词条'''组成的一个手册。 如果你是第一次来可以选择随便看看,或者从介绍和基础理论、Bare Bones、Meaty_Skeleton、Babystep这几个教程看看。 也可以买本《30天开发操…”)
- 2022年2月8日 (二) 08:49 Zhang3 讨论 贡献创建了页面Tail Recursion and Tail Call Optimization (创建页面,内容为“== 我很懒 == 这个页面以前的信息被简单地放错了。 所以我删除了它。 我想我应该写正确的信息,但是我现在有点懒,你能自己去看看维基百科吗?谢谢。(译者注:这篇文章应该是原计划介绍“尾递归和尾调用优化”,但是原文就是这样的) (https://en.wikipedia.org/wiki/Tail_call) 我也碰巧在论坛上做了一个关于这个的话题。不过还是由于懒耽误了。 (http…”)
- 2022年2月8日 (二) 08:43 Zhang3 讨论 贡献创建了页面CompilerDev/Implementing Conditional Statements And Loops (创建页面,内容为“= 一般概念 = 对于传统的指令集体系结构,例如x86,ARM,8051,MIPS或目前广泛使用的大多数其他CPU类型 (2016),条件语句 (例如 '''if' ''/'''elsif'''/'''else'''),以及循环构造 (例如 '''for''' 或 '''while'''),通常是通过组合测试来实现的,条件跳跃/分支 (jz,beq等) 和无条件分支 (jmp,bra,j等)。 虽然某些常见的ISA(指令集架构)具有用于重复或循环的专用指令 (例如x…”)
- 2022年2月8日 (二) 08:41 Zhang3 讨论 贡献创建了页面Implementing Conditional Statements And Loops (创建页面,内容为“= 一般概念 = 对于传统的指令集体系结构,例如x86,ARM,8051,MIPS或目前广泛使用的大多数其他CPU类型 (2016),条件语句 (例如 '''if' ''/'''elsif'''/'''else'''),以及循环构造 (例如 '''for''' 或 '''while'''),通常是通过组合测试来实现的,条件跳跃/分支 (jz,beq等) 和无条件分支 (jmp,bra,j等)。 虽然某些常见的ISA(指令集架构)具有用于重复或循环的专用指令 (例如x…”)
- 2022年2月8日 (二) 07:36 Zhang3 讨论 贡献创建了页面Kernel Debugging (创建页面,内容为“人都会犯错。 其中一些错误可能最终成为你的操作系统的一部分。 由于找到错误比修复错误更难,因此本页面提供了可用于定位操作系统中的错误的常用技术列表。 == 调试语句和日志文件 == 第一个解决方案可能是最简单的,并且取决于你想要从调试器中获取什么样的信息。 使用诸如DDD或GDB之类的调试器的问题是它们需要操作系统才能运行...当你…”)
- 2022年2月8日 (二) 05:51 Zhang3 讨论 贡献创建了页面How Do I Use A Debugger With My OS (重定向页面至Kernel Debugging) 标签:新建重定向
- 2022年2月8日 (二) 03:20 Zhang3 讨论 贡献创建了页面PIC (创建页面,内容为“8259的 “可编程中断控制器” (PIC) 是组成x86架构的最重要的芯片之一。 没有它,x86体系结构就不会是中断驱动的体系结构。 8259A的功能是管理硬件中断,并将其发送到适当的系统 中断。 这允许系统响应设备需求而不损失时间 (相较于轮询设备)。 重要的是要注意,APIC 已经在更现代的系统中取代了8259的PIC,尤其是那些具有多核/处理器…”)
- 2022年2月7日 (一) 03:58 Zhang3 讨论 贡献创建了页面PCI (创建页面,内容为“== PCI总线 == PCI ([https://en.wikipedia.org/wiki/Conventional_PCI Peripheral Component Interconnect]) 总线被定义为建立高性能和低成本的本地总线,该总线在几代产品中都会持续保留。 通过结合从132 MB/s (33 MHz时32位) 到528 MB/s (66 MHz时64位) 以及5伏和3.3伏信令环境的透明升级路径,PCI总线同时满足低端桌面系统和高端局域网服务器的需求。 PCI总线组件和附加卡接口是独立…”)
- 2022年2月6日 (日) 14:00 Zhang3 讨论 贡献创建了页面Opcode syntax (创建页面,内容为“AT&T语法 (如GAS所理解的,GNU汇编器) 是大多数非Intel平台上的标准语法,但在x86平台上仍然很少见。 但是,AT&T语法是GCC 内联汇编 的默认语法,这是objdump在调试内核时将为你提供的语法。 NASM和FASM使用Intel语法,Intel语法是 Bochs 调试器在调试你的内核时提供的。 == 重要细节 == AT&T语法和Intel语法之间存在一些实质性差异,打算使用GN…”)
- 2022年2月6日 (日) 12:55 Zhang3 讨论 贡献创建了页面Semaphores (重定向页面至Synchronization Primitives) 标签:新建重定向
- 2022年2月6日 (日) 12:51 Zhang3 讨论 贡献创建了页面Unit Testing (创建页面,内容为“'''单元测试(Unit testing)''' 意味着,除了实现代码之外,你还要编写一个 “测试驱动程序(test driver)”,该 “测试驱动程序” 将实现代码进行一组试验,检查返回结果的正确性。 请注意,这是在开发/测试期间完成的-“测试驱动程序” 不随发布代码一起提供。 == 出发点想法是... == * 如果以后更改实现代码中的内容,则测试驱动程序会告诉你结果…”)
- 2022年2月6日 (日) 12:40 Zhang3 讨论 贡献创建了页面USB (重定向页面至Universal Serial Bus) 标签:新建重定向
- 2022年2月6日 (日) 12:39 Zhang3 讨论 贡献创建了页面Testing (创建页面,内容为“除非有一种方法可以测试新版本的操作系统或内核,否则开发操作系统几乎是完全无用的练习。 设置测试环境有许多不同的方法。 广义上,它们可以分为两种方法: * 物理机器 * virtual machine == 作为成功的测试环境要达到的要求 == * ''' 速度。''' 你希望能够重新启动你的 (可能是虚拟的) 测试机,并在输入完命令之前将其准备好与新内…”)
- 2022年2月6日 (日) 10:38 Zhang3 讨论 贡献创建了页面MMU (重定向页面至Memory Management Unit) 标签:新建重定向
- 2022年2月6日 (日) 10:37 Zhang3 讨论 贡献创建了页面Remote Procedure Call (创建页面,内容为“== 什么是RPC(远程过程调用) == 远程过程调用(Remote Procedure Call),简称RPC,是一种让某些服务由位于不同进程 (甚至可能在网络中某个位置的机器上) 而不是在本地可用的代码执行的手段。 这是一种常见的做法,例如由应用程序服务器或web应用程序采用。 RPC的流行协议是COM、Corba或SOAP。 == RPC简而言之 == 一个RPC系统依赖于一个编译器,该编译器将从高…”)
- 2022年2月6日 (日) 10:24 Zhang3 讨论 贡献创建了页面Shared Memory (创建页面,内容为“共享内存允许其他程序通过共享一块内存来相互影响 == 概念 == 内存保护的概念已成为操作系统设计中公认的概念。 一个特殊的CPU组件,即 MMU (内存管理单元),为每个用户空间应用程序提供 “虚拟” 地址空间。 每个应用程序 “认为” 它都有自己的整个地址空间。 实际上,MMU将每个 “虚拟” 地址映射到 “物理” 地址,通常以 “页面” 为单…”)
- 2022年2月6日 (日) 09:51 Zhang3 讨论 贡献创建了页面Message Passing (创建页面,内容为“如果你考虑写一个 微内核,你需要布局如何管理消息传递。 此页面收集了有关如何执行此操作的注意事项。 == 可靠vs尽力而为 == ; 可靠 : 除非收件人不存在,否则保证会传递消息。 并且失败时,会通知发件人。 为了提供可靠性,消息传递系统确保消息在传输和接收过程中没有被更改或损坏。 乱序消息块被重新排序,重复的消息块被删…”)
- 2022年2月5日 (六) 15:03 Zhang3 讨论 贡献创建了页面Atomic operation (创建页面,内容为“'''原子操作''' 是指一种没有任何其他进程能够在自身操作过程中被读取或更改状态的操作。 它可以作为单步骤有效地执行,并且是处理多个独立进程或更新共享数据的算法中的重要特性,无论是在同步还是在不需要同步的情况的算法中。 == 确保操作是原子的方法 == === 单处理器-单核系统 === 在单个处理器系统上,如果一个操作是在单个CPU指令中实…”)
- 2022年2月5日 (六) 14:40 Zhang3 讨论 贡献创建了页面Mutual Exclusion (创建页面,内容为“互斥是在同步上下文中 (例如线程之间) 常用的词。 它用于确保只有一个实例可以访问一个资源。 == 它是什么 == 互斥是指多个实例可以尝试访问一个资源,但一次只能授予其中一个访问权限。 这里的 “实例” 一词指的是那些试图获得对资源访问的东西,例如线程。 == 互斥体 Mutex == 互斥原则常用于 ''' 互斥 ''' 锁定机制。 互斥体也被称为 “二进制…”)
- 2022年2月5日 (六) 14:15 Zhang3 讨论 贡献创建了页面Synchronization Primitives (创建页面,内容为“这里介绍的所有技术都是解决 ''进程同步'' 问题的基本构建块。 例如,给定在同一台机器上彼此独立运行的程序,如何实现一些特性确保允许哪些操作组合和不允许哪些操作组合。 在现实世界问题的其他示例中,我们正在寻找可以授予以下功能的技术: * 进程的互斥: 一部分代码不能同时由两个进程执行。 * 会合: 在其他进程完成其操作之前,一个进…”)
- 2022年2月3日 (四) 12:49 Zhang3 讨论 贡献创建了页面Signals (创建页面,内容为“{{Stub}} 信号量(Signa)是Unix发明的用于异步信令的一种同步机制,并已集成到C标准 (<signal.h>) 中。 当进程接收到信号 (通过硬件发送,或另一个进程使用 <tt>raise()</tt> 发送) 时,将调用 “信号处理句柄(signal handler)”。 信号处理句柄是指一个处理信号量的C函数; 这个函数作为函数指针传递给<tt>signal()</tt> 函数。 (如果没有为给定信号定义信号处理句…”)
- 2022年2月2日 (三) 13:26 Zhang3 讨论 贡献创建了页面Multiprocessor Scheduling (创建页面,内容为“Category:Processes and Threads{{Stub}} == 简介 == 当涉及多个CPU时,调度算法 可能会变得棘手,由于英特尔的超线程技术 (一个复杂的CPU显示为多个CPU),多处理器的操作系统开发也成为了爱好者可以接触的内容... 突然之间,多CPU体系结构的细节变得比单处理器系统更加重要。 内存管理单元 (MMU) 是如何设计的?一些CPU能够在其翻译后备…”)
- 2022年2月2日 (三) 11:49 Zhang3 讨论 贡献创建了页面Scheduling Algorithms (创建页面,内容为“调度算法(scheduling algorithm)是指示分配给 进程和线程CPU时间的算法。 任何调度算法的目标都是满足许多标准: * 任何任务都不能缺乏资源 - 所有任务都必须在CPU时间获得机会; * 如果使用优先级,则低优先级任务不得阻止高优先级任务; * 调度程序必须随着越来越多的任务而很好地扩展,理想情况下时间复杂度是O(1)。例如,在linux内核…”)
- 2022年2月2日 (三) 05:29 Zhang3 讨论 贡献创建了页面Context Switching (创建页面,内容为“在普遍受内存保护的环境中,“上下文(context)” 是虚拟地址空间,其中包含的可执行文件,其数据等。 发生 “上下文切换” 的原因多种多样-因为调用了内核函数,应用程序已被抢占,或者因为它产生了时间片。 上下文切换涉及存储旧状态和检索新状态。 存储和检索的实际信息可以包括EIP、一般寄存器、段寄存器、CR3 (和分页结构) 、FPU/MMX寄存…”)
- 2022年2月2日 (三) 01:48 Zhang3 讨论 贡献创建了页面Modular Kernel (创建页面,内容为“{{Template:Kernel designs}} 模块化内核是一种合并内核级驱动程序和第三方驱动程序优点的尝试。 在模块化内核中,系统核心的某些部分将位于称为 “模块” 的独立文件中,这些文件可以在运行时添加到系统中。 根据这些模块的内容,目标可能会有所不同,例如: * 仅在实际找到设备时才加载驱动程序 * 仅在实际请求时加载文件系统 * 仅在应评估特定 (调…”)
- 2022年2月2日 (三) 01:22 Zhang3 讨论 贡献创建了页面文件:Microkernel.png
- 2022年2月2日 (三) 01:22 Zhang3 讨论 贡献上传文件:Microkernel.png
- 2022年2月2日 (三) 01:22 Zhang3 讨论 贡献创建了页面Microkernel (创建页面,内容为“{{Template:Kernel designs}} == 设计 == frame|right|Basic overview of a microkernel 微内核尝试将大多数服务 - 例如网络,文件系统等 - 作为用户空间中的守护程序/服务器运行。 剩下的内核要做的就是基本服务,例如物理内存分配 (实际内存 “管理器” 可以在用户空间中实现),调度和消息传递 (进程间通信)。 从理论上讲,这个概念使内核更具响应…”)
- 2022年2月2日 (三) 01:00 Zhang3 讨论 贡献创建了页面文件:Monolithic.png
- 2022年2月2日 (三) 01:00 Zhang3 讨论 贡献上传文件:Monolithic.png
- 2022年2月2日 (三) 00:57 Zhang3 讨论 贡献创建了页面模板:Who (创建页面,内容为“<sup>[''哪些人?'']</sup>”)
- 2022年2月2日 (三) 00:57 Zhang3 讨论 贡献创建了页面Monolithic Kernel (创建页面,内容为“{{Template:Kernel designs}} ==Design== {|align="right" |frame|right|Basic overview of a monolithic kernel. |} 单片内核在其内核中包含其所有 (或至少大部分) 服务。 这减少了所涉及的上下文切换和消息传递的数量,使得这个做法比 Microkernel 更快。 不利的一面是,内核空间中运行的代码庞杂使内核更容易出现致命的错误。 “单片(monolithic)” 一词本…”)
- 2022年2月2日 (三) 00:41 Zhang3 讨论 贡献创建了页面File Management (创建页面,内容为“{{Stub}} {{Tone}} {{FirstPerson}} monolithic kernel 在单一mono (因此得名) 过程中处理一切。 而 Microkernel 由几个负责所有繁重工作的进程组成: 分配内存,管理进程 - 和管理永久数据存储,如硬盘或软盘。 这真是 文件系统相关的话题。 举例说,我们有一个文件系统服务。 它负责将文件系统的最新状态保存在软盘/HD(并最终还会有管道处理等..…”)
- 2022年2月2日 (三) 00:25 Zhang3 讨论 贡献创建了页面TLB (创建页面,内容为“'''Translation Lookaside Buffer''' ('''TLB''') 是一种内存页面转换的缓存,它在许多具有内存分页功能的系统中使用。 当处理器需要将给定的虚拟地址转换为物理地址时,首先要查询TLB。 在x86系统上,TLB未命中会由硬件透明处理。 仅当页面目录(page directory)/表条目(table entry)不存在于核心中时,才会通过页面错误异常通知操作系统。 == 使用含义 == 像常…”)
- 2022年2月2日 (三) 00:00 Zhang3 讨论 贡献创建了页面Memory Management Unit (创建页面,内容为“'''MMU''' 或 '''内存管理单元'''是许多计算机的组成部分,它们处理内存地址转换(translation),内存保护(Protection)以及不同计算机体系结构的其他特定目的。 == 地址转换 == MMU对计算机的主要服务是内存地址转换。 内存地址转换是将虚拟地址转换为物理地址的过程。 我们可以说虚拟地址被 “映射” 到物理地址。 这使我们能够以自己的方式创建内…”)
- 2022年2月1日 (二) 01:55 Zhang3 讨论 贡献创建了页面文件:Sized Portion Scheme.png
- 2022年2月1日 (二) 01:55 Zhang3 讨论 贡献上传文件:Sized Portion Scheme.png
- 2022年2月1日 (二) 01:55 Zhang3 讨论 贡献创建了页面文件:Flat list.png
- 2022年2月1日 (二) 01:55 Zhang3 讨论 贡献上传文件:Flat list.png
- 2022年2月1日 (二) 01:54 Zhang3 讨论 贡献创建了页面文件:Tree based.png
- 2022年2月1日 (二) 01:54 Zhang3 讨论 贡献上传文件:Tree based.png
- 2022年1月31日 (一) 13:35 Zhang3 讨论 贡献创建了页面Page Frame Allocation (创建页面,内容为“== 物理内存分配器 Physical Memory Allocators == 该部分的算法将在你需要时为你提供一个新的页面帧(Frame)。 此算法的客户端通常不在意具体返回的是哪个帧,尤其是,对多个帧的请求不需要返回连续帧 (除非你正在为DMA操作 ,例如网络数据包缓冲区,分配内存)。 以下文中N字母将代表以页面为单位的内存大小。 === 位图 Bitmap === 使用N/8字节的大数组用…”)
- 2022年1月30日 (日) 08:04 Zhang3 讨论 贡献创建了页面Memory Allocation (创建页面,内容为“:''本篇是关于内存分配(allocation of memory)功能的内容,该功能让进程可以分配到可用的内存空间 (如通过malloc() 和new())。 有关页面帧的分配,请参见 页面帧分配。'' 内核 的最基本功能之一是 内存管理,即内存的分配和释放。 系统刚刚启动时,内核是系统中唯一的进程。 但它并不孤单: BIOS 数据结构…”)
- 2022年1月30日 (日) 01:56 Zhang3 讨论 贡献创建了页面Monotasking Systems (创建页面,内容为“{{Stub}} Monotasking,也称为单任务系统,是在给定时间仅运行一个执行线程的操作系统。 当应用程序被执行时,它会控制整个计算机,仅保留操作系统的 “常驻” 部分,该部分处理系统调用,并在应用程序退出时重新加载系统的其余部分。 一般来说,这种系统对恶意软件几乎没有保护。 单任务系统有两种形式。 第一种形式是一次只能运行一个程序 (…”)
- 2022年1月30日 (日) 01:30 Zhang3 讨论 贡献创建了页面Multitasking Systems (创建页面,内容为“多任务系统是指操作系统 (甚至是系统中的扩展)在多个任务之间自动共享可用处理器时间的行为。 == 多任务系统的类型 == 有许多方法可以实现多任务处理。 === Cooperative Multitasking 协作多任务 === 对于 协作多任务,任务可以一直使用CPU,直到它自愿放弃CPU (可以是yields或exits)。 协作多任务系统的示例是pre-X MacOS或Windows 3.X。 在…”)