E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
ReactOS
30天自制操作系统 - 取代软盘,用U盘写入引导扇区
更变书籍里用的是nask这款作者自制的汇编语言编译器,
ReactOS
的实模式部分是用nasm写的,还是用nasm改造一下好。
copyist
·
2019-03-07 15:31
30天自制操作系统
Hyper-V虚拟机中
ReactOS
系统无法联网详细图文解决办法
ReactOS
系统已经安装好了,但由于系统没有自带Hyper-V虚拟网卡的驱动,所以只能本地体验一番,无法连接互联网。难道体验一下删掉虚拟机就结束了吗?
佚名
·
2018-08-24 11:43
ReactOS
怎么安装?Hyper-V虚拟机安装
ReactOS
详细图文教程
ReactOS
是免费开源的WindowsNT系列克隆操作系统,它保持了与Windows平台下的程序与驱动的二进制系统级兼容性。
佚名
·
2018-08-24 09:13
如何检测判断一个程序正在做的事情
微软虽然有一个
reactos
基本仿写了wi
fishmai0
·
2017-12-04 02:08
分析驱动程序在IRQL>=DISPATCH_LEVEL时和DPC过程中不能用KeWaitForSingleObject等待对象的原因
本文将结合自己对
Reactos
的理解,对这3点进行解释。1.IRQL>=DISPATCH_LEVEL时,超时时间必须==0?KeWaitForSingleObject是
lixiangminghate
·
2016-04-05 20:00
windows
Windows内核研究总结
一Windows的体系结构分析环境
reactos
0.3.1,i386体系]了解了windows的体系结构才知道
reactos
到底要干什么,以及如何干,因为
reactos
的目标是兼容windows。
bcbobo21cn
·
2016-02-05 11:22
转载
操作系统研发和研究
使用VS2012调试
ReactOS
源码
目录一下载并安装VS2012二下载并安装WDK80三下载
ReactOS
0315源码四下载并安装RosBE211五 用RosBE命令行编译
ReactOS
源码六 用VS2012编译ntoskrnl模块七制作
四海清一
·
2015-12-30 12:00
VS2012 update1 和 VS2012 Lang Pack 离线安装方法
原文: VS2012 update1 和 VS2012 Lang Pack 离线安装方法 最近有需要用VS2012打开
ReactOS
这个大项目,生成sln后打开用来导航代码什么的,但其代码都是ascii
·
2015-11-13 23:28
update
reactos
操作系统实现(31)
下面来分析保存数据时缺页中断函数,它的代码如下: #001 NTSTATUS #002 NTAPI #003 MmpAccessFault(KPROCESSOR_MODE Mode, #004 &nbs
·
2015-11-13 20:14
react
reactos
操作系统实现(30)
对无效页面的一次访问称为“缺页错误”。对于这类错误都会导致中断处理函数MmAccessFault。那么什么样的情况才叫做无效页面呢?主要有下面几种情况: l 所有访问的页面不存内存里,而是磁盘里。 l &n
·
2015-11-13 20:07
react
reactos
操作系统实现(29)
内存大小好像永远追不上人们的需求,以前以为512K就很大了,到现在内存已经是4G,8G内存了,但还是不能满足人们的需求。因为目前的系统都是多进程运行,每个进程都需要占用4G的内存,那么10个进程,就占用相当可观的内存了。这时就需要把进程不经常使用的内存数据切换到硬盘里,需要时再换回来。如果一个进程的内存已经换到硬盘上,而这个进程又想访问那些在硬盘的内存数据时,就会产生一个缺页中断。这个
·
2015-11-13 20:57
react
reactos
操作系统实现(28)
在内存管理里,绝大部份内存都是分页内存。分页内存就是把内存分成4K页大小的内存块,这些内存块不但可以在物理内存里,也可以切换时保存到硬盘里。这些内存管理里是通过下面的代码进行的,如下: #001 VOID #002 INIT_FUNCTION #003 NTAPI #004 MmInitializePagedPool(VOID)
·
2015-11-13 20:34
react
reactos
操作系统实现(27)
下面接着来分析EiAllocatePool函数,这个函数要传入使用者内存类型、内存大小、内存标记和调用者地址。 #001 static PVOID NTAPI #002 EiAllocatePool(POOL_TYPE PoolType, #003 &
·
2015-11-13 20:28
react
reactos
操作系统实现(26)
在
ReactOS
内存管理里,有一块内存区是非分页内存,也就是这块内存始终保持在系统物理内存里面,不会换到磁盘上。那为什么需要这样做呢?全部使用分页内存不是更简单,更方便吗?
·
2015-11-13 20:23
react
reactos
操作系统实现(25)
在操作系统里,有时候需要从保护模式转换为实模式来调用BIOS一些功能。因此在硬件抽象层里,就需要提供这样的函数支持,这个函数代码如下: #001 BOOLEAN #002 NTAPI #003 HalpBiosDisplayReset(VOID) #004 { #005
·
2015-11-13 20:21
react
reactos
操作系统实现(24)
在很早的电脑里,就带有一个小喇叭,可以发出不同频率的声音。主要用来判断系统是否有问题使用,比如BIOS检查硬有问题时,就会发出不同的声音,提醒用户是那里出问题了。在操作系统里,也经常使用这个小喇叭来提醒用户是什么问题,比如输入非法的按键时,就响一声。在早期的五笔输入法时,输入的字不对,就会用这个小喇叭提醒,让忘打的操作人员回到屏幕上选择所需要的字。那么这个小喇叭的驱动是怎么样进行的呢?
·
2015-11-13 20:17
react
reactos
操作系统实现(23)
下面来仔细查看Windows系统结构图: 由于
ReactOS
是兼容Windows为目标的,那么它的体系结构跟Windows越像,就具有兼容性。
·
2015-11-13 20:15
react
reactos
操作系统实现(22)
从Boot.S文件里初始化系统基本组件后,就跳到空闲函数处理,就成为一个空闲处理的线程,其实也是一个管理系统的任务。下面就来分析KiIdleLoop函数的代码,如下: #001 .globl @KiIdleLoop@0 #002 .func @KiIdleLoop@0, @KiIdleLoop@0 #003 @KiIdleLoop@0: #0
·
2015-11-13 20:10
react
reactos
操作系统实现(21)
初始化NLS代码表。 #124 /* Initialize the NLS Tables */ #125 RtlInitNlsTables((PVOID)((ULONG_PTR)ExpNlsTableBase + #126 &n
·
2015-11-13 20:59
react
reactos
操作系统实现(20)
下面来了解内核执行体的处理,它是在初始化内核线程后运行的,代码如下: #001 /* Setup the Idle Thread */ #002 KeInitializeThread(InitProcess, #003 &n
·
2015-11-13 20:55
react
reactos
操作系统实现(19)
由于 CPU 是多种多样,具备能力也是不一样的,并且不同厂家都会创新不同的功能。下面就来了解 CPU 特征识别,如下: /* Get the processor features for the CPU */ FeatureBits = KiGetFeatureBits(); 这里是通过函数KiGetFeatureBits来获取CPU特征位,它的代码
·
2015-11-13 20:51
react
reactos
操作系统实现(18)
在 X86 的体系架构里,整数运算和浮点运算是分开的。算术逻辑单元 (Arithmetic Logic Unit, ALU) 是中央处理器 (CPU) 的执行单元,是所有中央处理器的核心组成部分,由 " 与门 " 和 " 或门 " 构成的算术逻辑单元,主要功能是进行二进制的算术运算,如加减乘 ( 不包括整数除法 ) 。基本上,在所有现代 CPU 体系结构
·
2015-11-13 20:47
react
reactos
操作系统实现(17)
从上面分析可以看到,主要调用函数 KiInitializeKernel 来初始化内核,这个函数传送的参数与函数 KiSetupStackAndInitializeKernel 的参数是一样的,如下: #001 VOID #002 NTAPI #003 KiInitializeKernel(IN PKPROCESS InitProcess, # 0
·
2015-11-13 20:46
react
reactos
操作系统实现(16)
下面仔细分析这个函数的代码: #001 /* Switch to new kernel stack and start kernel bootstrapping */ #002 KiSetupStackAndInitializeKernel(&KiInitialProcess.Pcb, #003 &
·
2015-11-13 20:46
react
reactos
操作系统实现(15)
在
ReactOS
里有这么一段初始化代码,如下: #001 AppCpuInit: #002 /* Loop until
·
2015-11-13 19:17
react
reactos
操作系统实现(14)
下面来分析一下系统任务是怎么样初始化的,先来看这行代码: /* Setup the TSS descriptors and entries */ Ki386InitializeTss(Tss, Idt, Gdt); 在这个Ki386InitializeTss函数里就是进行初始化系统任务的工作,因此要分析这个函数的代码,才可以理解系统任务的工作。
·
2015-11-13 19:13
react
reactos
操作系统实现(13)
从
ReactOS
看到下面这行代码: /* Get GDT, IDT, PCR and TSS pointers */ KiGetMachineBootPointers
·
2015-11-13 19:12
react
reactos
操作系统实现(12)
有了上面的知识,就来分析
ReactOS
里引导任务是怎么样设置全局描述符表。其工作过程如下图所示: 由于CPU初始化运行后,就当作为一个任务在运行。
·
2015-11-13 19:10
react
reactos
操作系统实现(11)
在 IA-32 的 CPU 架构里,采用了中断寄存器和中断描述符来判断中断的来源,如下图所示: 在
ReactOS
里使用下面这行代码来设置IDTR寄存器的值: Ke386SetInterruptDescriptorTable
·
2015-11-13 19:09
react
reactos
操作系统实现(10)
看到下面的语句,你能看得懂吗? /* Load the GDT and IDT */ Ke386SetGlobalDescriptorTable(*(PKDESCRIPTOR)&KiGdtDescriptor.Limit); 如果没有去看INTEL的文档,是看不懂的。因为它是跟INTEL的CPU架构密切相关的。现在就去解一下什么叫做全局描述符
·
2015-11-13 19:05
react
reactos
操作系统实现(9)
在
reactos
初始化代码里,经常看到ACPI的缩写,那么它是表示什么意思呢?现在就来解决这个问题,它就是电源管理方面的。
·
2015-11-13 19:03
react
reactos
操作系统实现(7)
l FreeLoader 内存布局 0000:0000 - 0000:0FFF: 中断向量表和BIOS数据 0000:1000 - 0000:6FFF: 实模式的栈内存 0000:7000 - 0000:7FFF:
·
2015-11-13 19:00
react
reactos
操作系统实现(6)
硬盘引导的流程与相应源码文件名称: 引导序号 引导过程 引导执行代码位数 目标文件名称 1. 主引导代码(Master Boot Record (MBR) code),主要寻找活动分区,然后读入引导扇区代码 16位执行代码 re
·
2015-11-13 19:56
react
reactos
操作系统实现(43)
前面介绍放到延迟队列是单核的版本,下面来学习多核的版本,代码如下: #001 // #002 // This routine makes the thread deferred ready on the boot CPU. #003 // #004 FORCEINLINE #005 VOID #006 KiI
·
2015-11-13 19:30
react
reactos
操作系统实现(44)
前面分析了怎么样把一个线程放到延迟就绪队列,接着下来的问题就是这些在就绪队列里的线程什么时候开始运行呢?又是怎么样把就绪队列的线程取出来运行的呢?线程调度的触发事件有以下四种: 1) 线程进入就绪状态,如一个刚创建的线程,或者一个刚结束的线程。 2) 线程的时间片用完。 3) 线程调用系统服务发生等待,或者被系统改变其优先级。 4) 线程改变自己运行的处理器。 先来
·
2015-11-13 19:30
react
reactos
操作系统实现(42)
接着下来,就需要分析函数KiReadyThread的作用了。根据线程状态来判断是否可以放入延迟队列,还是设置它为转换状态,代码如下: #001 VOID #002 NTAPI #003 KiReadyThread(IN PKTHREAD Thread) #004 { 获取当前线程的进程对象。 #005 &n
·
2015-11-13 19:27
react
reactos
操作系统实现(41)
当线程初始化成功后,是怎么样放到推迟就绪队列的呢?通过下面这几个函数的分析,就会了解这个问题了。从以前的分析可以知道是调用函数KeReadyThread来执行的,这个函数的代码如下: #001 VOID #002 NTAPI #003 KeReadyThread(IN PKTHREAD Thread) #004 { 这里参数Threa
·
2015-11-13 19:25
react
reactos
操作系统实现(40)
由于
Reactos
的调度单位是线程,所以它的状态机就是基于线程的。比如进程A有5个线程,进程B有2个线程,总共就是12个线程来进行调度,也就是把CPU的时间分成12等份。
·
2015-11-13 19:22
react
reactos
操作系统实现(39)
到底一个线程是怎么样创建的呢?又是怎么样放到就绪队列呢? #001 NTSTATUS #002 NTAPI #003 PspCreateThread(OUT PHANDLE ThreadHandle, #004 &nbs
·
2015-11-13 19:21
react
reactos
操作系统实现(38)
由于
Reactos
是以线程为最小的调度单位,如果仅仅创建进程的数据结构,不足以运行进程的任务,每个进程至少需要一个线程才可以运行,下面就来分析系统进程的线程创建,代码如下: #195
·
2015-11-13 19:18
react
reactos
操作系统实现(37)
下面来继续分析创建进程函数,过程如下: 保存工作集数据。 #070 /* Save working set data */ #071 MinWs = PsMinimumWorkingSet; #072 Ma
·
2015-11-13 19:17
react
reactos
操作系统实现(5)
一般的电脑都是使用硬盘来引导操作系统,由于硬盘是电脑的最常用的存储媒介,在
ReactOS
里,它会把一个硬盘划分成如下的形式: 通过安装程序把扇区引导程序写到硬盘分区引导记录扇区
·
2015-11-13 19:01
react
reactos
操作系统实现(4)
由于近来家里的电脑坏了,老是上网就死机,也上不了网发贴。近来也是经济危机到来的时候,事情还是比较多。本来不太打算更换电脑的,等到明年电脑降价了,再去买的。但这台电脑也用了四年了,又急着想上网,就下定决心去买了一台电脑回来。当然,这次配置的电脑,就不能太差了,以往都最便宜的就买。主机至少也配置4000元的,有了这个预算之后,就开始选择配置。是选择双核,还是四核呢?比较了一下,发现我往往是编译程序比较
·
2015-11-13 19:54
react
reactos
操作系统实现(3)
有人说,
reactos
不是实时操作系统,不能做嵌入式系统,难道真的不能做嵌入式系统吗?其实不是这样的,嵌入式系统本来就包括有两类系统,一种是要求实时性强,一种是要求实时性弱的。这两种都是嵌入式系统。
·
2015-11-13 19:32
react
reactos
操作系统实现(61)
前面准备好文件后,就需要从光盘里拷贝文件到安装目录,下面就是这个过程的界面: 实现这个过程的代码如下: #001 static #002 PAGE_NUMBER #003 FileCopyPage(PINPUT_RECORD Ir) #004 { #005 COPYCON
·
2015-11-13 19:56
react
reactos
操作系统实现(60)
在拷贝文件到磁盘之前,需要把压缩包的文件解压,然后才能拷贝文件到安装目录里,它的代码如下: #001 static PAGE_NUMBER #002 PrepareCopyPage(PINPUT_RECORD Ir) #003 { #004 HINF InfHandle; #005&nb
·
2015-11-13 19:55
react
reactos
操作系统实现(50)
当运行到内核函数Phase1Initialization里,就是进行内核第一阶段初始化了,这时在这个函数又调用函数Phase1InitializationDiscard进行复杂的处理,在这里有一个重要的步骤,就是打开内核应用程序smss.exe来运行。具体代码如下: #001 /* Update progress bar */ #002 &nb
·
2015-11-13 19:38
react
reactos
操作系统实现(49)
前面已经介绍怎么样从ISOBOOT里加载SETUPLDR.SYS,下面来分析一下这个程序与一般硬盘引导程序freeldr.sys有什么区别。 在文件freeldr.c里是这样这样调用安装函数的: #001 VOID BootMain(LPSTR CmdLine) #002 { #003 CmdLin
·
2015-11-13 19:36
react
reactos
操作系统实现(48)
下面就来了解
Reactos
是怎么实现整个安装过程的。 当使用make bootcd的编译命令时,就是编译一个可以启动并安装系统的光盘文件。这个光盘文件,就是使用上面介绍的ISOBOOT的
·
2015-11-13 19:33
react
reactos
操作系统实现(47)
下面就来分析
Reactos
是怎么样通过光盘的格式来引导操作系统的。 现今的计算机BIOS,会在开机时根据El Torito规格,查找光盘上的开机代码。
·
2015-11-13 19:32
react
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他