——Linux是操作系统。 (是Unix Like,类似Unix操作系统)
我们平时所说的Linux其实只是指它的 “内核” (kernel),是使用大部分的C语言和少量的汇编等语言编写而成。
-
操作系统内核(kernel)
操作系统(Operating System,OS)也是一组程序,这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件。操作系统只是在管理整个硬件资源,包括CPU、内存、输入输出设备及系统文件。
内核功能
系统调用接口(System call interface)
这是为了方便程序员可以轻易地通过与内核通信,将硬件资源进一步利用,于是需要有这个简易的接口来方便程序开发者。程序管理(Process Control)
如多任务环境;内核必须控制这些工作,让CPU的资源做有效的分配。内存管理(Memory Management)
控制整个系统的内存管理;内核会提供虚拟内存的功能,当内存不足时提供内存交换(swap)的功能。文件系统管理(Filesystem management)
例如输入输出、不同文件格式的支持等;设备驱动(Device Driver)
目前有“可加载模块”功能,可以将驱动程序编辑成模块,不需要重新编译内核。
-
系统调用(System Call)
为了保护内核,并且让程序员比较容易开发软件,因此操作系统除了内核程序之外,通常还会提供一整组开发接口,那就是“系统调用层”。
应用程序的开发都是参考操作系统提供的开发接口,所以该应用程序只能在该操作系统上面运行而已,不可以在其他操作系统上面运行。
Linux的内核原型是1991年由 林纳斯·托瓦兹(Linus Torvalds)写出来的。
Linux也可以叫GNU/Linux,因为Linux内核程序是使用了GNU的bash和gcc等工具编写的,系统亦自带了很多GNU开发的软件(为Unix平台开发的)。
那GNU又是什么呢?——GNU(GNU's Not UNIX,GNU不是Unix之意),是一个自由软件项目,目的是创建一个自由、开放的UNIX操作系统(Free Unix;这里的Free是指 “自由” 之意,而不是免费);
GNU GPL——自由软件的版权,是为了避免自己开发出来的Open Source自由软件被拿去做成商业软件;“Open Source”的意思是:提供给人用的软件要连同源代码一起放出来。(另外,除了GPL授权之外,知名的 “Open Source” 授权还有 BSD 和 Apache)
GNU开发的几个重要软件有:Emacs(程序编辑器)、GNU C(GCC,编译器)、GNU C Library(GLIBC,可以被调用的C函数库)、Bash shell(用来操作操作系统的基本接口);
常见的Linux发行版有:Redhat、Debain、Ubuntu、SuSE、CentOS...
所谓的发行版指的是 “Kernel+ Software + Tools”,即包括有内核、软件、工具。
Tips:
-
Linux具有Unix两个重要的概念:
(1) 所有的程序或系统设备都是文件 (一切皆文件);
(2)不管构建编辑器还是附属文件,所写的程序只有一个目的,就是要有效的完成目标。 由于Linux与Unix都遵循POSIX(Portable Operating System for Unix)的标准开发的,所以Linux与当今的System V 以及BSD等主流Unix系统均可兼容。(即Linux和Unix系统上的软件具有相互的可移植性)
可以把编译器看成是翻译器,它将人类看得懂的程序语言(如C、Java、Python等)翻译成机器语言(即0和1)
操作系统重点仅在驱动和管理硬件,而要使用硬件时,就需要通过应用软件或者是shell的功能,来调用操作系统操纵的硬件工作。
操作系统的内核层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构下运行。(如XP不能直接在RISC架构 的计算机下运行。)
Others:
Linux内核官网:https://www.kernel.org
Redhat(红帽)中国官网:https://www.redhat.com/zh
CentOS官网:https://www.centos.org/
Ubuntu官网:https://www.ubuntu.com/