linux内核学习
⑴ 怎样学习linux内核
先练基本功,《C语言》,《数据结构》,《计算机操作系统》,《计算机体系结构》,这几门课程是必须的。
《Linux内核源码分析》+Linux内核代码。对着书本,边看边理解,对照实际内核代码,验证一次,比如用Source Insight,很方便看调用的逻辑关系。
上两点是理论加理解,对工作及学习有很大帮助。实际操作起来,还是建议从编译开始,驱动入手,再往子系统,框架走比较稳妥。
⑵ 对linux内核感兴趣,要学哪些东西
如果只是研读linux 内核的话,C语言基础一定要好,汇编是不要求的,特别是对指针和结构体的理解一定要非常的透彻,不然你肯定晕,还有就是数据结构了,应为内核中涉及很多的内存操作,都是指针和链表的操作,对数据结构不熟悉的话很麻烦,如果你以前自己写过程序的话,不论是什么语言的,理解起来就比较容易。
不过等你看完了linux内核的代码,你就会发现自己已经完全不是一开始的那个层次了,你会发现写linux内核的那些开发员才是真正的大神级别的! 那代码写的,堪称艺术
⑶ Linux内核应该怎么去学习
学嵌入式Linux要先学以下几点:
1.C语言。要有C语言的基础,当然越熟练越好,不熟也没关系,具备基本技能就可以:比如写一个数组排序、输入数字求和什么的。C语言的学习就是多些多练。
2.Linux基础
Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell、 Makefile脚本编写等知识,嵌入式开发环境的搭建。
3.Linux系统编程
重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。
4.Linux网络编程
计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。
5.数据结构与算法
数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。
6.Cortex A8 、Linux 平台开发
通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。
7.驱动开发
驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。
⑷ 如何学习linux内核
Linux是最受欢迎的自由电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客LinusTorvalds为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。技术上说Linux是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。
组成进程管理(processmanagement)、1
定时器(timer)、2
中断管理(interruptmanagement)、3
内存管理(memorymanagement)、4
模块管理(molemanagement)、5
虚拟文件系统接口(VFSlayer)、6
文件系统(filesystem)、7
设备驱动程序(devicedriver)、8
进程间通信(inter-processcommunication)、9
网络管理(networkmanagement)、10
系统启动(systeminit)等操作系统功能的实现。想学先买有关的书,再请教微机老师或专业人士。
⑸ linux内核好学吗
任何事情都不是那么好学的,就像小学到大学这期间所有要学习的东西,当你在小学一年级就知道到大学毕业,你要学习的所有的课程和内容时,估计你一年级就开始退缩了。linux内核学习也一个道理,你只要刚开始入门了,后面的学习就是一个渐进的过程。
http://bbs.chinaunix.net/forum.php?mod=forumdisplay&fid=224&filter=typeid&typeid=432
这是chinaunix的内核入门的论坛,每天关注一会,等一段时间后,你肯定有所收获的。
⑹ 学习linux内核,请推荐几本书及顺序,谢谢。
linux内核最经典的书是《深入理解Linux内核》,这本书内核编程看;如果你是搞UNIX/Linux环境下的应用程序编程,那么就看《UNIX环境高级编程》;如果做Linux下设备驱动程序开发,就看《Linux设备驱动》(第三版)。这几本都是老外写的,都是很经典的书。
⑺ linux内核要学多久才能达到参与内核开发的程度,怎样学才好
至于要学多久,那要看你学习的进度和理解能力了!理解能强,学习进度就快,那么达到参与内核开发的程度也就快。据我所知,中国(包括台湾)好像只有一个人贡献了3000行的Linux内核代码,结果也没有被采用!只是中国人的一个悲哀!视乎中国人不善于、不热心于这方面,反而热心于去拿别人做好的!
以上都是一家之言!
⑻ 如何学习Linux内核
想要学好Linux,需要具备以下能力:
1. 基本功要扎实
学习任何一种语言,必备的基本功是必须要有的,一方面可以提高效率,另一方面可以拓宽思路。
对于Linux基本知识的学习,对一些初学者来说是枯燥乏味的,可以通过理解再背诵的方式先进行代码及语法的学习,然后进行实践操作,必须手动输入命令行,不要借助工具,这样可以更快速有效的掌握Linux。
2. 学以致用
Linux学习的目的是应用,Linux基本知识是一些零散的技术,当没有应用在项目上时,我们无法理解他的真实价值,所以打好基本功之后,最紧迫的是多做几个完整的项目,刚开始可以是功能简单的项目,之后可以选择稍微复杂的项目,勤于动手,敢于实践,一定能学好Linux。
3. 学会使用Linux联机帮助
任何一种教材都不会完全讲述Linux知识,一般讲的都是比较常用的或者是比较有代表性的知识,但是,我们在项目应用中往往有些功能的实现是需要一些生僻知识和技能的,那么,如何查找我们所需的知识呢,推荐查阅Linux帮助文档,主流的Linux都自带详细的帮助文档,很方便解决问题!
4. 在网上找资源
在Linux的学习和应用中,难免会遇到一些没有思路、不知道如何解决的问题,这时就要借助网络力量,可以通过搜索引擎搜索查找,也可以咨询资深技术人员,最终实现问题的解决,这是Linux知识积累的一个重要的途径!
5. 查阅英文技术文档
如果想深入学习Linux,查阅英文技术文档是十分必要的,往往最新的技术都是采用英文文档的方式发布的,而且更全面,因此,对于Linux人员来说,多看一些Linux技术文档,对于掌握前沿技术和加深知识是十分有必要的!
⑼ 如何开始学习Linux内核
1.先练基本功,《C语言》,《数据结构》,《计算机操作系统》,《计算机体系结构》,这几门课程是必须的。
2.《Linux内核源码分析》+Linux内核代码。对着书本,边看边理解,对照实际内核代码,验证一次,比如用Source Insight,很方便看调用的逻辑关系。
3.上两点是理论加理解,对工作及学习有很大帮助。实际操作起来,还是建议从编译开始,驱动入手,再往子系统,框架走比较稳妥。
了解更多开源相关,去LUPA社区看看吧。
⑽ linux内核怎么学习
1 学习一些操作系统的理论知识,一些概念。比如:进程,内存管理,文件系统等等。关于这一方面的书籍太多了,自己找一本就行了
2 学习x86汇编,虽然linux用的是AT&T汇编,但二者只是格式不同而已。而且学习x86汇编有助于了解x86系统结构。书籍推荐王爽的《汇编语言》 ,我学的时候用的不是这个,后面看到这本书,才觉得自己做了“苦功了”。学完大部分汇编指令时,找些汇编程序读读,熟悉这些指令的用法。不需要有写汇编程序的能力,能读就行了,当然会写更好
3 赵炯的《Linux内核0.11完全注释》。这个linux内核版本低,作者也讲得很详细。不过关于x86体系的那一部分,作者讲得很繁琐,这一部分一定要大体看懂,那后面章节的内容就没有多大的问题了。我先把书通看了一遍,用了1个月的时间。后来,再返回来一个一个研究,用了2个月。
之所以看这本书,是让自己对内核有个实质的感受,不仅仅只是理论上的东西。
4 毛德操的《linux内核情景分析》。linux内核版本2.4.0,这本书很厚,上下两册。我通读一遍,用了2个月时间。后来,再返回来一个一个研究,现在已用了2个月,正在研究中。。。。就我个人觉得,linux内核最难的是内存管理,这2个月我就只大体搞清内存页面的周转,但搞清了这个,就会对内核的整体结构有个大致的了解,因为你已经清楚了用户进程和内核的其它部分是怎样使用内存页面的。
5 学习linux内核最需要的是坚持和思考。这是一个很长的过程,也许你会发现学了linux内核,并不会给你带来什么,我现在就是这样觉得的,感觉自己什么都不会做,真希望有人能我一些建议!不过学习学习也是有好处的,比如看了赵炯的《Linux内核0.11完全注释》后,你再去看UCOS-II,会感觉那太容易了!也许学习linux内核会对将来的工作有所帮助吧!