《ORANGE-s-一个操作系统实现》尾声(9) Posted on 2018-03-15 | In 操作系统 , ORANGE's的学习 | | Visitors: 让mkfs()只执行一次目前我们的操作系统每次启动都是“全新的”,因为每一次init_fs()都会调用mkfs()刷新硬盘,每次启动时可以保证文件系统是一样,但它也存在明细的坏处,那就是上次建立的文件到下一次启动时就不见了。下面就来改变现状: Read more »
《ORANGE-s-一个操作系统实现》内存管理(8) Posted on 2018-03-14 | In 操作系统 , ORANGE's的学习 | | Visitors: fork认识fork生成一个子进程的系统调用被成为fork(),操作系统接到一个fork请求后,会将调用者复制一份,这时就会有两个一模一样的进程同时进行。其中子进程是从父进程得到数据、堆栈以及代码而来的。我们最先要解决的问题是,谁作为最开始的父进程?参考Linux以及Minix可以知道是init进程,所以我们先写出Init进程: Read more »
《ORANGE-s-一个操作系统实现》文件管理(7-2) Posted on 2018-03-10 | In 操作系统 , ORANGE's的学习 | | Visitors: 在硬盘上制作一个文件系统 Read more »
《ORANGE-s-一个操作系统实现》文件管理(7-1) Posted on 2018-03-10 | In 操作系统 , ORANGE's的学习 | | Visitors: 在本部分,将通过硬盘驱动程序直接操作硬盘。在编写这个文件系统的过程中,通过几个消息、用户进程、文件系统和驱动程序之间就可以方便的协同工作。 Read more »
《ORANGE-s-一个操作系统实现》进程间通信(6-1) Posted on 2018-03-07 | In 操作系统 , ORANGE's的学习 | | Visitors: 微内核与宏内核 微内核:让内核只负责它必须负责的工作,比如进程调度,将内核工作简单化的思想,便是微内核的基本思想。 宏内核:所有工作通过系统调用扔给内核态的做法,完成具体任务时,用户进程通过系统调用让内核来做事。 Read more »
《ORANGE-s-一个操作系统实现》输入输出系统(5-2) Posted on 2018-03-06 | In 操作系统 , ORANGE's的学习 | | Visitors: 显示器初识TTYTTY在Linux中就是终端。当按下ALT+F1、ALT+F2、ALT+F3等组合键时,会切换到不同的屏幕。对于不同的TTY可以理解成下面: Read more »
《ORANGE-s-一个操作系统实现》输入输出系统(5-1) Posted on 2018-03-06 | In 操作系统 , ORANGE's的学习 | | Visitors: 键盘操作系统需要交互,首先就是键盘 从中断开始:键盘的初体验 Read more »
《ORANGE-s-一个操作系统实现》进程(4-2) Posted on 2018-03-04 | In 操作系统 , ORANGE's的学习 | | Visitors: 多进程前面我们完成了ring0到ring1的跳转,它可以随时被中断,可以在中断处理程序完成之后被恢复。进程此时已经有了两种状态:运行和睡眠。接着我们只需要让其中一个进程处在运行状态,其余进程处在睡眠状态即可。 添加一个进程体 Read more »
《ORANGE-s-一个操作系统实现》进程(4-1) Posted on 2018-03-04 | In 操作系统 , ORANGE's的学习 | | Visitors: 进程概述进程介绍系统中运行的若干进程可以类比成一个人在一天内要做的若干样工作:总体看来,每样工作相对独立,并可产生某种结果;从细节上看,每样工作都具有自己的办法、工具和需要的资源;从时间上看,每一个时刻只能有一项工作正在处理中,各项工作可以轮换来做,这对于最终结果没有影响。进程类似,从宏观上看,它有自己的目标,或者说功能,同时又能受控于进程调度模块,从微观来看,她可以利用系统的资源,有自己的代码和数据,同时拥有自己的堆栈;进程需要被调度,就好比一个人轮换做不同的工作。 Read more »
《ORANGE-s-一个操作系统实现》内核雏形(3-2) Posted on 2018-02-28 | In 操作系统 , ORANGE's的学习 | | Visitors: 跳入保护模式首先是GDT以及对应的选择子,我们只定义三个描述符,分别是0~4GB的可执行段、0~4GB可读写段和一个指向显存开始地址的段。 Read more »