0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux的确实挺复杂的

嵌入式与Linux那些事 来源:嵌入式与Linux那些事 2023-09-12 17:04 次阅读

前言

Linux 的优秀之处自然不必多说。

如果将操作系统比作一辆汽车,那 Linux 就是一辆性能出色的多功能越野车,上山下海飞天无所不能。

如果你拥有了它,一定不会只满足于驾驶它上下班,不能只会挂挡、踩油门和控制方向之类的基本操作。我们想充分了解并掌握它,挖掘其更多潜能。但是,这个过程有相当的难度。

Linux 系统编程的难点

对于有一定 Linux 开发基础希望进阶学习 Linux 系统编程的开发人员来说,其难点在于,Linux 所囊括的技术点繁杂,往往不知从何下手。

对于稍有些系统编程经验的 Linux 开发者来说,难点往往在于,缺乏对底层技术的透彻理解,而不能自如地把握和控制好系统的复杂行为,同时,底层技术也经常成为中级开发者晋升到高级职位的瓶颈。

技术繁杂,很难把握头绪

Linux 内容纷繁复杂,会让学习者不知从何处下手。虽说 Linux 开放了所有设计图纸,可如果将这些图纸全部打印出来,可能要装满整个房间,即使号称 Linux 源码航海图的《深入理解 Linux 内核》图书也有 800 多页。如果毫无方向地从头看起,看不了几页可能就昏昏欲睡了。

在我最开始接触 Linux 系统开发,还没有多少真实项目经验时,就曾数次扑进 Linux 设计图纸里,但每次都坚持不了几个月,然后带着受伤的自信心惨败而归。

对于 Linux 开发者,这时如果能有一本 Linux 航海图的阅读指引,标注出航海图上宝藏的埋藏位置和宝藏简介,一定可以让学习过程更有方向性,也更加轻松愉悦。

不了解底层原理,难从根源解决问题

开发者在最初开发 Linux 系统上的应用和服务时,往往会将大量精力倾注在实现业务需求上,对底层技术的实现细节并没有特别深刻的理解。

但随着系统复杂性的提高,开发人员只有对底层实现细节有越来越透彻的理解,才能更好地把握和控制系统的复杂行为。否则一旦遇到如下这些问题,将很难从根源上解决。

程序在某个位置出现间歇性崩溃,可当我添加一行调试用的日志后,就再也没崩溃过了,这背后到底是怎么回事呢?

我写了一个多进程模型的服务器,但总感觉新进程启动地不干净,有时会有些父进程的东西掺和到子进程里来。可如果让父进程在启动子进程之前做更多的计算,或者单纯多等一会,这种情况发生的概率便大大减少了,该系统的行为让人有点捉摸不透,其背后的原因是什么呢?

我的信号处理程序与主程序使用同一个共享变量来交换信息,大多数时候都能正常工作,可总会时不时抽风一下,代码都已仔细检查过,找不出任何逻辑上的问题。这让人非常苦恼,到底是哪里出现问题了?

类似这种程序表现与预期不完全一致的情况会让开发者非常头疼,尤其是那种大部分时间表现正常,偶尔会“抽风”的情况。这些令人头疼的问题,我不止一次地经历过,数次被 Linux 伤害自信的感觉至今仍记忆犹新。

幸运的是,在经历了多次探索、踩坑之后,Linux 系统的行为特点以及如此设计的内在原因终于在我眼前逐渐明晰起来,这个系统内部精巧的设计也越来越清晰地展现在我眼前。

如今,再回想那段在 Linux 世界中几度迷失的经历,已经能够明确知道问题出在了哪里——还不知道它能做什么时,便试图弄清它是如何运作的。正如还不知道一辆车发动后如何前进,便开始研究发动机、变速箱里的那一堆齿轮、联动部件,结果自然是事倍功半。

相信很多 Linux 开发者都曾经或正在遭遇与我类似的痛苦经历。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制系统
    +关注

    关注

    41

    文章

    6497

    浏览量

    110363
  • Linux
    +关注

    关注

    87

    文章

    11196

    浏览量

    208662
  • 服务器
    +关注

    关注

    12

    文章

    8931

    浏览量

    85048

原文标题:Linux的确实挺复杂的

