*nix
文章平均质量分 53
DIY-GEEKER
若有恒,何必三更眠五更起;最无益,莫过一日曝十日寒
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
提供机制而不是策略
Unix/Linux的接口设计有一句通用的格言“提供机制而不是策略”。区别对待机制(mechanism)和策略(policy)是Unix设计中的一大亮点。大部分的编程问题都可以被切割成两个部分:“需要提供什么功能”(机制)和“怎样实现这些功能”(策略)。如果由程序中的独立部分分别负责机制和策略的实现,那么开发软件就更容易,也更容易适应不同的需求。 开源-展现在我们面前的是数以千转载 2013-11-29 15:59:09 · 1235 阅读 · 0 评论 -
linux系统调用和库函数调用的区别
Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。可以参考《Linux程序设计》(英文原版为《Beginning Linux Programming》,作者是Neil Matthew和Richard Stones)第三章: Working with files。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底转载 2014-05-12 23:38:56 · 944 阅读 · 0 评论 -
例解gcc内嵌汇编(inline assembly)中&修饰符(modifier)的作用
转自:http://blog.youkuaiyun.com/bokee/article/details/7029353被gcc内嵌汇编中的&修饰符困扰了好久,一直不知道在输出列表(output list)中,=与=&有什么区别。今天找到了答案。 例1: int output; int a, b, c, d, e, f转载 2014-04-03 23:06:53 · 968 阅读 · 0 评论 -
linux内核0.12之MINIX文件系统初探
春节期间确实懒了,博客没有怎么更新。这节日快过了,心里却很不踏实,最近没学习啊。今天果断看点文件系统的知识。minix文件系统现在是很少用了,但是基本的东西还是不变的。本着占了茅坑就一定要拉的责任感,还是把看的东西写一写吧。基本上,一个硬盘可以如下分区:当然并非所有的硬盘都具有主引导扇区,这个要视情况而定(未必所有硬盘都具有引导功能)而minix操作系统的组成如下所示: 位原创 2014-02-04 21:56:13 · 1898 阅读 · 1 评论 -
内核阶段学习总结
其实之前就已经认真的读过《深入理解计算机系统》,尽管这本书已经写得非常的实用详细,但是一切总归是理论。没有代码,一切都如空中楼阁,不切实际。只有到最近阅读赵炯来时的《linux内核完全解析》,书中对代码的注释非常详细,对操作系统才有了质的的理解。于是有深深的感悟到,没有阅读源代码的学习是痛苦而没有成效的。于是有非常渴望看《linux内核源代码情景分析》。 不过这个不能急,毕竟软件是时间性非常强原创 2014-01-03 22:09:28 · 911 阅读 · 1 评论 -
软中断
软中断一般是指由指令int引起的“伪”中断动作——给CPU制造一个中断的假象;而硬中断则是实实在在由8259的连线触发的中断。因此,严格的讲,int与IRQ毫无关系,但二者均与中断向量有关系。int引起的中断,CPU是从指令中取得中断向量号;而IRQ引起的中断,CPU必须从数据线上取回中断号(硬件引发中断首先加到8259的某个IRQ引脚上,8259根据定义好的规则换算出相应的中断向量号,将其放在数转载 2013-12-19 16:41:01 · 4577 阅读 · 0 评论 -
特权级0的代码到特权级3代码的转移之IRET指令
由 于处于特权级0的代码不能直接把控制权转移到特权级3的代码中执行,但中断返回操作是可以的,因此当初始化GDT、IDT和定时芯片结束后,我们就利用中 断返回指令IRET来启动第1个任务。具体实现方法是在初始堆栈init_stack中人工设置一个返回环境,即把任务0的TSS段选择符加载到任务寄存 器LTR中、LDT段选择符加载到LDTR中以后,把任务0的用户栈指针(0x17:init_stack)和原创 2013-12-31 22:11:13 · 2237 阅读 · 0 评论 -
boot.s 段限长设置
01 ! boot.s 程序02 ! 首先利用BIOS中断把内核代码(head代码)加载到内存0x10000处,然后移动到内存0处。03 ! 最后进入保护模式,并跳转到内存0(head代码)开始处继续运行。04 BOOTSEG = 0x07c0 ! 引导扇区(本程序)被BIOS加载到内存0x7c00处。05 SYSSEG = 0x1000 ! 内核(head)先加载到0x10000处,然后原创 2013-12-31 16:15:57 · 1001 阅读 · 0 评论 -
对 LSS init_stack,%esp 语句的分析
转自http://blog.youkuaiyun.com/tonutu/article/details/3268321LSS init_stack,%esp . . . .file 128,4,0init_stack:转载 2013-12-31 17:16:59 · 1254 阅读 · 0 评论 -
进程最大可访问的虚拟内存空间
在linux0.12中,进程最大可访问的虚拟内存空间是64M.这是明确写了的。但是cpu并没有提供这种机制来定义一个进程的虚拟地址空间啊。那么是如何实现对进程虚拟地址空间的定义的? cpu至于定义段的基地址以及段限长。因此我认为内核肯定是将一个任务的放到一个段中,这种段的基地址必然是64M对齐的,而且段的长度 不能超过64M。 这只是我的个人猜测,内核的源代码还原创 2014-01-01 16:01:29 · 1532 阅读 · 0 评论 -
毕业后读过的一些技术书籍
1.《嵌入式linux应用开发完全手册》2.《鸟哥的私房菜》3.《linux c 一站式编程》4.《数据结构与算法分析》5《tcp/ip协议详解卷一》6《深入理解计算机系统》7. 《UNIX网络编程》8 《系统程序猿的成长计划》9. 《linux内核完全剖析》10 《韦东山视频》11.《机制而非策略》12.《代码之美》作为一个嵌入式工程师,里面的大部原创 2013-12-07 08:39:59 · 823 阅读 · 0 评论 -
第四个驱动程序-tq2440
#include #include #include#include #include #include #include #include #include #include #include #include #include #include static struct class *thirddrv_class;static struct class_d原创 2014-08-16 23:21:12 · 725 阅读 · 0 评论
分享