linux深入学习
A. 如何更深入地学习 linux
1. 最重要的linux的内核工作方式:包括但是不限于:
内存分页
进程切换
interrupt 和 exception,以及system call
lock
进程管理
内存管理和分配
signal
文件系统(ext2, ext3)
输入输出设备
缓存
书可以看《understanding the linux kernel》,《intel OS programming volume III》
这个是理解linux的基础的基础,对于理解操作系统有莫大的好处。而且无论对于high level还是low level的编程都是相通的,很多东西在学完操作系统之后,你对他们的理解就完全不一样了。就像学好缓存在对于提高大运算上面的效率是很有帮助的。
一边看书一边可以写一个简单的linux自己玩,时长一个学期比较合适。因为课程要求,所以我写过一个可以多任务运行的linux,附带一个声卡driver。当时演示的时候放的是凤凰传奇,教授整个人斯巴达了。但是不得不说这是一个非常大的工作量。
但是无论是要做内核开发还是驱动开发,我觉得这些都是基础中的基础,是要扎扎实实掌握的,不得有半点马虎。
2. CPU架构/汇编
操作系统跟CPU的架构是离不开的,我个人觉得是相辅相成的。很明显的能看到Intel为了和操作系统配合起来,实现了很多硬件功能。最明显的就是虚拟内存已经可以在硬件层面上直接换算,不需要通过软件了。不懂x86或者arm的架构,会一定程度上造成理解linux内核的困难。比如为什么要以某种特定的方式分页,为什么内存管理的时候需要不同的算法,interrupt,system call的意义何在?等等等等的问题都需要精通CPU的架构。
当时就是因为对TLB的理解不够深入,不够仔细,造成我的系统每次切换任务的时候,会page fault。
重点在于interrupt的处理,缓存的概念和内存相关结构的设计。至于乱序执行,pipeline之类的都是次要的,对于linux不是特别的重要。
x86的汇编是基础,有助于debug和理解linux源代码。我写系统的时候大段写过x86代码来实现低层操作。不知道真正的linux是不是这样实现的。
3. high level编程
系统毕竟是为了应用程序而服务的,就像有需求才有生产一样。没有应用程序的需求,就不会设计相关的系统功能。了解high level的编程一定程度上可以融会贯通。
B. 如何更深入地学习 Linux
看你想学那方面了。linux基本分三个层次。网络层,应用层,驱动层。看你主要想往哪里发展。
网络层,主要是tcp/ip协议,服务器架设等。
应用层,各种应用程序,数据结构什么的
驱动层,主要是面向底层硬件,编写驱动,linux内核剪裁等。
如果要自学的话,先从属性linux系统开始,学习c语言数据结构什么的。然后看想往哪里发展。
由于我对驱动比较了解,就跟你说下驱动,我感觉学习驱动,首先c语言一定要会,一二级指针结构体数据结构,这是一定的。然后就是学习单片机,最好有单片机的基础,无论是51的还是2440的,当然你也可以没有这方面的基础,不过学起来可能要比较吃力。然后就是剪裁内核,给自己板子上个系统什么的,然后编写驱动什么USB I2C UART什么的,再挂到你的板子上。。基本就这些,这些一般就够学习很久了,再往后的话就涉及内核编译什么的了。等楼主学到这里再取想去问吧。。。毕竟够学一阵了。。
C. 如何更深入地学习Linux
如果想深入学习Linux,一定要尝试去看英文文档。 因为,技术性的东西写得最好的,最全面的文档都是英语写的,最先发布的高新技术也都是用英语写的。
开始Linux的学习之后,请不要用Windows的工作方式来思考问题,因为它们之间确实有很大的不同。
比如它们之间的内存管理机制、进程运行机制等都有很大不同,因此抛开Windows的那种思维,用全新的理念尝试去挖掘Linux身上特有的潜质,对初学者是至关重要的。
另外Linux是由命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平,命令行方式的操作永远是不会变的。
Linux命令有许多强大的功能:从简单的磁盘操作、文件存取,到进行复杂的多媒体图像和流媒体文件的制作,都离不开命令行。
虽然Linux也有桌面系统,但是X-window也只是运行在命令行模式下的一个应用程序。
因此,可以说命令是学习Linux系统的基础,在很大程度上学习Linux就是学习命令,很多Linux高手其实都是玩儿命令很熟练的人。
D. 如何学习linux
第一阶段:初级入门
初级阶段需要把linux运维学习路线搞清楚,任何学习都是循序渐进的,所以学linux运维也是需要有一定的路线。
1、Linux基础知识、基本命令(起源、组成、常用命令如cp、ls、file、mkdir等常见操作命令)
2、Linux用户及权限基础
3、Linux系统进程管理进阶
4、linux高效文本、文件处理命令(vim、grep、sed、awk、find等命令)
5、shell脚本入门(可边练习边学习)
第二阶段:中级进阶
中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。
1、TCP/IP网络基础(差不多CCNA、NP的知识就够用)
2、Linux企业常用服务(如dns、http、ftp、mail、nfs等)
3、Linux企业级安全原理和防范技巧(系统性能/安全、安全威胁模型和保护方法
4、加密/解密原理及数据安全、系统服务访问控制及服务安全基础
5、iptables安全策略构建
6、shell脚本进阶(主要是结合一些应用,写一些案例)
7、MySQL应用原理及管理入门(能管理和搭建一个个人博客站点)
第三阶段:高级提升
1、http服务代理缓存加速(其中主要学习varnish、nginx缓存系统,要对CDN的知识有所了解。)
2、企业级负载集群(其中主要学习nginx、haproxy、lvs要对主要知识熟练掌握,对负载均衡算法有清晰认识)
3、企业级高可用集群 (其中需要对keepalived,heartbeat等进行深入讲解)
4、运维监控zabbix详解(主要是zabbix、cacti、nagios等监控系统,现在用的比较多的是zabbix)
5、运维自动化学习(需要学一些开源运维自动化工具的使用如ansible、puppet、cobbler等运维自动化工具)
第四阶段:资深方向进阶
1、 大数据方向(需要对hadoop、storm等常见开源大数据系统需要深入了解)
2、 云计算方向(主要是openstack这套东西,当然像一些kvm等虚拟化技术,也是需要掌握的,现在docker也比较流行)
3、 运维开发(主要是python运维开发)
4、 自动化运维(在之前自动化基础上做深入)
5、 运维架构师(主要需要广度,差不多5年左右以上经验,可以担当此职位)
E. 如何才能更深入的学习linux
1、当我们进行Linux学习的时候,首先要找到一个适合自己的Linux发行版本,虽然说发型版本太多了,没有准确的数字,但是有一点的可以确定,就是Linux是非常流行的,所以在不断的更近中,所以想要学习好Linux,我们就需要明确自己的方向,找到适合自己的系统。
2、学习的途径,也是我们需要掌握的关键。对于没有什么基础的人来说,学习Linux最好找培训班进行学习,这样可以满足实际的需求,也可以先买几本书简单了解一下,做一个入门,书籍推荐《跟老男孩学Linux运维》。
3、想要学习好Linux,我们需要对基础的知识做到完全掌握,包含一些基本的命令,同时还需要掌握shell编程。
4、基本的入门知识了解的比较通透之后,我们就可以进行进阶阶段了,了解一些服务器搭建,参加一下实战项目
F. 浅谈如何学习linux
一.为什么要学linux?
当然最重要是爱好和兴趣!如果你这种必要学,或者根本不喜欢,请不要浪费时间,你学也学不好!
二.起步
你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix
如何选择版本:北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。
对于初学linux的人来说,我建议是使用redhat,原因如下:
1)现在很多书都是以redhat为例讲的,为了与书本协调一致
2)周围的人都用redhat,交流比较方便
3)redhat应用范围广,有典型性和代表性
4)它易于使用和安装,我们没有必要把时间浪费在“装系统”上而应集中精力学习最有用的东西。
【注】现在觉得RH很死板,AS,ES等用在服务器上或许不错,Personal desktop用mandrake,debian,suse都不错,笔者现在用Mandrake,因为她长得漂亮:)
如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到linux上这种需要,那么中软,红旗等中文linux是不错的选择
我强烈建议:自己亲自动手把linux装到你的硬盘上,你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单
从此现在开始,请不要以windows的工作方式来考虑问题,应该尝试挖掘linux身上的“天才unix”的气质。
G. 怎样深入的学习linux,希望在linux方面有所发展
想要学好Linux,必须有一个合适的学习路线,以下是老男孩教育的学习课程大纲,你可以参考一下:
对于Linux的学习,可以分为四个阶段,Linux初级入门阶段→Linux中级进阶→Linux高级进阶→Linux资深方向细化阶段
第一阶段:初级阶段
初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线。
1. Linux基础知识、基本命令;
2. Linux用户及权限基础;
3. Linux系统进程管理进阶;
4. linux高效文本、文件处理命令;
5. shell脚本入门
第二阶段:中级进阶
中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。
1. TCP/IP网络基础;
2. Linux企业常用服务;
3. Linux企业级安全原理和防范技巧;
4. 加密/解密原理及数据安全、系统服务访问控制及服务安全基础;
5. iptables安全策略构建;
6. shell脚本进阶;
7. MySQL应用原理及管理入门
第三阶段:Linux高级进阶
1. http服务代理缓存加速;
2. 企业级负载集群;
3. 企业级高可用集群;
4. 运维监控zabbix详解;
5. 运维自动化学习;
第四阶段:Linux资深方向细化
1. 大数据方向;
2. 云计算方向;
3. 运维开发;
4. 自动化运维;
5. 运维架构师
以上是Linux的一个学习方向和路线,对于Linux学习是一个需要坚持的过程,也许通过自学或者培训,3至6个月都可以把基本知识学会,但是重在实践,深入的思考和不断的摸索,你会发现Linux更多的美!
H. 怎么学习linux
Linux主体分为“运维”与“开发”两个方向,无论你是Linux相关从业者,还是说爱好都可以归类到这里,其中“运维”一般是初学者或者转行人员的首选,而Linux运维主要是对服务器稳定、性能与安全方面的维护和调试。
实际上Linux入门并不困难,只要具备Linux基础,读懂Linux的命令格式,大多数的服务架构都是可以按照文档部署出来。当然做Linux开发,个人建议去参加培训学习更有效率,如果报班学习则大概需要4-6个月时间。
学习主要内容有:
1)网络基础与linux系统的管理
2)优化及高可用技能
3)虚拟化与云平台技术
4)开发运维
毕业后可从事的工作有:
1)Linux运维工程师
2)数据库工程师
3)云计算运维工程师
4)自动化运维工程师
5)云计算架构工程师等
互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。
想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。
祝你学有所成,望采纳。