最新资讯 New
- 2019-09-15
- 莱芜微信小程序开发需要认真思考几个必要问题:
- 2019-09-15
- 泰安APP软件开发公司如何开发更高效的移动应用?
- 2019-09-14
- 莱芜APP软件开发公司发展的风口,你知道几个?
- 2019-09-14
- 社交APP软件开发会有怎样的特点
- 2019-09-12
- 泰安APP开发之用户行为分析的三个方法
我们能从Linux系统上学到什么?谈谈linux的四个维度
文章作者:佚名 时间:2016年10月14日
(1)熟练学习linux、配置linux和使用Linux
2016年有一本书特别火,长期位列在热销排行榜上,这本书以centos为例,讲了很多的内容,比如说系统安装、常见配置、软件更新、特殊命令的用法、服务器的配置等等。整本书的内容很厚,而且内容是一版再版,可见大家对linux的基础知识是非常渴求的。另外一方面,现在随着电商和视频网站的迅速发展,一种称为运维工程师的职业开始热门起来。由于行业的特殊性,某些互联网公司需要成百上千的服务器统一对客户进行服务,那么怎么样搭建网站、配置服务器均衡负载、进行远程控制、正确配置数据库和统一管理服务器集群,这些都是运维工程师需要关注的事情。从这个意义上来说,莱芜软件开发运维工程师的重要性可见一般了。
(2)利用linux开发应用层软件
通俗意义上来说,利用linux开发应用层的软件和windows上面开发应用软件没有什么不同。可能,在windows上面使用得比较多的就是mfc、gdi、win32这些接口,而在嵌入式上面使用的就比较多种多样了,什么qt、minigui、gtk都是可以用来进行开发的。当然,上面说的都是界面程序,很多公司的linux程序是没有界面的,比如说游戏公司的linux工程师。相比较而言,他们看中的更多的是linux的稳定性,所以在linux上开发的更多的都是服务器端程序。很多人都有一个误解,认为操作系统就一定比应用软件高级,其实不然。在我看来,office、webkit、samba、mplayer这些软件的代码都是在百万行以上,本身的结构也是相当复杂的。
(3)利用linux开发驱动
和其他os系统开发驱动的工作一样,linux驱动开发也有自己的一整套流程。要想真正地做好驱动,一般来说你需要知道芯片的寄存器特性、电气原理图、总线标准,当然熟悉信号测试,通晓定时器、互斥工具、回调机制、位运算、中断机制、芯片设置、信号时序、地址分配,这些也是少不了的。更极端一点,如果本身创业的公司比较小,驱动开发工程师有的时候还需要自己测试信号、调试boot、焊接芯片,这些都是可能的。所以说,对于真正的芯片企业来说,无论是美资、日资、台资企业来说,驱动开发工程师的收入都是非常可观的。特别是现在有了android的推波助澜,驱动开发工程师的薪酬更是水涨船高。希望在软件上有所突破的硬件工程师或者是希望对系统本身进行更多了解的软件工程师,都可以将此作为自己长期发展的一个方向。
linux驱动其实并不复杂,莱芜软件开发要做的就是在linux统一的驱动框架下实现对外设的统一管理。很多的代码架构都是现成的,所以我们只要做好模仿、学习、测试和验证就可以了。
(4)linux kernel代码移植、修改和维护
linux kernel代码相信是被很多人奉为经典的,但是linux kernel的代码很长也很难。一方面,linux代码存在技巧代码、汇编代码,同时部分函数冗长、文件冗长、命名不规范,另外一方面linux的代码分布合理、系统流程明显、相关资料众多。关键是我们自己怎么从linux kernel中学到东西?是看书呢,还是看代码呢?是每一行都看呢,还是按照模块看呢?是掌握主要原理呢,还是看实现技巧呢?是看高版本呢,还是先熟悉低版本呢?下面,我想就自己的经历谈谈自己的看法,
a)熟悉的代码认真看,不熟悉的代码了解一下接口就可以,对于内存管理只要了解__get_free_page、kmalloc、vmalloc这几个函数就可以了;
b)代码不要贪多求快,多思考多实践;
c)忽视技巧,看中代码的处理流程和策略的权衡,多多思考为什么要这么设计;
d)利用module特性查看代码的执行日志,代替函数堆栈的功能;
e)了解linux性能的改进方法,了解为什么有软中断、rcu、slab和各种各样的延时函数;
f)自己编写os,实现内存管理、信号量、消息队列、驱动开发、中断和线程调度,深入理解os的流程。
2016年有一本书特别火,长期位列在热销排行榜上,这本书以centos为例,讲了很多的内容,比如说系统安装、常见配置、软件更新、特殊命令的用法、服务器的配置等等。整本书的内容很厚,而且内容是一版再版,可见大家对linux的基础知识是非常渴求的。另外一方面,现在随着电商和视频网站的迅速发展,一种称为运维工程师的职业开始热门起来。由于行业的特殊性,某些互联网公司需要成百上千的服务器统一对客户进行服务,那么怎么样搭建网站、配置服务器均衡负载、进行远程控制、正确配置数据库和统一管理服务器集群,这些都是运维工程师需要关注的事情。从这个意义上来说,莱芜软件开发运维工程师的重要性可见一般了。
(2)利用linux开发应用层软件
通俗意义上来说,利用linux开发应用层的软件和windows上面开发应用软件没有什么不同。可能,在windows上面使用得比较多的就是mfc、gdi、win32这些接口,而在嵌入式上面使用的就比较多种多样了,什么qt、minigui、gtk都是可以用来进行开发的。当然,上面说的都是界面程序,很多公司的linux程序是没有界面的,比如说游戏公司的linux工程师。相比较而言,他们看中的更多的是linux的稳定性,所以在linux上开发的更多的都是服务器端程序。很多人都有一个误解,认为操作系统就一定比应用软件高级,其实不然。在我看来,office、webkit、samba、mplayer这些软件的代码都是在百万行以上,本身的结构也是相当复杂的。
(3)利用linux开发驱动
和其他os系统开发驱动的工作一样,linux驱动开发也有自己的一整套流程。要想真正地做好驱动,一般来说你需要知道芯片的寄存器特性、电气原理图、总线标准,当然熟悉信号测试,通晓定时器、互斥工具、回调机制、位运算、中断机制、芯片设置、信号时序、地址分配,这些也是少不了的。更极端一点,如果本身创业的公司比较小,驱动开发工程师有的时候还需要自己测试信号、调试boot、焊接芯片,这些都是可能的。所以说,对于真正的芯片企业来说,无论是美资、日资、台资企业来说,驱动开发工程师的收入都是非常可观的。特别是现在有了android的推波助澜,驱动开发工程师的薪酬更是水涨船高。希望在软件上有所突破的硬件工程师或者是希望对系统本身进行更多了解的软件工程师,都可以将此作为自己长期发展的一个方向。
linux驱动其实并不复杂,莱芜软件开发要做的就是在linux统一的驱动框架下实现对外设的统一管理。很多的代码架构都是现成的,所以我们只要做好模仿、学习、测试和验证就可以了。
(4)linux kernel代码移植、修改和维护
linux kernel代码相信是被很多人奉为经典的,但是linux kernel的代码很长也很难。一方面,linux代码存在技巧代码、汇编代码,同时部分函数冗长、文件冗长、命名不规范,另外一方面linux的代码分布合理、系统流程明显、相关资料众多。关键是我们自己怎么从linux kernel中学到东西?是看书呢,还是看代码呢?是每一行都看呢,还是按照模块看呢?是掌握主要原理呢,还是看实现技巧呢?是看高版本呢,还是先熟悉低版本呢?下面,我想就自己的经历谈谈自己的看法,
a)熟悉的代码认真看,不熟悉的代码了解一下接口就可以,对于内存管理只要了解__get_free_page、kmalloc、vmalloc这几个函数就可以了;
b)代码不要贪多求快,多思考多实践;
c)忽视技巧,看中代码的处理流程和策略的权衡,多多思考为什么要这么设计;
d)利用module特性查看代码的执行日志,代替函数堆栈的功能;
e)了解linux性能的改进方法,了解为什么有软中断、rcu、slab和各种各样的延时函数;
f)自己编写os,实现内存管理、信号量、消息队列、驱动开发、中断和线程调度,深入理解os的流程。
想要了解更多详情欢迎来电咨询18678812288,或登陆网址www.sdxinnongcun.com。联系人:王经理。