Linux操作系统概述

article/2025/9/24 15:53:48

Linux操作系统概述

  • Linux发展历史
    • Linux的发展要素
      • Linux与UNIX的异同
      • 操作系统类型选择和内核版本的选择
      • Linux的系统架构
  • Linux内核的主要模块
    • Linux的文件结构

Linux发展历史

Linux操作系统于1991年诞生,目前已经成为主流的操作系统之 一 。其版本从开始的0.01版本到目前的3.9.4版本经历了二十多年的发展,成为目前在服务器、嵌入式系统和个人计算机等多个方面得到广泛应用的操作系统。

Linux的发展要素

Linux操作系统是UNIX的 一 种典型的克隆系统。在 Linux 诞生之后,借助于 Internet网络,在全世界计算机爱好者的共同努力下,成为目前世界上使用者最多的一种类似UNIX的操作系统,在Linux操作系统的诞生、成长和发展过程中,以下5个方面起到了重要的作用:

  1. UNIX操作系统

  2. Minix操作系统

  3. GNU计划

  4. OSIX标准

  5. Internet网络

Linux与UNIX的异同

Linux是UNIX操作系统的一 个克隆系统,没有UNIX 就没有Linux。但是,Linux 和传统的UNIX有很大的不同,两者之间的最大区别是关于版权方面的: Linux是开放源代码的自由软件,而UNIX是对源代码实行知识产权保护的传统商业软件。两者之间还存在如下的区别:

  1. UNIX操作系统大多数是与硬件配套的,操作系统与硬件进行了绑定;而Linux则可运行在多种硬件平台上。

  2. UNIX操作系统是一 种商业软件 (授权费大约为5 万美元);而Linux 操作提供则是一 种自由软件,是免费的,并且公开源代码。

  3. UNIX的历史要比Linux 悠久,但是Linux 操作系统由于吸取了其他操作系统的经验,其设计思想虽然源于UNIX但是要优于UNIX。

  4. 虽然UNIX和Linux都是操作系统的名称,但UNIX除了是一 种操作系统的名称外,作为商标,它有SCO所有。

  5. Linux的商业化版本有Red Hat LinuxSuSe Linuxslakeware Linux、国内的红旗Linux等,还有Turbo Linux; UNIX主要有OracleSolaris, IBMAIX, HPHP-UX, 以及基于x86平台的SCO UNIX/UNIX ware

  6. Linux操作系统的内核是免费的;而UNIX的内核并不公开。

  7. 在对硬件的要求上,Linux操作系统要比UNIX要求低,并且没有UNIX对硬件要求的那么苛刻;在对系统的安装难易度上,Linux比UNIX容易得多;在使用上, Linux相对没有UNIX那么复杂。

总体来说,Linux操作系统无论在外观上还是在性能上都与UNIX相同或者比UNIX更好,但是Linux操作系统不同于UNIX的源代码。在功能上,Linux仿制了UNIX的一部分,与UNIX的System VBSD UNIX相兼容。在UNIX上可以运行的源代码, 一 般情况下在Linux上重新进行编译后就可以运行,甚至BSD UNIX的执行文件可以在Linux操作系统上直接运行。

操作系统类型选择和内核版本的选择

在Linux环境下进行程序设计,首先要选择一 款适合自己的Linux 操作系统。本节对常用的发行版本和Linux内核进行了介绍,并简要讲解了如何定制自己的Linux操作系统。

Linux的发行版本众多,本小节将对最常用的发行版本进行简单的介绍,表1.1为用户经常使用的版本。读者可以去相关网址查找,选择适合的版本使用。本书所使用的Linux为Ubuntu
在这里插入图片描述

内核是 Linux 操作系统的最重要的部分,从最初的0.95版本到目前的3.9.4 版本,Linux内核开发经过了 20 多年的时间,其架构已经十分稳定。Linux 内核的编号采用如下编号形式:

在这里插入图片描述
注:在2011 年,Linux Kernel 3.0 发布。随后,一系列以3 开头的内核版本被发布更新。

例如 2.6.34.14 各数字的含义如下:

  1. 第1个数字(2)是主版本号,表示第2大版本。

  2. 第 2 个数字 (6) 是次版本号,有两个含义:既表示是 Linux 内核大版本的第 6 个小版本,同时因为6是偶数表示为发布版本(奇数表示测试版);

  3. 第 3个数字(34) 是主版本补丁号,表示指定小版本的第 34 个补丁包;

  4. 第 4 个数字 ( 14 ) 是次版本补丁号,表示次补丁号的第 3 个小补丁。

