大家好,今天小编关注到一个比较有意思的话题,就是关于学习linux内核难么的问题,于是小编就整理了4个相关介绍学习Linux内核难么的解答,让我们一起看看吧。
- 学习嵌入式开发的过程难吗?
- 一个程序员不会linux内核系统,算得上一个优秀程序员吗?
- 作为一名学生,是否应该去花较多的精力看linux内核的源码?
- 未来想从事Linux后台开发,需要学习linux内核吗?
学习嵌入式开发的过程难吗?
如果你从来没接触过,学习的过程还是挺难的,但是如果你有软件和硬件基础,再加上毅力和恒心,也能够由入门到精通的。下面根据我自己的一些经验给你一个学习的路线和:
首先拿出大学里的C语言、数据结构、计算机基础、高等数学、数字模拟技术和数字电子技术 这些书来学习软件基础和硬件基础。
看到这些书有没似曾相识的感觉,仿佛回到大学时代!
C语言:
这个不用说了,软件入门的开始,把每课代码例子手动敲一遍,不是为了敲代码而敲代码,而是熟悉编程方法和编程思想。
数据结构一定要学好,这个关系以后你的代码 是“土鳖”编写的还是"土豪"编写的;
这个关系到以后你的代码 大小是10k还是100k,还关系到你能否往更高领域公司百度阿里物联网云计算、自动驾驶、智能机器人方向发展。
高等代数:
刚开始是比较难的,但是一旦摸到门路后,就会学得很开心、进步很快。一般来说,学习嵌入式一般是以下过程:数模电-->51单片机-->STM32单片机-->QT/RTOS-->Linux。每一个阶段都有难的,但都是前一个阶段积累来的,慢慢来的话,也不会太难,坚持并相信自己就好,有需要就学,热爱就学!加油吧!
从我自身的经历来看,学习嵌入式入门容易,但是精通比较难,主要的难点在如下几点:
1)芯片层面。芯片的硬件资源,gpio、时钟、复位等,搞清楚还是挺容易的,但是芯片内部的架构、各ip的选择、性能指标的确定,这些不是短时间内能掌握的,需要长时间的打磨才有可能。成本、功耗、性能如何做到均衡,对于一个好的嵌入式芯片来说至关重要,而这需要对芯片设计和产品应用均有长时间的理解才行。总的来说,嵌入式芯片的使用入门容易,但是好的芯片设计较难。
2)硬件层面。嵌入式系统的硬件设计一般都易入门,它的难点在于如何设计一个可靠的电路,如何控制成本功耗。不同水平的硬件工程师设计出来的电路差别很大的。
3)软件层面。编写一段嵌入式代码容易,但是如何用有限的资源完成高性能的任务,这个是难点。毕竟嵌入式系统可用的资源都是有限的,flash、RAM的大小受限,主频受限,等等。习惯了PC编程的,肯定无法理解嵌入式软件设计中的斤斤计较。
一个程序员不会linux内核系统,算得上一个优秀程序员吗?
也可以这样问,一个不会数学的体育老师是优秀的老师吗?一个不会开飞机的坦克手是一个好士兵吗?程序员的范围太广了,不一定都要和linux打交道,也不一定非要编写linux下的程序。世界很大,能解决好一部分问题就很好了。比如我就知道某大学一老师计算流体力学搞得牛,程序也写得好,求解器轻松卖出几千万,而且只会fortran语言,这在你看来是否一样很low?
现在的项目都讲究敏捷开发,DevOps的概念已经深入人心,与其讨论程序员会不会Linux内核,会不会手写SQL,会不会汇编语言,不如问他:知不知道各种控件,会不会用项目管理工具,毕竟谁都不可能当一辈子程序员。PS,请先从SpreadJS了解起
作为一名学生,是否应该去花较多的精力看linux内核的源码?
我觉得有时间的话是可以看看的
首先,题主是一名大三的学生,即将会面临找工作的问题,而且根据问题中提到的内容,我猜测可能选择的方向是WEB后端开发,那么在面试过程中对于深层次的问题是一定会被提及的,因为基础的大家都会,所以这时候都学习和了解是尤为重要的,至于是否要自己造轮子,这个对于你现在的情况,估计短时间内不会接触到。WEB开发对效率往往要求很高,需要在短时间内就要上线产品抢占市场,所以很少会有自己造轮子的时候,当然也不是永远都用不到
其次,相信很多已经参加工作的人都多多少少会有这种感觉:参加工作之后,学习的热情会不断的降低,工作时间越长,接触新知识越难,题主还是大三,而且还这么有探索精神,所以还是学学的好。
未来想从事Linux后台开发,需要学习linux内核吗?
先说结论,Linux后台开发了解Linux内核原理对于工作是有帮助的,比如了解文件系统的以及硬盘存储机制,那就更容易理解为什硬盘的写入速度相对内存慢,明白为什么会出现明明已经调用API写入数据还是出现了宕机数据丢失的问题。
结论说完了,我们在讨论下怎么去学习Linux后台开发技术。
(1)Linux系统命令:Linux系统的命令非常多,是不是所有都要学呢?大家可以先掌握常用的命令,比如ls、pwd、cd、grep、find等常用的命令是必须掌握的;
(2)Linux系统编程:多线程、多进程、锁、消息队列、管道等等知识;
(3)Linux网络编程:udp编程、tcp编程,select、poll、epoll等的使用;
(1)Linux后台开发必备命令:比如怎么用lsof查看端口号,top怎么分析进程和内存、tail怎么读取日志,mpstat怎么分析CPU占有率等等;
(2)Linux系统编程:多线程和多进程的区别在哪里,他们有什么适用场景;redis为什么用单线程模式,为什么又从redis 6.0开始支持多线程;nginx为什么又选用了多进程模式等等;
(3)Linux网络编程:udp和tcp的适用场景是怎么样的;select、poll、epoll三者有什么区别,阻塞和非阻塞IO哪种更适合高并发场景;
(1)客户端和服务器端协议定制、服务器与服务器端的协议定制;
到此,以上就是小编对于学习linux内核难么的问题就介绍到这了,希望介绍关于学习linux内核难么的4点解答对大家有用。