x01.os.24: 来点代码】的更多相关文章

<Orange'S 一个操作系统的实现>源代码 <Linux 0.11 内核完全注释>源代码 linux-0.12 源代码:  解决了 Not Owner 问题 闲来无事,在 64 位 ubuntu-16 中,把 Orange'S 和 linux-0.11 又重新实现了一遍,运行无误. 这两本书,可在百度中搜索获取,自不待言. Orange‘S 需要注意的是,为 <sys/cdefs.h> 需安装 libc-dev-i386; 终端运行如下命令即可: sudo apt…
准备工作  1.确保是 win xp,如是 win 8,运行 nasm 需按提示同意安装组件.  2.确保 src 和 z_tools 在同一目录下,nasm 已包含在 z_tools 文件夹中.  3.bmp.nasm 需用 nasm.exe 编译,格式为 -f win32,参看 app/makefile.  4.app/haribote.rule 文件作了少许修改.使用方法  1.进入 src 文件夹,双击 cmd.bat,在命令行窗口分别输入如下命令即可: cd apilib make c…
时间都去哪儿了 老帕的“花儿为什么这样红”,三分钟引起六次欢呼,却败给了张碧晨.试想一下,如果是人气更高的陈冰,即使唱得和张碧晨一模一样,可能仍然不敌老帕,为什么张碧晨就能取胜呢?有这么个笑话:一人弹琴无人听,但一老妇人听得却潸然泪下.原来她的亡夫是弹棉花的!这虽是个笑话,却一语道破玄机.歌声动人,除了唱功,还有感情因素在里面.假如老帕的”花儿为什么这样红“是 1 分, 那么,张碧晨的父女情为 1 分, ”时间都去哪儿了“为 1 分.2 : 1, 张碧晨胜出也就理所当然了. shell 的实现…
停了两天电,忽然得空闲.找来破吉他,已然不成弦.           丁丁当当敲,敲到电来到.为把时间捡,熬夜三四点. 从我的置顶随笔 x01.Lab.Download 中下载 x01.os.12.tar.gz, 解压后由终端进入 os 目录,输入 bochs  命令即可见到如下界面: 注意下面的四行,分别是 open,write, read, unlink 文件.调用代码如下: void TestA() { int fd, n; char path[] = "/test"; char…
进入内核后,当然不能无所事事.先创建三个进程,分别打印 A,B,C.虽然只是简单的打印,但却是一切扩展的基础,不可等闲视之. 进程切换,涉及一系列的寄存器需要保护,于是,就有了 ProcessStack 结构,代码如下: typedef struct { u32 gs; u32 fs; u32 es; u32 ds; u32 edi; u32 esi; u32 ebp; u32 KernelEsp; u32 ebx; u32 edx; u32 ecx; u32 eax; u32 RetAddr;…
在 x01.os.7 中,借助 freedos,学习了保护模式.但操作系统必须完成引导:boot, 加载内核:loader,kernel,进而管理process,memory,file等. 引导比较简单,开机启动时,CPU 采取硬的方式,直接把 BIOS 载入内存某处运行.这就是电脑启动时按 DEL 键可以看到的画面.此时,无硬盘可以,无内存则不可以.BIOS 是一个只读芯片,但我认为它仍有可写的部分,否则,启动盘设置的保存,就说不通.BIOS 退出时,它会检测启动盘 0 扇区的最后两个字节,是…
傻子一样的等 昨日出差,办完事后,下午 2:30,准备进长途汽车站买票回家,被一人拦住,说可以带我进去,车马上就要开了,买票来不及.我以为是汽车司机,就跟了进去.进去后,他打了个电话,说 3:30 车才到,让我先把票买了.我把钱给他,他拿了个代客车票的单子,写了几个字给我,说上车时再换票,然后就走了.人已走,车没来,我拿着写了字的纸,感觉像傻子一样的等.3:30,车来了,我凭那张纸,顺利的上了车.是为记. 保护模式 实模式采取 segemnt:offset 的方式,表示 20 位的内存地址.保护…
硬盘不同于软盘,它是要分区的.这时,mbr(master boot record)便不可少了.安装 os 硬盘的第一扇区,开始有一小段不多于 446 字节的程序,然后是分区表 512-446-2 字节,然后是引导标志 0xAA55 两字节.这一小段程序,便是 mbr 的主体.mbr 首先将其自身复制到 0x0600 处,代码如下: ; 0x7C00 => 0x0600 mov si, sp push si mov di, 0x0600 mov cx, 0x200 cld rep movsw 这是…
为什么学习 linux 正如不能依靠美国的 GPS 为我们的导弹指示目标一样,很难想像用运行 windows 的电脑去同美国进行信息战.而朝鲜的网络崩溃,再次警示国人,信息战.网络战离我们并不遥远.linux 的开源,可以按自己的要求进行深度定制,无疑是极佳选择. 为什么是 linux-0.11 现在的 linux-3.18,近千万行代码,即使是 linus,也没有全部看完,更不用说拿来学习了.而 linux-0.11,只有万余行代码,拿来学习,从量上是正好. 进入 linux-3.18/arc…
linux 0.0 是一个丢失的版本,但赵炯老师又在 linux 0.11 的基础上,使它起死回生.www.oldlinux.org 有大量资源可供下载,值得一看. 1.要编译运行,首先需安装:sudo apt-get install bin86,取其 as86,ld86 也. 2.makefile 有两点要注意,一是 ld  的入口为 0,二是使用 objcopy 对 head 进行转换拷贝. 3.代码可到我的置顶随笔 x01.lab.download 中下载 x01.los.0.tar.gz…
张碧晨在韩国学的不是技巧,而是基本功:气息!声音由气息托着,似真声而不是真声,似假声又不是假声,所以才能在动听的地方唱得更动听.编程也是一样,基本功很重要:内存!所谓的黑客高手,攻击的一大手段,便是利用了内存泄漏. 纸娃娃 操作系统,看上去很美,效果图如下: 如果细究代码,发现只是一张皮而已.但内存把控能力,却不容小视. *((int*)0x0fe8) = (int)p; 这是干什么?完全是在操作内存啊!这样的例子,比比皆是.在程序 a.hrb 的讲解中,更干脆用二进制编辑器打开,直接操作了一把…
在 windows 中写操作系统,需要一系列的辅助工具.在此,要感谢川谷秀实!所有工具,都在 z_tools 文件夹中.有了大师的帮助,不妨也来尝试在 windows 中写一把 OS. 源代码及工具可到 x01.Lab.Download 中下载.进入 src 文件夹,只有两个文件,一个是 run.bat, 一个是 boot.s.boot.s  都是大同小异的,skip!run.bat 内容如下: ..\z_tools\nask boot.s boot.bin boot.txt ..\z_tool…
学习的最好方法就是看代码,所以我们不妨跟着 IPC 的调用路线图,来学习学习 IPC. 从 x01.Lab.Download 下载代码后,首先进入 main.c 文件,在 TestA 中,有这么一句:Print("<Ticks:%x>", GetTicksIPC()); 其中,GetTicksIPC 就是通过 IPC 获取时间 tick 数.进入 GetTicksIPC,会看到如下代码: m.type = M_GetTicks; _SendReceive(M_Both, T…
DOS 功能调用(INT 21)-------------------------------AH = 0-2E 适用 DOS 1.0 以上版本AH = 2F-57 适用 DOS 2.0 以上版本AH = 58-62 适用 DOS 3.0 以上版本------------------------------- AH = 00功能:程序终止(同 INT 20h)调用参数: CS = 程序段前缀 AH = 01功能:键盘输入并回显返回参数: AL = 输入字符 AH = 02功能:显示输出调用参数:…
原文:http://budairenqin.iteye.com/blog/2215899 这篇分析一下accept的细节, 我觉得网络IO相关开发很多时候不能仅仅局限于java层, 尤其从accept开始一个连接诞生了, 什么拥塞控制啊, 滑动窗口啊等等一系列底层的问题可能就开始会渐渐困扰到你了, 这一章尝试先从linux内核的tcp实现开始分析accept 源码来自linux-2.6.11.12, 还参考了[TCP_IP.Architecture,.Design.and.Implementat…
24点 24点是一个非常经典的游戏,从扑克牌里抽4张牌,其中J=11,Q=12,K=13,然后经过+,-,*,/,(),的计算后,使得计算得值为24,例如抽到1,2,2,5四张牌,那么 (1+5)*(2+2)=24: 这就是可以凑成24点的一种情况,作为一个经典题目,在leetcode上也有对应的题目进行练习 PS 看见知乎大佬有一种必24点的算法,但是要用到阶乘和次方 式子为(a0+b0+c0+d0)! =24 一.总体思路 1.因为是简单暴力向的,所以我们的做法就是直接穷举出所有可能的情况,…
Linux Inside 是中文版,值得下载一读. 先把目标设低点,开机进入后,在屏幕上打印“Loading..."即可.由于要在 bochs 中运行,首先就是安装 bochs.Oldlinux 中有相关资源,可自行下载.winxp 和 linux 的配置脚本如下: # for windows bochs config megs : romimage: file=$BXSHARE/BIOS-bochs-latest vgaromimage: file=$BXSHARE/VGABIOS-lgpl-…
从 x01.Lab.Download 中下载源代码,进入工程目录,make 后再 bochs,即可见到如下界面: 随便打几个字,ok!按 F2,可切换到第二个终端,界面如下: 当然,按 F3 还可切换第三个终端,但同第二个基本一样,就不再浪费空间了. 输入输出,涉及到键盘和显示器.键盘,主要是操作 8048 编码器,8042 控制器.显示器,则是操作 VGA 系统的寄存器.方方面面,非一人之力,非一时之功,是一个逐渐完善积累的过程.于渊讲解详细精当,只是切换 tty 时,他的是 Alt + F1…
M:存储器A:累加器R:寄存器SEGR:段寄存器IMM:立即数X:标志位状态依运算或操作结果而定U:相应标志位未定义-:不影响 数据传送指令 时钟数 访问次数 字节数 对标志位影响 指令意义 MOV M,A 10(14) 1 3 - A-->M MOV A,M 10(14) 1 3 - M-->A MOV R1,R2 2 - 2 - R2-->R1 MOV R,M 8(12)+EA 1 2-4 - M-->RMOV M,R 9(3)+EA 1 2-4 - R-->MMOV R…
这只是一点准备工作.为了显示字符串,需要调用中断:int  0x10 (AH=0x13).具体参数设置,参考我的归纳整理如下: INT 10 (AH = 0) -----------------功能:设置显示方式调用参数:    AL = 00:40 * 25 黑白方式         01:40 * 25 彩色方式         02:80 * 25 黑白方式         03:80 * 25 彩色方式         04:320 * 200 彩色图形方式         05:320…
1.统计某人的代码提交量,包括增加,删除 git log --author=-- --until=-- --pretty=tformat: --numstat | awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' 2.仓库提交者排名前5(如果看全部,去掉head管道即可)…
import java.util.Arrays;import java.util.Scanner; public class Test07 {    public static void main(String[] args) { Scanner scn = new Scanner(System.in); int shu[] = new int[4];        for (int i = 0; i < 4; i++) {            shu[i] = scn.nextInt();…
[0]README 0.1) 本文旨在演示如何利用 bximage 创建虚拟硬盘: 0.2) 利用 os 读取硬盘参数, source code from orange's implemention of a os , for complete code , please visit https://github.com/pacosonTang/Orange-s-OS/blob/master/a.tar:…
作者:Yazeed Bzadough 译者:小维FE 原文:freecodecamp 为了保证文章的可读性,本文采用意译而非直译. 90%的规约,10%的库. Redux是迄今为止创建的最重要的JavaScript库之一,灵感来源于以前的艺术比如Flux和Elm,Redux通过引入一个包含三个简单要点的可伸缩体系结构,使得JavaScript函数式编程成为可能.如果你是初次接触Redux,可以考虑先阅读官方文档. 1. Redux大多是规约 考虑如下这个使用了Redux架构的简单的计数器应用.如…
[练习3.22] a.提出支持栈的Push和Pop操作以及第三种操作FindMin的数据结构,其中FindMin 返回该数据结构的最小元素,所有操作在最坏情况下的运行时间都是O(1). b.证明,如果我们加入第四种操作DeleteMin,那么至少有一种操作必须花费Ω(logN)时间. [练习3.23] 说明如何用一个数组实现三个栈. [练习3.24] 在2.4节中用于计算斐波那契的递归例程如果在N=50下运行,栈空间有可能用完吗,为什么? Answer: [练习3.22] a.最简单的想法就是再…
鸿蒙系统的代码编译环境需要linux系统,软件开发和代码烧录需要windows环境. Linux环境 参考官方链接:https://gitee.com/openharmony/docs/blob/master/quick-start/搭建环境.md 系统:linuxmint19(基于ubuntu) 1.环境安装比较顺利,遇到的问题都是和python的不正确安装有关.我的系统版本较低,采用的python3.8源码安装方式,注意点如下: 1)python版本3.7以上,命令或软连接python.py…
低代码开发平台(LCDP)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台.让具有不同经验水平的开发人员可以通过图形化的用户界面,通过拖拽组件和模型驱动的逻辑来创建网页和移动应用程序. 低代码的核心是呈现.交互和扩展,其中呈现和交互需要借助自行研发的渲染引擎实现.而此处的扩展特指物料库,也就是各类自定义的业务组件,有了物料库后才能满足更多的场景. 在 4 个月前研发过一套可视化搭建系统,当时采用的是生成代码的方式渲染页面.而本次研发采用的则是运行时渲染,功能比较基础,基于Rea…
1.首先运行如下命令  sudo apt-get install wget bc build-essential gawk genisoimage 2.下载如下资源,make all 即可 http://pan.baidu.com/s/1nvc09yp 本来有此两条已经足够了,发布时却来了个不足 150 字,内容全部丢失.这应该是 bug,即使不让发布,也没有必要丢失.没办法,只好说点废话. 第一条仍然无话可说. 第二条,相信能帮到你,因为下载时,尤其 syslinux 耗时不少且不成功,非常之…
新组装了个 64 位电脑,i5 CPU,进入 ubuntu 后,又是一通搜索设置,整理如下,以备后用. 安装 .dep 包 sudo dpkg -i [filename.dep] 在 ubuntu 中访问 windows 分区 sudo ntfsfix [/dev/sda1] 安装 flash 插件 sudo apt install adobe-flashplugin 自动上网链接(DSL) sudo pon dsl-providersudo poff 输入法配置 im-config 安装 bi…
在 linux 中编译 linux, 于是 linux 便有了再生能力.这不同于自然界的缓慢进化,可用神速来形容.—— 和强大的 windows 相抗衡,便是证明! 我在 ubuntu 中的编译方法如下: 1.在 www.kernel.org 中下载 linux-3.18 内核源代码并解压到 /home/linux,由终端进入该目录,输入命令:make help ,可先看看所提供的操作. 2.输入: sudo make i386-defconfig ,可获取默认配置. 3.输入: sudo ma…