在安装 Linux操作系统的时候,最好不要采用发行版本号中的小版本号是奇数的内核,因为开发中的版本没有经过比较完善的测试,有一些漏洞是未知的,有可能造成使用中不必要的麻烦。

注:Debian Linux 内核的版本稍有不同,如 2.6.18-3, 可以发现多了 一 组数字 (3) ,该数字是构建号,每个构建号可以增加少量新的驱动程序或缺陷修复。

Linux内核版本的开发源代码树目前比较通用的是2.6.xx的版本,当然,有部分2.4的版本仍在使用。与2.4版本的内核相比较,2.6版本内核具有如下优势:

  1. 支持绝大多数的嵌入式系统,加入了之前嵌入式系统经常使用的µ Clinux的大部分代码,并且子系统的支持更加细化,可以支持硬件体系结构的多样性,可抢占内核的调度方式支待实时系统,可定制内核。

  2. 支持目前最新的CPU, 例如Intel的超线程、可扩展的地址空间访问。

  3. 驱动程序框架变更,例如用**.ko替代了原来的.o**方式,消除内核竞争,更加透明的子模块方式。

  4. 增加了更多的内核级的硬件支持。

Linux的系统架构

Linux系统从应用角度来看,分为内核空间和用户空间两个部分。内核空间是Linux操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的。丰富并且功能强大的应用程序包是 一 个操作系统成功的必要条件。

Linux内核的主要模块

Linux的内核主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。下面将依次讲解这5个子系统。

①.进程调度SCHED

进程调度指的是系统对进程的多种状态之间转换的策略。Linux下的进程调度有3种策略: SCHED_OTHERSCHED_FIFOSCHED_RR:

  1. SCHED_OTHER是用于针对普通进程的时间片轮转调度策略。这种策略中,系统给所有的运行状态的进程分配时间片。在当前进程的时间片用完之后,系统从进程中优先级最高的进程中选择进程运行。

  2. SCHED_FIFO是针对运行的实时性要求比较高、运行时间短的进程调度策略。这种策略中,系统按照进入队列的先后进行进程的调度,在没有更高优先级进程到来或者当前进程没有因为等待资源而阻塞的情况下,会 一直运行。

  3. SCHED_RR是针对实时性要求比较高、运行时间比较长的进程调度策略。这种策略与SCHED_OTHER的策略类似,只不过SCHED_RR进程的优先级要高得多。系统分配给SCHED_RR进程时间片,然后轮循运行这些进程,将时间片用完的进程放入队列的末尾。

由于存在多种调度方式,Linux进程调度采用的是"有条件可剥夺" 的调度方式。普通进程中采用的是SCHED_OTHER的时间片轮循方式,实时进程可以剥夺普通进程。如果普通进程在用户空间运行,则普通进程立即停止运行,将资源让给实时进程;如果普通进程运行在内核空间,需要等系统调用返回空间后方可剥夺资源。

②.内存管理MMU

  1. 内存管理是多个进程间的内存共享策略。在Linux系统中,内存管理的主要概念是虚拟内存。

  2. 虚拟内存可以让进程拥有比实际物理内存更大的内存,可以是实际内存的很多倍。每个进程的虚拟内存有不同的地址空间,多个进程的虚拟内存不会冲突。

  3. 虚拟内存的分配策略是每个进程都可以公平地使用虚拟内存。虚拟内存的大小通常设置为物理内存的两倍。

③.虚拟文件系统VFS

  1. 在Linux下支持多种文件系统,如ext、ext2、minix、umsdos、msdos、vfat、ntfs、proc、 smb、ncp、iso9660、sysv、hpfs、affs等。

  2. 目前Linux下最常用的文件格式是ext2ext3。 ext2文件系统用于固定文件系统和可活动文件系统,是ext文件系统的扩展。ext3文件系统是在ext2上增加日志功能后的扩展,它兼容ext2。

  3. 两种文件系统之间可以互相转换,ext2不用格式化就可以转换为ext3文件系统,而ext3文件系统转换为ext2文件系统也不会丢失数据。

④.网络接口

Linux是在Internet飞速发展的时期成长起来的,所以Linux支持多种网络接口和协议。网络接口分为网络协议和驱动程序,网络协议是一 种网络传输的通信标准,而网络驱动则是对硬件设备的驱动程序。Linux支待的网络设备多种多样,几乎目前所有网络设备都有驱动程序。

⑤.进程间的通信

Linux操作系统支待多进程,进程之间需要进行数据的交流才能完成控制、协同工作等功能,Linux的进程间通信是从UNIX系统继承过来的。Linux下的进程间的通信方式主要有管道方式、信号方式、消息队列方式、共享内存和套接字等方法。

