【读书笔记】Windows CE嵌入式系统_【2】_操作系统层

来源:互联网 发布:雷洋死亡真相 知乎 编辑:程序博客网 时间:2024/05/16 15:30

一、系统调用与CoreDLL.DLL

1、CoreDLL.DLL的主要功能是负责英勇程序与Windows CE通讯以及完成Windows CE的系统调用(system Call)。

CoreDLL.DLL不是一个单独的进程,它是一个会被所有用户进程都加载的动态链接库(DLL,Dynamic Link Library)。所用的应用程序只能通过CoreDLL访问Windows CE所提供的服务。


2、系统调用的详细过程:

第一种:返回


第二种:自陷


3、系统调用机制

在Windows CE中,系统调用发生的整个过程中,并没有发生真正的线程上下文切换。Windows CE内核负责把API调用赚到实现该API的PSL进程。PSL进程会把进行系统调用的执行线程从一个进程迁移到下一个进程。

也就是说,在整个系统调用过程中,在处理器上执行的线程始终是同一个。


eg:

createWindow系统调用会在应用程序,NK.EXE和GWES.EXE中来回切换,但是在三个进程中执行的线程是同一个线程,也就是说,并没有真正的上下文切换发生,所谓的“切换”只是把执行进程的虚拟地址空间映射到Slot 0 。Windows CE内核负责把应用程序中的用户态线程改变访问权限,然后把它迁移到系统进程中,在整个系统调用过程中,这个线程在三个进程中使用同一个栈和同一个寄存器。当这个线程离开PSL进程的时候,Windows CE内核再把它的特殊访问权限移除。 借助PSL,在系统调用时并没有真正的发生上下文切换,因此,系统的效率不会受到影响。


Windows CE采用平板式的虚拟内存模型,多个进程共享一个4GB的平坦虚拟地址空间。因此,只要有访问权限,数据在进程之间无需复制也可以共享。


PSL机制是在NK.EXE中实现的。它只在Windows CE内部使用,用户和OEM无法对PSL进行扩展。


二、内核NK.EXE

NK.EXE实现了Win32 API中核心的进程创建加载、线程调度、中断处理和内存管理等核心功能。

NK.EXE 由 NK.LIB 和 OAL.LIB组成。

    • NK.LIB----与CPU指令体系结构相关和具体的外设无关
    • OAL.LIB----OEM层中的OAL代码编译后的输出。


三、图形系统 GWES.EXE

图形窗口事件系统(GWES)提供基本的绘图功能和窗口管理器。所有的用户输入(键盘、鼠标、触摸屏等)相关的驱动程序,以及显示驱动都有GWES.EXE来加载和管理。

  GWES.EXE实现的基本功能基本上是桌面Windows中的USER32和GDI32的集合。


四、对象存储FILESYS.EXE

对象存储=文件系统+数据存储

FILESYS.EXE是在运行时负责对象存储的进程。

对象存储包括

  • 文件系统 ----RAM文件系+ROM文件系统
  • Windows CE数据库 ----提供结构化的数据存储
  • 系统注册表 -----负责存储系统和应用程序的配置信息。

五、设备管理 DEVICE.EXE
DEVICE.EXE负责加载,卸载和管理所有不被GWES.EXE管理的驱动程序。包括所有的总线驱动程序,电源管理DLL。
同时,DEVICE.EXE向系统提供所有关于驱动API的实现。

winCE 5.0改动】:大多数的实现被转移到DevMgr.DLL中,然后DevMgr.DLL由DEVICE.EXE加载。这样的设计有利于驱动程序绕过PSL调用,直接使用DevMgr.DLL中的API,从而提供系统的效率。

六、服务SERVICES.EXE
SERVICES.EXE负责加载系统服务的进程。提供一些后台的处理或者为应用程序提供高级的功能。例如:FTP、HTTP、TELNET

0 0
原创粉丝点击