Linux操作系统概述

认识操作系统

我们对操作系统的认识一般是从使用开始的。打开计算机,呈现在眼前的首先是操作系统。如果用户打开的是操作系统字符界面(就相当于windows系统下的命令提示符窗口),就可以通过命令完成需要的操作,就可以方便地对计算机系统中地各种软硬件资源进行有效地管理。我们平时常用的windows操作系统属于图形化界面,图形化界面进行操作需要转化为命令再交给操作系统。
Linux操作系统概述
站在使用者的角度,让我们从一个小例子中感受操作系统的存在。我们在Linux下拷贝一个文件,只需要使用命令cp /home/TEST/mydir/test就可以把home目录下的TEST文件拷贝到mydir目录下,并更名为test。为什么我们可以这么轻易地拷贝文件?操作系统从中做了什么?
首先,文件这个概念是从操作系统中衍生出来地。如果没有文件这个实体,就必须指明数据存放地物理位置,例如,哪个柱面,哪里山区(具体可以百度查找磁盘的结构看看磁盘长什么样)。其次,数据搬动过程是复杂的I/O操作,一般用户无法关注这些细节。最后,这个命令的执行还涉及其他复杂的操作,但是有了操作系统,用户只需要知道文件名,其他繁琐的事物完全由操作系统去处理。
一个操作系统必须包含以下几个部分:

  1. 操作系统接口
  2. 内存管理
  3. cpu管理
  4. 设备管理
  5. 文件管理

Linux操作系统

Linux是一个开源的操作系统,所有人都可以免费获得Linux的源代码

Linux内核

Linux内核指的是在Linus领导下的开发小组开发出的系统内核,它是所有Linux发布版本的核心,它被设计成了单内核结构(关于单内核可以参考单内核与微内核

Linux内核的位置

Linux内核不是孤立的,必须把它放在整个Linux系统中去研究,图1显示了Linux内核在整个系统中的位置。Linux操作系统概述
由图1可以看出,整个系统由以下4个部分组成。

  • 用户进程——用户应用程序时运行在Linux内核上的一个庞大的软件集合,当一个用户程序在操作系统上运行时,它成为操作系统中的一个进程。
  • 系统调用接口——在应用程序中,可通过系统调用来调用操作系统内核中特定的过程,以实现特定的服务。
  • LInux内核——内核时操作系统的灵魂,它负责管理内存、磁盘上的文件,负责启动并运行程序,负责从网络上接收和发送数据包等。
  • 硬件——这个子系统包括了Linux安装时需要的所有可能的物理设备。

Linux内核体系结构

Linux内核出系统调用外,由5个主要的子系统组成。如下图所示
Linux操作系统概述

  • 进程调度——控制着进程对cpu的访问
  • 内存管理——允许多个进程安全地共享内存区域
  • 虚拟文件系统——隐藏各种不同硬件地具体细节,为所有设备提供统一的接口
  • 网络接口——提供了对各种网络标准协议的存取和各种网络硬件的支持
  • 进程间通信——支持进程间各种通信机制,包括共享内存、消息队列及管道等

Linux内核源代码

Linux内核版本

Linux的内核具有两种不同的版本号,即实验版本和产品化版本。这种机制使用三个活着四个用“.”分隔的数字来代表不同内核版本。第一个数字时主版本号,第二个数字是从版本号。第三个数字是修订版本号,第四个数字是稳定版本号。从版本号可以反映出该内核时一个产品化版本还是一个处于开发中的实验版本:该数字如果是偶数,那么此内核就是产品化版,如果是奇数,那么它就是实验版。

内核源代码结构

Linux内核源代码位于/usr/src/linux目录下,其主要目录结构分布如图所示
Linux操作系统概述
下面对每一个目录给予简单描述:

  • include/子目录包含了建立内核代码时所需的大部分包含文件
  • init/子目录包含了内核的初始化代码,这是内核开始工作的起点
  • arch/子目录下包含了Linux支持的所有硬件结构的核心代码
  • drivers/子目录包含了Linux支持的所有设备驱动程序
  • fs/子目录包含了所有文件系统代码
  • net/子目录包含了内核中关于网络的代码
  • mm/子目录包含了所有的内存管理代码
  • ipc/目录包含了进程间通信的代码
  • kernel/子目录包含了主内核代码