自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

存储实验室

专注存储领域

  • 博客(36)
  • 收藏
  • 关注

原创 博客迁移

新地方 http://way4erver.com

2012-02-06 17:45:43 902

原创 多协议存储系统 MPX系列磁盘阵列

MPX多协议存储系统快完工了,下面是整个系统的截图。http://photo.163.com/[email protected]

2011-11-10 18:55:00 1223 2

原创 mongodb中的oom-killer的问题

本文主要内容遇到问题什么是Overcommit和OOM?overcommit的策略当oom-killer发生时,linux会选择杀死哪些进程实验结论遇到的问题 在对mongodb的GridFS进行压力测试时(128M内存,几十个读写进程),经常触发oom-killer。轻则mongod进程被系统杀死,重则整个系统假死(终端没有反应,SSH可以建立连接,但是登录不上,系统可以

2012-01-09 23:17:51 3505

原创 分布式文件系统MFS、Ceph、GlusterFS、Lustre的比较

MooseFS(MFS)CephGlusterFSLustreMetadata server单个MDS。存在单点故障和瓶颈。多个MDS,不存在单点故障和瓶颈。MDS可以扩展,不存在瓶颈。无,不存在单点故障。靠运行在各个节点上的动态算法来代替MDS,不需同步元数据,无硬盘I/O瓶颈。双MDS(互相

2011-12-28 15:01:28 33791 12

原创 对Amazon EBS 的测试

未完成...

2011-12-16 16:35:11 980

原创 Linux内核态抢占机制分析

【摘要】本文首先介绍非抢占式内核(Non-Preemptive Kernel)和可抢占式内核(Preemptive Kernel)的区别。接着分析Linux下有两种抢占:用户态抢占(User Preemption)、内核态抢占(Kernel Preemption)。然后分析了在内核态下:如何判断能否抢占内核(什么是可抢占的条件);何时触发重新调度(何时设置可抢占条件);抢占发生的时机(何时检查可抢

2011-11-12 20:44:20 2448

原创 写笔记也是一种享受

Evernote让你享受思路从指尖流出的感觉。

2011-10-03 18:55:23 764 2

原创 Interrupts and Exceptions (中断事件与异常事件)

1    Interrupts事件与Exceptions事件的区别 Interrupts事件和Exceptions事件的共同点是改变当前CPU的控制流。 Interrupts:异步事件(跟当前指令无关)。事件是由CPU外部产生的。 Interrupts事件产生

2011-09-04 19:47:22 1439

原创 第27章 1KOS版本说明

版本功能头文件源码文件1kos.01.tar.gz打印1kos booting....。把软驱A中的第二个扇区中的。程序复制到0x7e00上。程序跳转到0x7e00上。打印love weiwei...

2011-09-04 19:29:25 776

原创 第26章 总结

需要完善的事情:1、把任务的硬件切换变成软件切换。2、自己写一套双向链表和HASH表的库函数,便于代码复用。

2011-09-04 19:27:40 544

原创 第25章 实现进程间通信(IPC)

目标:实现系统调用int send_msg(int pid, struct msg *msg);int receive_msg(struct msg *msg);消息结构如下所示:#define TASK_MSG_NR 10struct

2011-09-04 19:25:42 446

原创 第24章 任务中定时器的设计与实现

目标:实现定时器功能,实现系统调用sleep。定时器的定义如下所示,系统使用定时器链表管理定时器。struct timer{ struct task_struct *task; struct timer *next, *prev; in

2011-09-04 19:18:16 746

原创 第23章 扩展任务管理模块

1、增加任务的HASH表,HASH值是任务的PID,这样通过任务的PID就能查找到任务的task_struct。2、增加任务挂起队列、死亡队列。运行态的任务在运行队列。被挂起的任务在挂起队列。被杀死的任务在死亡队列。3、增加任务挂起函数、任务唤醒函数、任务杀死函数

2011-09-04 19:10:42 661

原创 第22章 系统时间(RTC编程)

取得当前系统时间的方法是直接访问RTC芯片。RTC芯片可以通过0x70和0x71端口直接访问。0x70是选址寄存器,0x71是数据寄存器。Addr Function==== =========================================**

2011-09-04 19:09:02 983

原创 第21章 内存管理的设计与实现

内存管理的目标是提供:内核函数:void *sys_malloc(unsigned long size); void *sys_free(void *);系统调用函数 void * malloc(unsigned long size); void * free(voi

2011-09-04 19:06:45 800

原创 第20章 内联汇编

C/C+代码与汇编代码间有交接,双方要指定交接人。交接人之间传值,完成C/C++代码与汇编代码的沟通。内联汇编执行步骤:1、C/C++代码把值传给汇编代码(输入)2、内联汇编中的汇编语句3、汇编代码把值传回给C/C++代码(输出)可以参考《Develo

2011-09-04 18:59:38 443

原创 第19章 管理系统与元数据

管理资源的系统都是管理系统,OS也是管理系统。描述资源的数据都是元数据1、如何设计元数据详细的元数据可以从多角度、多维度描述资源 可以更好的管理资源2、如何存取元数据元数据的格式 元数据存放的位置(分配和回收) 访问元数据(共享、竞争)

2011-09-04 18:58:42 468

原创 第18章 锁的使用

假如当前任务有锁,当时钟中断产生时,在任务调度上也需要这把锁,这就陷入死锁状态。解决办法是在task_stuct 上新增成员 lock_count,当前任务没有锁时(lock_count == 0)才可以调度。

2011-09-04 18:58:01 384

原创 第17章 互斥量的设计与实现

当所有的任务在同个单一地址空间下,使用共享资源时,必然涉及到共享资源的竞争。只有多个任务互斥地访问共享资源时才不会发生错误。只有提供互斥或信号量才能保证内核并发机制。任何互斥尝试必须基于一些基础硬件互斥机制。最常见的这种约束是某一时刻对内存的一次访问。(intel处理

2011-09-04 18:57:06 462

原创 第16章 测试任务调度算法

如何知道任务调度算法是正确的,可以创建800个(包括任务0)任务(当前任务优先级数目为32),任务执行下面的代码。 void task_func(void) { int pid = current->pid; int x,y,z;

2011-09-04 18:50:00 679

原创 第15章 实现系统调用

在 1KOS中,我们使用中断向量0x80用于实现系统调用。0x80中断的ISR是trap gate而不是interrupt gate。我们需要在IDT表中的第0x80个中断向量中填入陷阱门(trap gate)描述符。而且设置描述符中DPL=0x3,这样用户态程序也能进行系统调用

2011-09-04 18:47:47 412

原创 第14章 任务调度算法总结

CPU调度要达到的目的有:1、极小化平均响应时间2、极大化系统吞吐率3、系统各个功能部件的均处于繁忙状态4、公平机制

2011-09-04 18:42:51 373

原创 第13章 实现复杂度O(1)的调度算法

参考了linux 2.6内核的O(1)调度算法,在1KOS中实现了该调度算法。实现该算法的主要是靠:1、任务的双向链表(时间片轮转算法,而且双向链表适合增加删除,算法复杂度为O(1))2、优先级位图(跟优先级队列配合,算法复杂度为O(1))3、优先级队列(其实

2011-09-04 18:41:38 844

原创 第12章 中断嵌套问题、IOPL问题

问题:在80386中,中断是否可以嵌套?在80386中有两种事件(可以参考我写的《中断与异常》文档):1、中断事件(异步 interrupts)(一般是硬件中断)2、异常事件(同步 exceptions)在IDT中,有三种门描述符(通过设置

2011-09-04 18:39:18 787

原创 第11章 任务调度

如何在Intel 386 CPU进行任务切换在Intel 386 CPU中支持硬件切换任务(有多种硬件切换方法,但是我们只用一种方法)。386 CPU 支持:        任务嵌套(我们不用)        支持4种特权级(我们只用两种,0和3)

2011-09-04 18:26:12 777

原创 第10章 时钟中断(PIT编程)

设置时钟中断就是给操作系统加上心跳。设置时钟中断就是是设置PIT(8253/54芯片),可参考 《IBM-PC汇编语言程序设计 第2版》p384。PIT有一个控制寄存器(0x43)和三个计数寄存器(0x40~0x42)。三个计数寄存器是16位的,有两种表示形式(BCD

2011-09-04 16:56:28 1765

原创 第9章 设置ISR(中断处理函数)

中断处理有三个阶段1、进入阶段:栈保存(带出错码的中断、不带出错码的中断)2、处理阶段:中断处理3、退出阶段:恢复栈80x86中有特权级的概念,不同的特权级有不同的栈,所以中断发生时要保存中断前的栈地址。查看intel使用手册

2011-09-04 16:47:15 2240

原创 第8章 设置IDT(中断描述符表)

步骤:1、设置IDT表 可以参考《Inter微处理器 第8版》p5452、加载IDT表(只有开中断,它才开始作用)设置IDT和ISR,idt.c的源代码如下所示#include "io.h"#include "video.h"#in

2011-09-04 16:41:21 1245

原创 第7章 初始化中断(8259A编程 PIC编程)

设置IRQ硬件中断(硬件中断包括时钟中断、键盘中断等),可参考《自己动手写操作系统 第1版》p112,《Inter微处理器 第8版》p364在8259中,需要把 IRQ0~IRQ7 映射到中断向量0x20~0x27,把 IRQ8~IRQ15 映射到中断向量0x28~0x2

2011-09-04 16:39:32 1034

原创 第6章 打印函数

打印函数的原理写操作系统必须要有打印函数,这样才方便调试。对于所有的显示适配器,文本方式下显示字符的原理都是一样的,所不同的是各种适配器的视频显示存储器(又称显存)的起始地址不同;对MDA,显存的起始地址为B000:0000,对CGA、EGA、VGA是B800:0000。每个

2011-09-04 16:34:43 782

原创 第5章 在保护模式中调用C语言函数

步骤:1、设置ds、es、fs、gs、ss选择符指向内核数据段;2、调用main函数(main.c文件中的main函数由C语言编写)。setup.s源代码如下所示 .text .global pm_mode .include "ker

2011-09-04 16:22:33 802

原创 第4章 进入保护模式(设置GDT全局描述符表)

进入保护模式的步骤是:1、关中断;2、打开A20地址线,使之能访问1M以上的内存;3、设置GDT; GDT知识可查看《Intel微处理器 第8版》p541 也可以查看 Intel开发手册4、加载GDT;5、进入保护模式,跳转到setup.sbo

2011-09-04 16:14:24 1619

原创 第3章 从软驱上读取多个扇区到内存中

编写rd_kern汇编函数,用于从软驱上读取N个扇区到内存中输入参数是CX         扇区数SI          起始逻辑扇区ES:BX  内存地址#函数名:rd_kern#功能:读取软驱A上连续多个扇区#参数1: ES:BX 读取数据

2011-09-04 16:06:25 685

原创 第2章 从软驱中读取1个扇区到内存

决定存放程序的内存地址在MBR中,我们需要读取软驱上的程序到内存中。在什么内存上才存放这些程序呢? 1、不能复制到1M以上的内存,因为A20地址线还没打开,没进入保护模式,不能寻址到1M以上的内存。 2、不能复制到0x0上的内存,因为BIOS的中断向量在0x0上,而我

2011-09-04 15:59:12 1145

原创 第1章 打印启动信息

显示器I/O知识:显存地址是 0xb8000,屏幕是80*25,每个位置由两个字节决定。第一个字节决定所显示的字符,如0xb8000。第二个字节决定怎么显示字符(背景颜色,前景颜色),如0xb8001。汇编命令知识:cld: 方向标志置0,si和di 增1

2011-09-02 20:43:01 711

原创 第0章 无中生有

每个学计算机的同学都想写一个操作系统,每个学存储的同学都想开发一款磁盘阵列。每当看到“操作系统”四个字我就冲动,那是大脑皮层的强烈反应,无奈能力不济,绕了一大圈都没入门。今年5月刚好没啥正事,所以打算重整旗鼓,写一个非常简单的OS,想用来敲开“操作系统”这个大门。这个系列的文

2011-09-02 20:30:08 725

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除