Linux的文件结构

  • 与Windows下的文件组织结构不同,Linux不使用磁盘分区符号来访问文件系统,而是将整个文件系统表示成树状的结构,Linux系统每增加 一 个文件系统都会将其加入到这个树中。

    • 操作系统文件结构的开始,只有一个单独的顶级目录结构,叫做根目录。所有一 切都从 “根” 开始,用 “/” 代表,并且延伸到子目录。DOS/Windows 下文件系统按照磁盘分区的概念分类,目录都存于分区上。Linux则通过 **“挂接”**的方式把所有分区都放置在“根” 下各个目录里。

    一 个Linux 系统的文件结构如下图所示。不同的Linux发行版本的目录结构和具体的实现功能存在 一 些细微的差别。但是主要的功能都是一 致的。一 些常用目录的作用如下所述。
    在这里插入图片描述

  1. /etc :包括绝大多数Linux系统引导所需要的配置文件,系统引导时读取配置文件,按照配置文件的选项进行不同情况的启动,例如fstab、host.conf等;

  2. /lib: 包含C编译程序需要的函数库,是一 组二进制文件,例如glibc等;

  3. /usr: 包括所有其他内容,如src、local。Linux的内核就在/usr/src中。其下有子目录/bin, 存放所有安装语言的命令,如gee、perl等;

  4. var: 包含系统定义表,以便在系统运行改变时可以只备份该目录,如eaehe;

  5. /tmp: 用于临时性的存储;

  6. /bin: 大多数命令存放在这里;

  7. /home: 主要存放用户账号,并且可以支持ftp的用户管理。系统管理员增加用户时,系统在home目录下创建与用户同名的目录,此目录下一般默认有Desktop目录。

  8. /dev: 这个目录下存放一种设备文件的特殊文件,如fd0、had等。

  9. /mnt: 在Linux系统中,它是专门给外挂的文件系统使用的,里面有两个文件edrom、floopy,登录光驱、软驱时要用到。

刚开始使用Linux的人比较容易混淆的是Linux下使用斜杠**“/”,而在DOS/Windows下使用的是反斜杠"“。例如在Linux中,由于从UNIX集成的关系,路径用”/usr/src/Linux"表示,而在Windows下则用"\usr\src\Linux"**表示。在Linux下更加普遍的问题是字母大小写敏感,例如文件Hello.c和文件bello.c在Linux下不是一个文件,而在Windows下则表示同一个文件。


http://chatgpt.dhexx.cn/article/59JEtPrb.shtml

相关文章

国产Linux操作系统

一、Kylin OS:由麒麟软件公司发行的Debian系Linux操作系统。 包含四个版本: 1、银河Kylin:为银河麒麟Linux操作系统收费版本。 2、Neo Kylin:是中标麒麟,为麒麟软件与中标软件合并后的发行版本。 3、Open Kylin&…

Linux【操作系统】

目录 一、冯诺依曼体系结构 ​ 二、操作系统​ 三、进程 ​ 1.PCB ​ 2.task_ struct内容分类 ​ 3.查看进程​​​​​​​​ 4.getpid​ 5.系统调用接口和创建子进程 6.fork基本用法 四、进程状态 进程状态查看 Z(zombie)-僵尸进程 僵尸进程危害 孤儿进程 …

理解操作系统(Linux)

操作系统是一款对软硬件资源进行管理的软件! 操作系统为什么要对软硬件资源进行管理呢? 操作系统通过合理的管理软硬件资源的手段,为用户提供良好的(稳定的、高效的、安全的)执行环境。 操作系统是如何进行管理的呢…

【Linux操作系统】——Linux命令

文章目录 Linux系统命令登录注销目录文件补充ls通配符rm命令cp命令more命令less命令vi命令文件压缩以及解压 Linux系统命令 Windows系统中查看当前电脑的IP地址 ipconfig 在Linux系统中查看当前电脑的IP地址 ifconfig 登录注销 sudo useradd ccy //添加用户 (不能被立即使用…

Linux操作系统基础(完结)

#摘要 一、Linux操作系统概述 二、Linux操作系统安装 三、Linux文件系统及文件基础 四、Linux操作系统命令使用基础 五、Linux应用程序的安装与卸载基础 五、用户及进程 六、相关信息查询 七、网络配置 八、Linux应用程序的安装与卸载基础 #一、Linux操作系统概述 ##1、发展 …

Linux:操作系统

Linux-操作系统 一、操作系统:1.程序:2.OS: 二、虚拟机的三种网卡:1.桥接:2.NAT:3.仅主机: 三、linux命令:1.shell:2.linux命令(本质是程序)&…

Linux——操作系统详解

