大坡3D软件开发

因我而不同--用软件来改变世界

reactos操作系统实现(50)

 当运行到内核函数Phase1Initialization里,就是进行内核第一阶段初始化了,这时在这个函数又调用函数Phase1InitializationDiscard进行复杂的处理,在这里有一个重要的步骤,就是打开内核应用程序smss.exe来运行。具体代码如下:#001  /* Update...

2009-07-25 22:56:00

阅读数:1976

评论数:0

reactos操作系统实现(49)

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

2009-07-24 22:40:00

阅读数:1791

评论数:0

reactos操作系统实现(48)

 每当安装到一个全新的电脑时,都需要使用安装程序来把系统安装到电脑的硬盘里面,这个过程其实是一个极其重要的过程,如果用户不容易安装系统的话,那么这个系统也是很难使用的系统,不利于系统广泛使用和推广。下面就来了解Reactos是怎么实现整个安装过程的。当使用make bootcd的编译命令时,就是编...

2009-07-23 23:18:00

阅读数:2599

评论数:1

reactos操作系统实现(47)

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

2009-07-22 20:14:00

阅读数:2799

评论数:0

reactos操作系统实现(46)

在线程调度里可以看到,需要调用函数KiSwapContext来进行运行环境切换,由于每个CPU都是只能运行一个线程,而多个线程在运行过程中被中断了,那么就需要保存CPU所有寄存器,以便下一次恢复线程时可以接续运行。现在就来分析这个函数是怎么样实现这些工作的,代码如下:#001  /*++#002 ...

2009-07-21 21:27:00

阅读数:2187

评论数:4

reactos操作系统实现(45)

怎么样从一个延迟就绪队列里选择合适的线程运行呢?下面就来分析这段代码,如下:#001  //#002  // This routine scans for an appropriateready thread to select at the#003  // given priority and ...

2009-07-20 21:46:00

阅读数:1514

评论数:0

reactos操作系统实现(44)

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

2009-07-19 12:05:00

阅读数:2413

评论数:1

reactos操作系统实现(43)

前面介绍放到延迟队列是单核的版本,下面来学习多核的版本,代码如下:#001  //#002  // This routine makes the thread deferredready on the boot CPU.#003  //#004  FORCEINLINE#005  VOID#006...

2009-07-19 00:43:00

阅读数:3080

评论数:0

reactos操作系统实现(42)

接着下来,就需要分析函数KiReadyThread的作用了。根据线程状态来判断是否可以放入延迟队列,还是设置它为转换状态,代码如下:#001  VOID#002  NTAPI#003  KiReadyThread(IN PKTHREAD Thread)#004  { 获取当前线程的进程对象。#00...

2009-07-15 21:27:00

阅读数:4518

评论数:2

reactos操作系统实现(41)

当线程初始化成功后,是怎么样放到推迟就绪队列的呢?通过下面这几个函数的分析,就会了解这个问题了。从以前的分析可以知道是调用函数KeReadyThread来执行的,这个函数的代码如下:#001  VOID#002  NTAPI#003  KeReadyThread(IN PKTHREAD Threa...

2009-07-14 22:14:00

阅读数:1985

评论数:0

reactos操作系统实现(40)

 由于Reactos的调度单位是线程,所以它的状态机就是基于线程的。比如进程A有5个线程,进程B有2个线程,总共就是12个线程来进行调度,也就是把CPU的时间分成12等份。线程总共状态如下:#001  //#002  // Thread States#003  //#004  typedef en...

2009-07-13 22:18:00

阅读数:2098

评论数:0

谈谈软件开发人员基本要求

美国次贷危机引发的世界金融危机,使全球经济发展面临严峻挑战,对我国就业环境也造成相当程度的冲击。据悉, 2008年10月以后,与金融紧密关联的证劵、保险、投资、理财等服务业大幅萎缩,同时,沿海地区劳动密集型企业、出口导向型企业更是受到了严重影响,社会就业压力高涨。而对2009年应届毕业生来说,就业...

2009-07-12 12:55:00

阅读数:9329

评论数:28

reactos操作系统实现(39)

到底一个线程是怎么样创建的呢?又是怎么样放到就绪队列呢?#001  NTSTATUS#002  NTAPI#003  PspCreateThread(OUT PHANDLE ThreadHandle,#004                  IN ACCESS_MASK DesiredAcces...

2009-07-12 11:49:00

阅读数:5104

评论数:1

reactos操作系统实现(38)

由于Reactos是以线程为最小的调度单位,如果仅仅创建进程的数据结构,不足以运行进程的任务,每个进程至少需要一个线程才可以运行,下面就来分析系统进程的线程创建,代码如下:#195      /* Setup the systeminitialization thread */#196      ...

2009-07-11 00:20:00

阅读数:1794

评论数:1

reactos操作系统实现(37)

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

2009-07-09 23:46:00

阅读数:2768

评论数:1

reactos操作系统实现(36)

前面分析了进程管理器的初始化工作,主要就是把进程管理器的列表、对象初始化,还有第一和第二阶段的初始化工作。接着下来,我们来分析一下进程创建函数,看看进程在Reactos里是怎么样创建的,需要调用什么函数来创建进程,还有应用程序是怎么样调用API函数来创建进程的。可以从前面分析的代码里,看到创建第二...

2009-07-08 23:03:00

阅读数:1627

评论数:2

reactos操作系统实现(35)

初始化活动的进程列表。#076      /* Initialize the ActiveProcess List */#077     InitializeListHead(&PsActiveProcessHead);#078     KeInitializeGuardedMutex(&...

2009-07-06 20:54:00

阅读数:2144

评论数:0

reactos操作系统实现(34)

现在就来分析第一阶段的进程管理器初始化函数PspInitPhase0,如下:#001  BOOLEAN#002  NTAPI#003  PspInitPhase0(INPLOADER_PARAMETER_BLOCK LoaderBlock)#004  {#005      NTSTATUS Sta...

2009-07-05 14:16:00

阅读数:2428

评论数:2

reactos操作系统实现(33)

当Reactos在系统初始化时,就会调用进程管理初始化函数PsInitSystem来进行初始化。只有把进程管理初始化后,才可以创建进程,这样才可运行各种各样的任务。下面就来分析进程管理器初始化函数:#001  BOOLEAN#002  NTAPI#003  PsInitSystem(IN PLOA...

2009-07-02 20:50:00

阅读数:1689

评论数:1

reactos操作系统实现(32)

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

2009-07-01 21:19:00

阅读数:3079

评论数:4

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