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
内核--idt(中断描述符表的初始化)head.s分析
head.s被编译成system模块的最前面部分,故而称为头部。这段程序处于地址的绝对0处,首先是加载各个数据段寄存器,重新设置中断描述符表idt,共256项,并使各个表项均指向一个只报错误的哑中断程序。然后重新设置全局描述符表gdt。接着使用物理地址0与1M开始处的内容相比较的方法,检测A20地址线是否已真的开启(如果没有开启,则在访问高于1Mb物理内存地址时CPU实际只会访问(IPMOD,如果
JK198310
·
2013-09-12 18:00
kernel_mktime 函数详解
kernel_mktime函数详解这几天在linux内核QQ群中看到很多成员都在询问
linux0.11
版中kernel_mktime函数原理,看来大家都对linux内核很感兴趣啊!
a107316170
·
2013-08-27 20:00
linux时间
Linux0.11
内核源码
kernel_mktime
LINUX0.11
内核阅读笔记
一.源码目录图1二.系统总体流程:系统从boot开始动作,把内核从启动盘装到正确的位置,进行一些基本的初始化,如检测内存,保护模式相关,建立页目录和内存页表,GDT表,IDT表。然后进入main进行初始化设置,main完成系统各个模块要用到的所有数据结构和外部设备的初始化。使得系统可以正常的工作。然后才进入用户模式。执行第一个fork生成进程1执行init,运行shell,接受并执行用户命令.这里
DLUTBruceZhang
·
2013-07-21 19:00
linux
源代码
内存
内核
Linux0.11
Linux0.11
进程分配时间片的策略
想知道内核什么时候给进程重新分配时间片,最好的办法就是阅读源代码(其中已经打了注释)/****************************************************************************/ /*功能:进程调度。*/ /*先对alarm和信号进行处理,如果某个进程处于可中断睡眠状态,并且收*/ /*到信号,则把进程状态改成可运行。之后在处可运行状态
DLUTBruceZhang
·
2013-07-15 14:00
linux
进程
进程切换
进程调度
时间片
Linux0.11
中对文本文件进行修改的策略
现在,假设hello.txt是硬盘上已有的一个文件,而且内容为“hello,world”,在文件的当前指针设置完毕后,我们来介绍sys_read,sys_write,sys_lseek如何联合使用才能把数据插入到hello.txt中。可以通过如下方式对它们进行组合应用,应用程序的代码如下: #include #include #include #defineLOCATION6 intmain(
DLUTBruceZhang
·
2013-07-15 14:00
linux
函数
文件指针
文件修改
文件偏移
Linux0.11
创建进程的过程分析--fork函数的使用
/* *linux/kernel/fork.c * *(C)1991LinusTorvalds */ /* 注意:signal.c和fork.c文件的编译选项内不能有vc变量优化选项/Og,因为这两个文件 内的函数参数内包含了函数返回地址等内容。如果加了/Og选项,编译器就会在认为 这些参数不再使用后占用该内存,导致函数返回时出错。 math/math_emulate.c照理也应该这样,不过好像它
DLUTBruceZhang
·
2013-07-11 14:00
c
linux
fork
Linux0.11
小结
第一部分基础内容1.操作系统基础 操作系统是计算机硬件系统与用户程序间重要环节,理解操作系统的原理是编写优秀代码的基础。教课书中阐述的操作系统一般由5部分组成。一个最简单的操作系统,可以不需要文件,不需要网络,只要实现多进程,且进程间也不需要通信,相互独立。那么这样一个简单的OS仅需要两块内容:进程管理、内存管理。这两方面内容是相辅相成,不可分割的,因为现在计算机系统的基本架构仍是指令存储-
DLUTBruceZhang
·
2013-06-30 13:00
linux
操作系统
栈
内核
行业数据
Linux0.11
启动过程
从开机加电,到执行main函数之前的过程好吧,这里应该是有执行3个汇编的文件,但是我不太了解。囧从main函数,到启动OK(即可以响应用户操作了)这个步骤做了3件事情:创建进程0,使之具备在主机中进行运算的能力,2.1已进程0为母本创建进程1,不仅有运算能力,而且还能以文件的行驶与外设进行数据交互,2.2-2.4以进程1为母本创建进程2,全面具备进程1的能力和环境,进一步具备支持“人机交互”,实现
DLUTBruceZhang
·
2013-06-30 13:00
linux
管理
硬盘
行业数据
structure
Linux0.11
进程切换和TSS结构
TSS全称为taskstatesegment,是指在操作系统进程管理的过程中,进程切换时的任务现场信息。 X86体系从硬件上支持任务间的切换。为此目的,它增设了一个新段:任务状态段(TSS),它和数据段、代码段一样也是一种段,记录了任务的状态信息。 与其它段一样,TSS也有描述它的结构:TSS描述符表,它记录了一个TSS的信息,同时还有一个TR寄存器,它指向当前任务的TSS。任务切
DLUTBruceZhang
·
2013-06-25 22:00
linux
struct
进程切换
进程调度
时间片
Linux0.11
中对地址的管理
逻辑地址(LogicalAddress) 是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel保护模式下程序执行代码段限长内的偏移地
DLUTBruceZhang
·
2013-06-18 08:00
linux
内存
内核
X
处理器
对
Linux0.11
中 进程0 和 进程1分析
1.背景进程的创建过程无疑是最重要的操作系统处理过程之一,很多书和教材上说的最多的还是一些原理的部分,忽略了很多细节。比如,子进程复制父进程所拥有的资源,或者子进程和父进程共享相同的物理页面,拥有自己的地址空间,子进程创建后接受统一调度执行等等。原理性的书籍更多地关注了进程创建过程中各个关键部分的功能,但由于过于抽象,很难理解,因此如果自己能够实际操作,实践这个过程就很重要,可以让那些看起来抽象的
DLUTBruceZhang
·
2013-06-18 08:00
linux
struct
操作系统
进程
处理器
搭建
Linux0.11
系统环境
学习
Linux0.11
内核源代码,我们需要搭建一个基于
Linux0.11
的操作平台: 1)boch仿真器:可以从http://bochs.sourceforge.net/中下载到
DLUTBruceZhang
·
2013-06-13 20:00
linux
源代码
扩展
内核
文件系统
linux0.11
是如何加载并执行一个二进制可执行文件和shell脚本文件的?
答:
linux0.11
仅支持ZMAGIC执行文件格式,并且执行文件代码都从逻辑地址0开始执行,因此不支持含有代码或数据重定位信息的执行文件。
zzsfqiuyigui
·
2013-04-18 22:00
Linux 内核--fork()函数创建进程
本文分析基于
Linux0.11
内核,转载请表明出处http://blog.csdn.net/yming0221/archive/2011/06/05/6527337.aspxLinux在move_to_user_mode
ctthuangcheng
·
2013-04-15 11:23
linux
kernel
Linux 内核--任务0的调度切换
本文分析基于
Linux0.11
内核,转载请标明出处http://blog.csdn.net/yming0221/archive/2011/06/09/6533865.aspx。
ctthunagchneg
·
2013-04-15 11:00
利用bochs 调试
有关Bochs调试功能的说明参见前面14.2节,这里基于
Linux0.11
内核来说明Windows环境下Bochs系统调试操作的基本方法。
·
2013-04-06 15:00
调试
linux 0.11内核源码 malloc 的实现
这里分析
linux0.11
内核源码中,给内核使用的malloc函数(注意,是给内核使用的,不是给应用程序使用的,不是glibc)直接上图:解释: 这个图只举例bucket_size=16的桶列表.
zdl1016
·
2013-03-20 15:00
阅读赵炯的《Linux内核完全注释》之前必须知道的!
Linux0.11
虽然不是什么“珠穆朗玛峰”,但它肯定还是“华山”或“泰山”。虽然有路但你还是需要最基本的努力和花费一定的代价才能“攀登”上去。
new妞宁
·
2013-03-03 14:56
linux
linux
汇编
assembly
内核
【Record】
linux0.11
上的汇编
bootsect.s汇编代码阅读笔记------#代码段47movax,#BOOTSEG48movds,ax49movax,#INITSEG!(0x9000)50moves,ax51movcx,#25652subsi,si!si=0,源地址ds:si=0x07c0:0x000053subdi,di!di=0,目的地址es:si=0x9000:0x000054rep!55movw!56jmpigo,
lihuhu
·
2013-03-01 17:23
读书笔记《30天自制操作系统》day06
2.GDT,IDT的补充知识,图片来自赵炯博士
linux0.11
内核分析书[cpp]viewplaincopystruct SEGMENT_DESCRIPT
djinglan
·
2013-02-18 14:00
linux0.11
调试教程,写了个readinode,参数i节点号,返回磁盘i节点到文件inodexxxx
2013/2/15bychenghao0511#gmail.comstat/bin/shreadinode/dev/hd12353hexdumpinode2353000000081c90000d4000003dc92403f0100bbc70000010bbc8bbc9bbcabbcbbbccbbcdbbce00000000020hexdump2085命令第一行是当前目录,第二行是父目录。第三行是
sitelist
·
2013-02-15 13:00
copy_from_user的具体实现 2
[
linux0.11
/mm/memory.c]//验证线性地址是否可写voidwrite_verify(unsignedlongaddress){ unsignedlongpage;
stonehorse
·
2013-01-18 16:12
linux
内核
Linux内存管理
Linux0.11
的内存管理总结。。。许多其它内容参见“地址翻译”部分1、分页相关的页目录表和页表
Linux0.11
中的内存管理是分页式的内存管理。
yanlinwang
·
2013-01-14 19:00
linux0.11
调试教程,task3概述
通过/etc/rc和/etc/update文件的运行过程,可以很好的理解sys_pause的作用和机理。以及可以理解信号的通信机制和sys_alarm系统调用是如何起作用的。update会设置update所在任务的信号值SIGHUP和SIGTERM的处理句柄为SIG_IGN(忽略)。linux-0.11调试教程,task3(01),/etc/rc文件linux-0.11调试教程,task3(02)
sitelist
·
2013-01-12 18:00
linux0.11
minix1.0文件系统 下篇 根节点的 buffer_head结构,根节点内容
第一个i节点块的第一个i节点对应的是根节点,因为这个节点的izone[0]为0x027e!!!41ed是文件类型0x19294是根节点对应的内存i节点地址,izone[0]是0x02740x1fc50是根目录的buffer_head指针,既缓冲头指针,根目录的块号为0x027e,数据所在的高速缓冲区地址是0x003f400。下面是根目录文件的内容,大小是0xb0,每个目录项是一行既16个字节,头两
sitelist
·
2013-01-06 19:00
i节点
以
Linux0.11
为实例,兴趣所至,个人总结,不保证正确性。。。[i节点] i节点是表征文件的方式,因此在
linux0.11
内核中,有一系列专门操作i节点的函数,在fs/inode.c中。
yanlinwang
·
2013-01-06 13:00
linux
linux
linux
磁盘
i节点
Linux文件系统概述
以
Linux0.11
为实例,个人总结,不保证正确性。。。[文件系统]磁盘上的数据以块为单位进行读写,每一个块称为一个逻辑块。在理解磁盘的逻辑视图时,以逻辑块为单位来理解。
yanlinwang
·
2013-01-05 13:00
linux
linux
linux
文件系统
linux0.11
,进程0,进程1,进程2运行的先后顺序
环境,ROOT_DEV=/dev/hd11,进程0,然后state等于12,进程1,然后state等于13,进程2。
sitelist
·
2013-01-03 14:00
Linux0.11
内核--内核态与用户态
内核态与用户态intelx86 架构的 CPU 分 Ring0-Ring3 三种级别的运行模式,Ring0级别最高,Ring3 最低。 针对不同的级别,有很多的限制,比如说传统的 in,out 指令,就是端口的输入输出指令,在 Ring0 级下是可以用的,但在 Ring3 级下就不能用,你用就产生陷井,告诉你出错了,当然限制还有很多了,不只是这一点。 操作系统下是利用这个特点,当操作系统自己的代码
X_White
·
2013-01-02 21:00
Linux0.11
内核--内存组织和进程结构
进程结构
Linux0.11
中的每个进程都有如下的结构:在gdt中占有两项,一项是tss段描述符,一项是ldt段描述符。
X_White
·
2013-01-02 20:00
linux 简单分析
我选择linux源码版本是
linux0.11
,为什么选择它?因为它代码量少且资料多。 针对它的分析是建立于网上资料之上(快捷、效果好)。
banketree
·
2012-12-24 09:00
linux
linux
linux
Linux高速缓存详解(一)
在Linux高速缓存概述中介绍了
Linux0.11
中的高速缓存的基础结构,这一部分将详细分析Linux高速缓存部分的相关函数。
yanlinwang
·
2012-12-17 11:00
linux
linux
linux
buffer
buffer
高速缓存
在windows下使用insight实现源码级调试 linux内核
tid=11074&extra=page%3D1&page=1]在
linux0.11
目录下有start_bochs.bat和start_gdb.bat两个文件,分别运行之,调试过程请参考截图debug-linux.JPG
dj0379
·
2012-12-13 07:00
Linux0.11
内核--内核态与用户态
http://blog.csdn.net/yming0221/article/details/6314220内核态与用户态intelx86架构的CPU分Ring0-Ring3三种级别的运行模式,Ring0级别最高,Ring3最低。针对不同的级别,有很多的限制,比如说传统的in,out指令,就是端口的输入输出指令,在Ring0级下是可以用的,但在Ring3级下就不能用,你用就产生陷井,告诉你出错了,
junmuzi
·
2012-11-25 15:00
Linux中的栈
一、linux中的堆栈
Linux0.11
核中总共涉及到了四种栈:系统引导时候的临时栈;内核初始化使用的栈;内核态栈;用户态栈。1)
zhuyi2654715
·
2012-11-11 03:00
bochs 里玩 linux-0.11
linux0.11
源码文件在linux-0.11-081030.tar.gz中,进入目录解压后的目录linux-0.11中1. ubuntu 8.04gc
goldfighter
·
2012-11-07 16:00
Linux0.11
版源代码分析——init/main.c(进程0及fork)
进程0是一个特殊的进程,它是所有其它进程的祖先进程,所有其它的进程都是fork通过系统调用,复制进程0或者其后代进程产生的。但是进程0却不是通过fork调用产生的。进程0的代码就是内核system模块的代码,所以可以认为系统一启动进程0就开始运行。但是此时并不是真正的进程0,应为此时gdt中还没有设置tss和ldt描述符,直到sched_init()中才设置了tss和ldt并且把tss加载到tr寄
weixin_30390075
·
2012-09-16 09:00
操作系统
Linux0.11
版源代码分析——init/main.c
Linux0.11
版源代码中,main.c在代码中的位置十分重要,完成系统的初始化,并启动进程。涉及到进程、内存管理、文件管理等等。尽管这部分代码看起来十分简单,但是分析起来,难度很大。
weixin_30951231
·
2012-09-09 09:00
内存管理
linux0.11
内存memory.c一些函数的简单的注释(一)
memory.c中一些函数自己的一些自己看法,有错大家指出来。或者是更好的解释可以个提出来呀。有什么问题也可以向
[email protected]
发邮件,谢谢大家。1.设置页表、页目录的位置boot/head.s_pg_dir://页目录将会存放在这里。因为这句话出现head.s第一个有效代码的位置,因为head.s移动到内存物理0的位置,所以页目录的位置存放在0x0000处org1000h
Reage--
·
2012-08-25 22:36
linux
学习
linux
table
alignment
存储
工作
up
linux0.11
内存memory.c一些函数的简单的注释(一)
memory.c中一些函数自己的一些自己看法,有错大家指出来。或者是更好的解释可以个提出来呀。有什么问题也可以向
[email protected]
发邮件,谢谢大家。1.设置页表、页目录的位置boot/head.s_pg_dir: //页目录将会存放在这里。因为这句话出现head.s第一个有效代码的位置,因为head.s移动到内存物理0的位置,所以页目录的位置存放在0x
rentiansheng
·
2012-08-25 22:00
简单的bochs配置(个人理解)
正了八经的学习linux也有1个多月,虽有然没有将
linux0.11
调试成功,但是在其中还是学了一些东西,现在总结一下,看看有什么错误没有?
rentiansheng
·
2012-08-12 12:00
安装bochs并配置
linux0.11
一、安装bochs在bochs.sourceforge.net下载bochs源代码包并解压缩./configure--enable-debugger--enable-disasm出现错误一:ERROR:pkg-configwasnotfound,orunabletoaccessthegtk+-2.0package.Installpkg-configandthegtk+developmentpack
acmfly
·
2012-05-26 22:00
Linux0.11
bochs
找人一些研究linux内核,呵呵
主要讨论
linux0.11
内核学习,目前自己在学习中,愿跟有兴趣、喜欢讨论的童鞋共同学习提高get_empty_page和get_free_page函数的区别:get_free_page函数仅仅是在主内存区找到一页空闲物理内存
astonqa
·
2012-05-25 18:00
linux/mm/memory.c/free_page_tables()
看
linux0.11
的源码有一段时间了,发现前期的轮廓建立起来后,重点马上到了具体操作上。
astonqa
·
2012-05-24 17:00
第二记 在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
从
linux0.11
学习linux内核设计之模式转换:实模式-保护模式(2)
作者:朱克锋转载请注明出处:http://blog.csdn.net/linux_zkf 在分析head之前先看一下这个head程序,前面讲过加载分三步进行,1,加载bootsec到0x07C00后移到0x90000位置,2,加载setup到0x90200位置,这两部分是分别加载和执行的,然而head于此是不同的,head程序在被编译成目标代码后会和内核的其他程序一起被链接成目标程序,he
linux_zkf
·
2012-05-13 16:00
linux
汇编
user
System
Parameters
linux内核
从
linux0.11
学习linux内核设计之模式转换:实模式-保护模式(1)
作者:朱克锋转载请注明出处:http://blog.csdn.net/linux_zkf 在上篇文章中bootsec已经把所有程序都加载到计算机的内存中的一定位置,下面接着上篇文章的结尾 jmpi 0,SETUPSEG开始要进入setup程序开始执行。 看一下这行代码: jmpi 0,SETUPSEG 这行代码的作用就是跳转到SETUPSEG出开始执行,就是setup程
linux_zkf
·
2012-05-13 11:00
从
linux0.11
学习linux内核设计之程序加载
Linux0.11
的启动部分在boot目录中,是汇编语言描述的,包括bootsect.s、setup.s、head.s三个文件 大家都知道,所谓的操作系统就是一个软件而已,计算机的运行离不开这个软件
linux_zkf
·
2012-05-13 10:00
从
linux0.11
学习linux内核设计之开始
作者:朱克锋 转载请注明出处:http://blog.csdn.net/linux_zkf 这一列文章,我将从
linux0.11
的源码分析linux内核,自知水平与资历尚浅,还望各位读者在阅读过程中批评指正
linux_zkf
·
2012-05-13 09:00
8259A芯片中断号与linux 系统中断号的对应关系
在
linux0.11
里系统把主片的ICW2设置为0x20,就表示中断请求IR0~IR7中断号的范围是0x20~0x27(8259A芯片产生的IRQ号必须是连续的,所以也只需要设置起始号就ok了!)...
tianwailaibin
·
2012-04-04 17:00
上一页
4
5
6
7
8
9
10
11
下一页
按字母分类:
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
其他