操作系统
stophin
喜欢画画,电脑,英语也很在行
展开
-
colinux-cetos53-win7交叉编译环境配置
写自己的操作系统的时候需要使用linux来编译.c程序,生成elf格式的.bin程序,将它拷贝到操作镜像文件中,才能被引导区的程序调用。最常用的是gcc,ld和objcopy。gcc用于编译出链接用的.o文件,ld用于将.o文件链接成elf格式的文件,这一步最重要。在windows下是没有很好的办法生成elf文件。试过cygwin,cygwin的初衷是,在windows下模拟l原创 2013-10-29 23:16:38 · 1798 阅读 · 0 评论 -
使用C语言的struct来实现C++的class
使用C语言来模拟C++中的类以及继承原创 2017-01-21 17:42:52 · 8796 阅读 · 0 评论 -
双向循环型多链接链表
大家都应该知道链表。定义:双向循环链表链表就是将一些不连续的空间(里面存储着不同的值)通过自身的指针串联起来。学习链表,最先熟悉的应该是单链表,就像火车一样,从头开始,指针指向下一个,下一个下一个,一直到为NULL为止。然后是循环链表,最终不是NULL而是又重新指向头,这种链表有一个好处就是不再需要这个所谓的“头”。比如一个管理该链表的容器(比如提供插入、删除、查询等功能的容器),有一个指原创 2017-05-16 14:56:37 · 665 阅读 · 0 评论 -
一步步写操作系统(五) 任务切换
一步步写操作系统(四)4.任务切换其实在一开始,各种操作系统的书籍都着重在讲任务,并且在许多计算机考试中也一直在问:操作系统的任务切换、任务有哪些状态等等。初学者一看就知道这是很高深的东西,并且有的研究得很透彻,可是对当时的初学者的我来说,没有一个实际的例子,总是讲一些理论的东西,并不是很好理解,就算理解了,如果在实际动手写的时候,不知道又会出现什么问题呢?俗话说实践出真知,操作系统这原创 2017-10-29 16:32:48 · 1487 阅读 · 4 评论 -
一步步写操作系统(一) BOOT启动
一步步写操作系统(一)0.介绍很久之前就有了写一个操作系统的想法,参考了很多书籍,主要包括《自己动手写操作系统》(余渊)和《30天自制操作系统》(川合秀实),总体感觉就是,川合秀实版本的比较注重界面描绘与优化,介绍了内存分配和时钟函数等,但是对于操作系统底层并没有做太多介绍,使得读者知其然而不知其所以然。余渊版本的就比较细致,介绍了GDT,LDT,IDT等等,但是最终的成品也可以看到,使用原创 2017-10-29 14:19:20 · 4232 阅读 · 3 评论 -
一步步写操作系统(二) Boot启动 解决boot过大的问题
一步步写操作系统(二) 2.Boot启动 加载kernel到0x0上一贴介绍了将kernel加载到0x9000的一般Boot,这里参照余渊版本,将kernel加载到0x0去,方便以后的调试。相对于一般的启动,高级的启动顺序应该是:设置段寄存器,寻找存储器中的loader并加载运行,在loader寻找存储器中的kernel代码并加载,设置GDT切换到保护模式,在保护模式中跳转到kerne原创 2017-10-29 14:20:09 · 1735 阅读 · 3 评论 -
一步步写操作系统(三) C语言和asm语言的相互调用
一步步写操作系统(三) 3.C语言和asm语言的相互调用前面的boot和loader都准备好了,就差kernel了。首先我们要明确,kernel用什么语言写。boot和loader使用asm语言编写,是因为系统的特性,它需要最基本的元素来操作磁盘、端口、内存。然而如果kernel使用asm编写,对于开发难度来说是一个很大的挑战。虽然人生要面临很多挑战,我们都因该从容接受,但是对于只要了原创 2017-10-29 14:21:05 · 9872 阅读 · 7 评论 -
一步步写操作系统(四) 内存管理
一步步写操作系统(四)4.内存管理在弄清楚了boot以及asm和c语言之间的调用关系以后,写底层就已经没有任何问题了。一些机制,比如中断、调用门、异常等等,都是可以通过这一个简单的语言调用关系来书写出一个完整的功能。在我看来,现在不忙讨论这些机制的问题,因为这些太超前。不妨先来讨论一下和编程更接近的问题,也就是内存分配。这个重要但是会比那些机制更简单。之前在帖子中提到使用C语言的str原创 2017-10-29 15:45:45 · 576 阅读 · 0 评论 -
Linux下Git和Svn的使用
SVN:1、安装SVN:sudo apt install subversion2、检出: svn checkout 地址3、上传新文件:svn add 文件名 svn commit -m "备注"4、修改代码:直接输入:svn commit -m "备注"5、删除文件:svn delete 文件名 ...转载 2018-03-20 16:20:43 · 781 阅读 · 0 评论