reactos:reactos操作系统实现(83)
前面已经分析了IopInitializeDrivers过程在这个里加载注册表里指定驱动遍历了所有驱动并通过IopLoadDriver来实现加载也许你会问驱动般什么时候加载呢?其实在ReactOS里有 3种情况种是在Freeloader引导时加载内核时起加载驱动种是IopInitializeDrivers里根据注册表来加载最后种是动态地加载也即是PnP加载那么驱动到底是什么样呢?其实驱动就是个动态连... [阅读全文]
reactos:reactos操作系统实现(82)
在I/O管理最后阶段就是加载系统所有动态连接库比如加载NTDLL动态连接库具体实现代码如下:#001 NTSTATUS#002 NTAPI#003 PsLocateDll(VOID)#004 {#005 OBJECT_ATTRIBUTES ObjectAttributes;#006 IO_STATUS_BLOCK IoStatusBlock;#007 HA... [阅读全文]
rubyonrails:Ruby 101:类和对象
虽然仅仅阅读文章也能了解Ruby语法但这样就会少很多乐趣如果你有兴趣学习Ruby我建议你还是动手试试和纯粹阅读相比亲身体验将会有另番区别感受 工欲善其事必先利其器想要体验Ruby就得花点时间配置它运行环境了目前可以选择有Ruby、IronRuby和JRuby你可以根据自己喜好/需要选择其中个其中IronRuby需要Microsoft .NET或者Mono支持而JRuby则需要JVM支持 R... [阅读全文]
reactos:reactos操作系统实现(66)
当选择重新启动后就会进入最后阶段安装进入有界面安装这里主要通过up.exe来实现它实现代码在目录reactos\base\up\up里就可以进安装驱和系统些配置信息如下: 图片看不清楚?请点击这里查看原图(大图) 下面就是入口点代码从这里可以看到这个和前面安装是不样它是采用应用方式来运行也就是加载了几个内核DLL才能运行这个#001 WINAPI#002 _tWinMain (HIN... [阅读全文]
reactos:reactos操作系统实现(65)
激动人心时刻到了最后安装成功了会出现下面界面如下: 图片看不清楚?请点击这里查看原图(大图) 上面成功实现代码如下:#001 PAGE_NUMBER#002 SuccessPage(PINPUT_RECORD Ir)#003 { 显示成功安装信息#004 MUIDisplayPage(SUCCESS_PAGE);#005 #006 (IsUnattendedS... [阅读全文]
reactos:reactos操作系统实现(64)
在安装个操作系统时绝大多数都是把引导安装在硬盘里下面就来了解安装到硬盘里具体过程实现代码如下:#001 PAGE_NUMBER#002 BootLoaderHarddiskPage(PINPUT_RECORD Ir)#003 {#004 UCHAR PartitionType;#005 NTSTATUS Status;#006 获取硬盘分区类型然后判断是否可以安... [阅读全文]
reactos:reactos操作系统实现(63)
前面把注册表化完成的后就开始进行安装引导了这里安装引导是分区引导或者安装到软盘引导当然也可以选择跳过不安装它界面如下: 图片看不清楚?请点击这里查看原图(大图) 这个代码如下:#001 PAGE_NUMBER#002 BootLoaderPage(PINPUT_RECORD Ir)#003 {#004 UCHAR PartitionType;#005 BOOLE... [阅读全文]
reactos:reactos操作系统实现(62)
当文件拷贝完成后主要就是把已经拷贝文件进行注册表登记还需要把用户在安装过程里选择配置保存到注册表同时也需要把检查到硬件保存到注册表里其实注册表就是保存些配置信息这样下次启动时就可以直接把这些信息加载到内存就行了不需要用户重新选择也不需要重新搜索硬盘配置代码如下:#001 PAGE_NUMBER#002 RegistryPage(PINPUT_RECORD Ir)#003 {#004 ... [阅读全文]
reactos:reactos操作系统实现(61)
前面准备好文件后就需要从光盘里拷贝文件到安装目录下面就是这个过程界面: 图片看不清楚?请点击这里查看原图(大图) 实现这个过程代码如下:#001 #002 PAGE_NUMBER#003 FileCopyPage(PINPUT_RECORD Ir)#004 {#005 COPYCONTEXT CopyContext;#006 显示拷贝文件标题#007 MUI... [阅读全文]
reactos:reactos操作系统实现(60)
在拷贝文件到磁盘的前需要把压缩包文件解压然后才能拷贝文件到安装目录里它代码如下:#001 PAGE_NUMBER#002 PrepareCopyPage(PINPUT_RECORD Ir)#003 {#004 HINF InfHandle;#005 WCHAR PathBuffer[MAX_PATH];#006 INFCONTEXT CabinetsConte... [阅读全文]
reactos:reactos操作系统实现(59)
当用户安装ReactOS系统时需要选择合适安装目录同个类型操作系统可以安装多次可以选择区别目录来安装以便在同台电脑同个磁盘分区里安装区别系统如下图: 图片看不清楚?请点击这里查看原图(大图) 选择系统目录实现代码如下:#001 PAGE_NUMBER#002 InstallDirectoryPage(PINPUT_RECORD Ir)#003 {#004 PDISKENTRY... [阅读全文]
reactos:reactos操作系统实现(58)
格式化磁盘主要做什么样工作呢?根据用户选择文件系统把格式化数据和分区表写到磁盘然后判断引导分区写入引导代码到引导分区具代实现代码如下:#001 ULONG#002 FormatPartitionPage (PINPUT_RECORD Ir)#003 {#004 WCHAR PathBuffer[MAX_PATH];#005 PDISKENTRY DiskEntry;#0... [阅读全文]
reactos:reactos操作系统实现(57)
当分区好后就需要选择这些分区使用什么样文件系统目前主要支持FATFAT32EXT2NTFS等文件系统这些功能是通过下面实现如下:#001 PAGE_NUMBER#002 SelectFilePage (PINPUT_RECORD Ir)#003 {#004 PDISKENTRY DiskEntry;#005 PPARTENTRY PartEntry;#006 ... [阅读全文]
reactos:reactos操作系统实现(56)
在Reactos安装过程里会出现下面界面如下: 图片看不清楚?请点击这里查看原图(大图) 上面界面就是创建磁盘分区显示内容那么这个界面下面主要做了那些工作呢?磁盘又是如何样分区呢?分区后数据如何样保存到磁盘里呢?接着下来就分析创建磁盘分区代码才能知道整个实现过程如下:#001 PAGE_NUMBER#002 CreatePartitionPage (PINPUT_RECORD Ir... [阅读全文]
reactos:reactos操作系统实现(55)
在语言选择里倒底做了什么样事情让ROS系统可以选择区别语言?ROS系统又是如何样实现区别语言支持呢?#001 PAGE_NUMBER#002 LanguagePage(PINPUT_RECORD Ir)#003 { 化语言列表#004 /* Initialize the computer tings list */#005 (LanguageList NULL)#... [阅读全文]
reactos:reactos操作系统实现(54)
从RunUSetup循环处理里可以看到第个应处理就是启动页面也就是SetupStartPage它代码如下:#001 /*#002 * Start page#003 * RETURNS#004 * Number of the next page.#005 */#006 PAGE_NUMBER#007 SetupStartPage(PINPUT_RECORD Ir)#008... [阅读全文]
reactos:reactos操作系统实现(53)
在前面代码分析里发现创建个线程而这个线程运行主是PnpEventThread那么创建这个线程是用来做什么事情呢?那就得去分析文件reactos\base\up\uup\erface\devinst.c里代码如下:#001 DWORD WINAPI#002 PnpEventThread(IN LPVOID lpParameter)#003 {#004 NTSTATUS Status;... [阅读全文]
WSRF研究--WS-ResourceProperties协议
WS-ResourceProperties协议解决了两个问题:(1)如何描述资源状态;(2)如何操作资源状态 WSRP使用资源属性文档来描述资源属性它是个代表资源属性元素逻辑组合XML文档资源属性文档是资源状态个映射并和WSDLportType相关联同时WSRP还定义了系列消息交换格式用于操作资源状态:如获取、插入和修改属性等 协议中定义如下: Resource Property: l ... [阅读全文]
wsrfws协议:WSRF研究-WS-Resource协议
1.1 WSRF协议族 2002-2003年提出OGSI概念是开放网格体系结构 (OGSA : Open Grid Service Architecture[34]) 基本组件它是项基于新兴Web service标准网格软件Software基础结构标准化工作用于为 OGSA 软件Software组件提供最大互操作性其根本出发点是通过将关键网格技术和Web Services技术集成起来形成... [阅读全文]
wsrfwsrf:WSRF研究-WSRF历史
1 WSRF 1.1 WSRF介绍 1.1.1 无状态Web服务局限性 随着大规模网络技术发展特别是网格计算技术兴起极大地扩大了分布式系统规模网格是近年来逐渐兴起构建在Internet的上种新计算模式其目标是在分布式、异构、自治网络资源环境的上动态构建虚拟组织并在其内部实现跨自治域资源共享和协作满足当前复杂应用对大规模计算能力和海量数据处理等需求因此如何在分布式计算环境... [阅读全文]
reactos操作系统实现(40)
由于Reactos调度单位是线程所以它状态机就是基于线程比如进程A有5个线程进程B有2个线程总共就是12个线程来进行调度也就是把CPU时间分成12等份线程总共状态如下:#001 //#002 // Thread States#003 //#004 typedef enum _KTHREAD_STATE#005 {#006 Initialized,#007 Ready,... [阅读全文]
reactos操作系统实现(39)
到底个线程是如何样创建呢?又是如何样放到就绪队列呢?#001 NTSTATUS#002 NTAPI#003 PspCreateThread(OUT PHANDLE ThreadHandle,#004 IN ACCESS_MASK DesiredAccess,#005 IN POBJECT_ATTRIBUTES ObjectA... [阅读全文]
reactos操作系统实现(38)
由于Reactos是以线程为最小调度单位如果仅仅创建进程数据结构不足以运行进程任务每个进程至少需要个线程才可以运行下面就来分析系统进程线程创建代码如下:#195 /* Setup the system initialization thread */#196 Status = PsCreateThread(&SysThreadHandle,#197 ... [阅读全文]
reactos操作系统实现(37)
下面来继续分析创建进程过程如下: 保存工作集数据#070 /* Save working data */#071 MinWs = PsMinimumWorkingSet;#072 MaxWs = PsMaximumWorkingSet;#073 创建个进程对象#074 /* Create the Object */#075 Status =... [阅读全文]
reactos操作系统实现(36)
前面分析了进程管理器化工作主要就是把进程管理器列表、对象化还有第和第 2阶段化工作接着下来我们来分析下进程创建看看进程在Reactos里是如何样创建需要什么来创建进程还有应用是如何样API来创建进程 可以从前面分析代码里看到创建第 2个进程代码如下:#196 Status = PsCreateThread(&SysThreadHandle,#197 ... [阅读全文]
reactos操作系统实现(35)
化活动进程列表#076 /* Initialize the Active Process List */#077 InitializeListHead(&PsActiveProcessHead);#078 KeInitializeGuardedMutex(&PspActiveProcessMutex);#079 获取空闲进程列表在Reactos里系统化进程最终就是... [阅读全文]
reactos操作系统实现(34)
现在就来分析第阶段进程管理器化PspInitPhase0如下:#001 BOOLEAN#002 NTAPI#003 PspInitPhase0(IN PLOADER_PARAMETER_BLOCK LoaderBlock)#004 {#005 NTSTATUS Status;#006 OBJECT_ATTRIBUTES ObjectAttributes;#007 ... [阅读全文]
reactos操作系统实现(33)
当Reactos在系统化时就会进程管理化PsInit来进行化只有把进程管理化后才可以创建进程这样才可运行各种各样任务下面就来分析进程管理器化:#001 BOOLEAN#002 NTAPI#003 PsInit(IN PLOADER_PARAMETER_BLOCK LoaderBlock)#004 { 在参数里把系统引导参数传递进来以便根据区别配置选择区别进程管理方案#005 /... [阅读全文]
reactos操作系统实现(32)
这个主要功能就是实现访问不存在页面#001 NTSTATUS#002 NTAPI#003 MmNotPresentFault(KPROCESSOR_MODE Mode,#004 ULONG_PTR Address,#005 BOOLEAN FromMdl)#006 {#007 ... [阅读全文]
reactos:reactos操作系统实现(31)
下面来分析保存数据时缺页中断它代码如下:#001 NTSTATUS#002 NTAPI#003 MmpAccessFault(KPROCESSOR_MODE Mode,#004 ULONG_PTR Address,#005 BOOLEAN FromMdl)#006 {#007 PMM_AVL_TABLE A... [阅读全文]