zl程序教程

reactos操作系统实现(30)

  • reactos操作系统实现(17)

    reactos操作系统实现(17)

    从上面分析可以看到,主要调用函数 KiInitializeKernel 来初始化内核,这个函数传送的参数与函数 KiSetupStackAndInitializeKernel 的参数是一样的,如下: #001  VOID #002  NTAPI #003  KiIniti

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(18)

    reactos操作系统实现(18)

    在 X86 的体系架构里,整数运算和浮点运算是分开的。算术逻辑单元 (Arithmetic Logic Unit, ALU) 是中央处理器 (CPU) 的执行单元,是所有中央处理器的核心组成部分,由 " 与门 " 和 " 或门 " 构成的算术逻辑单元&

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(1)

    reactos操作系统实现(1)

     reactos是什么操作系统呢?它是一个开源的操作系统,并且是兼容Windows XP的应用程序和驱动程序的操作系统。意思就是说,直接安装一个reactos之后,把第三方的驱动程序安装好后,就可以运行第三方的Windows应用程序了。这样达到替换微软的windows操作系统的目的&#x

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(19)

    reactos操作系统实现(19)

    由于 CPU 是多种多样,具备能力也是不一样的,并且不同厂家都会创新不同的功能。下面就来了解 CPU 特征识别,如下: /* Get the processor features for the CPU */     FeatureBits = KiGetFeatureBi

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(2)

    reactos操作系统实现(2)

     对于开发一个操作系统是一个漫长的过程,并不像一个Hello world程序那么快捷,那么明了。因此对开发OS的基本知识,基本技能也需要比较高深一些,特别对一些名词和概念,更需要深入地了解。由于操作系统大部份需要与硬件打交道,所以硬件的知识需要了解,特别CPU

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(20)

    reactos操作系统实现(20)

    下面来了解内核执行体的处理,它是在初始化内核线程后运行的,代码如下: #001   /* Setup the Idle Thread */ #002      KeInitializeThread(InitProcess, #003                         InitTh

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(3)

    reactos操作系统实现(3)

    有人说,reactos不是实时操作系统,不能做嵌入式系统,难道真的不能做嵌入式系统吗?其实不是这样的,嵌入式系统本来就包括有两类系统,一种是要求实时性强,一种是要求实时性弱的。这两种都是嵌入式系统。因此,ReactOS做嵌入式系统是没有问题的&#

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(9)

    reactos操作系统实现(9)

    在reactos初始化代码里,经常看到ACPI的缩写,那么它是表示什么意思呢?现在就来解决这个问题,它就是电源管理方面的。具体内容如下: Advanced Configuration and Power Management Interface   ACPI表示高级配置和电

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(6)

    reactos操作系统实现(6)

    硬盘引导的流程与相应源码文件名称: 引导序号 引导过程 引导执行代码位数 目标文件名称 1.          主引导代码(Master Boot Record (MBR) code)&#

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(30)

    reactos操作系统实现(30)

     对无效页面的一次访问称为“缺页错误”。对于这类错误都会导致中断处理函数MmAccessFault。那么什么样的情况才叫做无效页面呢?主要有下面几种情况: l         所有访问的页面不存内存里,而是磁盘里。 l         访问的页面在后备列表里。 l         访问的页面没有提交写操作。

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(8)

    reactos操作系统实现(8)

    通过上面引导程序初始化后,引导程序就把控制权交给 ntoskrnl.exe 运行,在内核里需要进一步初始化,这个过程大体如下:   上面是最基本的流程,在这个过程里,还会调用很多函数来设置各种各样的功能。通过上面的流程,就可以了解引导CP

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(14)

    reactos操作系统实现(14)

    下面来分析一下系统任务是怎么样初始化的,先来看这行代码: /* Setup the TSS descriptors and entries */     Ki386InitializeTss(Tss, Idt, Gdt); 在这个Ki386InitializeTss函数里就是进行初始化系统任务的工作

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(44)

    reactos操作系统实现(44)

    前面分析了怎么样把一个线程放到延迟就绪队列,接着下来的问题就是这些在就绪队列里的线程什么时候开始运行呢?又是怎么样把就绪队列的线程取出来运行的呢?线程调度的触发事件有以下四种: 1) 线程进入就绪状态,如一个刚创建的线程,或者一个刚结束的线程。 2&

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(47)

    reactos操作系统实现(47)

    当光盘变成记录数据以后,就开始使用光盘来分发操作系统了。毕竟光盘有着储存数据量大,成本便宜的优势。下面就来分析Reactos是怎么样通过光盘的格式来引导操作系统的。 现今的计算机BIOS,会在开机时根据El Torito规格,查找光盘上的开机代码。若该光盘具有开机代码,则BIOS

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(49)

    reactos操作系统实现(49)

    前面已经介绍怎么样从ISOBOOT里加载SETUPLDR.SYS,下面来分析一下这个程序与一般硬盘引导程序freeldr.sys有什么区别。 在文件freeldr.c里是这样这样调用安装函数的: #001  VOID BootMain(LPSTR CmdLine) #002  { #003       CmdLin

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(55)

    reactos操作系统实现(55)

    在语言选择里,倒底做了什么样的事情,让ROS系统可以选择不同的语言?ROS系统又是怎么样实现不同的语言支持的呢? #001  static PAGE_NUMBER #002  LanguagePage(PINPUT_RECORD Ir) #003  {   初始化语言列表。 #004

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(62)

    reactos操作系统实现(62)

    当文件拷贝完成后,主要就是把已经拷贝的文件进行注册表登记,还需要把用户在安装过程里选择的配置保存到注册表,同时也需要把检查到的硬件保存到注册表里。其实注册表,就是保存一些配置信息,这样下一次启动时,就可以直接把这些信息加载到内存就行了,不需要用户重新选择

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(67)

    reactos操作系统实现(67)

    前面分析安装后,就会调用setup.exe程序运行,在入口函数里处理命令行参数newsetup后,就会调用函数newsetup来运行,下面来仔细地分析这个函数是到底做什么事情。如下: #001  static VOID #002  RunNewSetup (HINSTANCE

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(69)

    reactos操作系统实现(69)

    当用户安装系统时,就会出现几个向导界面,这几个向导界面是怎么样实现的呢?具体又是做些什么样的功能呢?它的实现代码如下: #001  VOID #002  InstallWizard(VOID) #003  { #004    PROPSHEETHEADER psh; #005 

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(73)

    reactos操作系统实现(73)

    即插即用(Plug and Play,PnP)是计算机系统I/O设备与部件配置的应用技术。PnP就是指插入就可以使用,不需要进行任何的硬件配置。其实还是需要安装相应的驱动程序才可以使用的。随着人们对计算机使用多样化,不断地需要添加各种各样的硬件卡到计算机的主板上,这样就需要配置硬件

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(32)

    reactos操作系统实现(32)

    这个函数主要功能就是实现访问不存在的页面。 #001  NTSTATUS #002  NTAPI #003  MmNotPresentFault(KPROCESSOR_MODE Mode, #004                             ULONG_PTR Address, #005                       

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(82)

    reactos操作系统实现(82)

    在I/O管理最后阶段,就是加载系统所有动态连接库,比如加载NTDLL动态连接库,具体实现代码如下: #001  NTSTATUS #002  NTAPI #003  PsLocateSystemDll(VOID) #004  { #005      OBJECT_ATTRIBUTES

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(37)

    reactos操作系统实现(37)

    下面来继续分析创建进程函数,过程如下: 保存工作集数据。 #070      /* Save working set data */ #071      MinWs = PsMinimumWorkingSet; #072      MaxWs = PsMaximumWorkingSet; #073

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(85)

    reactos操作系统实现(85)

    内核里也需要访问用户应用程序内存,那么有什么方法呢?在ReactOS主要有两种方法:一种是使用缓冲I/O的方法,在驱动程序运行前,I/O管理器把写数据复制到这个缓冲区,并在请求完成时把读数据复制回到用户空间;另一种是使用直接I/O,这是优先

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(88)

    reactos操作系统实现(88)

    IRP 是 I/O request packet 的缩写,即 I/O 请求包。驱动与驱动之间通过 IRP 进行通信。而使用驱动的应用层调用的 CreatFile,ReadFile,WriteFile,DeviceIoControl 等函数,说到底也是使用 IRP 和驱动进行通信。 一个 IRP 由两部分组成。首先是头部或

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(98)

    reactos操作系统实现(98)

      通过上面的分析,发现设置一个中断处理是非常复杂的,下面就来通过图来分析一个中断发生时,中断处理的过程如下图:     其实所有上面代码,就是设置这些流程里工作的函数关键代码,以便整个中断连接起来。其中一些函数是在汇编代码里面,这些都需要仔细分析才能

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(99)

    reactos操作系统实现(99)

    下面来分析键盘的中断处理函数的实现,如下: #001  BOOLEAN NTAPI #002  i8042KbdInterruptService( #003     IN PKINTERRUPT Interrupt, #004     PVOID Context) #005  { #006     PI8042

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(101)

    reactos操作系统实现(101)

    这里主要来分析ATAPI驱动程序,那么就要先了解ATAPI的相关知识了。 1. AT ATTACHMENT (ATA):ATA接口是个人电脑上最具有实力的存储接口,ATA接口早先被广泛应用于IBM及其兼容机,它被定义为标准的硬盘接口。   2&#

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(102)

    reactos操作系统实现(102)

    ATAPI驱动程序的源码在目录drivers/storage/ide/atapi里,其实ATAPI是一个IDE的小端口驱动程序,主要初始化不同总线上的ATAPI设备,其中最重要的就是从PCI总线里查找到IDE控制器。下面来分析这个驱动程序的入口函数: #001  ULONG #002  NT

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(107)

    reactos操作系统实现(107)

    IssueIdentify函数主要是发送IDENTIFY命令给一个ATAPI设备,并且获取这个设备相关信息,比如磁头的个数。 #001  BOOLEAN #002  NTAPI #003  IssueIdentify( #004      IN PVOID HwDeviceExtension, #005     

    日期 2023-06-12 10:48:40     
  • reactos操作系统实现(110)

    reactos操作系统实现(110)

    AtapiStartIo函数主要处理同步的IO请求包。具代的实现代码如下: #001  BOOLEAN #002  NTAPI #003  AtapiStartIo( #004      IN PVOID HwDeviceExtension, #005      IN PSCSI_REQUEST_BLOCK Srb #006

    日期 2023-06-12 10:48:40