一、代码结构
|-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.接下来不详 ##########################################
四、内存划分
五、目标
1.通信的基础了解
2.最终能够实现网络连接、最简单的网络命令
3.更新以后放在这里了 https://github.com/Soap13/PingPangOS/tree/OS/new%20os%20process