大家好,我是阿菜。今天到家又10点多了,指定的学习计划几乎宣告全泡汤了,成年人就是这么能给自己找理由。最近刚买的一本《Linux内核设计与实现》到了,听说它是linux内核较好的入门书籍,我还是挺激动的,先一篇flag,以后内核专题就从这里开始吧。
到今天从事开发行业差不多4年,基本都是基于Linux系统的,2年主要C语言(协议开发),2年C++(中间件)。前两年算入行,后两年结束才算入门。这几年业余时间陆续学了一些语言知识,操作系统,编译原理。网络编程和数据库接触最少,近期有所接触,总的来说,知识体系才刚刚现雏形,落后同龄人四五年时间。好在两家公司的领导对我都很好,给了我足够的锻炼和学习机会。近期梳理了自己的技术栈,意识到自己的缺漏太多,不太有希望都补全了,一种绝望的情绪在蔓延。
作为上层开发者(如何定义上层呢?),做过的最底层事情也就是解析DMA上送的报文,对于驱动、内核可以说一无所知。前两年的我沉迷在语言层面,一心觉得把C, C++甚至rust这种语言都掌握就是大神。于是看了众所周知的那些书(effective系列,C/C++ primer等入门书),也只有《STL源码剖析》看了又看,有些理解。 业务上遇到问题了,偶尔翻《计算机网络》,《TCP/IP》,又是用完就忘。除此之外就是那些应试用的各路大神都推荐的书,甚至《算法笔记》和《剑指offer》也跟着刷了两遍。这些都是在这四年较强的加班节奏的业余时间完成的,我还是挺佩服自己这个笨劲儿的。可惜无一例外,看了就忘,写过也忘,工作中很少能把看到的应用到实战,技术实力已经停滞了一年多了。到今天也没有好的思路能够快速进步。在悟道之前就继续吧。
我对于操作系统的概念一直很模糊。直到看了CSAPP《深入理解计算机操作系统》(并没有看完),操作系统给我的震撼是很大的,回头再想之前做的业务,才大概明白自己在操作系统上做了哪些动作。相比于C++对象模型,高阶语法,数据结构和算法这些知识点,只有看操作系统让我感到兴奋。后来我工作的团队也叫操作系统团队,就更让我激动。可惜我悟性太差,过了好久才明白内核才是操作系统的灵魂。从接触rtos开始对内核的各种实现有了初步概念,转而回头想了解Linux内核却发现其浩如烟海无从下手。
由于没有在驱动层做过工作,我想彻底理解内核应该是很困难的,好在这本书是一本入门导论,我也有了linux内核的基本概念,至少不会让我望而却步吧。
Go and Fight!