今天无聊的时候看了一会linux的FAQ,里面着重提出,linux不是一个很好的计算机科学理论而是一个很好的工程,很多人在邮件列表中提出一个新的想法,真的是很有创意的想法,但是很无情的被那些大牛们给咔嚓了,然后Linus或者Alan Cox等人就会给人一种很不随和的形象,其实他们都很忙,都有自己的工作,对于他们来说,写代码并且给出测试数据比空洞地谈理论要好得多,他们是典型的实践派,如果你提出了一个新的观点,那么最好的方式就是用代码实现它,并且将补丁和测试数据提交到社区,很多的计算机科学家们的理论在linux开发者那里都被不屑一顾的否定,linux的开发者们最烦的就是纸上谈兵了,举个例子就是多线程,理论证明越多的线程效率越高,但是那是在各方面都到位的基础上的,现实情况是,没有那么理想的情况,于是linux就不提倡创建很多线程,按照经验值,一个cpu平均1.5个线程就足够了,其实linux的调度器决定了linux中最好的情况就是线程的数量和cpu的数量一样多,因为linux是按照每cpu一个运行队列调度的,这就是linux的方式。比如很多的理论都是强调某某算法多么的高效,可是linux很简单的用实践否定了它。
事情又让我想起了syslet,很早以前我就写过一篇syslet补丁的文章,今天我突然想起来它,不得不为其设计而惊叹,syslet用另外一个线程替换被阻塞的当前的线程而返回,返回用户空间的这个syslet被do_fork的时候被赋予了CLONE_THREAD参数,那么也就是说就是原来将要阻塞的进程的一个线程,这样代替阻塞进程返回用户空间后也不会改变pid,改变的就是线程的id,就是这样的,所以说,一点也不改变原始执行绪的语义,如果用户非要在意线程id的话,那么我相信用户会自己处理好这个事情的,linux其实可以用任何方式在任何方向进行突破。
分享到:
相关推荐
针对想要深入Linux内核工程领域的人士,建议能够结合实际操作和项目实践,深入学习Linux内核设计哲学和技术实现,同时关注开源社区动态,参与社区贡献,以便及时获取最新的技术信息和学习经验。此外,也可以参考国内...
这些系统往往需要高效、低功耗和实时性,而Linux作为一个开源、稳定且功能强大的操作系统,常被选为嵌入式环境中的首选操作系统。 在课程中,学员会接触到Linux内核的基础知识,包括内核的结构、模块化设计以及如何...
- **目的**:从零开始构建一个完整的嵌入式Linux环境。 - **学习内容**: - 内核裁剪与移植。 - 交叉编译技术。 - Bootloader编写。 - 根文件系统制作。 ##### 三、高级技能 **1. Linux驱动开发** - **目的**...
总的来说,《Linux软件工程师(C语言)实用教程》是一个全面的学习资源,它将引导你从C语言的基础知识过渡到高级的Linux系统编程,为你的职业生涯奠定坚实的基础。通过深入学习和实践,你将成为一个能够驾驭Linux...
Linux系统工程师的学习资料包含了丰富的知识领域,这是一条通往精通Linux操作系统的重要道路。在这个学习过程中,你需要掌握以下几个关键知识点: 1. **Linux基础知识**:首先,理解Linux的起源、哲学和它与Unix的...
首先,我们要明白Linux是一个开源操作系统,它的内核和大部分软件都是用C语言编写的。因此,对于想成为Linux软件工程师的人来说,熟练掌握C语言是必不可少的基础。C语言在Linux平台上的应用广泛,包括系统编程、设备...
总的来说,这个基于Linux的密文聊天系统课程设计是一个综合性强、涵盖知识点广泛的项目,它涵盖了网络工程、操作系统、信息安全等多个领域,对学生的理论知识和实践技能提出了全面的要求。通过这样的实践,学生能够...
理解Linux的基本结构、命令行操作和文件系统对于一个Linux软件工程师至关重要。例如,掌握`ls`、`cd`、`mkdir`、`rm`等基本命令,以及对`/bin`、`/usr`、`/etc`等目录的理解,都是进行C语言编程的基础。 二、C语言...
在这个压缩包中,你将找到一系列的实验代码,旨在帮助你深入理解嵌入式Linux系统的内部工作原理,以及如何有效地进行系统级编程。 首先,让我们详细探讨嵌入式Linux系统工程师所需的知识点: 1. **嵌入式系统基础...
网络工程师-linux操作系统理论.docx
Linux自学考网络工程师课件是针对想要在IT领域深化,特别是网络工程方向发展的学习者而设计的一套资源。Linux作为一款强大的开源操作系统,是许多网络工程师的基础技能之一,因此掌握Linux的相关知识对于备考网络...
Linux软件工程师(C语言)实用教程是一本专为学习Linux环境下C语言编程的读者准备的指导书籍。本书的核心特点是通过大量的实例来教授C语言在Linux系统中的应用,旨在提升读者的实战技能。以下是对该书内容及源码的...
本套“Linux试题 软件工程课件群”资源集合了Linux教程的学习资料,包含了多个文档,如lunix_2.doc、linux_3.doc、lunix_5.doc、linux_1.doc、lunix_4.doc,这些都是围绕Linux系统展开的测试题目和讲解,主要针对...
总之,Linux下的数据库学习是一个理论与实践相结合的过程,涵盖了数据库原理、操作系统的使用、特定数据库系统的深入理解和新技术的应用。通过系统的学习和实践,你可以成为一个精通Linux数据库的专业人士,为企业...
本资料以Linux网络技术的理论知识和实践操作技能相结合,全部内容都是围绕用Linux构建网络服务器的组建而展开的。 所有内容均以实训的形式进行讲述,知识点清晰,侧重实践,有利于Linux爱好者边学习边操作。 内容...
然而,随着软件行业对技能要求的提高,新课程的引入导致Linux课程的课时量被压缩,如何在有限的时间内保证教学质量成为一个挑战。 传统的教学模式面临着诸多问题。首先,教学内容繁多且琐碎,涵盖了操作系统原理、...
Linux工程师培训课程是针对那些想要...课程中的每个章节都会配合实例进行讲解,确保学员能够理论联系实际,快速提升技能。如果大家对课程反馈积极,讲师将继续发布更多深入的内容,帮助大家在Linux的世界里不断进步。
在深入探讨ARM与Linux 2.6理论之前,需要了解ARM是一种微处理器架构,广泛应用于嵌入式系统中。Linux 2.6版本,特别是其内核,对嵌入式系统提供了强大的支持。本手册将介绍嵌入式Linux开发的基础知识、构建开发环境...
在嵌入式Linux系统开发领域,工程师们常常需要掌握一系列的核心技术,以便设计、调试和优化运行在嵌入式硬件上的Linux系统。本资源“国嵌培训 嵌入式Linux系统工程师必修实验代码(上)完整版”提供了一套完整的上篇...