Virtual Machine library

来源:互联网 发布:pagemaker是什么软件 编辑:程序博客网 时间:2024/05/14 17:33
VM 是一个平台无关的底层库,它封装了常用系统调用。建立在VM之上的应用系统可以移至到任何VM支持的平台之上。

第一阶段目标是提供
win32和linux上的实现

VM v2.0

平台支持
RedHat FD 5
RedHat AS 4

特性

- 在顶层IO接口中增加了异步IO, 提高异步IO模式系统的IO速度
- 取消了对vthread的底层支持
- 使用c++重写了整个系统
- 完全使用c++ exception来处理异常,是系统代码更为清晰
- 将ecom的支持归并的vm中
- 系统接口使用了传统API和ECOM混合形式,大部分系统对象使用ecom封装,确保最大的可重用性



VM v1.0

平台支持
Windows 98
Windows NT 4.0
Windows 2000 Family
Windows XP Family
Windows 2003 Family

特性
1.系统功能

1.1. 内存管理
1.1.1. VM使用后备列表加速内存分配释放速度
1.1.2. VM跟踪所有内存分配操作,为内存泄漏检查提供必要支持
1.1.3. mmap 支持

1.2.IO管理
1.2.1. 高性能的IO操作一直是VM的目标,VM将使用各操作系统特有的IO技术来获取最大的IO吞吐量
例如:windows中的IO OVERLAPED,IO COMPLETION PORT技术,freebsd中的 kevent 技术等等。
1.2.3. 通过VM 特有的virtual thread降低异步IO操作带来的复杂度,简化IO,协议系统实现的复杂度。
1.2.4. 文件(File)IO支持
1.2.5. 套接字(Socket)IO支持

1.3. 线程管理
1.3.1. 线程池支持,降低系统线程获取与释放的代价,为系统中某些不能使用异步方式完成的服务,如dns查询,数据库操作等提供必要的支持
1.3.2. VM特有的虚拟线程(vthread)技术,类似于sun os中的用户级线程。大大简化了异步IO操作的复杂度。同时提高了系统的可伸缩性。
1.3.3. 线程局部存储区(TLS)

1.4. 同步
为了提供对vthread的同步支持,vm中提供了整套的同步对象,其中包括
1.4.1. 自旋锁(spinmutex)
1.4.2. 可重入自旋锁(spinlock)
1.4.3. 互斥锁(mutex)
1.4.4. 可重入互斥锁(lock)
1.4.5. 读写锁(rwlock)
1.4.6. 事件(event)
1.4.7. 信号量(semaphore)
1.4.8. 等待队列(waitqueue,类似与linux kernel中的等待队列)

2. ADT支持
2.1. array 变长数组
2.2. queue 循环双向队列
2.3. list 双向队列(支持对多个迭代器的删除、增加操作)
2.4. hash 哈稀表(支持离散数据)
2.5. map 映射表(在hash基础上增加了迭代功能)
2.6. data table 数据表(一般用于存储数据库查询操作结果)
2.7. buffer 可变缓存
2.8. binary string 二进制字符串,同时提供缓存功能
2.9. uuid
2.10. reader 格式化数据提取器
2.11. writer 格式化数据构造器
2.12. xml reader XML文档读取器,支持namespace,entries,CDATA,不支持编码
2.13. variant 包装变量,类似于COM VARIANT。支持所有简单变量的存储,转换,一元,二元运算




原创粉丝点击