❶ 学习linux内核,请推荐几本书及顺序,谢谢。
linux内核最经典的书是《深入理解Linux内核》,这本书内核编程看;如果你是搞UNIX/Linux环境下的应用程序编程,那么就看《UNIX环境高级编程》;如果做Linux下设备驱动程序开发,就看《Linux设备驱动》(第三版)。这几本都是老外写的,都是很经典的书。
❷ 该怎么学习linux内核编程
学习内核的好处很多,在学习过程中不仅可以夯实大量理论基础,还可以学习到很多编码惯用法,提升学习能力和分析能力。那么应该怎么学习Linux内核编程呢?
一、确立高度,明确目标(高度决定视角,视角决定行动)
个人的心得是从高到低的学习,在一个新的学习阶段,应该先多花点时间学习一些概念化的内容,这时候切忌去看具体的实现,而是多考虑如何在大脑中构建各种抽象模型
二、学习小Tips
如何看书:要带着问题看书
如何看代码:前提是你要对整体的框架、结构有一定清晰的了解。
三、多看一些有关的书籍和视频
❸ Linux学习书籍求推荐
Linux学习书籍求推荐
1、《Linux与Unix Shell 编程指南》
C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata着
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明着
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着
3、《Building Embedded Linux Systems》
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O’Hallaron着
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》
入门篇
《LINUX权威指南》书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux 。另外比较热门的也可以看看《鸟哥的私房菜》等书,偏管理类的书。如果想做server方向的可以找来看看。
驱动 篇
《LINUX设备驱动程序 》就是网上说的“LDD”,经典之作,必备书籍。国产经典《Linux驱动详细解》也是一本非常不错的书,很实用,书中源代码分析比较多,基于2440的,对linux外围驱动有很全面的讲解
内核篇
浙江大学的《LINUX内核源代码情景分析》,外国鬼子的《莱昂氏UNIX源代码分析》还有《深入理解linux内核》都是出名的经典巨作。另外赵 炯的《LINUX内核完全剖析–基于0.12内核》也非常不错,对内核代码进行了详细的注释,非常有助于对内核的理解和代码的分析。
shell篇
《LINUX与UNIX Shell编程指南》
应用 编程
不用说了肯定是《unix环境高级编程》被称为unix编程的圣经。
TCP/IP篇
《TCP/IP详解》作者W.Richard Stevens也是《unix环境高级编程》的作者,牛人出的书没有一本不是经典的。但是英年早逝,默哀一下。
c语言
《The C Programming Language》正是作者造出来的c语言,书能垃圾就怪了
《c和指针》和《c缺陷和陷阱》两本必备。包含了c语言最容易出错的地方,加深c语言功力的好材料。
关于算法
《算法导论》
1 熟悉linux基本环境 >>> 《鸟哥的私访菜》《unix初级教程》 《linux编程宝典》(市面上无,图书馆有), 等等。
2 熟悉操作系统的基础知识 >>> 《现代操作系统》 《操作系统概念》
3 熟悉系统编程 >>> 《unix环境高级编程第二版》《unix操作系统设计与实现》
4 内核 按先后顺序: 《 linux内核设计与实现》 《linux设备驱动程序》 《深入理解 linux内核》 《linux内核源代码情景分析》 《深入理解linux虚拟内存系统》
5 其他一些书籍: 《freebsd操作系统设计与实现》 《solaris内核结构》 《unix高级教程:系统技术内幕》 《现代体系结构的unix系统:内核程序员的smp与cache技术》 《保护方式下的80386及其编程》 (后3本市面上没了,大学图书馆里一般都有》 《Intel64 and IA-32 Arichitectures Software Developer’s Manual》
6 其实内核玩深了,体系和编译也要学好 《计算机体系结构:量化研究方法》 《编译原理》(龙书)
Linux编程推荐书籍一览表
shell 编程
《LINUX与UNIX SHELL编程指南》
BASH宝典:
Advanced Bash Scripting Guide (如果你使用的是 GNU/Debian 系统,可以用 apt-get install abs-guide 安装该文档)
BASH Programming – Introction HOW-TO
Bash Man
用户级编程书籍:
Advanced Programming in the UNIX Environment(中文版《UNIX环境高级编程》第二版) 作者 W.Richard
Stevens/尤晋元等
GNU/Linux编程指南 作者 Kurt Wall
Linux 程序设计权威指南 作者 于明俭、陈向阳、方汉
《The Art of Unix Programming》作者 E.S.R
Computer Systems A Programmer’s Perspective
(中文名)《深入理解计算机系统(修订版)》
《Unix Systems Programming》(中文版《UNIX系统编程》)作者: (美)KAY
A.ROBBINS, STEVE ROBBINS 译者:陈涓 赵振平
网络编程:
Unix Network Programming V1 & V2,Unix网络编程卷1、2 作者 W.Richard Stevens
《unix网络编程》
XWindow编程
Definitive Guides to the X WindowSystem 作者 Dan Heller, Paula M. Ferguson
内核源代码阅读(结合源代码)和编程
(入门)
《边干边学Linux内核指导》
(高级)
《Linux Kernel Development》
《Linux内核源代码情景分析》
《深入分析Linux内核源代码》 陈莉君
《 Understanding Linux Network Internals 》即《 深入理解Linux网络内幕(英文影印版)》Christian Benvenuti
内核模块编程
《The Linux Kernel Mole Programming Guide》
Linux设备驱动编程
Linux设备驱动程序/Linux Device
Drivers 作者 Alessandro Ruibini
多线程编程
《多线程编程指南》
❹ 求由尚德的Linux内核编程进阶篇的PDF文档。在网上找了半天都没有
他讲的不好
❺ 学习Linux内核编程都需要什么基础。
至少对操作系统常识要有一定的了解,信号量,进程之类的东西,还有linux内核的一些基本知识,比如内核的组成结构,编写内核可用的库文件等等。去看下linux设备驱动吧,至少会有一些了解。
❻ linux 系统编程, 驱动编程 , 内核编程 有什么区别《UNIX高级编程》的内容是哪一类的
系统编程,注重性能,比如服务器端的编程,一般最底层使用c,自己对内存管理文件系统管理进行优化
驱动编程,主要是为了把linux一直到嵌入式设备,linux内核是一个庞大的系统,但不是所有设备都用上这些,而且对于兼容性问题,还要做一些修改。比如在iphone出来之前,都是使用嵌入式设计一些PDA和山寨手机系统
至于内核编程,其实也是对性能的追求,但内核编程调用的API级别更高,相对来说系统编程,是标准的API
《U高级编程》一般没太多说明,都是系统编程
❼ 《由尚德系列讲座之linux内核编程(进阶篇)》(linux kernel)内核版本2.6那里有下
www.kernel.org
❽ 什么是LINUX内核编程
真佩服楼上的2位对“内核编程”的理解力!
简单说,Linux内核编程就是开发Linux驱动程序,学会内核编程后,将会对操作系统的内部机制和工作原理有充分了解,可以从事硬件驱动开发、嵌入式系统开发等。内核编程的语言仍是传统的C语言,但其编写方法和调用接口与传统应用程序的差别较大,你必须了解如何处理中断、如何在内核态和用户态之间转换、PCI、DMA、内核地址映射、内核I/O等,这不是《UNIX高级编程》所涉及的内容,可以找一本专门讲Linux驱动编程的书看看,或在网上搜寻相关资料(关键词:Linux DDK)。不过先提醒一句,学习内核编程的难度很大,必须做好长期心理准备