文章出处:【微信号:嵌入式与Linux那些事,微信公众号:嵌入式与Linux那些事】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    纸板度仪说明书

    附件是纸板度仪说明书
    发表于 04-21 10:48

    找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。书写的确实不错,可以建议多读

    此书是由全国多名红帽架构师(RHCA)基于RHEL7系统共同编写的高质量Linux技术自学书籍,各章节知识点从实践出发且具有较强连贯性,极其适合Linux初学者或用作Linux相关辅助教材,专注于
    发表于 05-29 22:42

    判断硬件是否具有嵌入式Linux支持的方法

    如何判断硬件是否具有嵌入式Linux支持在为您的定制电子设计挑选零件时,可以预先检查Linux驱动程序支持。为不受支持的硬件编写新驱动程序非常耗时,会带来风险,并增加了项目的复杂性。最好选择支持
    发表于 11-05 06:38

    嵌入式linux学习方法总结

    嵌入式linux学习方法总结 嵌入式linux的学习现在流行
    发表于 09-10 10:44 3522次阅读

    Linux基础知识

    Linux基础知识 硬盘 硬盘是可以存储大量信息资源的媒介。我们平时看到的硬盘是方方正正的一块沉的铁匣子,但是其实硬盘是圆的,加上一些控制电路以后,为了便于
    发表于 01-18 09:57 484次阅读

    延迟时间的确

    延迟时间的确
    发表于 07-31 12:33 1428次阅读

    原电池正负极的确

    原电池正负极的确定 原电池正负极的确定 将铜锌两种金属放在电解质溶液中,用导线连接,便构成原电池的两极,如图
    发表于 10-21 08:41 6881次阅读

    比亚迪电池有这样的超能力,确实牛X的

    比亚迪电池有这样的超能力,确实牛B的 提到比亚迪,大家肯定知道它是一个汽车生产厂商,随着比亚迪汽
    发表于 10-27 14:11 1482次阅读

    Linux时钟精度的提高方法

    本文对KURT_Linux、RT-Linux提高时钟精度的方法进行分析,采用一种动态的多模式时钟机制来提高Linux的时钟精度,并通过分析测试证明该方案确实可行。
    发表于 05-20 09:39 6847次阅读
    <b class='flag-5'>Linux</b>时钟精度的提高方法

    基于反向学习与Levy飞行的改进蜂群算法_赵

    基于反向学习与Levy飞行的改进蜂群算法_赵
    发表于 03-19 19:19 0次下载

    Linux操作复杂?这里有每个Linux开发者都应该知道的一些知识

    作为现代操作系统的代表之一,Linux操作系统非常复杂,内部有多得令人眼花缭乱的各种组件在同步运行和相互通信。
    的头像 发表于 03-28 09:04 5607次阅读
    <b class='flag-5'>Linux</b>操作<b class='flag-5'>复杂</b>?这里有每个<b class='flag-5'>Linux</b>开发者都应该知道的一些知识

    可以了解并学习Linux 内核的同步机制

    Linux内核同步机制,复杂的一个东西,常用的有自旋锁,信号量,互斥体,原子操作,顺序锁,RCU,内存屏障等。
    发表于 05-14 14:10 674次阅读

    如何判断硬件是否具有嵌入式Linux支持

    如何判断硬件是否具有嵌入式Linux支持在为您的定制电子设计挑选零件时,可以预先检查Linux驱动程序支持。为不受支持的硬件编写新驱动程序非常耗时,会带来风险,并增加了项目的复杂性。最好选择支持
    发表于 11-02 10:21 10次下载
    如何判断硬件是否具有嵌入式<b class='flag-5'>Linux</b>支持

    Unix和Linux的差异

    摘要:程序员都知道,Linux 不是 Unix,不过二者之间确实存在关系,即 Linux 系统是从 Unix 派生出来的,而 Linux 是一个类 Unix 的操作系统。那么,二者之间
    发表于 09-04 12:42 578次阅读

    电源空载电压的确定应遵循的原则是什么

    电源空载电压的确定是一个复杂的过程,涉及到许多因素和原则。 1. 引言 电源是电子系统中不可或缺的组成部分,它为系统提供所需的电能。电源的空载电压是指在没有负载的情况下,电源输出的电压值。空载电压
    的头像 发表于 08-08 14:28 627次阅读