上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 45 下一页

2011年5月10日

摘要: 1.从系统加电起所执行程式的顺序为:ROMBIOS bootsect.S setup.S head.S main.c2.ROMBIOS当PC机加电后,80x86结构的CPU将自动进入实模式,并从地址0xFFFF0开始自动执行某些系统的检测。并在物理地址0处开始初始化中断向量。此后,他将可启动设备的第一个扇区(磁盘引导扇区512字节)读入内存绝对地址0x7C00处,并跳到这个地方去执行(执行bootsect.S处指令)。3.bootsect.S执行期间,他会将自己移动到内存绝对地址0x90000开始处并继续执行。该程式的主要作用是首先把从磁盘第2个扇区开始的4个扇区的setup模块(有setup 阅读全文
posted @ 2011-05-10 22:12 yming0221 阅读(352) 评论(0) 推荐(0)
摘要: 一.研究内核的目的欲举其事,先正其道。要谈论内核的研读以及交流心得,前提必须得有一个恰当准确的目的,方能收获良多。很多人都有这样一个疑惑,为什么要研究内核呢?我们又不是内核开发者(或许你将来就会成为Linus的助手:-)。此言差矣,众所周知,Linux包含两层含义,一是内核,二是发行版本,前者乃核心精华,后者则是应用方案,二者皆不可废。知前者而略后者,思而不学也;略前者而知后者,学而不思也。学习是循序渐进的,我们学习Linux,首先接触的就是各具特色的发行版本,简单轻松地入门,在学习的过程中逐渐对Linux框架有了一个初步的认识,浅白地说,就是懂得了Linux世界的游戏规则。在你自身能力提高的 阅读全文
posted @ 2011-05-10 19:48 yming0221 阅读(190) 评论(0) 推荐(0)

2011年5月9日

摘要: Linux内核中的系统启动引导代码位于/boot目录下但是,由于。Linus当时是在MINIX系统上开发Linux的,最初MINIX系统上还没有移植gas程序,因此Linus就使用了MINIX系统上的as86。bootsect需要是16位的实模式程序。目前gas汇编器也支持16位的编译。所以现在也可以直接用as编译器直接编译。下面是用at&t格式改写的bootsect.s代码 .code16# rewrite with AT&T syntax by falcon <wuzhangjin@gmail.com> at 081012## SYS_SIZE is the n 阅读全文
posted @ 2011-05-09 22:02 yming0221 阅读(600) 评论(0) 推荐(0)

2011年5月6日

摘要: 8086/8088CPU中寄存器为16位,16位子长的机器可以访问的最大存储地址空间为64K,但是8086/8088CPU的地址线有20根,能够寻址1M的地址空间。为了解决这种冲突,采用存储器分段的办法,实际地址=段地址左移4位+偏移地址。按照这样计算,每个段的大小最大可达64K,如果所有的段都按这个大小,那么可以划分16个段;每个段的起始地址必须是每个小段的起始地址,即00000H-FFFF0H最后四位为0,也就是只使用高16位。最多可划分64K个段,这时每个段的大小为16个字节。详细查看:http://blog.csdn.net/yming0221/archive/2011/03/19/. 阅读全文
posted @ 2011-05-06 20:30 yming0221 阅读(142) 评论(0) 推荐(0)
摘要: (注:转载请表明出处:http://blog.csdn.net/yming0221)持续更新中......Linux0.11内核--8086中的实模式Linux0.11内核--启动引导代码分析bootsect.sLinux0.11内核--32位保护模式GDT(全局描述符表)Linux0.11内核--启动引导代码分析setup.sLinux0.11内核--A20地址线Linux0.11内核--idt(中断描述符表的初始化)head.s分析Linux0.11内核--启动代码分析setup.s建立页目录和页表static,inline,volatile的作用Linux0.11内核--硬件中断初始化及 阅读全文
posted @ 2011-05-06 20:15 yming0221 阅读(137) 评论(0) 推荐(0)

2011年5月5日

摘要: 系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。这个中断的设置在kernel/sched.c中441行函数中void sched_init(void) { int i; struct desc_struct * p; if (sizeof(struct sigaction) != 16) panic("Struct sigaction MUST be 16 bytes"); set_tss_desc(gdt+FIRST_TSS_ENTRY,&(init_task.task.tss)); set_ldt_desc(g 阅读全文
posted @ 2011-05-05 22:09 yming0221 阅读(671) 评论(0) 推荐(0)
摘要: 既然所有程序设计语言的第一个例子都是在屏幕上打印一个字符串 "Hello World!",那我们也以这种方式来开始介绍 Linux 下的汇编语言程序设计。在 Linux 操作系统中,你有很多办法可以实现在屏幕上显示一个字符串,但最简洁的方式是使用 Linux 内核提供的系统调用。使用这种方法最大的好处是可以直接和操作系统的内核进行通讯,不需要链接诸如 libc 这样的函数库,也不需要使用 ELF 解释器,因而代码尺寸小且执行速度快。Linux 是一个运行在保护模式下的 32 位操作系统,采用 flat memory 模式,目前最常用到的是 ELF 格式的二进制代码。一个 E 阅读全文
posted @ 2011-05-05 13:01 yming0221 阅读(463) 评论(0) 推荐(0)

2011年5月4日

摘要: 当进程等待资源或者事件时,就进入睡眠状态。有两种睡眠态,不可中断睡眠态(TASK_UNINTERRUPTIBLE)和可中断睡眠态(TASK_INTERRUPTIBLE)。处于可中断睡眠态的进程不光可以由wake_up直接唤醒,还可以由信号唤醒。在schedule()函数中,会把处于可中断睡眠态并且收到信号的进程变成运行态,使他参与调度选择。Linux0.11中进入可中断睡眠状态的方法有3中调用interruptible_sleep_on()函数调用sys_pause()函数调用sys_waitpid()函数。第一种情况用于等待外设资源时(如等待I/O设备),这时当前进程会挂在对应的等待... 阅读全文
posted @ 2011-05-04 13:12 yming0221 阅读(517) 评论(0) 推荐(0)

2011年5月2日

摘要: 下载地址http://www.sentex.net/~mwandel/jhead/jhead是一个处理照片exif信息的命令行工具。它的强大在于它一、提供了其他工具所不能企及的功能二、强大的批处理能力据说该工具最早是在linux环境下开发的,现已被移植到多个平台,包括windows。但,目前为止并没有GUI,也就是图形外壳,所以理解并使用该工具前你必须了解一些简单的命令行知识..........跟所有的命令行工具一样,它的使用方法为:jhead 参数列表 jpg文件列表比如:jhead -se 1.jpg..................................处理单个文件jhead 阅读全文
posted @ 2011-05-02 22:06 yming0221 阅读(967) 评论(0) 推荐(0)
摘要: 在认识ImageMagick之前,我***的图像浏览软件是KuickShow,截图软件是KSnapShot,这两款软件都是KDE附带的软件,用起来也是蛮方便的。在一次偶然的机会中,我遇到了ImageMagick,才发现Linux竟然有如此功能强大的图像软件。你将会发现,大部分的操作,你只要在终端下动动键盘即可,省得你用鼠标点来点去。下面,我对ImageMagick的主要功能做一个简单的介绍,其中覆盖的大都是人们常用的一些功能,如果你要全面的了解它的知识,你可以看看它的man手册。convertconvert顾名思义就是对图像进行转化,它主要用来对图像进行格式的转化,同时还可以做缩放、剪切、模糊 阅读全文
posted @ 2011-05-02 21:17 yming0221 阅读(1137) 评论(0) 推荐(0)
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 45 下一页

导航