目标:带大家把 Linux 0.11 核心代码与操作系统的设计**啃下来
首发地址:公众号 无聊的闪客
互动方式:知识星球 『闪客的读者朋友们』
书籍购买:《Linux 源码趣读》
-
第一部分:进入内核前的苦力活
-
第二部分:大战前期的初始化工作
-
第三部分:一个新进程的诞生
-
第四部分:shell 程序的到来
-
第五部分:从一个命令的执行看操作系统各模块的运作
你管这破玩意叫操作系统源码 — 像小说一样品读 Linux 0.11 核心代码
目标:带大家把 Linux 0.11 核心代码与操作系统的设计**啃下来
首发地址:公众号 无聊的闪客
互动方式:知识星球 『闪客的读者朋友们』
书籍购买:《Linux 源码趣读》
第一部分:进入内核前的苦力活
第二部分:大战前期的初始化工作
第三部分:一个新进程的诞生
第四部分:shell 程序的到来
第五部分:从一个命令的执行看操作系统各模块的运作
推荐学习工具方法:学习工具方法
啥時更啊?這系列太牛了
奈学教育说话不算话,承诺返费各种延期后,又找各种理由不返费,最垃圾的平台,大家别轻易上当
New to all of this
linux 0.11 是否带有网络驱动部分
赞赞人气
As far as I know, WeChat MP platform link is not always available and has difficult to be collected into favorites folder.
Why not switch to GitBook?
写的太棒了,催更催更催更催更
这可能是见过的最佳快速提纲性入门 kernel 资料了
看开始的几章,一直有个疑惑,使用sub对寄存器置零和跟用xor对寄存器置零有没区别?
我之前看到有文章说,微软常用xor对寄存器置零,开始不太明白,后来想明白了,这个是因为访问速度不同,如果使用直接mov ax,0,这个0实际是存在内存中的,哪怕立即寻址,也是要再次访问内存,内存的访问速度比寄存器的访问速度低一个量级,隔着一个量级,就意味着少运行了几十上百条指令。
看到用sub置零,就疑惑,难道xor是不能对特殊寄存器进行操作吗?
不管这种方式算不算写小说,反正成功骗了我坚持看下去,这就对了
Help me learn?
老哥建议自己写一个简单的,容易理解
博主你好,请问下你用的什么工具把markdown转成pdf的?我看你转换后的pdf格式特别整洁
大佬加油!
首先说老哥牛逼
催更+1
希望能写源码,我们跟着一起练,哈哈哈,当然知识建议,也可以自己找资料写。
汇编 存在多个版本的语法,怎么理解呢。是编译器层次 还是 cpu 层次,中间还间隔了那些步骤呢。
因为已经给了在Windows版本下可以直接运行0.11内核版本了,想知道在此基础上如何增加网络协议栈?
就是一个方面是要如何对接boch的网卡,能够驱动这个网卡,这个不知道该怎么做?
另外一个方面就是去实现下网络协议栈,这个我觉得是ok的。
我是小白,请问如何在自己的电脑上运行调式这个kernel呢
我瞭解的是應該是為了相容性的考量
IBM PC XT/AT 是有公開BIOS 程式碼的 從Boot sector 讀取到RAM 的地方就是 07C0:0000
以那個PC BIOS 誕生時的情況 要說是跟Bell Lab & C 語言
我是不相信的 :P
應該是IBM PC 初代 640KB 與 PC-DOS 1.0 所需記憶體的綜合考量下決定的
在前面讲启动的时候,硬盘第2-5扇区的内容应该是setup.s, 但是后面讲文件系统,第2扇区应该是superblock, 这个如何理解,没想通
Device Information
App Version 6.0-release-release
Version Code 87
Device Manufacturer samsung
Device Name a11q
Device Model SM-S115DL
Device Brand samsung
Android Version 11
CPU Arch arm
Storage Total 22.22GB
Storage Free 0.57GB
RAM Total 1.77GB
Is Device Rooted false
请问:学这个的前置知识是什么?
有码云老铁,github打开太慢了
那假如 mov ax,cx 这行代码位于最终编译好后的二进制文件的 0x08 处,那 go 就等于 0x08,而最终 CPU 跳转到的地址就是 0x90008 处。
应该是mov ax, cs
linux0.11中信号处理测试,借用库中 linux-0.11-quickstart ,启动系统后,在linux0.11中测试SIGINT信号,但设置的信号处理函数 (signal(SIGINT, handler)), 当输入 Ctrl+C 时,无法进入 handler 函数。
通过在内核 do_signal 中增加调试信息,确认当输入 Ctrl+C 时,已进入 do_signal ,并且 sa_handler 确实是设置的信号处理函数。
请问,您测试过程遇到郭这个问题吗?
是因为您个人比较熟悉还是这个版本有什么重大突破?
我几个月前提交了一份PR #21 ,但到现在也没有回复,可以帮忙看一下吗? @sunym1993
考虑出一版md版本吗,可以在git上直接pr
当进入main函数之后,第一次fork之前,也就是第二章的主要内容,已经进入了protected mode,为什么还能直接读取实地址下的值呢?例如“第16回控制台初始化”一节中,可以读取0x90000处的光标地址。这个时候已经处于protected mode了,这个地址是一个线性地址,会被TLB转换成物理地址,也就是另一个地址。
我肯定是某处想错了,请大佬们纠正!谢谢。
发现了宝藏,哈哈!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.