E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Linux-0.11
linux-0.11
,任务1的用户态堆栈,copy-on-write之后的堆栈!
下面是copy-on-write之后和之前的内存页,copy-on-write之前0x401ee50位于user_stack[]数组内。user_stack地址:0x1de6c。0x1ee5c处的地址0x5412既head.s中L6的地址:$L6。copy-on-write之后位于0xffd000-0xffe000对应的内存页中。下面是copy-on-write之前和之后页表项的变化:看来Linu
sitelist
·
2013-01-25 07:00
linux-0.11
调试教程,head.s页表项
0xffe000-0xffefff是进程1的页表0x1000是进程0的页表。
sitelist
·
2013-01-23 19:00
linux-0.11
调试教程,task2参数所在内存页的页目录项和页表项
此文内容在do_execve()函数的change_ldt()函数之后create_table()函数运行之前的情形。change_ldt()函数会调用put_page()函数把参数内存页放置到当前任务的线性地址的末端。第一步:在页目录表里找到任务2的参数内存页所在的页目录项,算出页表所在的地址0xffd000,因为每个进程64M对应16个字的空间任务2的在第32-47个字处。第二步:根据页表里面
sitelist
·
2013-01-23 14:00
linux-0.11
调试教程,task2的参数,copy_strings()函数和create_tables()函数的关系
下面是create_tables运行之前的用户栈的情况下面是create_tables运行之后的用户栈的情况init/main.c文件部分内容:staticchar*argv_rc[]={"/bin/sh",NULL};staticchar*envp_rc[]={"HOME=/",NULL};0x002f3d45和0x4d4f4800按照字节顺序由高到低表示为:484f4d453d2f00既HOM
sitelist
·
2013-01-22 22:00
linux-0.11
调试教程,setup.s中的硬盘参数表
setup.s获取显卡信息和硬盘信息,因为硬盘信息的地址在中断向量int0x41处既0x0000:0104处,所以bootsect.s中把Image中的system部分移到了0x10000开始的地方,(而不是直接移到0x0000处,防止覆盖掉硬盘参数表的地址和硬盘参数表,因为硬盘参数表的地址在0x9fc0:0x003d处!),setup.s里面的代码取得硬盘参数表后再把0x10000
sitelist
·
2013-01-21 13:00
linux-0.11
调试教程,bootsect.s文件调试,Loading system ...
Image中的bootsect部分被BIOS加载到0000:7c00--0000:7e00,正好一个扇区,也只有这一个扇区。你应该能看到0X301既根设备号,还能看到aa55了。然后会把自己加载到0x90000-0x90200下面把setup部分加载到0x90200-0x90a00,共4个扇区。到这里你应该看到Loadingsystem...了
sitelist
·
2013-01-18 19:00
linux-0.11
调试教程,con_init函数和右上角的EGAc
最后4个字母是EGAc对应8个字节0x07470745 0x07630741。因为是EGAc,所以0xb8000是显存的起始地址,而这时origin也设置为video_mem_start既0xb8000。所以可以在0xb8030既第24个字母处(每个字母用2个字节表示),设置badc。#defineORIG_VIDEO_MODE ((*(unsignedshort*)0x9000
sitelist
·
2013-01-17 13:00
linux-0.11
调试教程,minix文件系统1.0上篇(01),硬盘基本参数hd_info
下面是在mount_root下断点。地址0x191e4是hd_info[0]的结构地址,而0x90080是setup.s中设置的。相关代码是:for(drive=0;drive<2;drive++){ hd_info[drive].cyl=*(unsignedshort*)BIOS; hd_info[drive].head=*(unsignedchar*)(2+BIOS);
sitelist
·
2013-01-16 19:00
linux-0.11
调试教程,minix文件系统1.0,上篇(02)sys_setup
下面在mount_root下断点的情形。下图可以看出为0x1fa58的buffer_head结构中设备号为0x300,块号为0。既硬盘的第一个块。上面有分区信息。高速缓存区块的地址为0x3ffc00。上图可以看出硬盘的第一个块的分区信息,从第二行的最后两个字可以看出nr_sects为0x1d87f。structpartition{ unsignedcharboot_ind; /*0x
sitelist
·
2013-01-16 18:00
linux-0.11
调试教程,timer_interrupt,内核态发生的时钟中断(01)
下面的是进程1,mount_root()时发生时钟中断的情形。第一行和第二行和第三行的前两个字是时钟中断压入堆栈的第四行最后一个字,0x000120f9是sys_setup()函数中mount_root()调用后的返回地址。第四行的前3个字和第三行的后2个字,共5个字是mount_root函数中压入堆栈的,分别是ebp,未知,edi,esi和ebx。
sitelist
·
2013-01-15 19:00
[置顶]
linux-0.11
调试教程,源起,从linux内核完全注释的几处错误说起
本系列文章调试
linux-0.11
,大部分都是一些新内容,小部分是对代码的一些印证。
sitelist
·
2013-01-15 11:00
linux-0.11
调试教程,task3(04),sa_restore函数
返回用户态之后,先运行的是用户定义的信号处理程序,既sa_handler,然后sa_handler函数最后是ret!!!ret之后运行sa_restore函数,sa_restore函数最后也是ret!!!再返回到int0x80下面的语句,既old_eip位置处继续运行。所以第一需要改变的是信号处理所在的用户程序的内核态堆栈中的eip,第
sitelist
·
2013-01-14 07:00
linux0.11调试教程,task3概述
linux-0.11
调试教程,task3(01),/etc/rc文件
linux-0.11
调试教程,task3(02)
sitelist
·
2013-01-12 18:00
linux-0.11
调试教程,task3(01),/etc/rc文件
init/main.c中相关代码: if(!(pid=fork())){ close(0); if(open("/etc/rc",O_RDONLY,0)) _exit(1); execve("/bin/sh",argv_rc,envp_rc); _exit(2); }/etc/rc文件内容:/etc/update&echo"/dev/h
sitelist
·
2013-01-12 16:00
linux-0.11
调试教程,task3(02)系统调用sys_alarm和sigaction结构
系统调用sys_alarm相关代码:intsys_alarm(longseconds){ intold=current->alarm; if(old) old=(old-jiffies)/HZ; current->alarm=(seconds>0)?(jiffies+HZ*seconds):0; return(old);}current->alarm的值为jiffies的
sitelist
·
2013-01-11 13:00
linux-0.11
内核 任务的堆栈切换
一直缠绕的两个问题:怎样标识的内核栈与用户栈?如何在内核态堆栈与用户态堆栈之间切换? 用户态堆栈指针:ss和esp;内核态堆栈指针:ss0和esp0;二者均位于任务的tss结构中。这里的任务是指除任务0和1之外的普通任务。CPU进行用户态堆栈到内核态堆栈的切换操作时,CPU会从当前任务的任务状态段TSS中取得新堆栈的段选择符和偏移值,即从TSS的ss0和esp0字段中获取,在定位了新堆栈(内核态
stonehorse
·
2013-01-10 11:14
linux
硬件
linux-0.11
调试教程,task4
相关代码: if(!pid){ close(0);close(1);close(2); setsid(); (void)open("/dev/tty0",O_RDWR,0); (void)dup(0); (void)dup(0); _exit(execve("/bin/sh",argv,envp
sitelist
·
2013-01-09 20:00
linux-0.11
调试教程,task2
相关代码:if(!(pid=fork())){ close(0); if(open("/etc/rc",O_RDONLY,0)) _exit(1); execve("/bin/sh",argv_rc,envp_rc); _exit(2); }图1进程2的堆栈是0xffa00,close(0)之后,filep[0]被置为NULL。filep
sitelist
·
2013-01-09 20:00
linux-0.11
调试教程 tty_table
图一0x19170是tty_table的地址,图二是“Freemem:12582912bytes”对应的写队列缓冲区的一部分内容46:F,72:r,65:e,65:e,20:空格,6d:m... ... 图二图三图三是是tty队列结构,0x00000103表示队列里面的head位置。看来head和
sitelist
·
2013-01-08 18:00
linux-0.11
调试教程 minix 文件系统1.0 下篇(3)文件表 file_table
(void)open("/dev/tty0",O_RDWR,0); (void)dup(0); (void)dup(0);下面的图是复制文件句柄0之后得到文件句柄1和文件句柄2,之后的情形。 图一图一表示进程1的task_struct,突出显示的task_struct->file[NR_OPEN]中的filp[0],filp[1]
sitelist
·
2013-01-08 17:00
linux-0.11
调试教程,task3(03),do_signale之后的用户栈
下面是do_signal之前和之后iret之前的内核态堆栈的变化情况,主要是原esp和原eip的变化情况。相关代码:voiddo_signal(longsignr,longeax,longebx,longecx,longedx, longfs,longes,longds, longeip,longcs,longeflags, unsignedlong*esp,longss){ ..
sitelist
·
2013-01-08 12:00
linux-0.11
调试教程 minix文件系统1.0 下篇(2)inode_table内存i节点表和目录 /etc/tty0
setup((void*)&drive_info); (void)open("/dev/tty0",O_RDWR,0); (void)dup(0); (void)dup(0); printf("%dbuffers=%dbytesbufferspace\n\r",NR_BUFFERS, NR_BUFFERS*BLOCK_SIZE); printf("Freemem
sitelist
·
2013-01-07 19:00
linux-0.11
系统调用 int 0x80 实现
如题,这个是转来的,不过自己真的看透了哦,其它的中断也是一个意思吧,实际上都是那本0.11注释里面的系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。这个中断的设置在kernel/sched.c中441行函数中[cpp] viewplaincopyvoid sched_init(void) { int i; struct de
goldfighter
·
2012-12-06 19:00
bochs 里玩
linux-0.11
安装bochs......编译
linux-0.11
内核下载内核linux-0.11-081030.tar.gz,这个内核是经过别人修改的,应该在他的机器上可以编译,但是在ubuntu上有一下问题,搜索解决方法如下
goldfighter
·
2012-11-07 16:00
linux-0.11
之setup.s解析
linux-0.11
版本的学习。主要是《Linux内核完全注释》的学习,同时也加入了自己对setup.s这个文件的理解,不足之处请各位多多指教!!
zhongru0072010
·
2012-08-20 22:50
setup.s
Linux-0.11
学习
linux-0.11
版本的学习。
zhongru0072010
·
2012-08-20 22:01
linux内核
Ubuntu10.04搭建
linux-0.11
编译环境(1.bochs安装和使用)
本文解决此类问题.1.安装bochssudoapt-getinstallbochsvgabiosbochs-xbochsbiosbochs-docbochs-sdl如有问题,找到合适源即可. 2.获取可启动的
linux
hao1056531028
·
2012-06-29 17:00
image
ubuntu
command
File
library
interface
Linux 0.11 在ubuntu-11和gcc-4.6.1下编译调试至正常运行的过程详解
引言1、 工作背景研究
linux-0.11
已有月余,代码看了好几遍,虽然能看懂,却总感觉如隔靴搔痒一般。这当然是正常的,毕竟不是自己写的东西,毕竟这是个操作系统。
cosmoslife
·
2012-06-03 11:00
linux
汇编
gcc
makefile
编译器
linux内核
第二记 在Bochs上加载Linux0.11
编译linux0.11内核linux 0.11源码文件在linux-0.11-081030.tar.gz中,进入目录解压后的目录
linux-0.11
中1. ubuntu 8.04 gcc 版本为4.2.4
hubi0952
·
2012-05-22 00:00
linux-0.11
GCC4.3下可编译运行的源码
原因gcc 4.3对内存拷贝优化时出错,当然,glibc里头的memcpy是没有问题的,因为glibc中的memcpy实现方式不一样,但是
linux-0.11
里头的memcpy有问题。
soboer
·
2011-02-28 17:00
linux
linux-0.11
GCC4.3下可编译运行的源码
原因gcc 4.3对内存拷贝优化时出错,当然,glibc里头的memcpy是没有问题的,因为glibc中的memcpy实现方式不一样,但是
linux-0.11
里头的memcpy有问题。
thecloud
·
2011-02-28 17:00
linux
linux-0.11
GCC4.3下可编译运行的源码
启动是只是显示“LoadingSystem...”1.原因gcc4.3对内存拷贝优化时出错,当然,glibc里头的memcpy是没有问题的,因为glibc中的memcpy实现方式不一样,但是
linux-
yming0221
·
2011-02-28 17:00
Linux-0.11
内核编译问题
弄了好长时间,只是可以用
linux-0.11
我的Linux实验室环境,使用bochs模拟,进入Linux-0.11cd..cdsrc/linuxmake这样就编译成Image了mkdira:mkdira
yming0221
·
2011-02-22 17:00
linux
image
ubuntu
gcc
编译器
Linux-0.11
内核编译问题
弄了好长时间,只是可以用
linux-0.11
我的Linux实验室环境,使用bochs模拟,进入Linux-0.11cd..cdsrc/linuxmake这样就编译成Image了mkdira:mkdira
soboer
·
2011-02-22 17:00
linux
Linux-0.11
内核编译问题
弄了好长时间,只是可以用
linux-0.11
我的Linux实验室环境,使用bochs模拟,进入Linux-0.11cd..cdsrc/linuxmake这样就编译成Image了mkdira:mkdira
thecloud
·
2011-02-22 17:00
linux
linux-0.11
内核编译
平台:ubuntu10.10这就是搭建bochs的环境,搭建bochs更操作系统关系不大,我认为重点是在bochs的配置上。配置bochs就需要对bochsrc.bxrc文档的编辑。 在安装bochs之前,需要做的是安装编译环境: code: sudoapt-getinstallbuild-essential 闲话少说,先从安装开始:我是用ubuntu的软件包工具apt安
yming0221
·
2011-02-21 20:00
linux-0.11
内核编译
平台:ubuntu10.10这就是搭建bochs的环境,搭建bochs更操作系统关系不大,我认为重点是在bochs的配置上。配置bochs就需要对bochsrc.bxrc文档的编辑。在安装bochs之前,需要做的是安装编译环境:code:sudoapt-getinstallbuild-essential闲话少说,先从安装开始:我是用ubuntu的软件包工具apt安装的bochs,当然了也可以直接编
soboer
·
2011-02-21 20:00
linux
linux-0.11
内核编译
平台:ubuntu10.10这就是搭建bochs的环境,搭建bochs更操作系统关系不大,我认为重点是在bochs的配置上。配置bochs就需要对bochsrc.bxrc文档的编辑。在安装bochs之前,需要做的是安装编译环境:code:sudoapt-getinstallbuild-essential闲话少说,先从安装开始:我是用ubuntu的软件包工具apt安装的bochs,当然了也可以直接编
thecloud
·
2011-02-21 20:00
linux
Linux学习笔记(linux 0.11完全注释)
Linux-0.11
版本发布时包括以下文件:bootimage.Z--具有美国键盘代码的压缩启动映像文件rootimage.Z--以
evanwu_85
·
2010-11-14 16:00
4_OS
set_base 和 set_limitC语言实现版
在重建系统的时候发现
linux-0.11
原来这两个宏函数经常出错,迫不得已。改写了这两个函数。
huer0625
·
2010-04-30 21:00
语言
用nasm语言重新实现
linux-0.11
键盘驱动程序(us)(博古以通今) (开发版,未精简)
;文件名:followking/kernel/chr_drv/keyboard.s;本文件改写
linux-0.11
/kernel/chr_drv/keyboard.s;目的是为了体验整个系统构建的过程。
huer0625
·
2010-04-26 22:00
8259芯片的初始化-在重现
linux-0.11
遇到的问题 (博古以通今)
/*文件名:followking/include/asm/io.h*本文件改写
linux-0.11
/inlcude/asm/io.h,目的是为了体验整个系统构建的过程。
huer0625
·
2010-04-25 18:00
用nasm语言重新实现
linux-0.11
asm.s(博古以通今)
;文件名:followking/kernel/asm.s;本文件改写
linux-0.11
/kernel/asm.s,目的是为了体验整个系统构建的过程。
huer0625
·
2010-04-25 18:00
给出一个printk函数的实现版本(用于早期调试用)
/*文件名:followking/include/stdarg.h*本文件改写
linux-0.11
/inc
huer0625
·
2010-04-25 18:00
struct
list
buffer
email
化工
2010
nasm重写
linux-0.11
head.s (博古以通今)
;文件名:followking/boot/head.s;本文件改写
linux-0.11
/boot/head.s,目的是为了体验整个系统构建的过程。
huer0625
·
2010-04-25 18:00
c
测试
存储
编译器
2010
linux内核
用nasm语言重新实现
linux-0.11
setup.s (博古以通今)
;文件名:followking/boot/setup.s;本文件改写
linux-0.11
/boot/setup.s,目的是为了体验整个系统构建的过程。
huer0625
·
2010-04-25 18:00
汇编
System
语言
出版
disk
linux内核
用nasm语言重新实现
linux-0.11
bootsect.s(博古以通今)
;这个程序是改写linux的bootsect.s。我用的nasm的语法格式。昨天刚学,今天学完。所以想马上运用一下。;我想写一个操作系统,现在觉得最简单的方式莫过于先把前辈的实现的东西重新实现一遍。等到对这个;问题有更深刻认识的时候,再重新思考,写出有自己特色的系统。;作者:hk0625;开始时间: 2010年03月18日星期四21:00 ;完成时间: 2010年03月19日星期五20:55(完成
huer0625
·
2010-04-25 18:00
在windows下调试linux内核
解压后默认的文件夹位置是在D:/
Linux-0.11
,如果你不是将文件解压到该目录下, 你要修改MinGW32目录下的MinGW32.bat文件,将里面的PATH指向MinGW32的bin目录.2
I2Cbus
·
2008-04-07 14:00
windows
linux
makefile
reference
linux内核
[文件系统]制作可运行的
Linux-0.11
一、格式化硬盘我们要将创建的256MB硬盘Image文件hdc.img进行分区并创建MINIX文件系统,将在这个Image文件中创建1个分区,并且建立成MINIX文件系统。(1)将hdc.img做为从盘挂到Bochs下已有的模拟系统中(例如SLSLinux):编辑SLSLinux系统的Bochs配置文件bochsrc.bxrc。在ata0-master一行下加入我们的硬盘Image文件的配置参数行
·
2005-02-18 14:00
linux
上一页
1
2
3
4
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他