Linux
-
Linux与嵌入式系统李善平, 刘文峰, 王焕龙编著Linux是个优秀的操作系统,嵌入式系统则是近年来的热门话题。本书既是作者在运用Linux研究和开发嵌入式系统的过程中资料与经验的总结,也是把二者结合起来的集中体现。书中有对主流嵌入式操作系统、Linux操作系统、基于Linux的嵌入式操作系统的综述,更主要的是系统介绍了利用Linux开发嵌入式系统的关键技术和方法。同时,本书精选了作者研发的几个嵌入式系统的案例(机顶盒、宽带路由器、基于Linux的家用网关的设计与实现等)奉献给大家,希望能对读者有所帮助。本书内容丰富、层次清晰、力求较强的实践性和应用性,可作为高等学校有关嵌入式系统教学的教材,也可作为嵌入式系统开发与应用的参考书。 目录第1章嵌入式系统 11.1关于嵌入式系统 11.1.1嵌入式系统概念 11.1.2嵌入式处理器 21.2关于嵌入式操作系统 41.2.1从嵌入式系统到嵌入式操作系统 41.2.2典型的嵌入式操作系统 51.3嵌入式操作系统的应用 71.4典型嵌入式系统 91.4.1VxWorks和pSOS 91.4.2OSKit 161.4.3Palm OS 211.4.4μC/OS和μC/OS-II 241.4.5QNX实时操作系统 28第2章Linux 332.1Linux简介 332.1.1Linux的历史 332.1.2Linux的发行版本 342.1.3Linux的特点 362.2Linux内核 372.2.1内核概况 372.2.2进程管理 392.2.3存储管理 472.2.4文件系统管理 582.2.5设备管理 682.2.6系统启动 732.3Linux应用 752.3.1Linux在大型服务器上的应用 752.3.2Linux在桌面端的应用 762.3.3Linux在嵌入式环境中的应用 772.4主流嵌入式Linux系统 782.4.1μClinux 782.4.2RTLinux和RTAI 802.4.3MontaVista Linux 842.4.4LynxOS 87第3章嵌入式系统开发过程 903.1需求分析和概要设计 903.1.1嵌入式系统的概念和组成 903.1.2系统需求分析 903.1.3系统结构模型建立方式 913.1.4系统结构模型实现流程 923.2硬件 933.2.1嵌入式处理器 933.2.2存储设备 943.2.3外围设备 953.2.4典型的嵌入式系统开发平台 973.2.5Lineo的μCSimm 983.2.6ARM的ARM Evaluator-7T 1023.3软件 1063.3.1嵌入式系统的软件组成 1063.3.2嵌入式软件的基本开发流程 1093.3.3嵌入式操作系统 1103.4嵌入式系统软件开发过程 1113.4.1开发 1113.4.2编译和连接 1123.4.3重定位和下载 1133.4.4调试 113第4章嵌入式Linux系统的开发技术 1164.1快速启动 1164.2开机画面 1214.2.1隐藏字符信息 1214.2.2显示用户定义的画面 1224.3ramdisk技术 1234.4系统小型化 1254.4.1内核配置 1254.4.2嵌入式C库 1274.4.3小型shell 1304.5系统移植 1324.5.1建立交叉编译环境 1324.5.2内核移植 1364.5.3bootloader 139第5章嵌入式Linux系统的进程 1415.1Linux在实时方面的缺陷 1415.2Linux实时化的关键问题 1435.3Linux实时化改造的典型方法 1445.3.1外部实时性扩展 1445.3.2内部实时性改造 1605.4实时应用程序的编写 1645.5实时程序的测试 167第6章嵌入式Linux系统的存储管理 1696.1缺少MMU支持的内存管理 1696.1.13种内存管理模型 1706.1.2标准Linux的内存管理 1706.1.3μClinux的内存管理 1716.1.4μClinux内存管理的局限性 1726.2μClinux内存管理的实现 1736.2.1内存管理数据结构 1736.2.2物理空间管理 1746.2.3内核内存的申请和释放 1756.2.4内存映射 1766.3内存管理模块的启动初始化 1786.3.1setup_arch() 1786.3.2paing_init() 1796.3.3free_area_init() 1806.3.4mem_init() 1806.4可执行程序的加载 1806.4.1用户程序的内存分布 1806.4.2reloc段机制 1816.4.3flat可执行文件格式 1826.4.4执行文件加载流程 183第7章嵌入式Linux系统的文件系统 1877.1嵌入式系统的存储 1877.2文件系统类型 1887.2.1cramfs 1887.2.2romfs 1907.3日志文件系统 1937.3.1文件系统完整性 1937.3.2日志文件系统 1947.3.3jffs与jffs2文件系统 1957.3.4ReiserFS文件系统 1977.3.5ext3文件系统 1987.3.6xfs文件系统 1997.4文件系统的结构 2007.4.1/etc 2017.4.2/bin 2047.4.3/sbin 2057.4.4/dev 2067.5小结 207第8章嵌入式Linux的GUI 2088.1嵌入式GUI 2088.1.1嵌入式GUI的概念 2088.1.2一些成熟的嵌入式GUI 2098.2典型的嵌入式GUI-Microwindows 2108.2.1Microwindows的设备驱动 2118.2.2与设备无关的图形引擎 2148.2.3Nano-X的窗口管理和API 2188.2.4Microwindows在Linux Frame Buffer上运行 2298.3其他知名嵌入式GUI 2308.3.1面向实时的MiniGUI 2308.3.2应用广泛的Qt/Embedded 2328.4嵌入式GUI的应用 2338.4.1嵌入式GUI上的其他软件 2338.4.2嵌入式GUI的应用 2368.5小结 237第9章嵌入式Linux系统的网络互联及其优化技术 2389.1嵌入式Internet及其应用 2389.1.1嵌入式Internet技术的兴起 2389.1.2嵌入式Internet技术 2409.2网络协议栈的定制 2439.2.1Linux的网络代码分布及特点 2439.2.2网络部分内核编译配置 2459.2.3TCP/IP协议的定制 2479.3Linux中TCP/IP协议应用优化技术 2539.3.1实现快速上下文切换的设想 2539.3.2网络服务器 2559.4Linux IP报文转发及防火墙实现分析 2609.4.1IP数据报文流 2609.4.2netfilter框架 2639.4.3netfilter的网络地址转换(NAT)的实现 2679.4.4IPTables: netfilter体系的规则载体 2719.5基于Linux的家庭网关及其优化技术 2739.5.1改变网络设备的工作模式 2749.5.2转发报文不再往上经由IP层 2779.5.3NAT的重写 280第10章嵌入式系统集成开发环境 28610.1综述 28710.1.1集成开发环境 28710.1.2嵌入式软件开发 28810.1.3Python开发环境 29110.2代码编辑模块 29210.2.1代码编辑功能 29210.2.2PygtkScintilla 29310.2.3EideP代码编辑模块的实现 29410.3软件调试模块 29610.3.1软件调试功能简介 29610.3.2gdb前端(front-end)软件分析 29710.3.3gdb图形前端的实现 29810.3.4输出信息提取的实现 30010.3.5功能实现 30110.4JTAG在线调试的实现 30210.4.1标准的JTAG协议 30310.4.2PXA255中JTAG调试接口协议 30510.4.3PXA255中debug相关的寄存器及其访问方式 30710.4.4PXA255中debug相关的JTAG命令 31210.4.5JTAG在线调试实现思想 31410.4.6底层JTAG操作模块 31510.4.7host debugger 31810.4.8Pygdbserver 32610.4.9debug handler 32910.4.10用JTAG调试的例子 33310.5小结 335第11章嵌入式系统案例:机顶盒 33611.1机顶盒需求分析 33611.1.1机顶盒基本概念 33611.1.2所需功能 33711.2机顶盒概要设计 33811.2.1建立需求库 33811.2.2进行需求映射 33911.3机顶盒硬件设计 34011.4机顶盒软件设计 34111.4.1GUI设计 34311.4.2系统裁减和压缩 34811.4.3网络设计 35511.4.4系统启动优化 35811.5小结 359第12章嵌入式系统案例:宽带路由器 36012.1宽带路由器及Nanos操作系统 36012.1.1典型宽带路由器的功能 36012.1.2Nanos操作系统 36112.2操作系统的设计 36112.2.1Nanos操作系统的设计思想 36112.2.2关键部分的设计思想 36212.3任务管理的实现 36312.3.1任务状态 36312.3.2任务控制块和就绪表 36412.3.3任务的创建与删除 36612.3.4任务等待和挂起 36712.3.5任务调度 36812.3.6信号量 36912.4内存管理的实现 37112.4.1内存寻址 37112.4.2伙伴系统算法 37312.4.3Cache与Slab分配器 37512.5中断与异常 37812.6Nanos的PCI总线驱动和8139网卡驱动 38012.6.1PCI总线驱动 38012.6.2设计通用PCI设备驱动接口 38312.6.3rtl8139网卡驱动程序的实现 38412.7操作系统的初始化 38612.7.1系统的引导 38612.7.2内存管理的初始化 38712.7.3其他部分的初始化 38812.8网卡的半轮询工作模式 38912.9网络地址转换:NAT 39112.9.1模块的定义 39112.9.2NAT模块 39212.9.3模块的实现 39312.10小结 406第13章嵌入式系统案例:基于Linux的家用网关 40713.1系统概述 40713.1.1硬件设计 40713.1.2软件设计 40813.1.3准备工作 40813.2搭建基本系统 40913.2.1编译工具链 41013.2.2内核的编译 41113.2.3BusyBox的编译和安装 41213.2.4系统的配置 41313.2.5内核的安装 41413.3创建网络连接 41513.3.1静态IP的设置 41613.3.2动态IP客户端 41713.3.3宽带拨号客户端PPP和PPPoE 41713.4安装和配置网络服务 41813.4.1telnetd服务 41813.4.2网页服务器 41913.4.3iptables的安装 42013.4.4NAT、端口映射和防火墙的实现 42013.4.5其他的网络服务 42213.5文件系统的压缩 422 -
Fedora Core3 Linux架站实务李蔚泽编著Linux最让人称颂之处莫过于是内建的多种服务器,Linux优越的平台稳定性,更是服务器架设时需考虑的重要因素,因为它可将服务器性能提升至极限,以充分发挥网络资源的使用性能,更能确保与客户到动性的正确性。加上完全免费的使用优势,所以Linux可为企业节省服务器架设时的大量成本,因此是架设企业网络的绝对选择。本书采用最新版的Fedora Core 3平台,内容可涵盖网管人员平日的需求,虽不敢自比经典之作,但足以担任一般用户架设网站时的入门书,这也是笔者撰写时的初衷。第1章介绍了有关网络的基本概念,这是管理人员在维护网站与各项服务前,首先要熟悉的内容。除此之外,在本书的其余章节,共包含11种类型的服务器,这也是笔者在撰写时遭遇的首要难题,因为要以有限的篇幅来说明如此繁多的服务器主题,势必要取其精华的部分,所以有关内容的筛选,着实花费笔者许多时间。所幸有赖以往的经验,再辅以大量的参考文献,总算完成令人满意的内容,相信读者在细心阅读后,必可发现笔者求证时的用心。第2~4章可说是本书最大的重点所在,介绍了目前Intemet上占有率最多的Web服务器Apache,它也是企业急于树立形象与拓展商机的最佳选择,无论如何都建议您仔细地阅读。第5章是有关FTP(File Transfer Protoc01)服务器的运行,顾名思义,它是提供客户端与服务器间文件交换时的平台,因此一般企业网站都会竭尽所能提供此项服务,以吸引用户访问。第6章介绍的邮件服务器也是现今企业网络必备的利器,因为在目前电子信息数据充斥的环境中,早已跳离传统的纸张文件,笔者实在无法想像如果没有借助电子邮件的传递,企业如何完成日渐复杂的商业活动。第7章说明的SAMBA服务器是沟通Windows和Linux操作系统的绝佳工具,有了它,一般用户就可轻易通过"网上邻居"来访问Linux上的共享数据,这对信息的集成实在是举足轻重。第8章与第9章主要着眼点在于带宽使用率与数据安全的提升,利用代理(Proxy)服务器可以将常用的网页内容保存在硬盘中,以避免重复连接至相同网页时消耗的带宽。而NAT服务器与防火墙在目前已是企业网络不可或缺的机制,它们可分别用来作为IP地址不足,以及保障信息交换安全性的解决方案。第lO章是有关DHCP服务器的内容,正确地使用DHCP,可以节省许多平时维护客户端IP配置的时间。第11章介绍的DNS服务器在客户端连接Internet时,肩负着名字解析的工作,如果没有这个机制,客户端可能很难顺利地连接到Intemet。第12章的网络文件系统NFS,则是利用分布式系统的概念,将网络上原本分散的共享资源,集成在服务器的文件系统中。第13章说明了新闻服务器INN的运行原理,以及实际构建时所需注意的问题。最后一章是有关OpenSSH服务器的内容,它可强化网络通信时的安全性。 -
LINUX设备驱动程序(美)科波特(Corbet, J.)著;魏永明等译本书是经典著作《Linux设备驱动程序》的第三版。如果您希望在Linux操作系统上支持计算机外部设备,或者在Linux上运行新的硬件,或者只是希望一般性地了解Linux内核的编程,就一定要阅读本书。本书描述了如何针对各种设备编写驱动程序,而在过去,这些内容仅仅以口头形式交流,或者零星出现在神秘的代码注释中。本书的作者均是Linux社区的领导者。Jonathan Corbet虽不是专职的内核代码贡献者,但他是备受关注的LWN.net新闻及信息网站的执行编辑。Alessandro Rubini是一名Linux代码贡献者,也是活跃的意大利Linux社区的灵魂人物。Greg Kroah-Hartman是目前内核中USB、PCI和驱动程序核心子系统(本书均有讲述)的维护者。本书的这个版本已针对Linux内核的2.6.10版本彻底更新过了。内核的这个版本针对常见任务完成了合理化设计及相应的简化,如即插即用、利用sysfs文件系统和用户空间交互,以及标准总线上的多设备管理等等。要阅读并理解本书,您不必首先成为内核黑客;只要您理解C语言并具有Unix系统调用的一些背景知识即可。您将学到如何为字符设备、块设备和网络接口编写驱动程序。为此,本书提供了完整的示例程序,您不需要特殊的硬件即可编译和运行这些示例程序。本书还在单独的章节中讲述了PCI、USB和tty(终端)子系统。对期望了解操作系统内部工作原理的读者来讲,本书也深入阐述了地址空间、异步事件以及I/O等方面的内容。本书涵盖的主题包括:● 完整的字符、块、tty(终端)及网络驱动程序● 驱动程序的调试● 中断● 计时问题● 并发、锁定和对称多处理器系统(SMP)● 内存管理和DMA● 驱动程序模型和sysfs● 热插拔设备● 对常见总线的描述,包括SCSI、PCI、USB和IEEE1394(火线)。 -
Linux 操作系统姚华,姜广坤 主编《Linux操作系统》是新世纪高职教材编委会组编的高等职业教育计算机类课程规划教学之一。Linux作为一个免费的开放源代码的网络操作系统,以其很好的稳定性赢得了广大用户的喜爱,并迅速发展成为网络操作系统中的主流。年年来,Linux操作系统已经成为计算机专业教学中必不可少的内容,是计算机网络类专业及相关专业必修的一门课程。本教材目的是使学生通过学习,可以掌握Linux基本概念、常用命令以及Linux系统管理,考虑到Linux操作系统主要用于网络环境,教材中侧重Linux操作系统的网络配置与管理,使读者初步具有使用Linux配置自己的Internet站点的能力。 -
Linux操作系统CEAC信息化培训认证管理办公室本书采用“就业导向的职业能力系统化课程开发方法(VOCSCUM)”进行开发,是国家教育科学“十五”规划国家级课题“IT领域高职课程结构改革与教材改革的研究与试验”的研究成果之一,作为高等职业教育电子信息类专业“双证课程”培养方案配套教材,同时也是“CEAC国家信息化培训认证”的教材,具有鲜明的特色,可作为高职高专院校电子信息类专业教材。本书是“网络组建与维护”职业核心能力课程的第2阶段课程的教材,主要涉及Linux操作系统的应用,并以Red Hat Linux 9.0为蓝本,对Linux操作系统做了较为详尽的阐述,并且以理论联系实际为特点,采用任务驱动的编写方法,结构清晰,图文并茂,通俗易懂,力争做到使读者在兴趣中学习Linux。本书适合于高等职业学校、高等专科学校、成人高等院校、本科院校举办的职业技术学院电子信息类专业教学使用,也可供示范性软件职业技术学院、继续教育学院、民办高校、技能型紧缺人才培养使用。 -
Linux内核设计与实现(美)洛夫“如果有这样一本书,既能提纲挈领,为我理顺思绪、指引方向,同时又能照顾小节,阐述细微,帮助我更好更快地理解源码,那该有多好。”说这话的先生虽然针对的是C++,但道出的是研习题源码的人们的共同心声。我们能不能做点儿什么,让学习Linux内核的过程更符合程序员的习惯呢?本书回答了这个问题。本书作者是一个狂热的内核爱好者,所以他的想法自然贴近程序员。 如果你是一名Linux内核爱好者,那么本书提供的材料会让你想在内核层面上做些什么;如果你是一名普通的编程人员,那么对操作系统的透彻理解会拓宽你的编程思路。 本书内容涉及Linux2.6内核,包含许多新特性,如O(1)调度程序、抢占式内核、块I/O层、I/O调度程序等。本版新增内容 ·当前Linux2.6内核的所有主要子系统和最新特性 ·内核模块的新细节 ·虚拟内存和内存分配的扩充内容 ·调试内核代码的附加信息 ·内核同步和定时器示例 ·洞察Linux内核补丁的提交参与Linux内核社区 -
Red Hat Linux服务器配置与应用林慧琛, 刘殊, 尤国君编著本书以目前被广泛应用的Red Hat Enterprise Linux服务器发行版为例,全面系统地介绍了利用Linux操作系统架设网络服务器的方法,内容包括Linux系统的安装、配置与使用,Samba服务、NFS服务、DHCP服务、DNS服务、Web服务、FTP服务、电子邮件服务、iptables防火墙、NAT服务、Squid代理服务、网络数据库MySQL服务、LDAP服务、流媒体服务、VPN服务、网络时间服务、Telnet服务、SSH服务和VNC服务的配置及应用,以及使用图形管理工具Webmin实现快速配置常用服务的方法。 书中内容的实用性、可操作性强,读者能迅速将学到的知识运用到实际工作中。书中所有内容都源于作者的实际经验,可以帮助读者迅速掌握实际应用中的各种经验和技巧,节省花费在调试上的大量时间。 本书附带的光盘包括了书中所有用到的第三方开放源代码软件和所有完整的范例配置文件,读者可直接在实际工作中使用,还可根据需要将范例配置文件稍作修改复制到真正的服务器中使用,以提高工作效率。 本书适合从事网络管理、网络维护工作的工程技术人员作为操作手册使用,也可用作Linux培训、大中专院校计算机及相关专业学习的教材。 -
Linux实用教程王瑞琴, 李振江编著本书共四篇。内容分十章。第一篇科技信息检索的基础知识,包括第一章科技信息检索的基础知识。主要介绍与文献检索相关的基础知识和科技文献的出版类型。第二章检索语言与检索词表。着重介绍受控语言与词表。第二篇手工科技信息检索,包括第三章数据与事实型信息检索。重点介绍词典、百科全书、年鉴、手册和名录等工具书。第四章单一类型科技文献检索,主要以介绍图书、期刊、会议论文、学位论文、科技报告、标准文献和专利文献的检索为主。第五章综合类型科技信息检索,主要以介绍美国《工程索引》、美国《科学文摘》和美国《科学引文索引》等世界著名的检索工具为主。第三篇计算机科技信息检索,包括第六章计算机检索的基本知识和原理,详细地阐述了计算机检索的基本原理、检索策略与技巧以及检索步骤等。第七章光盘信息检索系统,以介绍常见的光盘数据库为主。第八章国际联机信息检索;第九章网络信息资源检索,重点放在介绍网上图书、期刊、会议论文、学位论文、科技报告、标准文献和专利文献等各类科技信息资源的检索与利用上。第四篇科技信息服务机构,根据我国科技信息服务机构的特点,分别介绍不同类型的科技信息服务机构。 -
LINUX应用开发技术详解范永开, 杨爱林编著本书全面介绍了Linux的编程知识,包括Linux程序的调试、Shell编程、Linux的内存管理、Linux的系统调用、标准I/O流、进程与进程调度、进程间通信、信号编程、Linux多线程编程、网络编程、数据库编程、图形编程等。书中最后还介绍了近年来较为热门的Linux国际化和本地化程序设计。 本书内容丰富、深入浅出,每章内容都含有大量编程实例,以加强读者理解和提供给读者使用。本书适合希望利用Linux进行开发的程序设计人员阅读,也可作为在校大学生和研究生学习Linux程序设计入门知识的参考书。 -
Linux 内核完全剖析赵炯 编著本书是一本有关Linux操作系统内核基本工作原理的入门读物。本书介绍了Linux系统的发展历史,然后介绍了PC机的硬件组成结构、编制内核使用的汇编语言和C语言扩展部分,并且重点说明了80x86处理器在保护模式下运行的编程方法,接着详细介绍了Linux内核源代码目录树组织结构,并依据该组织结构对所有内核程序和文件进行了注释和详细说明。本书对早期Linux操作系统内核(vo.11)全部代码文件进行了详细的剖析,旨在让读者在尽量短的时间内对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux系统打下坚实的基础。虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。书中首先以Linux源代码版本的变迁为主线,简要介绍了Linux系统的发展历史,同时着重说明了各个内核版本之间的主要区别和改进方面,给出了选择O.11版内核源代码作为研究对象的原因。然后概要介绍了PC机的硬件组成结构、编制内核使用的汇编语言和C语言扩展部分,并且重点说明了80x86处理器在保护模式下运行的编程方法。接着详细介绍了Linux内核源代码目录树组织结构,并依据该组织结构对所有内核程序和文件进行了注释和详细说明。为了加深读者对内核工作原理的理解,书中最后一章给出了围绕Linux0.11系统的多个试验。试验中使用的相关程序均可从本书配套网站(www.oldlinux.org)上下载。本书适合作为高校计算机专业学生学习操作系统课程的辅助和实践教材,也适合Linux爱好者作为学习内核工作原理的自学参考书籍,还可供一般技术人员作为开发嵌入式系统的参考书使用。
