爬过这 6 个坡,你就能对 Linux 操作系统了如指掌

http://www.51testing.com/html/16/n-4461316.html

学习的任务 任重道远 我现在处于第一阶段.

发表于:2019-7-05 10:21  作者:wuli程序员   来源:网络

字体:   | 上一篇 | 下一篇 |我要投稿 | 推荐标签: Linux 操作系统

  在平时的生活中,我们几乎时时刻刻都在使用操作系统,只是大部分时间你都意识不到它的存在。 操作系统到底在背后默默地做了哪些事情,才能让我们轻松地使用电子设备呢? 不知道你有没有产生过这些疑问:
  桌面上的图标到底是啥?凭啥我在鼠标上一双击,就会出来一个美丽的画面?这都是从哪里跑出来的?
  电脑怎么知道我鼠标点击的是这个地方,又是怎么知道我要输入的是这个地方?
  为什么我一回车,这些字符就发到遥远的另外一台机器上去了?
 
  对于普通用户来讲,其实只要会用就行了,但是咱们作为专业人士,要深入探究一下背后的答案。 操作系统其实就像一个软件外包公司,其内核就相当于这家外包公司的老板。为什么这么说呢?
  假设,我们现在就是在做一家外包公司,我们的目标是把这家公司做上市。其中,操作系统就是这家外包公司的老板。 我们把这家公司的发展阶段分为这样几个时期:
  初创期 :这个老板基于开放的营商环境(x86 体系结构),创办一家外包公司(系统的启动)。因为一开始没有其他员工,老板需要亲自接项目(实模式)。
  发展期 :公司慢慢做大,项目越接越多(保护模式、多进程),为了管理各个外包项目,建立了项目管理体系(进程管理)、会议室管理体系(内存管理)、文档资料管理系统(文件系统)、售前售后体系(输入输出设备管理)。
  壮大期 :公司越来越牛,开始促进内部项目的合作(进程间通信)和外部公司合作(网络通信)。
  集团化 :公司的业务越来越多,会成立多家子公司(虚拟化),或者鼓励内部创业(容器化),这个时候公司就变成了集团。大管家的调度能力不再局限于一家公司,而是集团公司(Linux 集群),从而成功上市(从单机操作系统到数据中心操作系统)。
  把外包公司做上市的过程,就是我们对 Linux 操作系统从入门到精通的过程。 要做到对 Linux 了如指掌,我认为你需要爬 6 个陡坡。
  第一个坡:抛弃旧的思维习惯,熟练使用 Linux 命令行
  上手 Linux 的第一步,要先从 Windows 的思维习惯,切换成 Linux 的“ 命令行 + 文件”使用模式。不过,在这个专栏里,命令行并不是我们的重点,但是考虑到一些刚起步的同学,在第一部分我会简单介绍一些能够让你快速上手 Linux 的命令行。专栏每一模块的第一节,我都会有针对性地讲解这一模块的常用命令,足够你把 Linux 用起来。
  第二个坡:通过系统调用或者 glibc,学会自己进行程序设计
  用代码操作 Linux,可以直接使用 Linux 系统调用,也可以使用 glibc 的库。 如果说使用命令行的人是吃馒头的,那写代码操作命令行的人就是做馒头的。 你会发现,你平时用的一个简单的命令行,却需要 N 个系统调用组合才能完成。其中每个系统调用都要进行深入地学习、读文档、做实验。经过一段时间的学习,你已经很接近操作系统的原理了,你能看到另一番风景。
  第三个坡:了解 Linux 内核机制,反复研习重点突破
  进一步了解内核的原理,有助于你更好地使用命令行和进行程序设计,能让你的运维和开发水平上升一个层次。Linux 内核机制是我们这个专栏重点要讲述的部分,我会基于最新 4.x 的内核进行讲解,当然我也意识到了内核机制的复杂性,所以我选择通过 故事性和图形化 的方式,帮助你了解并记住这些机制。
  第四个坡:阅读 Linux 内核代码,聚焦核心逻辑和场景
  一旦爬上这个坡,对于操作系统的原理,你应该就掌握得比较清楚了。这个时候,你就可以有针对性地去做课题,把所学和你现在做的东西结合起来重点突破。例如你是研究虚拟化的,就重点看 KVM 的部分;如果你是研究网络的,就重点看内核协议栈的部分。
  第五个坡:实验定制化 Linux 组件,已经没人能阻挡你成为内核开发工程师了
  纸上得来终觉浅,绝知此事要躬行。从只看内核代码,到上手修改内核代码,这又是一个很大的坎。例如,你可以自己实现一个设备驱动程序,实现一个自己的系统调用,或者实现一个自己的文件系统等等。专栏最后一个部分,我专门设计了两个实验,帮你度过这个坎。只要跟着我的步伐进行学习,接下来,就没人能够阻挡你成为一名内核开发工程师了。
  第六个坡:面向真实场景的开发,实践没有终点
  说了这么多,我们都只是走出了万里长征第一步。我始终坚信,真正的高手都是在实战中摸爬滚打练出来的。
  如果你是运维,仅仅熟悉上面基本的操作是不够的,生产环境会有大量的不可控因素,尤其是集群规模大的更是如此,大量的运维经验是实战来的,不能光靠读书。
  如果你是开发,对内核进行少量修改容易,但是一旦面临真实的场景,需要考虑各种因素,并发与并行,锁与保护,扩展性和兼容性,都需要真实项目才能练出来。

