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
0.11
Linux 内核--fork()函数创建进程
本文分析基于Linux
0.11
内核,转载请表明出处http://blog.csdn.net/yming0221/archive/2011/06/05/6527337.aspx Linux在move_to_user_mode
thecloud
·
2011-06-05 22:00
linux
Linux 内核--任务0的运行(切换到用户模式)move_to_user_mode
本文分析基于Linux
0.11
内核,转载请标明出处,http://blog.csdn.net/yming0221/archive/2011/06/01/6459119.aspx在main.c的程序中,当设备初始化完毕后
soboer
·
2011-06-01 13:00
linux
Linux 内核--任务0的运行(切换到用户模式)move_to_user_mode
本文分析基于Linux
0.11
内核,转载请标明出处,http://blog.csdn.net/yming0221/archive/2011/06/01/6459119.aspx在main.c的程序中,当设备初始化完毕后
yming0221
·
2011-06-01 13:00
linux
image
user
null
任务
nested
Linux 内核--任务0的运行(切换到用户模式)move_to_user_mode
本文分析基于Linux
0.11
内核,转载请标明出处,http://blog.csdn.net/yming0221/archive/2011/06/01/6459119.aspx在main.c的程序中,当设备初始化完毕后
thecloud
·
2011-06-01 13:00
linux
文件包含 头文件 inline 编译
Linux
0.11
的目录: |-boot/ |-fs/ |-include/ |-asm/ |-linux/ |-sys/
zlb_xidian
·
2011-05-30 17:00
Linux 内核--硬件中断初始化及中断描述符表
本文分析基于Linux
0.11
内核,转载请标明出处http://blog.csdn.net/yming0221/archive/2011/06/01/6459119.aspx以下是硬件初始化函数voidtrap_init
soboer
·
2011-05-29 22:00
linux
Linux 内核--硬件中断初始化及中断描述符表
本文分析基于Linux
0.11
内核,转载请标明出处http://blog.csdn.net/yming0221/archive/2011/06/01/6459119.aspx以下是硬件初始化函数voidtrap_init
yming0221
·
2011-05-29 22:00
linux
exception
汇编
System
Descriptor
linux内核
Linux 内核--硬件中断初始化及中断描述符表
本文分析基于Linux
0.11
内核,转载请标明出处http://blog.csdn.net/yming0221/archive/2011/06/01/6459119.aspx以下是硬件初始化函数voidtrap_init
thecloud
·
2011-05-29 22:00
linux
读Linux内核
0.11
完全注释
linux2011-01-0920:54:56阅读9评论0字号:大中小订阅1.Linux系统中的jiffs是指可编程定时芯片,如PC上的Intel8353设置的定时间隔.当系统每经过1个jiffs,就会调一次时钟中断处理程序(timer_interrupt).2.Linux系统中,一个进程可以在内核装(kernelmode)和用户态(usermode)下执行,因此,Linux内核堆栈和用户堆栈分开
rbkw206
·
2011-05-23 23:31
linux
职场
休闲
linux系统
什么时候动手写代码才合适?
结果我选择去重读linux
0.11
文件系统代码,结果发现其实现的不是很难理解,但是此时我已经丧失去动手写的动力了:怕是重新劳作,并且感觉
chobit_s
·
2011-05-20 22:00
linux
OS
Linux
0.11
内核--启动代码分析setup.s 建立页目录和页表
head.s开始 pg_dir .... .... .... .... .org 0x1000 pg0: .org 0x2000 pg1: .org 0x3000 pg2: .org 0x4000 pg3: .org 0x5000 后面是setup_paging代码 setup_paging: movl $1024*5,%ecx /*
thecloud
·
2011-05-19 22:00
linux
Linux
0.11
内核--启动代码分析setup.s 建立页目录和页表
head.s开始pg_dir.................org0x1000pg0: .org0x2000pg1: .org0x3000pg2: .org0x4000pg3: .org0x5000 后面是setup_paging代码 setup_paging:movl$1024*5,%ecx/*5pages-pg_dir+4pagetables*/xorl%eax,%eaxxorl%edi
yming0221
·
2011-05-19 22:00
linux
user
代码分析
Linux
0.11
内核--启动代码分析setup.s 建立页目录和页表
head.s开始 pg_dir .... .... .... .... .org 0x1000 pg0: .org 0x2000 pg1: .org 0x3000 pg2: .org 0x4000 pg3: .org 0x5000 后面是setup_paging代码 setup_paging: movl $1024*5,%ecx /*
soboer
·
2011-05-19 22:00
linux
Linux
0.11
内核--idt(中断描述符表的初始化)head.s分析
head.s被编译成system模块的最前面部分,故而称为头部。这段程序处于地址的绝对0处,首先是加载各个数据段寄存器,重新设置中断描述符表idt,共256项,并使各个表项均指向一个只报错误的哑中断程序。然后重新设置全局描述符表gdt。接着使用物理地址0与1M开始处的内容相比较的方法,检测A20地址线是否已真的开启(如果没有开启,则在访问高于1Mb物理内存地址时CPU实际只会访问(IPMOD,如果
thecloud
·
2011-05-17 23:00
linux
Linux
0.11
内核--idt(中断描述符表的初始化)head.s分析
head.s被编译成system模块的最前面部分,故而称为头部。这段程序处于地址的绝对0处,首先是加载各个数据段寄存器,重新设置中断描述符表idt,共256项,并使各个表项均指向一个只报错误的哑中断程序。然后重新设置全局描述符表gdt。接着使用物理地址0与1M开始处的内容相比较的方法,检测A20地址线是否已真的开启(如果没有开启,则在访问高于1Mb物理内存地址时CPU实际只会访问(IPMOD,如果
soboer
·
2011-05-17 23:00
linux
Linux
0.11
内核--启动引导代码分析setup.s
setup的整体作用:首先利用BIOS中断读取机器的数据,将其保存在地址0x9000:0x0000处,覆盖了原来bootsect.s代码所在的位置,由于bootsetc模块的代码运行完毕,已经没有其他的用处了,所以可以将其覆盖掉。然后关闭中断,setup将system模块整体移动至内存起始处,原来位于0x1000:0x0000,由于movsb和movsw指令的功能是移动一个字节或者一个字,源地址由
thecloud
·
2011-05-17 23:00
linux
Linux
0.11
内核--idt(中断描述符表的初始化)head.s分析
head.s被编译成system模块的最前面部分,故而称为头部。这段程序处于地址的绝对0处,首先是加载各个数据段寄存器,重新设置中断描述符表idt,共256项,并使各个表项均指向一个只报错误的哑中断程序。然后重新设置全局描述符表gdt。接着使用物理地址0与1M开始处的内容相比较的方法,检测A20地址线是否已真的开启(如果没有开启,则在访问高于1Mb物理内存地址时CPU实际只会访问(IPMOD,如果
yming0221
·
2011-05-17 23:00
linux
测试
System
X86
Linux
0.11
内核--A20地址线
1981年8月,IBM公司最初推出的个人计算机IBMPC使用的CPU是Intel8088。在该微机中地址线只有20根(A0–A19)。在当时内存RAM只有几百KB或不到1MB时,20根地址线已足够用来寻址这些内存。其所能寻址的最高地址是0xffff:0xffff,也即0x10ffef。对于超出0x100000(1MB)的寻址地址将默认地环绕到0x0ffef。当IBM公司于1985年引入AT机时,使
yming0221
·
2011-05-16 12:00
linux
工作
IBM
Linux
0.11
内核--A20地址线
1981 年 8 月,IBM 公司最初推出的个人计算机 IBM PC 使用的 CPU 是 Intel 8088。在该微机中地址 线只有 20 根(A0 – A19)。在当时内存 RAM 只有几百 KB 或不到 1MB 时,20 根地址线已足够用来寻址 这些内存。其所能寻址的最高地址是 0xffff:0xffff,也即 0x10ffef。对于超出 0x100000(1MB)的寻址地址 将
soboer
·
2011-05-16 12:00
linux
Linux
0.11
内核--A20地址线
1981 年 8 月,IBM 公司最初推出的个人计算机 IBM PC 使用的 CPU 是 Intel 8088。在该微机中地址 线只有 20 根(A0 – A19)。在当时内存 RAM 只有几百 KB 或不到 1MB 时,20 根地址线已足够用来寻址 这些内存。其所能寻址的最高地址是 0xffff:0xffff,也即 0x10ffef。对于超出 0x100000(1MB)的寻址地址 将
thecloud
·
2011-05-16 12:00
linux
Linux
0.11
内核--启动引导代码分析setup.s
setup的整体作用:首先利用BIOS中断读取机器的数据,将其保存在地址0x9000:0x0000处,覆盖了原来bootsect.s代码所在的位置,由于bootsetc模块的代码运行完毕,已经没有其他的用处了,所以可以将其覆盖掉。然后关闭中断,setup将system模块整体移动至内存起始处,原来位于0x1000:0x0000,由于movsb和movsw指令的功能是移动一个字节或者一个字,源地址由
soboer
·
2011-05-14 19:00
linux
Linux
0.11
内核--启动引导代码分析setup.s
setup的整体作用:首先利用BIOS中断读取机器的数据,将其保存在地址0x9000:0x0000处,覆盖了原来bootsect.s代码所在的位置,由于bootsetc模块的代码运行完毕,已经没有其他的用处了,所以可以将其覆盖掉。然后关闭中断,setup将system模块整体移动至内存起始处,原来位于0x1000:0x0000,由于movsb和movsw指令的功能是移动一个字节或者一个字,源地址由
yming0221
·
2011-05-14 19:00
linux
buffer
input
output
代码分析
initialization
FanType
0.11
版本
FanType
0.11
版本查找,替换完成,支持正则。目前还不支持多行替换,只是简单的按行遍历替换而已。查找的时候,可以高亮当前文件的匹配。右键菜单,折叠所选。目前这个程序还是比较小巧的。
关注编辑器的制作
·
2011-05-12 21:00
Linux
0.11
内核--32位保护模式GDT(全局描述符表)
在ProtectedMode下,一个重要的必不可少的数据结构就是GDT(GlobalDescriptorTable)。为什么要有GDT?我们首先考虑一下在RealMode下的编程模型:在RealMode下,我们对一个内存地址的访问是通过Segment:Offset的方式来进行的,其中Segment是一个段的BaseAddress,一个Segment的最大长度是64KB,这是16-bit系统所能表示
thecloud
·
2011-05-12 17:00
linux
Linux
0.11
内核--32位保护模式GDT(全局描述符表)
在ProtectedMode下,一个重要的必不可少的数据结构就是GDT(GlobalDescriptorTable)。为什么要有GDT?我们首先考虑一下在RealMode下的编程模型:在RealMode下,我们对一个内存地址的访问是通过Segment:Offset的方式来进行的,其中Segment是一个段的BaseAddress,一个Segment的最大长度是64KB,这是16-bit系统所能表示
soboer
·
2011-05-12 17:00
linux
Linux
0.11
内核--32位保护模式GDT(全局描述符表)
在ProtectedMode下,一个重要的必不可少的数据结构就是GDT(GlobalDescriptorTable)。为什么要有GDT?我们首先考虑一下在RealMode下的编程模型:在RealMode下,我们对一个内存地址的访问是通过Segment:Offset的方式来进行的,其中Segment是一个段的BaseAddress,一个Segment的最大长度是64KB,这是16-bit系统所能表示
yming0221
·
2011-05-12 17:00
数据结构
linux
table
Access
任务
Descriptor
Linux
0.11
启动过程
1. 从系统加电起所执行程式的顺序为: ROM BIOS bootsect.S setup.S head.S main.c2. ROM BIOS当PC机加电后,80x86结构的CPU将自动进入实模式,并从地址0xFFFF0开始自动执行某些系统的检测。并在物理地址0处开始初始化中断向量。此后,他将可启动设备的第一个扇区(磁盘引导扇区512字节)读入内存绝对地址0x7C00处,并跳到这个地方去执行(
thecloud
·
2011-05-10 22:00
linux
Linux
0.11
启动过程
1. 从系统加电起所执行程式的顺序为: ROM BIOS bootsect.S setup.S head.S main.c2. ROM BIOS当PC机加电后,80x86结构的CPU将自动进入实模式,并从地址0xFFFF0开始自动执行某些系统的检测。并在物理地址0处开始初始化中断向量。此后,他将可启动设备的第一个扇区(磁盘引导扇区512字节)读入内存绝对地址0x7C00处,并跳到这个地方去执行(
soboer
·
2011-05-10 22:00
linux
Linux
0.11
启动过程
1. 从系统加电起所执行程式的顺序为:ROMBIOSbootsect.Ssetup.Shead.Smain.c2. ROMBIOS当PC机加电后,80x86结构的CPU将自动进入实模式,并从地址0xFFFF0开始自动执行某些系统的检测。并在物理地址0处开始初始化中断向量。此后,他将可启动设备的第一个扇区(磁盘引导扇区512字节)读入内存绝对地址0x7C00处,并跳到这个
yming0221
·
2011-05-10 22:00
Linux
0.11
内核--启动引导代码分析bootsect.s
Linux内核中的系统启动引导代码位于/boot目录下但是,由于。Linus当时是在MINIX系统上开发Linux的,最初MINIX系统上还没有移植gas程序,因此Linus就使用了MINIX系统上的as86。bootsect需要是16位的实模式程序。目前gas汇编器也支持16位的编译。所以现在也可以直接用as编译器直接编译。下面是用at&t格式改写的bootsect.s代码.code16 #r
thecloud
·
2011-05-09 22:00
linux
Linux
0.11
内核--启动引导代码分析bootsect.s
Linux内核中的系统启动引导代码位于/boot目录下但是,由于。Linus当时是在MINIX系统上开发Linux的,最初MINIX系统上还没有移植gas程序,因此Linus就使用了MINIX系统上的as86。bootsect需要是16位的实模式程序。目前gas汇编器也支持16位的编译。所以现在也可以直接用as编译器直接编译。下面是用at&t格式改写的bootsect.s代码.code16 #r
soboer
·
2011-05-09 22:00
linux
Linux
0.11
内核--启动引导代码分析bootsect.s
Linux内核中的系统启动引导代码位于/boot目录下但是,由于。Linus当时是在MINIX系统上开发Linux的,最初MINIX系统上还没有移植gas程序,因此Linus就使用了MINIX系统上的as86。bootsect需要是16位的实模式程序。目前gas汇编器也支持16位的编译。所以现在也可以直接用as编译器直接编译。下面是用at&t格式改写的bootsect.s代码.code16#rew
yming0221
·
2011-05-09 22:00
linux
System
Parameters
代码分析
磁盘
linux内核
Linux
0.11
内核--8086中的实模式
8086/8088CPU中寄存器为16位,16位子长的机器可以访问的最大存储地址空间为64K,但是8086/8088CPU的地址线有20根, 能够寻址1M的地址空间。为了解决这种冲突,采用存储器分段的办法,实际地址=段地址左移4位+偏移地址。 按照这样计算,每个段的大小最大可达64K,如果所有的段都按这个大小,那么可以划分16个段;每个段的起始地址必须是每个小段的起 始地址,即00000H
thecloud
·
2011-05-06 20:00
linux
Linux
0.11
内核--8086中的实模式
8086/8088CPU中寄存器为16位,16位子长的机器可以访问的最大存储地址空间为64K,但是8086/8088CPU的地址线有20根,能够寻址1M的地址空间。为了解决这种冲突,采用存储器分段的办法,实际地址=段地址左移4位+偏移地址。按照这样计算,每个段的大小最大可达64K,如果所有的段都按这个大小,那么可以划分16个段;每个段的起始地址必须是每个小段的起始地址,即00000H-FFFF0
yming0221
·
2011-05-06 20:00
linux
存储
Linux
0.11
内核--8086中的实模式
8086/8088CPU中寄存器为16位,16位子长的机器可以访问的最大存储地址空间为64K,但是8086/8088CPU的地址线有20根, 能够寻址1M的地址空间。为了解决这种冲突,采用存储器分段的办法,实际地址=段地址左移4位+偏移地址。 按照这样计算,每个段的大小最大可达64K,如果所有的段都按这个大小,那么可以划分16个段;每个段的起始地址必须是每个小段的起 始地址,即00000H
soboer
·
2011-05-06 20:00
linux
[置顶] Linux 内核学习(2)
(注:转载请表明出处:http://blog.csdn.net/yming0221)持续更新中......Linux
0.11
内核--8086中的实模式Linux
0.11
内核--启动引导代码分析bootsect.sLinux
0.11
yming0221
·
2011-05-06 20:00
linux
struct
user
任务
代码分析
linux内核
Linux 内核学习(2)
Linux
0.11
内核--8086中的实模式 Linux
0.11
内核--启动引导代码分析bootsect.s Linux
0.11
内核--32位保护模式GDT(全局描述符表) Linux
0.11
thecloud
·
2011-05-06 20:00
linux
Linux 内核学习(2)
Linux
0.11
内核--8086中的实模式 Linux
0.11
内核--启动引导代码分析bootsect.s Linux
0.11
内核--32位保护模式GDT(全局描述符表) Linux
0.11
thecloud
·
2011-05-06 20:00
linux
Linux 内核学习(2)
Linux
0.11
内核--8086中的实模式 Linux
0.11
内核--启动引导代码分析bootsect.s Linux
0.11
内核--32位保护模式GDT(全局描述符表) Linux
0.11
soboer
·
2011-05-06 20:00
linux
Linux 内核学习(2)
Linux
0.11
内核--8086中的实模式 Linux
0.11
内核--启动引导代码分析bootsect.s Linux
0.11
内核--32位保护模式GDT(全局描述符表) Linux
0.11
soboer
·
2011-05-06 20:00
linux
Linux
0.11
内核--系统中断处理程序int 0x80实现原理
系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。这个中断的设置在kernel/sched.c中441行函数中voidsched_init(void) { inti; structdesc_struct*p; if(sizeof(structsigaction)!=16) panic("StructsigactionMUSTbe16bytes")
yming0221
·
2011-05-05 22:00
linux
struct
table
System
任务
Signal
Linux
0.11
内核--系统中断处理程序int 0x80实现原理
系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。 这个中断的设置在kernel/sched.c中441行函数中 void sched_init(void) { int i; struct desc_struct * p; if (sizeof(struct sigaction) != 16) panic("Struc
thecloud
·
2011-05-05 22:00
linux
Linux
0.11
内核--系统中断处理程序int 0x80实现原理
系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。通过int 0x80,就可使用内核资源。不过,通常应用程序都是使用具有标准接口定义的C函数库间接的使用内核的系统调用,即应用程序调用C函数库中的函数,C函数库中再通过int 0x80进行系统调用。所以,系统调用过程是这样的:应用程序调用libc中的函数->libc中的函数引用系统调用宏->
soboer
·
2011-05-05 22:00
linux
Linux
0.11
内核--进程的调度(运行态(就绪态)和睡眠态之间的转换)
Linux
0.11
中进入可中断睡眠状态的方法有3中调用in
soboer
·
2011-05-04 13:00
linux
Linux
0.11
内核--进程的调度(运行态(就绪态)和睡眠态之间的转换)
Linux
0.11
中进入可中断睡眠状态的方法有3中调用in
thecloud
·
2011-05-04 13:00
linux
Linux
0.11
内核--进程的调度(运行态(就绪态)和睡眠态之间的转换)
Linux
0.11
中进入可中断睡眠状态的方法有3中调用in
yming0221
·
2011-05-04 13:00
数据结构
linux
struct
buffer
UP
任务
Linux
0.11
内核--进程的调度(就绪态和运行态之间的转换)
进程的调度linux系统中,一个进程有5种可能状态,在sched.c第19行处定义了状态的标识:#defineTASK_RUNNING0//正在运行或可被运行状态#defineTASK_INTERRUPTIBLE1//可被中断睡眠状态#defineTASK_UNINTERRUPTIBLE2//不可中断睡眠状态#defineTASK_ZOMBIE3//僵死状态#defineTASK_STOPPED4
soboer
·
2011-04-29 09:00
linux
Linux
0.11
内核--进程的调度(就绪态和运行态之间的转换)
进程的调度linux系统中,一个进程有5种可能状态,在sched.c第19行处定义了状态的标识:#defineTASK_RUNNING0//正在运行或可被运行状态#defineTASK_INTERRUPTIBLE1//可被中断睡眠状态#defineTASK_UNINTERRUPTIBLE2//不可中断睡眠状态#defineTASK_ZOMBIE3//僵死状态#defineTASK_STOPPED4
yming0221
·
2011-04-29 09:00
c
timer
linux
struct
任务
Signal
Linux
0.11
内核--进程的调度(就绪态和运行态之间的转换)
进程的调度linux系统中,一个进程有5种可能状态,在sched.c第19行处定义了状态的标识:#defineTASK_RUNNING0//正在运行或可被运行状态#defineTASK_INTERRUPTIBLE1//可被中断睡眠状态#defineTASK_UNINTERRUPTIBLE2//不可中断睡眠状态#defineTASK_ZOMBIE3//僵死状态#defineTASK_STOPPED4
thecloud
·
2011-04-29 09:00
linux
任务0的内核堆栈,用户堆栈
描述任务0的内核堆栈和用户堆栈是如何产生的: 1, linux
0.11
系统共使用了4种堆栈:系统初始化时临时使用的堆栈;供内核程序自己使用的堆栈(内核堆栈),只有一个,位于系统
roma823
·
2011-04-28 11:00
Math
数据结构
struct
user
null
任务
上一页
37
38
39
40
41
42
43
44
下一页
按字母分类:
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
其他