Linux系统发展历程

基本概念

Linux系统是UNIX的一种版本,它开始于1991年,当时是一名学生编写的,当时的Linux内核很小但是完整可以运行在80386处理器上

Linux的历史是来自世界各地的许多使用者合作开发给搭建起来的,刚开始内核只能部分执行UNIX系统服务程序的一个小子集,但是现在Linux系统以及包含了大多数UNIX的功能

早期Linux发展围绕的中心就是操作系统内核,它是一种拥有特权执行的程序,其主要功能就是去管理所有的系统资源,然后直接和计算机的硬件进行交互,但是如果我们去构建一个系统的话不仅仅需要这个内核,所有Linux内核和系统是不一样的概念

Linux内核是由Linux这个团队从零开始开发的一个完全原创的软件,而Linux系统包含了很多部分,一些是从零开始编写出来的,还有些是从其他的开发方案当中借鉴的,还有就是在和其他团队的合作当中实现的

0.1版本

第一个版本的Linux内核0.01版是在1991年5月4日发布,它当时不具备有网络功能,只是能在80386兼容的系列的Intel处理器和PC硬件上执行,并且对设备驱动的支持非常有限,虚拟内存系统也很简单,不支持内存映射文件,但是支持写时赋值共享页面,唯一支持的文件系统是Minix,Minix是一种基于微内核架构的类UNIX计算机操作系统,第一个Linux内核就是在Minix平台下交叉开发而来的

1.0版本

之后出现的1.0版本的内核,最大的特点就是网络的支持,它支持UNIX的标准的TCP/IP协议,同时也支持用于网络编程的BSD兼容Socket接口,设备驱动器支持的增加可以使得操作系统能够进行网络通信,因为能够支持了调试解调器和Ethernet串行线

1.0版本包括了一个新的、更为强大的文件系统,不再受原先的Minix文件系统的限制,并且支持一系列高性能磁盘访问的SCSI控制器,以及扩展了虚拟内存子系统,从而支持用于交换文件的分页技术和任意文件的内存映射(1.0版本只实现了只读内存的映射),它也实现了对很多外部硬件设备的支持,以及实现了具有UNIX风格的进程间通信(IPC),包括共享内存、信号量机制和消息队列,同时它还提供进行动态可加载和可卸载内核模块的简单支持

Linux内核标准编号方式的规范就是小版本号是奇数的内核是开发内核,如果是偶数版本号的内核比较稳定,即产品内核。对稳定内核的更新仅仅是修正,而开发内核的话则很有可能是包含新的和相对而言还未测试的功能

1.2版本

在1.2的内核版本当中,增加了一些新特性比如说支持80386CPU的虚拟8086模式,虚拟8086模式是在保护模式下的,方便执行8086程序,内存寻址方式:段式寻址,与实模式一样,Linux1.2发布版把注意力集中在更广泛的硬件支持和更彻底地实现现有功能上

2.0版本

内存管理代码得到了实质性的改进,从而为文件系统数据提供了一个统一的高速缓冲存储器,独立于块设备的缓存,块设备是i/o设备中的一类,是将信息存储在固定大小的块中,每个块都有自己的地址,还可以在设备的任意位置读取一定长度的数据,例如硬盘,U盘,SD卡等

这一个改变就增强了文件系统和虚拟内存的性能,2.0版本当中也打打改进了TCP/IP的性能,并且加了很多新的网络协议

2.2、2.4、2.6版本

在2.2版本当中其实就是做了一些关于网络性能的优化以及进程调度的优化,而2.4和2.6版本的内核当中增加了对SMP系统和日志文件系统的支持,并加强了内存管理系统,2.6版本修改了进程调度器,提供了一个有效的O(1)调度算法,2.6版本的内核允许进程在内核模式下被抢占

Linux系统由三种主要代码部分组成,符合大多数传统的UNIX实现:

  • 内核:内核负责维护操作系统的重要抽象,包括虚拟内存和进程等
  • 系统库:系统库定义了一套标准的函数,由此应用程序能够和内核进行交互。这些函数实现了很多功能,这些功能无需使用内核代码的完全特权
  • 系统应用:系统应用是指那些执行独立的、特定管理任务的程序。有些系统应用只是调用一次来初始化和配置系统的某个方面;其他的比如说守护进程将永久地运行,处理比如想要网络连接请求,接受来自终端的登入请求,或者是刷新日志文件之类的任务

下图说明了组成一个完整的Linux系统的各种组件
Linux系统发展历程_第1张图片

所有的内核代码都在处理器的特许模式下运行,并能访问计算机的所有物理资源。Linux称这个模式为内核模式。在Linux环境下,任何用户模式的代码都没有被编译到内核中。任何无须以内核模式运行的操作系统支持代码都放在系统库当中

Linux环境下模块支持体现在以下三个方面

  • 模块管理(module management):允许模块被加载到内存,并能与内核的其他模块进行通信
  • 驱动程序注册(driver registration):允许模块告诉内核的其他模块一个新的驱动程序以及可以使用
  • 冲突解决机制(conflict-resolution mechanism):允许不同的设备驱动保留硬件资源,并且保护这些资源防止被其他驱动程序无意地使用

你可能感兴趣的:(Linux基础)