进入保护模式(十八)持续更新篇

本文记录了一个简易操作系统从设计到实现的过程,包括代码结构、修改记录、问题解决及内存分配等内容。作者逐步解决了用户态权限、多任务切换等问题,并计划实现网络功能。

一、代码结构

|-include
| |
| |_interrupt.h      #中断的函数头文件
| |
| |-io.h             #输入输出函数的头文件
| |
| |-process_struct.h #进程处理的结构体文件  
| |
| |-process.h        #进程的头文件
| |
| |-gloable.h        #放一些全局的变量例如:选择子
| |
| |-unistd.h         #系统调用的函数对应的选择       
| |
| |-pci.h            #pci定义的结构体   
|
|-kernel
| |
| |-interrupt.c #中断处理的C文件
| |
| |-kernel.asm  #内核文件
| |
| |-process.c   #进程处理的文件
|
|-lib
| |
| |-klib.asm    #核心函数文件
| |
| |-printf.c    #输出扩展C文件
| |
| |-sys_call.asm #系统的函数
| |
| |-sys_printf.c #扩展的系统输出函数
| |
| |-pci.c        #对pci进行处理的
|
|-mbr.asm

 二、修改记录

 

############################################################# ##后面的修改将要放在这里了 #############################################################

############################################################# ##2014-02-05-1 ## ##将要把显示的GDT权限修改为 用户级别了 ## ##添加的GDT位置从47开始的也就是说已经有5个了,从第六个开始 ## ##添加任务切换的需要 ## ##编译采用了makefile的使用了(还没有完工) #############################################################

############################################################# ##2014-02-07-1 ## ##用户态的跳转实现了,发现一个BUG,用户态不能操作端口 ## ##打算采用系统调用的方式解决这个问题 ## ##等待显示先切换 ## ##编译采用了makefile的使用了(还没有完工) #############################################################

############################################################# ##2014-02-19-1 ## ##修复BUG多任务的切换出错 ## ##原因在与当在GDT中添的LDT少*2造成LDT占用了上一个LDT的值 ## ##修改位置进程代码unsigned int ldt_position=LDT_BASIC+(proc_count-1)*8*2; ## ##错误原因可能是ldt末16位要为0;或者是因为占用了上个LDT的一半 #############################################################

############################################################# ##2014-02-23-1 ## ##尝试添加一个系统调用的函数 ## #############################################################

############################################################# ##2014-02-26-1 ## ##修复任务切换给TSS的堆栈问题 ## ##之前是给的用户态堆栈修改后给的是任务保存信息的数据段 ## #############################################################

############################################################# ##2014-03-12-1 ## ##添加了对PCI的遍历操作,接下来想处理对PCI网卡的驱动 ## ##遇到一个问题,调用C函数的时候,使用ebp要小心处理 ## ##原因调用过程中ebp保存esp,然后esp留空间作为局部变量,最后lea ret #############################################################

 

三、问题以及解决

########################################## ## ##后面的问题和解决思路就放在这里了 ## ## 2014-02-08 ##########################################

########################################## ##A:用户态不能操作端口 ########################################## ##   1.打算采用系统调用的方式解决 ##   2.inx 0x80的用户态实现 ##   3.通过数组的方式寻址 ##   4.如果有参数的问题如何解决 ##---------------------------------------- ##   修改于 2014-02-09 ##---------------------------------------- ##   仔细看了下觉得还是很复杂的 ##   设计的问题有参数传递通过寄存器 ##   环境的保护,堆栈的切换 ##########################################

########################################## ##B:多任务的添加 2014-02-09 ########################################## ##   1.要知道安装的gdt位置或者个数是多少 ##   2.暂且规定每个任务一个注册的LDT ##   3.每个任务的LDT个数有两个 ##   4.决定共享JDT存放的位置了 ##########################################

########################################## ##C:打算实现一个网卡的驱动 2014-03-12 ########################################## ##   1.实现了PCI的遍历 ##   2.接下来不详 ##########################################

四、内存划分

进入保护模式(八)简单OS内存使用分布

五、目标

1.通信的基础了解

2.最终能够实现网络连接、最简单的网络命令

3.更新以后放在这里了 https://github.com/Soap13/PingPangOS/tree/OS/new%20os%20process

转载于:https://my.oschina.net/findurl/blog/204127

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值