《趣谈 Linux 操作系统》学习笔记(一):为什么要学 Linux 及学习路径
前言:学习的课程来自极客时间的专栏《趣谈 Linux 操作系统》,作者用形象化的比喻和丰富的图片让课程变得比较易懂,为了避免知识看过就忘,打算通过写学习笔记的形式记录自己的学习过程。
Linux 系统的相关介绍不再赘述,目前比较热门的技术,比如云计算、虚拟化、容器、大数据、人工智能,几乎都是基于 Linux 的,像团购、电商、打车、快递这些系统都是部署在服务端,也几乎都是基于 Linux 技术的。想进大公司,想学新技术,Linux 一定是一道绕不过去的坎,只有扎实掌握 Linux 操作系统相关知识,才能成为合格的软件工程师。
相比于 Windows 的“图形化界面+菜单”使用模式,Linux 上手较难,其学习过程更像一个爬坡模式,要爬的坡主要有六个,分别是:熟练使用 Linux 命令行、使用 Linux 进行程序设计、了解 Linux内核机制、阅读 Linux 内核代码、实验定制 Linux 组件、面向真实环境的开发。
Step1:熟悉 Linux 命令行
基础:会用 --help、man 查看帮助文档
进阶:sed、awk、正则、管道、grep、find、shell 脚本、vim
推荐书籍:《鸟哥的 Linux 私房菜》、《 Linux 系统管理技术手册》
参考博客:别出心裁的Linux命令学习法
Step2:通过系统调用和 glibc 编程
了解和掌握系统调用(glibc 库),并能够编程操作 Linux
推荐书籍:《 Unix 环境高级编程 》
参考博客:别出心裁的Linux系统调用学习法
Step3:了解 Linux 内核机制
可以先了解一下 Linux 内核机制,知道基本的原理和流程。Linux 内核机制非常复杂,而且其中相互关联。比如说,进程运行要分配内存,内存映射涉及文件的关联,文件的读写需要经过块设备,从文件中加载代码才能运行起来进程。这些知识点要反复对照,才能理清。
推荐书籍:《深入理解 Linux 内核》、《庖丁解牛 Linux 内核分析》
Step4:阅读 Linux 内核源码
根据学习内核机制中遇到的问题或工作中要重点研究某方面技术,选择性的去研究源码,专注于核心逻辑和使用场景。(如你是研究网络的,就重点看内核协议栈的部分)
推荐书籍:《 Linux 内核源码情景分析》

Step5:实验化定制组件
因为 Linux 有源代码,很多地方可以参考现有的实现,定制化自己的模块。例如,可以自己实现一个设备驱动程序,实现一个自己的系统调用,或者实现一个自己的文件系统等等。这个阶段要求较高,需要把每个细节都搞清楚。
结合专栏的两个实验加强学习和理解。
Step6:面对真实场景的开发
结合具体的业务需求,基于 Linux 环境的开发要考虑很多因素,如并发与并行、锁与保护、扩展性与兼容性等,这些都要通过真实的项目多多实践。
Linux 操作系统学习爬坡路线图
(ps:对于大多数开发者而言,如果不是做 Linux 内核开发相关,尽量认真完成前三个阶段)
课程学习方法 tips:
1. 阅读:至少读两遍,阅读过程中思考是什么、为什么、如何用,联想之前的相关知识、做过的项目,尝试解答别人的问题,不懂的知识翻阅书籍或上网查。
2. 实践:提到的命令和代码要去动手敲,其他如分析系统调用和源码模块也要试着动手去做。
3. 总结:能串联各个部分的知识、能画出知识的框架。
《趣谈 Linux 操作系统》学习笔记(一):为什么要学 Linux 及学习路径的更多相关文章
- Linux 学习笔记之超详细基础linux命令 Part 14
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 13---------------- ...
- Linux 学习笔记之超详细基础linux命令 Part 10
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 9----------------- ...
- Linux 学习笔记之超详细基础linux命令 Part 1
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 说明:主要是在REHL Server 6操作系统下进行的测试 --字符界面虚拟终端与图形界面之间的切 方法:[ ...
- Linux 学习笔记之超详细基础linux命令(the end)
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 14---------------- ...
- Linux 学习笔记之超详细基础linux命令 Part 13
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 12---------------- ...
- Linux 学习笔记之超详细基础linux命令 Part 12
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 11---------------- ...
- Linux 学习笔记之超详细基础linux命令 Part 11
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 10---------------- ...
- Linux 学习笔记之超详细基础linux命令 Part 9
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 8----------------- ...
- Linux 学习笔记之超详细基础linux命令 Part 8
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 7----------------- ...
- Linux 学习笔记之超详细基础linux命令 Part 7
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 6----------------- ...
随机推荐
- 深入理解JDK中的Reference原理和源码实现
前提 这篇文章主要基于JDK11的源码和最近翻看的<深入理解Java虚拟机-2nd>一书的部分内容,对JDK11中的Reference(引用)做一些总结.值得注意的是,通过笔者对比一下JD ...
- 九 Shell中的数组
数组:用一个变量存储一组数据,并能够对这组数据中的某一个数据单独操作. 数组的类型:一维数组.二维数组.多维数组 变量的类型 Shell中默认无类型 变量的值默认均视为文本 用在数字运算中时,自动将其 ...
- ovirt kvm嵌套虚拟化
嵌 套式虚拟nested是一个可通过内核参数来启用的功能.它能够使一台虚拟机具有物理机CPU特性,支持vmx或者svm(AMD)硬件虚拟化.关于 nested的具体介绍,可以看这里 .该特性需要内核升 ...
- 实现当前目录下开启CMD
我们都知道在WIN7下,可以按shift+鼠标右键->在此处打开命令窗口 或者在 输入cmd,回车 那么,怎样去实现这样的功能呢? //当前目录下开启CMD #include <stdio ...
- Codeforces 1296F Berland Beauty
题目链接:http://codeforces.com/problemset/problem/1296/F 思路: 1————2————3————4————5————6 1->3 2 2-> ...
- Git的指令
一,访问本地Git 上一节我们已学会了如何注册GitHub和安装Git 现在先打开电脑终端或Git Bash,首先和Git打个招呼,输入Git 二.新建文件/进入文件夹 mkdir + 文件名 ...
- Mysql索引优化简单介绍
一.关于MySQL联合索引 总结记录一下关于在MySQL中使用联合索引的注意事项. 如:索引包含表中每一行的last_name.first_name和dob列,即key(last_name, firs ...
- Nginx + Linux 性能调优
Nginx以高性能负载均衡.缓存和web服务器出名,支撑着世界上繁忙网站中的40%.大多数使用场景下,Nginx和Linux系统的默认配置表现较好,但是仍有必要做一些调优以期达到最佳性能. 这篇文章讨 ...
- Linux设备中的UUID
UUID简介 UUID为系统中的存储设备提供唯一的标识字符串,不管这个设备是什么类型的.如果你在系统中启动的时候,使用盘符挂载时,可能找不到设备而加载失败,而使用UUID挂载时,则不会有这样的问题.( ...
- centos6.5和centos7.5统一字符集为zh_CN.UTF-8解决系统和MySQL数据库乱码问题
linux的服务器需要做的操作 centos6.5下: 修改默认字符集为 zh_CN.UTF-8,如果没有中文语言包可能需要安装中文语言包支持 [root@meinv01 ~]# yum groupi ...