对于linux而言,许多人都可能有些陌生,一般大家都是习惯用了windows系统这个图形化界面,而linux虽然有图形化界面,但是很多的时候还是用的是命令行的界面。
对于linux初学者来说,还是先要了解计算机的构成,一般来说一个正常工作的计算机,由两部分构成,硬件和软件,硬件就是硬盘,内存条,主板,这样一类的硬件设施,软件则是操作系统,各个硬盘的驱动程序,如果想要更多的功能,就需要安装qq,微信,这样一类的第三方软件,
想要学linux就必须了解计算机最底层的东西,首先计算机最底层就是一些,内存条,硬盘,cpu,等等,当然这样东西你没有驱动是不能够运行的,只有安装了驱动才能运行,但是在早期的计算机时代,每个硬件的生产厂家,会给开发者提供一个向上的开发接口,这也就是驱动,这里需要注意的是,计算机只能识别二进制语言,只有0 1这两个数字,这也就是计算机语言,早期的软件编程者是直接面向计算机编程的,这种语言极其不方便,然后就有了内核的出现,内核(Kernel)这个东西就是一个操作系统最核心的东西,它提供了一个硬件抽象的方法来帮助开发者来更好得应用程序。
内核(Kernel)是属于操作系统的核心,一个完整的操作系统,它会将下层的硬件给抽象出来,例如一个程序运行,需要多少内存,这些都由内核来处理,然后由CPU来指挥分配资源。
操作系统会为开发提供一个向上的接口,因此开发者可以面向操作系统编程,也可以面向库编程。
因此计算机从最底层向上排列就是,硬件,内核(Kernel),库,应用程序,其中的库,对于开发者而言,只是更加的方便。
所以一个程序是如何开始运行的呢?
比如,你的微信,浏览器,不可能开机就运行吧,这也是我们所不允许的,一般来说,这些应用程序,只会在用户需要的时候才会运行,在用户看来,我运行一个程序,我只需要双击这个程序就可以运行了。但是真的是这样么?
一般来说,应用程序都是二进制格式的,为什么是二进制格式的呢?因为计算机只识别二进制格式的,所以一个程序运行,标志着这个程序占据了cpu,要知道程序就是由一条条指令构成,因此一个程序的运行,严格来讲就是在CPU上由上而下的运行一条条指令。
所以一个程序的运行,就是告诉内核,让CPU分配一些资源,能够让程序运行这些二进制指令。
你现在的努力没有回报,是用来抵消以前的罪孽,只有把罪孽抵消完了,你的回报才刚刚开始。