[转帖]爬过这 6 个坡,你就能对 Linux 操作系统了如指掌的更多相关文章

  1. [转帖]Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压

    Linux操作系统中,*.zip.*.tar.*.tar.gz.*.tar.bz2.*.tar.xz.*.jar.*.7z等格式的压缩与解压 https://blog.csdn.net/gatieme ...

  2. [转帖]Linux操作系统定时任务系统 Cron 入门0

    Linux操作系统定时任务系统 Cron 入门 https://www.cnblogs.com/zhuiluoyu/p/5646400.html   cron是一个linux下的定时执行工具,可以在无 ...

  3. 科普帖:Linux操作系统

    使用计算机必然会接触操作系统,现代操作系统已经发展的十分成熟,一般用户都可以很轻松的使用计算机.然而,对于要利用计算机进行专业开发和应用的用户来说,需要更加深入地理解操作系统的原理和运行机制,这样才能 ...

  4. [转帖]五分钟彻底搞懂你一直没明白的Linux内存管理

    五分钟彻底搞懂你一直没明白的Linux内存管理 https://cloud.tencent.com/developer/article/1462476 现在的服务器大部分都是运行在Linux上面的,所 ...

  5. Mac电脑C语言开发的入门帖

    本文是写给Mac电脑开发新手的入门帖,诸神请退散. C语言 C语言可说是电脑环境中的"镇国神器",从发明至今,虽然C语言的使用者缓慢的减少,但从当前市场应用情况看,尚无一台电脑能够 ...

  6. 第八篇 编写spider爬取jobbole的所有文章

    通过scrapy的Request和parse,我们能很容易的爬取所有列表页的文章信息. PS:parse.urljoin(response.url,post_url)的方法有个好处,如果post_ur ...

  7. 壮美大山包-2017中国大山包国际超百公里ITRA积分赛赛记

    2017年4月份用时28个多小时跑完江南100,付出的代价是双脚多达8个以上的水泡.所以接下来的4月29日的环汶川越野赛果断的从60公里换到了30公里组,慢悠悠的完成了. 虽然在赛道上一度想再也不参加 ...

  8. [Mac A]为什么国外程序员爱用 Mac?

    from http://www.vpsee.com/2009/06/why-programmers-love-mac/ Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜 ...

  9. Linus与陈庆

    Linus 1969年末,李纳斯出生于芬兰的赫尔辛基市,算是赶上了60后的尾巴.小时候他是个其貌不扬的孩子,除了一个鼻子长的「富丽堂皇」之外乏善可陈.他为了让鼻子看上去小一些,经常戴上眼镜就不愿意摘下 ...

随机推荐

  1. codevs 1200 同余方程 2012年NOIP全国联赛提高组 x

    /*我在提交的时候发现了一个特别好玩的事,有兴趣的话,可以自己尝试一下:把下面说的地方的y=0改为y=1在codevs里面能够ac,这……数据水?到一定境界……厉害了,吓得我还以为自己对了,结果一讲才 ...

  2. 灰度图像--图像分割 霍夫变换(Hough Transform)--直线

    学习DIP第50天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan ,出于尊重文章作者的劳动,转载请标明出处!文章代码已托管,欢迎共同开发:https://gi ...

  3. js对象及初识面向对象(4)

    一.什么是对象? 对象是包含了属性和方法的集合体 二.什么是面向对象? 面向对象是一种编程思想,在JS当中利用原型来阐述这种思想的编程方法 三.构建对象: 1.内置对象: String   Math  ...

  4. Mysql主从同步 异常Slave_SQL_Running: No

    在刚搭建好的mysql主从节点上对从节点进行操作,导致同步异常:报错如下: 从节点执行: mysql> show slave status\G;************************* ...

  5. 使用conda进行本地安装

    1. 由于安装源被墙转换为本地安装 例如要安装 boost-1.59版本,因为在默认源中没有,我们指定了特定源进行安装 conda install -c menpo dlib=boost-1.59 然 ...

  6. zookeeper系列(二)zookeeper的使用--javaAPI

    作者:leesf    掌控之中,才会成功:掌控之外,注定失败: 出处:http://www.cnblogs.com/leesf456/ (尊重原创,感谢作者整理的这么好,作者的部分内容添加了我的理解 ...

  7. 库&插件&框架&工具

    nodejs 入门 nodejs 入门教程,大家可以在 github 上提交错误 2016 年最好用的表单验证库 SMValidator.js 前端表单验证工具分享 浅谈前端线上部署与运维 说到前端部 ...

  8. DL反向传播理解

    作者:寒小阳 时间:2015年12月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50321873 声明:版权所有,转载请联系作者并注明 ...

  9. 【Java面试宝典】正则表达式

    文章目录 正则表达式-语法 Pattern.compile方法 ● 请你谈谈Java中是如何支持正则表达式操作的? 考察点:正则表达式 参考回答: Java中的String类提供了支持正则表达式操作的 ...

  10. ServiceStatusUtils判断服务是否运行

    import android.app.ActivityManager; import android.app.Service; import android.content.Context; impo ...