ubuntu能学linux吗能干哪些工作

一心只玩 linux 的学生毕业后适合什么工作? - 知乎614被浏览162637分享邀请回答010 条评论分享收藏感谢收起455 条评论分享收藏感谢收起查看更多回答3 个回答被折叠()学习Linux内核能干什么?我个人的理解是:
1、了解Linux内核的具体工作细节,对我们系统编程来说是非常有用处的,比如你了解了某个系统调用在内核中是怎么实现,用起来就会更加得心应手。
2、学习Linux内核的工作原理和具体实现细节,本身就是一种挑战,内核是个非常庞大的工程,无论是从理论还是实现细节理解起来就是很有难度的,如果我们能坚持的把内核中某个子模块完全的理解后,一定会提升自己的自信心,无论以后我们是做内核编程,还是系统编程。
3、Linux内核开发工程师几乎都是全球最著名的内核黑客,内核代码里有无数的编程技巧值得我们学习,它就是一个代码的宝库。
4、分析Linux内核代码,无疑对我们编写内核模块是有巨大帮助的。内核函数无非是内核给我们提供的接口,但是了解内核函数的具体实现,能更好的编写驱动程序。
5、学Linux内核不能用来装x,要把这些知识实际的运用到自己的代码中去。
本文已收录于以下专栏:
相关文章推荐
1. 了解操作系统基本概念。如果不会,可以学习《操作系统:设计与实现》Andrew S.Tanenbaum 写的那本。以MINIX为例子讲解操作系统的概念。非常推荐。
2. 有了操作系统的基本概念以...
Makefile不是Make Love
  从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love...
现在回首看看,接触Linux已经很长时间了。 在大三的时候开始学习Java, 但是一直学Java的话, 感觉有点腻, 就尝试找点其他东西来学习。 所以当时就选择学习了Linux。 至于为什么要学习Li...
参考:/Linux/73.htm
       学习内核的好处很多,在学习过程中不仅可以夯实大量理论基础,还可以学习到很多编码...
GNU/Linux系统到底能做什么?能替代windows吗?(吐血推荐)
理解 GNU/Linux
“UNIX 是简单的,你不需要成为天才也能理解这种简单。”
由于GNU/Lin...
偶尔的一次机会让我看到了silverlight(当然以前也见过,不过由于要下载安装插件,所以就放弃了)的引人之处,原以为是flash做出的动画效果,结果让我晕倒。。。原来silverlight能够做出...
JS学习(离开了jquery我们能做什么)jquery是我学习前端最早接触到的框架,与其说我是从js开始进入前端的,倒不如说我是从jquery进入前端的。无论是其选择器系统,简洁易懂的事件绑定,dom...
JS学习(离开了jquery我们能做什么)
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)谈谈我的学习工作经历,自学linux去中兴上班
日 11:17 来源:电子发烧友论坛 作者:佚名 (0)
  作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下。
  在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会)。C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能。比如写一个数组排序、输入数字求和什么的。学C语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决;执行出错没关系,自己去分析。以前我是用VC来练习C语言的,经常去尝试着写一些C语言竞赛的题目。它们是纯C、纯数学、纯逻辑的题目,不涉及界面这些东西,很适合煅炼你的编程能力。回到主题,首先我们要明白你的目的是什么,大概来说所谓嵌入式Linux可以分为两部分:底层系统、应用开发。如果你是想做应用开发,那么你去把C语言、数据结构、JAVA什么的学好吧。嵌入式应用开发和PC上的应用开发并没有什么特别要注意的。也许你说在嵌入式上要做些优化,是的,要优化,但是未经优化的程序和PC上的程序开发没什么差别。另外,当你有能力去优化时,你已经不用来问这个问题了。具体到某个例子,比如说开发界面,在PC上我们用VC;在嵌入式Linux里也许我们用QT也许用Android,这个时候你应该去学学QT、Android的编程。但是基础还是C或JAVA,在此基础上去熟悉它们的接口。你学过VC的话,也是要花时间去了解那些类、控件的。
  如果你的目的是想学习底层系统,这是我的专长,倒是可以说一点。在回答这个问题之前,我先回答:不少人问我,到底是学驱动还是学应用?我只能说凭兴趣,并且驱动和应用并不是截然分开的
  1. 我们说的驱动,其实并不局限于硬件的操作,还有操作系统的原理、进程的休眠唤醒调度等概念。想写出一个好的应用,想比较好的解决应用碰到的问题,这些知识你应该懂。
  2. 做应用门槛低,特别是现在的ANDROID,纯JAVA。做应用的发展路径个人认为就是业务纯熟。比如在通信行业、IPTV行业、手机行业,你了解行业的需求。所以,当领导的人,多是做应用的。
  3. 做驱动,其实我不想称为&做驱动&,而是想称为&做底层系统&,做好了这是通杀各行业。我工作几年,做过手机、IPTV、会议电视,但是这些产品对我毫无差别,因为我只做底层。他们的业务跟我没关系。当应用出现问题,他们解决不了时,我就会从内核角度给他们出主意,给他们提供工具。做底层的发展方向,个人认为是技术专家。
  4. 其实,做底层还是做应用,之间并没有一个界线,有底层经验,再去做应用,你会感觉很踏实。有了业务经验,你再了解一下底层,很快就可以组成一个团队。
  回到怎么学的问题上。嵌入式Linux底层系统包含哪些东西?不要急,举一个例子你就知道了。
  1. 电脑一开机,那些界面是谁显示的?是BIOS,它做什么?一些自检,然后从硬盘上读入windows,并启动它。类似的,这个BIOS对应于嵌入式Linux里的bootloader。这个bootloader要去Flash上读入Linux内核,并启动它。
  2. 启动windows的目的是什么?当然是上网聊天什么的了。这些上网、聊天工具在哪?在C盘、D盘上。所以, windows要先识别出C盘、D盘。在Linux下我们称为根文件系统。
  3. windows能识别出C盘、D盘,那么肯定能读写硬盘才行。这涉及的东西称为驱动程序。当然不仅仅是硬盘,还有网卡、USB等等。嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。
  先说到这里吧,嵌入式LINUX里含有bootloader,内核, 驱动程序、根文件系统这4大块。
  一、bootloader:
  它就是一个稍微复杂的裸板程序。但是要把这裸板程序看懂写好一点都不容易。Windows下好用的工具弱化了我们的编程能力。
  很多人一玩嵌入式就用ADS、KEIL。你能回答这几个问题吗?
  1. 一上电,CPU从哪里取指令执行?答:一般从Flash上指令。
  2. 但是Flash一般是只能读不能直接写的,如果我用到全局变量,这些全局变量在哪里?答:全局变量应该在内存里
  3. 那么谁把全局变量放到内存里去?答:长期用ADS、KEIL的朋友,你能回答吗?这需要&重定位&。在ADS或KEIL里,重定位的代码是制作这些工具的公司帮你写好了。你可曾去阅读过?
  4. 内存那么大,我怎么知道把&原来存在Flash上的内容&读到内存的&哪个地址去&?答:这个地址用&链接脚本&决定,在ADS里有scatter文件,KEIL里也有类似的文件。但是,你去研究过吗?
  5. 你说重定位是把程序从Flash复制到内存,那么这个程序可以读Flash啊?答:是的,要能操作Flash。当然不仅仅是这些,还有设置时钟让系统运行得更快等等。
  先自问自答到这里吧,bootloader这一个裸板程序,其实有3部分要点:
  1. 对硬件的操作
  2. 对ARM体系处理器的了解
  3. 程序的基本概念:重定位、栈、代码段数据段BSS段什么的。
  对硬件的操作,需要看原理图、芯片手册。这需要一定的硬件知识,不求你能设计硬件,但是至少能看懂; 不求能看懂模拟电路,但是要能看懂数字电路。这方面的能力我是在学校里学到的,微机原理、数字电路这2本书(书名忘了)就足够了。但是我怀疑你有无耐心把这2本书看完。我不知道现在有没有更快捷的书。想速成的话,就先放掉这块吧,不懂就问GOOGLE、发贴。另外,芯片手册是肯定要读的,别去找中文的,就看英文的。开始是非常痛苦,以后就会发现那些语法、词汇一旦熟悉后,读任何芯片手册都很容易。
  对ARM体系处理器的了解, 看杜春蕾的《ARM体系架构与编程》吧,里面讲有汇编指令,有异常模式、MMU等。也就这3块内容需要你了解。
  程序的基本概念,王道当然是去看编译原理了。可惜,这类书绝对是天书级别的,劝你若非超级天才还是别去看了。
  对于bootloader,我学习时是先看了《ARM体系架构与编程》,然后自己写程序把各个硬件的实验都做了一遍,比如GPIO、时钟、SDRAM、UART、NAND。把它们都弄清楚了,组台在一起就很容易看懂u-boot了。总结一下,看懂硬件原理图、看芯片手册,这需要你自己去找资料。
