Unix和Linux关系
UNIX是最早的商业操作系统之一,由贝尔实验室(AT&T Bell Laboratories)于 1970 年代开发。UNIX 是一个多用户、多任务的操作系统,具有强大的命令行界面和可扩展性。
Linux 是一个开放源代码的类 UNIX 操作系统内核,最早由芬兰的林纳斯·托瓦兹(Linus Torvalds)在 1991 年开发。Linux 内核是由 C 语言编写的,被设计为可运行在各种硬件平台上,并提供了现代操作系统所需的核心功能。
Linux 内核受到 UNIX 设计和哲学的影响,并从 UNIX 中借鉴了许多思想和概念。因此,Linux 在许多方面与 UNIX 相似,包括具有类似的文件系统层次结构、进程管理、权限模型等。
然而,由于历史原因和许可证问题,Linux 并未直接继承自 UNIX 操作系统。Linux 内核是在自由软件许可证(GPL)下发布的,因此它可以自由地使用、修改和分发。而商业的 UNIX 操作系统有不同的许可证和专有实现。
尽管 Linux 内核与 UNIX 并非直接衍生关系,但它与 UNIX 在设计和功能上具有很高的相似性,并且遵循了 UNIX 的哲学和思想。因此,Linux 通常被认为是 UNIX 的克隆或替代品,并且它成为了一个广泛使用的类 UNIX 操作系统。
1.linux系统
Linux系统可以划分为以下四个部分:
1.Linux内核
2.GNU工具
3.图形化桌面环境
4.应用软件
1.1 Linux内核
内核包括如下功能
1.1.1系统内存管理
内核通过硬盘上的存储空间来实现虚拟内存,这块区域被称为交换空间。内核不断地在交换空间和实际物理内存之间反复交换虚拟内存中的内容,使得系统以为它拥有比物理内存更多的可用内存。
1.1.2.软件程序管理
Linux操作系统将运行中的程序叫做进程。内核控制着Linux如何管理运行在系统上的所有进程。(init进程启动系统上所有其他进程)
进程与线程的关系
详细的进程与线程,并行与并发,共享内存等等解释,见这篇文章
1.1.3.硬件内存管理
内核的另一职责是管理硬件设备。任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动代码。驱动代码允许内核与设备之间交换数据。
1.1.4.文件系统管理
不同于其他操作系统,Linux内核支持通过不同类型的文件系统从硬盘中读写数据。
1.2 GNU工具
Linux和GNU的关系
GNU(GNU’s Not Unix)是一个自由软件运动的项目,旨在创建一个完全自由、开放源代码的类Unix操作系统。
Linux 是一个开放源代码的操作系统内核,最早由芬兰的林纳斯·托瓦兹(Linus Torvalds)在1991年开发,并且后来成为了广泛使用的操作系统内核。
GNU 项目和 Linux 内核结合在一起,形成了现代的 GNU/Linux 操作系统。这个操作系统将 GNU 提供的大部分工具、库和用户空间程序与 Linux 内核结合在一起,提供了完整的操作系统功能。
尽管 Linux 内核是操作系统的核心组件,但它自身并不能构成一个完整的操作系统。因此,GNU 项目提供了大量的工具和应用程序,包括 GNU C 编译器(GCC)、GNU Bash shell、GNU Core Utilities 等,使 Linux 内核具备了完整的操作系统功能。
所以,GNU 和 Linux 是密切相关的,GNU 提供了大部分的用户空间程序,而 Linux 提供了操作系统的内核。二者的结合使得我们通常所说的 Linux 系统成为可能。因此,通常我们称这个操作系统为 GNU/Linux。
1.2.1 shell
GNU/Linux shell是一种特殊的交互式工具,它的核心是命令行提示符。命令行提示符是shell负责交互的部分,它允许你输入文本命令,然后解释命令,并在内核中执行。
在Linux系统上,通常有好几种Linux shell可用,不同shell有不同的特性。默认的是bash shell
1.3 桌面环境
目前用的比较多的应该是Unity桌面。
参考资料:《Linux命令行与shell脚本编程大全(第三版)》