目录 一.操作系统的含义 1.操作系统是什么? 2.那么操作系统为什么要对软硬件资源进行管理呢?这样做的好处在哪里? 3.操作系统又是怎么进行管理的? 如何理解“先描述,再组织”? 二.总结: …

linux操作系统的基本认识

1.linux是什么东西? linux是什么?它是操作系统吗?我刚开始学这个东西的时候也不太清楚,只是听别人说linux操作系统什么的。那linux到底是什么?我们来认识一下: Linux是最知名和最常用的开源操作系统。作为一…

Linux操作系统的发展

一、计算机的发展历程 1.计算机的起源 在开始讲解计算机的历史前,我们需要认识到人和动物最大的区别在于人是会使用工具的。从饮血茹毛到使用火烧熟食物,工具的使用给对于人类发展的作用是巨大的。同样,计算机也是工具,为我们的…

Linux操作系统介绍

##一. 什么是Linux? ## 1.什么是Linux: Linux是一款广泛应用在服务器上的操作系统。 2.什么是操作系统: 操作系统是硬件基础上的第一层软件, 应用软件都需要安装到操作系统上使用。 3.Linux的特点: 安全免费开源稳定…

Linux操作系统学习

目录 一、操作系统 1、什么是操作系统(OS)? 2、常见的操作系统 二、Linux系统的介绍 1、Linux操作系统的特点 2、Linux发展历程 3、Linux内核及发行版本 3.1 Linux内核版本(kernel) 3.2 Linux发行版本 三、L…

【Linux】操作系统及进程概念

大家好我是沐曦希💕 文章目录 一、冯诺依曼体系结构二、操作系统OS三、系统调用和库函数概念四、进程1.概念2.描述进程-PCB3.查看进程4.查看系统调用5.查看进程调用6. 通过系统调用创建进程-fork初识 一、冯诺依曼体系结构 我们常见的计算机,如笔记本。…

Linux操作系统——基础详解

目录 Linux操作系统 Linux 简介 Linux 接口 Linux 组成部分 Shell Linux 应用程序 Linux 内核结构 Linux 进程和线程 基本概念 Linux 进程间通信 Linux 中进程管理系统调用 Linux 进程和线程的实现 Linux 调度 Linux 启动 Linux 内存管理 基本概念 Linux 内存…

Linux(一)操作系统基础知识

Linux操作系统基础知识 1、Linux简介与程序开发环境 1.1 什么是Linux? Linux是一个可以自由发布的类UNIX内核实现,它是一个操作系统的底层核心。Linux是由芬兰赫尔辛基大学的Linus开发,期间得到了网上广大UNIX程序员的帮助。它最初是受其教…

【Linux操作系统】——Linux概述

Linux操作系统——Linux概述 1、操作系统OS 定义:操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。 作用:是把计算机系统中对硬件设备的操作封装起来,供应用软件调用,也是提供一个让用户与…

Linux操作系统(详解及配置操作)

Linux操作系统 重点:linux的安装 linux的常用指令 linux的网络配置 shell编程 难点:linux的磁盘分区 linux的shell编程 linux日志 1 linux基础篇 1.1 linux的基本概述 1.1.1 linux的由来 ​ linux是一个开源、免费的操作系统,其稳定性、安…

Linux操作系统简介

文章目录 Linux发行版简介学习Linux的必备硬件知识 关键硬件器件——CPU关键硬件器件——存储关键硬件器件——内存其他一些查看硬件信息的命令 Linux开机过程(以Ubuntu16.04为例) 阶段1:BIOS阶段2:boot Loader阶段3:k…

Power Query 系列 (13) - 自定义函数

本篇博客介绍 Power Query 自定义函数的技巧,在 PQ 中计算个税。 以工资类所得应交个税为例,最新的个税起征点为 5000 并按下表的级次进行缴税(假设没有其它扣除项)。 对照税率表,我们先看看手工如何计算。比如 xxx…

MySQL—自定义函数

函数 本文是在 navicat 中演示如何创建 自定义函数 ,建议先去看有关的书籍了解一下。我之前分享过一篇 《MySQL 8》的资料 可以参考一下。因为是 navicat 是客户端工具,所以他会给我们省去一些操作,比如 ; 的转义; 参…

【MySQL 第十天 自定义函数|创建和使用自定义函数|循环判断语句的使用】

【MySQL 第十天 自定义函数|创建和使用自定义函数|循环判断语句的使用】 【1】mysql自定义函数的介绍【2】mysql创建和使用自定义函数【3】mysql删除自定义函数【4】mysql流控的使用【4.1】mysql流程控制语句【4.2】mysql IF语句【4.3】mysql CASE语句【4.4】mysql WHILE循环语…