的网络操作系统设计.pdf
基于嵌入式基于嵌入式 Linux 的网络操作系统设计的网络操作系统设计 杨丽萍1,王自力2(1.长春大学计算机科学技术学院,长春 吉林,130022 2.吉林大学中日联谊医院信息中心,长春 吉林,130012)摘要摘要:本文对嵌入式 Linux 网络计算机的主要结构进行了分析,并给出了实现方法。主要设计和实现了网络计算机客户端操作系统和基于 Linux 的 RDP 客户端。在网络计算机客户端操作系统设计中,主要从嵌入式 Linux 分层的角度设计了网络计算机的操作系统,这种结构层次清晰,功能划分明确,而且容易实现;在基于 Linux 的 RDP 客户端研究中,主要分析了RDP 协议,实现了 RDP 客户端的功能。关键字关键字:网络计算机;RDP 客户端;操作系统 The Design of the Embedding Linux Network Operation System Yang Liping1,Wang Zili2(1.School of Computer Science and Technology Changchun University,Changchun Jilin,130022 2.The Hospital Information Center of Jilin University,Changchun Jilin,130012)Abstract:It analyzes the main structure of network computer based on embedding Linux system,and introduces the implementation method.Mainly,the Linux RDP client and the network computer client operation system are designed and realized.It designs the network computer client operation system according to the embedding Linux layers,which is easy to be implemented.During the research on RDP client,it mainly analyzes the RDP protocol,and realizes the RDP client function.Keywords:Network Computer;RDP Client;Operation System 中图分类号:中图分类号:TP399 文献标识码:文献标识码:A 1 引言引言 操作系统技术包含服务器和客户机操作系统两套技术,目前支持瘦客户机计算的服务器技术主要是 VNC、Citrix Metaframe、Terminal Services、Rapid X 和 Tarantella,服务器操作系统要解决多用户、会话控制、状态表示等一系列技术难点。网络计算机设计中的一个主要工作就是瘦客户机操作系统的设计,在此我们把瘦客户端操作系统称为网络计算机操作系统。本文从 Linux 体系结构的角度给出网络计算机的 Linux 体系结构,这样更能方便表达设计和实现嵌入式 Linux 网络计算机操作系统的步骤。2 操作系统体系结构操作系统体系结构 本操作系统体系结构如图 1 所示:图 1 网络计算机的嵌入式 Linux 体系结构 根据上面网络计算机的嵌入式 Linux 体系结构,下面给出了要设计的网络计算机操作系h t t p:/w w w.e l e c f a n s.c o m 电子发烧友 h t t p:/b b s.e l e c f a n s.c o m 电子技术论坛统各部分的主要硬件和软件的选择。硬件系统:CPU(VTA C3 733MHzpro)、内存(64MB-512MB SDRAM)、显卡(sis300 图形内核、32 兆 DDR 帧缓存)、声卡(2 声道)、网卡(10/100 兆网卡、支持 PXE 启动)、显示器(CRT 彩显)、PS/2 接口的鼠标和键盘。硬件抽象层(HAL):显卡驱动、声卡驱动、存储设备驱动、网卡驱动等。Linux 内核:Linux2.4.18。应用程序接口(API):Glibc2.4 等。图形用户界面层:Xwindows4.2 IceWM。应用软件:媒体播放器Mp1aper、浏览器 mozila、终端 RDP/ICA/PXE 等。3 各部分具体实现策略各部分具体实现策略 3.1 硬件层的实现硬件层的实现 该层主要实现系统初始化部分和网络计算机硬件系统的驱动部分。首先,在 386 的实模式下对已经调入内存的操作系统代码进行检查,通过 BIOS 中断获取内存容量信息,设置键盘反应速度,设置显示器的基本模式,获取硬撇信息,检测是否有PS/2 鼠标等操作。然后,就准备让 CPU 进入保护模式了。要先屏蔽中断信号,再次设置 32位启动代码的位置,调用操作系统指令 1idt 和 1gdt 被调用了,设置中断向量表(idt)和全局描述符表(gdt)。最后们对 8259 中断控制器进行编程,对防处理器进行复位。Setup.S 设置保护模式的标志位,重新取指令以后,再用一条跳转指令,进入保护模式下的启动阶段,同时把控制权交给 Head.S 这段纯 32 位汇编代码。Head.S 先做一些屏蔽中断的准备工作,然后,用一个默认的表项把所有的 256 个中断向量填满。这个默认表项指向一个特殊的 Linux 中断服务程。因为 Linux 系统初始化完成后,就不使用 BIOS 的中断服务程序。Linux 有很完善的设备驱动程序使用机制,该机制使特定硬件设备的中断服务程序很容易被系统本身或用户直接调用,而且,调用时所需的参数通常都要比 BIOS 调用来得简单且高效。所以,BIOS的中断向量在这里就被覆盖了。Head.S 此后会检查 CPU 的类型,对协处理器进行检查,然后调用了 Setup_paging 这个子函数进行页初始化。到此,保护机制下内存管理,中断管理的框架已经建好了。最后,Head.S 调用/init/main.c 中的 start_kernel 函数,把控制权交内核。图 2 是 NC(Network Computer)系统的整个引导过程。图 2 NC 系统初始化引导过程 Linux 核心和设备驱动程序之间必须有一个以标准方式进行相互操作的接口。每一类设备驱动:字符设备、块设备及网络设备都提供通用接口,以便在需要时为核心提供服务。Linux动态性很强。每次 Linux 核心启动时如果遇到不同的物理设备,需要不同的物理设备驱动程序。Linux 允许通过配置脚本,在核心重建时将设备驱动包含在内。其他设备驱动可在必要时作为核心模块动态加载。3.2 内核的实现内核的实现 h t t p:/w w w.e l e c f a n s.c o m 电子发烧友 h t t p:/b b s.e l e c f a n s.c o m 电子技术论坛在系统需求确定的前提下,设计网络计算机嵌入式 Linux 操作系统的首要步骤是嵌入式Linux 内核的设计。内核的选择主要是根据硬件系统处理器体系结构的不同,选择适当的Linux 内核实现。构建 Linux 内核之前先要根据目标硬件平台的配置来修改内核选项。通常要进行的修改是选择合适的硬件支持,这些硬件主要是处理器、芯片组、网卡、声卡、显卡等设备;另外还需要设置的是文件系统、网络接口等系统软件选项的选择,去除不需要的功能模块。内核编译过程包括确定内核依赖关系、生成内核镜像、生成内核模块几个步骤。内核是应用程序和硬件之间桥梁,在瘦客户机中,存储设备和内存是非常紧缺的资源,保持一个小的内核既可以增强整个系统的性能,又能够节省宝贵的存储空间。因此需要一个精简的内核支持瘦客户机,使得内核能够完备的支持瘦客户机的硬件设备,又没有冗余。在完成了硬件 HAL 层的工作,将各种驱动源代码都获得并放到内核的指定位置后,就可以开始编译出自己想要的嵌入式 Linux 内核了。编译结束后得到内核文件大小为 1M 字节左右,这个大小对于网络计算机来说是可以接受的。3.3 根文件系统的实现根文件系统的实现 设计好 Linux 内核后的工作是设计嵌入式 Linux 的根文件系统,Linux 内核引导过程的最后一步工作就是挂接这个根文件系统。Linux 根文件系统的组织结构沿袭 Unix 系统的传统结构。在设计嵌入式 Linux 的根文件系统的时候,我们要做的工作依次是组织目录结构、开发应用程序、选择共享函数库、存储内核镜像和模块、选择设备文件、配置系统初始化过程和安装根文件系统。瘦客户机通常使用 Flash 作为存储设备。引导程序、操作系统内核、文件系统都保存在Flash 中。因此需要文件系统和 Flash 驱动程序来统一完成对 Flash 设备的读写。由于 Flash的容量小、成本高、以及使用寿命短的特点。3.4 应用程序层应用程序层(API)层实现层实现 应用程序层主要有许多 c 函数库构成。在 Linux 中有很多函数库,满足各种各样的函数调用。我们用 1dd 命令检测出需要的函数库,然后根据系统存储空间(因为网络计算机嵌入式操作系统要求最后编译出来的内核大小不能太大)和网络计算机需要满足的应用需求,将用到的函数库放到 API 层,或用静态编译的方法将涉及该函数库的代码直接编译到应用中,从而使其不依赖该函数库。图 3 给出了我们用到的部分函数库。图 3 部分函数库 4 基于基于 Linux 的的 RDP 客户端的设计与实现客户端的设计与实现 NC 系统的一大应用是连接 Windows2000 或 Windows2003 终端系统,使用 Windows 的资源,让用户感觉就像直接在使用 windows2003 一样。由于 Windows 终端协议经过了多次升级,到目前为止最新的是 Rpd5.1 协议,该协议提供了很多 RDP5.1 之前不具备的特性,如真彩色、本地打印、本地视频等。为了给用户提供一个真实的 Windows 环境,使之具有多媒体等功能,需要研究 RDP5.1,开发 RDP5.1 的客户端。h t t p:/w w w.e l e c f a n s.c o m 电子发烧友 h t t p:/b b s.e l e c f a n s.c o m 电子技术论坛4.1 RDP 程序模块程序模块 RDP 客户端的设计主要分为两大模块,分别是 RDP 程序模块,客户端底层设计模块。RDP 程序模块主要实现 RDP 协议;客户端底层设计模块通过定制和剪裁 Linux 系统,让 RDP程序与网络计算机硬件平台整合到一起,使 RDP 程序在网络计算机设备上可以运行。RDP 程序主要有 RDP 协议模块与 GUI 模块组成,它们之间保留了接口。RDP 协议模块主要解析 RDP 防议,与平台无关;GUI 模块主要负责图形显示和鼠标消息上传,与所选平台也没有关系。图 4 是 RDP 程序结构图。图 4 RDP 程序结构 RDP 程序执行后,首先从配置文件中读取服务器 IP 地址,本机 IP 地址等参数,然后连接服务器,服务器连接成功后,建立窗口,下载登陆界面,随后进入窗口消息循环,程序只处理鼠标、键盘消息,出理上传的 RDP 数据。根据 RDP 协议的层次结构将整个模块分为TCP 层、ISO 层、MCS 层、SEC 层、RDP 层。分别有文件 tcp.c、iso.c、mcs.c、sec.c、rdp.c来实现。按功能划分,可以划分为 RDP 回话连接、数据传输与解析、RDP 数据处理、数据的上传和本地打印。4.2 客户端底层设计模块客户端底层设计模块 RDP 客户端模块由两个独立程序组成,Rdp1og 负责用户界面和处理用户配置,mw 为RdP 客户端程序。在脚本 rdp 中循环调用这两个独立程序,使用户所见到的总是 RDP 客户端界面,可以从界面点击图标启动客户端程序。在启动脚本/etc/rc.d/rc.sysinit 中直接启动 rdp脚本。启动流程如下图 5 所示。图 5 RDP 启动流程图 本文作者创新点本文作者创新点:本文从 Linux 体系结构的角度提出了网络计算机操作系统层次结构。根据提出的嵌入式 Linux 网络计算机操作系统层次结构,研究了基于嵌入式 Linux 网络计算机的操作系统的实现方法。参考文献参考文献:1.林涛.嵌入式操作系统 WindowsCE 的研究J.微计算机信息,2006,6-2:91-93 h t t p:/w w w.e l e c f a n s.c o m 电子发烧友 h t t p:/b b s.e l e c f a n s.c o m 电子技术论坛2.罗海勇等.龙芯-1 号 CPU 的网络计算机硬件系统设计及实现J.计算机工程,2005,7-2:66-67+70 3.吴明晖.基于 ARM 的嵌入式系统开发与应用.人民邮电出版社 2004 年 6 月 4.张绮文等.ARM 嵌入式常用模块与综合系统设计.电子工业出版社 2007 年 1 月 5.姜波.Windows CE.Net 程序设计.机械工业出版 2007 年 1 月 作者简介作者简介:杨丽萍(1976-),女,汉族,出生于吉林省松原市,硕士研究生,讲师,主要研究方向:计算机应用、人工智能与模式识别方面研究。王自力(1966-),男,汉族,吉林省长春市人,硕士研究生,主要研究方向:数据库与神经网络。Biography:Yang Liping(1976-),Female,Han Nationality,Born in Songyuan City Jilin Province,Master degree,Lecturer,Main Research Area:Computer application,artificial intelligence,and pattern recognition.Wang Zili(1966-),Male,Han Nationality,Born in Changchun Jilin Province,Master Degree,Main Research Area:Database,Neural network.h t t p:/w w w.e l e c f a n s.c o m 电子发烧友 h t t p:/b b s.e l e c f a n s.c o m 电子技术论坛