相关技术文章:
相关资料下载:
上周热点文章排行榜
上周资料下载排行榜
技术交流、我要发言! 发表评论可获取积分! 请遵守相关规定。
创新实用技术专题
拥有共同的方向和目标,不是朋友,就是对手——这句话也适用于现...新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 8, 距离下一级还需 192 积分
论坛徽章:0
各位同僚,小弟学的是电信专业,大三,学习过51、AVR、MSP430单片机的编程,也给公司编过一些小程序,对操作系统、嵌
入式、linux较感兴趣,现在正在学Qt编程,请问以后可以从事什么样的工作更利于自己的发展?希望好心人指点,最好能具
体一点的工作,指明哪家公司也可以,谢谢!!!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
论坛徽章:4
比如marvell, windriver
论坛徽章:0
001xiaofei
& & 嵌入式一般在通信行业,或者自动化控制方面需求较大,不管是硬件,驱动还是应用,都有机会。
白手起家, 积分 8, 距离下一级还需 192 积分
论坛徽章:0
嵌入式一般在通信行业,或者自动化控制方面需求较大,不管是硬件,驱动还是应用,都有机会。
------------------------------------------------------------------------------------------------------------------------
请问,具体一下可以去什么公司呢?做什么产品的公司更有利于自己的发展???
白手起家, 积分 8, 距离下一级还需 192 积分
论坛徽章:0
请问,具体一下可以去什么公司呢?做什么产品的公司更有利于自己的发展???
白手起家, 积分 27, 距离下一级还需 173 积分
论坛徽章:0
我比较了解的是做智能家具&&不知道这个行业怎么样&&
论坛徽章:0
& & 智能家居在国内市场还是很小的,只有高档小区才会配备,没有普及,但以后肯定会发展很好。
论坛徽章:0
001xiaofei
& & 要看你兴趣所在了,我是做WLAN的,每个行业都是机会和挑战并存,可惜现在通信行业又开始冬天了。
论坛徽章:4
还是去IC公司吧
白手起家, 积分 45, 距离下一级还需 155 积分
论坛徽章:0
我和5楼一样是做wlan的,建议刚毕业先去大公司学习两年,等某一块可以独立承担了再去小公司去闯荡。

我要回帖

更多关于 学linux需要什么基础 的文章

 

随机推荐