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
Linux0.11
Linux0.11
内核--内核态与用户态
内核态与用户态intelx86架构的CPU分Ring0-Ring3三种级别的运行模式,Ring0级别最高,Ring3最低。针对不同的级别,有很多的限制,比如说传统的in,out指令,就是端口的输入输出指令,在Ring0级下是可以用的,但在Ring3级下就不能用,你用就产生陷井,告诉你出错了,当然限制还有很多了,不只是这一点。操作系统下是利用这个特点,当操作系统自己的代码运行时,CPU就切成Ring
thecloud
·
2011-04-10 22:00
linux
Linux0.11
内核--汇编和C语言混合编程之参数传递
汇编语言中也需要通过某些途径来使用操作系统提供的服务,也就是系统调用;系统调用就是通过与操作系统内核通信来完成;系统调用会把用户态程序的调用转换成对系统内核服务的调用;Linux平台下有两种方式来使用系统调用:一种是利用封装后的C库(libc),另一种是通过汇编直接调用;其中,通过汇编语言来直接调用系统调用,是最高效地使用Linux内核服务的方法,因为最终生成的程序不需要与任何库进行连接,而是直接
soboer
·
2011-04-10 21:00
linux
Linux0.11
内核--汇编和C语言混合编程之参数传递
汇编语言中也需要通过某些途径来使用操作系统提供的服务,也就是系统调用;系统调用就是通过与操作系统内核通信来完成;系统调用会把用户态程序的调用转换成对系统内核服务的调用;Linux平台下有两种方式来使用系统调用:一种是利用封装后的C库(libc),另一种是通过汇编直接调用;其中,通过汇编语言来直接调用系统调用,是最高效地使用Linux内核服务的方法,因为最终生成的程序不需要与任何库进行连接,而是直接
yming0221
·
2011-04-10 21:00
Linux0.11
内核--汇编和C语言混合编程之参数传递
汇编语言中也需要通过某些途径来使用操作系统提供的服务,也就是系统调用;系统调用就是通过与操作系统内核通信来完成;系统调用会把用户态程序的调用转换成对系统内核服务的调用;Linux平台下有两种方式来使用系统调用:一种是利用封装后的C库(libc),另一种是通过汇编直接调用;其中,通过汇编语言来直接调用系统调用,是最高效地使用Linux内核服务的方法,因为最终生成的程序不需要与任何库进行连接,而是直接
thecloud
·
2011-04-10 21:00
linux
linux内核0.11学习笔记
linux0.11
内核目录结构 linux | |--- boot 系统引导汇编程序 | |--- fs 文件系统 | |--- include 头文件(*.h) |  
炼剑者
·
2011-03-28 03:00
C++
c
linux
C#
配置管理
Linux0.11
内核--fork()函数创建进程
用fork创建进程除了进程0,其它所有的进程都是fork产生的。子进程是通过复制父进程的数据和代码产生的。创建结束后,子进程和父进程的代码段、数据段共享。但是子进程有自己的进程控制块、内核堆栈和页表。我们知道一个进程需要有如下3个结构1.task[]数组中的一项,即进程控制块(task_struct)2.GDT中的两项,即TSS段和LDT段描述符3.页目录和页表所以fork()的任务就是为一个新
yming0221
·
2011-03-26 10:00
linux
struct
System
任务
Linux0.11
内核--fork()函数创建进程
用fork创建进程除了进程0,其它所有的进程都是fork产生的。子进程是通过复制父进程的数据和代码产生的。创建结束后,子进程和父进程的代码段、数据段共享。但是子进程有自己的进程控制块、内核堆栈和页表。我们知道一个进程需要有如下3个结构1.task[]数组中的一项,即进程控制块(task_struct)2.GDT中的两项,即TSS段和LDT段描述符3.页目录和页表所以fork()的任务就是为一个新进
soboer
·
2011-03-26 10:00
linux
Linux0.11
内核--fork()函数创建进程
用fork创建进程除了进程0,其它所有的进程都是fork产生的。子进程是通过复制父进程的数据和代码产生的。创建结束后,子进程和父进程的代码段、数据段共享。但是子进程有自己的进程控制块、内核堆栈和页表。我们知道一个进程需要有如下3个结构1.task[]数组中的一项,即进程控制块(task_struct)2.GDT中的两项,即TSS段和LDT段描述符3.页目录和页表所以fork()的任务就是为一个新进
thecloud
·
2011-03-26 10:00
linux
Linux0.11
内核--内存组织和进程结构
进程结构
Linux0.11
中的每个进程都有如下的结构:在gdt中占有两项,一项是tss段描述符,一项是ldt段描述符。
yming0221
·
2011-03-23 13:00
linux
struct
任务
Linux0.11
内核--内存组织和进程结构
进程结构
Linux0.11
中的每个进程都有如下的结构:在gdt中占有两项,一项是tss段描述符,一项是ldt段描述符。
soboer
·
2011-03-23 13:00
linux
Linux0.11
内核--内存组织和进程结构
进程结构
Linux0.11
中的每个进程都有如下的结构:在gdt中占有两项,一项是tss段描述符,一项是ldt段描述符。
thecloud
·
2011-03-23 13:00
linux
Linux0.11
内核--内核空间、用户空间之间的数据传输
内核空间、用户空间之间的数据传输 内核空间数据段的选择符为0x10,用户空间数据段选择符为0x17。内核空间、用户空间之间的数据传输,是段间数据传输。C语言中的赋值语句编译成汇编后,“=”两边的变量默认段选择符都是DS,因此只能用于同一段内数据传输。 在segment.h中定义了一系列用于内核空间和用户空间传输数据的函数。从用户空间取得数据的函数中, mov指令的源操作数段寄存器都明确指出
thecloud
·
2011-03-22 22:00
linux
Linux0.11
内核--内核空间、用户空间之间的数据传输
内核空间、用户空间之间的数据传输 内核空间数据段的选择符为0x10,用户空间数据段选择符为0x17。内核空间、用户空间之间的数据传输,是段间数据传输。C语言中的赋值语句编译成汇编后,“=”两边的变量默认段选择符都是DS,因此只能用于同一段内数据传输。 在segment.h中定义了一系列用于内核空间和用户空间传输数据的函数。从用户空间取得数据的函数中, mov指令的源操作数段寄存器都明确指出
soboer
·
2011-03-22 22:00
linux
Linux0.11
内核--内核空间、用户空间之间的数据传输
内核空间、用户空间之间的数据传输内核空间数据段的选择符为0x10,用户空间数据段选择符为0x17。内核空间、用户空间之间的数据传输,是段间数据传输。C语言中的赋值语句编译成汇编后,“=”两边的变量默认段选择符都是DS,因此只能用于同一段内数据传输。在segment.h中定义了一系列用于内核空间和用户空间传输数据的函数。从用户空间取得数据的函数中,mov指令的源操作数段寄存器都明确指出是fs,向用
yming0221
·
2011-03-22 22:00
c
linux
汇编
语言
byte
Linux0.11
内核--段数据定义
与80386段相关的宏定义set_seg_desc/*****************************************************************************/ /*功能:设置存储段描述符,把指定属性的段描述符放入gate_addr处*/ /*参数:gate_addr段描述符的目的地址*/ /*type描述符中类型域,具体见80386基础一节中
soboer
·
2011-03-22 22:00
linux
Linux0.11
内核--段数据定义
与80386段相关的宏定义set_seg_desc/*****************************************************************************//*功能:设置存储段描述符,把指定属性的段描述符放入gate_addr处*//*参数:gate_addr段描述符的目的地址*//*type描述符中类型域,具体见80386基础一节中的表格*//
yming0221
·
2011-03-22 22:00
linux
存储
任务
Linux0.11
内核--段数据定义
与80386段相关的宏定义set_seg_desc/*****************************************************************************/ /*功能:设置存储段描述符,把指定属性的段描述符放入gate_addr处*/ /*参数:gate_addr段描述符的目的地址*/ /*type描述符中类型域,具体见80386基础一节中
thecloud
·
2011-03-22 22:00
linux
Linux0.11
内核--进程相关数据结构
主要有4个数据结构task_union(sched.c第53行) //这实际上是一页内存,页面低端头部放的是task_struct(进程控制块)结构,页面//其他部分当作进程的内核态堆栈使用uniontask_union{structtask_structtask;charstack[PAGE_SIZE];}; task[NR_TASKS](sched.c第65行) //task_struct指针
yming0221
·
2011-03-20 17:00
数据结构
linux
session
struct
File
任务
Linux0.11
内核--进程相关数据结构
主要有4个数据结构task_union(sched.c第53行)//这实际上是一页内存,页面低端头部放的是task_struct(进程控制块)结构,页面//其他部分当作进程的内核态堆栈使用uniontask_union{structtask_structtask;charstack[PAGE_SIZE];};task[NR_TASKS](sched.c第65行)//task_struct指针数组,
soboer
·
2011-03-20 17:00
linux
Linux0.11
内核--进程相关数据结构
主要有4个数据结构task_union(sched.c第53行)//这实际上是一页内存,页面低端头部放的是task_struct(进程控制块)结构,页面//其他部分当作进程的内核态堆栈使用uniontask_union{structtask_structtask;charstack[PAGE_SIZE];};task[NR_TASKS](sched.c第65行)//task_struct指针数组,
thecloud
·
2011-03-20 17:00
linux
Linux0.11
内核--几种地址(逻辑地址、线性地址、物理地址)的含义
程序(进程)的虚拟地址和逻辑地址虚拟地址(virtualaddress)指程序产生的有段选择符和段内偏移两部分组成的地址。一个程序的虚拟地址空间有GDT映射的全地址空间和LDT映射的局部地址空间组成。逻辑地址(logicaladdress)指程序产生的段内偏移地址。应用程序只与逻辑地址打交道,分段分页对应用程序来说是透明的。也就是说C语言中的&,汇编语言中的符号地址,C中嵌入式汇编的”m”对应的都
yming0221
·
2011-03-20 17:00
linux
汇编
生物
嵌入式
存储
语言
Linux0.11
内核--几种地址(逻辑地址、线性地址、物理地址)的含义
程序(进程)的虚拟地址和逻辑地址虚拟地址(virtualaddress)指程序产生的有段选择符和段内偏移两部分组成的地址。一个程序的虚拟地址空间有GDT映射的全地址空间和LDT映射的局部地址空间组成。逻辑地址(logicaladdress)指程序产生的段内偏移地址。应用程序只与逻辑地址打交道,分段分页对应用程序来说是透明的。也就是说C语言中的&,汇编语言中的符号地址,C中嵌入式汇编的”m”对应的都
soboer
·
2011-03-20 17:00
linux
Linux0.11
内核--几种地址(逻辑地址、线性地址、物理地址)的含义
程序(进程)的虚拟地址和逻辑地址虚拟地址(virtualaddress)指程序产生的有段选择符和段内偏移两部分组成的地址。一个程序的虚拟地址空间有GDT映射的全地址空间和LDT映射的局部地址空间组成。逻辑地址(logicaladdress)指程序产生的段内偏移地址。应用程序只与逻辑地址打交道,分段分页对应用程序来说是透明的。也就是说C语言中的&,汇编语言中的符号地址,C中嵌入式汇编的”m”对应的都
thecloud
·
2011-03-20 17:00
linux
Linux0.11
内核--启动引导过程
<!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } --> 启动搬迁过程: 1、BIOS将磁盘引导块程序bootsect读入到内存0x7c00,开始执行指令; 2、bootsect将自己搬迁到内存0x90000,跳到该段中的自己的下一条指令执行; 3、bootsect将设备检测安装程序setup读入到0x9
thecloud
·
2011-03-19 19:00
linux
Linux0.11
内核--启动引导过程
启动搬迁过程:1、BIOS将磁盘引导块程序bootsect读入到内存0x7c00,开始执行指令;2、bootsect将自己搬迁到内存0x90000,跳到该段中的自己的下一条指令执行;3、bootsect将设备检测安装程序setup读入到0x90200;4、bootsect将内核映像system读入到0x10000,跳到setup头部0x90200执行指令;5、setup获取系统参数,依次保存在0x
yming0221
·
2011-03-19 19:00
linux
汇编
System
任务调度
工具
任务
Linux0.11
内核--启动引导过程
<!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } --> 启动搬迁过程: 1、BIOS将磁盘引导块程序bootsect读入到内存0x7c00,开始执行指令; 2、bootsect将自己搬迁到内存0x90000,跳到该段中的自己的下一条指令执行; 3、bootsect将设备检测安装程序setup读入到0x9
soboer
·
2011-03-19 19:00
linux
深度剖析
Linux0.11
系统中堆栈的使用方法
在工作中关于 Linux系统中的堆栈问题一直是工程师们很头疼的问题,尤其出现一些新的版本,下面就与大家一起分享以下
Linux0.11
系统中堆栈的使用方法。
thecloud
·
2011-03-18 09:00
linux
深度剖析
Linux0.11
系统中堆栈的使用方法
在工作中关于 Linux系统中的堆栈问题一直是工程师们很头疼的问题,尤其出现一些新的版本,下面就与大家一起分享以下
Linux0.11
系统中堆栈的使用方法。
soboer
·
2011-03-18 09:00
linux
深度剖析
Linux0.11
系统中堆栈的使用方法
在工作中关于Linux系统中的堆栈问题一直是工程师们很头疼的问题,尤其出现一些新的版本,下面就与大家一起分享以下
Linux0.11
系统中堆栈的使用方法。一、系统引导初始化临时使用的堆栈。
yming0221
·
2011-03-18 09:00
数据结构
linux
工作
struct
user
任务
Linux0.11
内核--汇编代码实现C函数
Linux0.11
内核中有很多函数都是在C语言里面声明,然后通过汇编来实现。
yming0221
·
2011-03-17 22:00
c
linux
汇编
function
gcc
reference
Linux0.11
内核--汇编代码实现C函数
Linux0.11
内核中有很多函数都是在C语言里面声明,然后通过汇编来实现。
thecloud
·
2011-03-17 22:00
linux
Linux0.11
内核--汇编代码实现C函数
Linux0.11
内核中有很多函数都是在C语言里面声明,然后通过汇编来实现。
soboer
·
2011-03-17 22:00
linux
Linux0.11
内核--缓冲区初始化
init/main.c部分代码memory_end=(116*1024*1024) memory_end=16*1024*1024; if(memory_end>12*1024*1024)//内存>12M设置高速缓冲区大小4M buffer_memory_end=4*1024*1024; elseif(memory_end>6*1024*1024)//内存>6M设置高速缓冲区大小2M b
thecloud
·
2011-03-14 21:00
linux
Linux0.11
内核--缓冲区初始化
init/main.c部分代码memory_end=(116*1024*1024) memory_end=16*1024*1024; if(memory_end>12*1024*1024)//内存>12M设置高速缓冲区大小4M buffer_memory_end=4*1024*1024; elseif(memory_end>6*1024*1024)//内存>6M设置高速缓冲区大小2M b
soboer
·
2011-03-14 21:00
linux
Linux0.11
内核--缓冲区初始化
init/main.c部分代码memory_end=(116*1024*1024)memory_end=16*1024*1024;if(memory_end>12*1024*1024)//内存>12M设置高速缓冲区大小4Mbuffer_memory_end=4*1024*1024;elseif(memory_end>6*1024*1024)//内存>6M设置高速缓冲区大小2Mbuffer_memo
yming0221
·
2011-03-14 21:00
linux
struct
list
table
null
buffer
阅读和调试linux kernel0.11的窘境
这些日子一直都想通读,甚至重写一次
linux0.11
的内核,在黑暗中摸索的日子真是痛苦,于渊的《自己动手写操作系统》提供的调试方法,都有试过,总是感觉进展速度很慢很慢。
wlr_tang
·
2011-03-05 16:00
linux
UP
第一篇博文
csdn申请到好久了,今天才写第一篇博文,我想这将会是我以后的技术博客了,花了3天时间终于在ubuntu的vmware上把
linux0.11
编译运行起来了,看着自己一手配置,修改,调试的
roma823
·
2011-02-24 20:00
linux0.11
使用nasm改写汇编部分
之前在博客上说要把
linux0.11
后续的代码发布出来,但是由于没有通过最后的测试一直没有发。现在依旧没有通过最后的测试,不过我决定先把把它们发上来。我已经上传一份最后一天的文件到我的资源。
huer0625
·
2011-01-27 10:00
Linux0.11
中系统内存的使用
文件转:http://hi.baidu.com/qiqi7036/blog/item/971e1316bab8b94b21a4e9e6.html系统内存分为基本内存(1M)和扩展内存,总长度保存在全局变量memory_end中。1M以后的扩展内存大小(KB)是由setup.s程序在引导时间从BIOS中获取,并保存在内存0x90002位置的。memory_end的计算方法如下:#defineEXT_
chenxiancool
·
2011-01-10 14:00
linux0.11
内核源码剖析:第一篇 内存管理、memory.c
linux0.11
内核源码剖析第一篇:memory.cJuly二零一一年一月六日-----------------------------------------博主声明:1.本系列非linux系统教程
v_JULY_v
·
2011-01-06 22:00
数据结构
C++
c
linux
C#
linux0.11
内核源码剖析:第一篇 内存管理、memory.c
linux0.11
内核源码剖析第一篇:memory.cJuly二零一一年一月六日-----------------------------------------博主声明:1.本系列非linux系统教程
izuoyan
·
2011-01-06 22:00
数据结构
C++
c
linux
C#
linux0.11
内核源码剖析:第一篇 内存管理、memory.c
linux0.11
内核源码剖析第一篇:memory.cJuly二零一一年一月六日-----------------------------------------博主声明:1.本系列非linux系统教程
shangjava
·
2011-01-06 22:00
数据结构
C++
c
linux
C#
对Linux内核映像架构的理解:
今天看了
Linux0.11
的内核体系结构,感觉挺有意思的,内核与文件系统的模式有相似之处,都是有许多目录同构成,比如:有boot、fs。include。
ningxialieri
·
2010-11-20 02:00
linux内核0.11版本进程调度问题
下面简单说一下
linux0.11
内核中进程调度的原理。 0.11核中进程的调度主要由四个部分数组成:调度初始化、调度、睡眠、唤醒。
goodlixueyong
·
2010-11-18 23:00
数据结构
工作
linux
user
任务
linux内核
[Linux内核完全剖析]第六章 引导启动程序(boot)总结
Linux0.11
中设备命名方式:1-内存、2-磁盘、3-硬盘、4-ttyx(串行终端)、5-tty(控制终端)、6-并口、7-匿名管道。硬盘逻辑设备号命名方式:设备号*0x100+次设备号。
talin2010
·
2010-11-16 18:00
C++
c
linux
工作
C#
[Linux内核完全剖析]第六章 引导启动程序(boot)总结
Linux0.11
中设备命名方式:1-内存、2-磁盘、3-硬盘、4-ttyx(串行终端)、5-tty(控制终端)、6-并口、7-匿名管道。硬盘逻辑设备号命名方式:设备号*0x100+次设备号。
davelv
·
2010-11-16 18:00
linux
汇编
System
化工
终端
linux内核
[Linux内核完全剖析]第六章 引导启动程序(boot)总结
Linux0.11
中设备命名方式:1-内存、2-磁盘、3-硬盘、4-ttyx(串行终端)、5-tty(控制终端)、6-并口、7-匿名管道。硬盘逻辑设备号命名方式:设备号*0x100+次设备号。
talin2010
·
2010-11-16 18:00
C++
c
linux
工作
C#
linux0.11
进程切换
linux0.11
进程切换就绪态和运行态之间的切换 当前占用CPU的进程,只有调用了schedule()函数,才会由运行态转变为就绪态,schedule()函数选择状态为TASK_RUNNING的进程
jake1036
·
2010-11-14 15:00
linux0.11
相关进程数据结构
linux0.11
相关进程数据结构1进程结构 uniontask_union{ structtask_structtask; charstack[PAGE_SIZE] ; } 这实际上是一个内存页
jake1036
·
2010-11-13 20:00
linux0.11
的3类地址
linux0.11
的3类地址 Linux的三类地址 (1)虚拟地址空间,是指程序的段选择符和段内偏移组成的地址。一个程序的虚拟地址空间主要GDT映射的全地址空间和LDT映射的局部地址空间。
jake1036
·
2010-11-12 20:00
上一页
5
6
7
8
9
10
11
12
下一页
按字母分类:
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
其他