Linux操作系统概述
Linux操作系统概述
- Linux发展历史
- Linux的发展要素
- Linux与UNIX的异同
- 操作系统类型选择和内核版本的选择
- Linux的系统架构
- Linux内核的主要模块
- Linux的文件结构
Linux发展历史
Linux操作系统于1991年诞生,目前已经成为主流的操作系统之 一 。其版本从开始的0.01版本到目前的3.9.4版本经历了二十多年的发展,成为目前在服务器、嵌入式系统和个人计算机等多个方面得到广泛应用的操作系统。
Linux的发展要素
Linux操作系统是UNIX的 一 种典型的克隆系统。在 Linux 诞生之后,借助于 Internet网络,在全世界计算机爱好者的共同努力下,成为目前世界上使用者最多的一种类似UNIX的操作系统,在Linux操作系统的诞生、成长和发展过程中,以下5个方面起到了重要的作用:
UNIX操作系统
Minix操作系统
GNU计划
OSIX标准
Internet网络
Linux与UNIX的异同
Linux是UNIX操作系统的一 个克隆系统,没有UNIX 就没有Linux。但是,Linux 和传统的UNIX有很大的不同,两者之间的最大区别是关于版权方面的: Linux是开放源代码的自由软件,而UNIX是对源代码实行知识产权保护的传统商业软件。两者之间还存在如下的区别:
UNIX操作系统大多数是与硬件配套的,操作系统与硬件进行了绑定;而Linux则可运行在多种硬件平台上。
UNIX操作系统是一 种商业软件 (授权费大约为5 万美元);而Linux 操作提供则是一 种自由软件,是免费的,并且公开源代码。
UNIX的历史要比Linux 悠久,但是Linux 操作系统由于吸取了其他操作系统的经验,其设计思想虽然源于UNIX但是要优于UNIX。
虽然UNIX和Linux都是操作系统的名称,但UNIX除了是一 种操作系统的名称外,作为商标,它有SCO所有。
Linux的商业化版本有Red Hat Linux、SuSe Linux、slakeware Linux、国内的红旗Linux等,还有Turbo Linux; UNIX主要有Oracle的Solaris, IBM的AIX, HP的HP-UX, 以及基于x86平台的SCO UNIX/UNIX ware。
Linux操作系统的内核是免费的;而UNIX的内核并不公开。
在对硬件的要求上,Linux操作系统要比UNIX要求低,并且没有UNIX对硬件要求的那么苛刻;在对系统的安装难易度上,Linux比UNIX容易得多;在使用上, Linux相对没有UNIX那么复杂。
总体来说,Linux操作系统无论在外观上还是在性能上都与UNIX相同或者比UNIX更好,但是Linux操作系统不同于UNIX的源代码。在功能上,Linux仿制了UNIX的一部分,与UNIX的System V和BSD 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个数字(2)是主版本号,表示第2大版本。
第 2 个数字 (6) 是次版本号,有两个含义:既表示是 Linux 内核大版本的第 6 个小版本,同时因为6是偶数表示为发布版本(奇数表示测试版);
第 3个数字(34) 是主版本补丁号,表示指定小版本的第 34 个补丁包;
第 4 个数字 ( 14 ) 是次版本补丁号,表示次补丁号的第 3 个小补丁。
在安装 Linux操作系统的时候,最好不要采用发行版本号中的小版本号是奇数的内核,因为开发中的版本没有经过比较完善的测试,有一些漏洞是未知的,有可能造成使用中不必要的麻烦。
注:Debian Linux 内核的版本稍有不同,如 2.6.18-3, 可以发现多了 一 组数字 (3) ,该数字是构建号,每个构建号可以增加少量新的驱动程序或缺陷修复。
Linux内核版本的开发源代码树目前比较通用的是2.6.xx的版本,当然,有部分2.4的版本仍在使用。与2.4版本的内核相比较,2.6版本内核具有如下优势:
支持绝大多数的嵌入式系统,加入了之前嵌入式系统经常使用的µ Clinux的大部分代码,并且子系统的支持更加细化,可以支持硬件体系结构的多样性,可抢占内核的调度方式支待实时系统,可定制内核。
支持目前最新的CPU, 例如Intel的超线程、可扩展的地址空间访问。
驱动程序框架变更,例如用**.ko替代了原来的.o**方式,消除内核竞争,更加透明的子模块方式。
增加了更多的内核级的硬件支持。
Linux的系统架构
Linux系统从应用角度来看,分为内核空间和用户空间两个部分。内核空间是Linux操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的。丰富并且功能强大的应用程序包是 一 个操作系统成功的必要条件。
Linux内核的主要模块
Linux的内核主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。下面将依次讲解这5个子系统。
①.进程调度SCHED
进程调度指的是系统对进程的多种状态之间转换的策略。Linux下的进程调度有3种策略: SCHED_OTHER、SCHED_FIFO和SCHED_RR:
SCHED_OTHER是用于针对普通进程的时间片轮转调度策略。这种策略中,系统给所有的运行状态的进程分配时间片。在当前进程的时间片用完之后,系统从进程中优先级最高的进程中选择进程运行。
SCHED_FIFO是针对运行的实时性要求比较高、运行时间短的进程调度策略。这种策略中,系统按照进入队列的先后进行进程的调度,在没有更高优先级进程到来或者当前进程没有因为等待资源而阻塞的情况下,会 一直运行。
SCHED_RR是针对实时性要求比较高、运行时间比较长的进程调度策略。这种策略与SCHED_OTHER的策略类似,只不过SCHED_RR进程的优先级要高得多。系统分配给SCHED_RR进程时间片,然后轮循运行这些进程,将时间片用完的进程放入队列的末尾。
由于存在多种调度方式,Linux进程调度采用的是"有条件可剥夺" 的调度方式。普通进程中采用的是SCHED_OTHER的时间片轮循方式,实时进程可以剥夺普通进程。如果普通进程在用户空间运行,则普通进程立即停止运行,将资源让给实时进程;如果普通进程运行在内核空间,需要等系统调用返回空间后方可剥夺资源。
②.内存管理MMU
内存管理是多个进程间的内存共享策略。在Linux系统中,内存管理的主要概念是虚拟内存。
虚拟内存可以让进程拥有比实际物理内存更大的内存,可以是实际内存的很多倍。每个进程的虚拟内存有不同的地址空间,多个进程的虚拟内存不会冲突。
虚拟内存的分配策略是每个进程都可以公平地使用虚拟内存。虚拟内存的大小通常设置为物理内存的两倍。
③.虚拟文件系统VFS
在Linux下支持多种文件系统,如ext、ext2、minix、umsdos、msdos、vfat、ntfs、proc、 smb、ncp、iso9660、sysv、hpfs、affs等。
目前Linux下最常用的文件格式是ext2和ext3。 ext2文件系统用于固定文件系统和可活动文件系统,是ext文件系统的扩展。ext3文件系统是在ext2上增加日志功能后的扩展,它兼容ext2。
两种文件系统之间可以互相转换,ext2不用格式化就可以转换为ext3文件系统,而ext3文件系统转换为ext2文件系统也不会丢失数据。
④.网络接口
Linux是在Internet飞速发展的时期成长起来的,所以Linux支持多种网络接口和协议。网络接口分为网络协议和驱动程序,网络协议是一 种网络传输的通信标准,而网络驱动则是对硬件设备的驱动程序。Linux支待的网络设备多种多样,几乎目前所有网络设备都有驱动程序。
⑤.进程间的通信
Linux操作系统支待多进程,进程之间需要进行数据的交流才能完成控制、协同工作等功能,Linux的进程间通信是从UNIX系统继承过来的。Linux下的进程间的通信方式主要有管道方式、信号方式、消息队列方式、共享内存和套接字等方法。
Linux的文件结构
与Windows下的文件组织结构不同,Linux不使用磁盘分区符号来访问文件系统,而是将整个文件系统表示成树状的结构,Linux系统每增加 一 个文件系统都会将其加入到这个树中。
- 操作系统文件结构的开始,只有一个单独的顶级目录结构,叫做根目录。所有一 切都从 “根” 开始,用 “/” 代表,并且延伸到子目录。DOS/Windows 下文件系统按照磁盘分区的概念分类,目录都存于分区上。Linux则通过 **“挂接”**的方式把所有分区都放置在“根” 下各个目录里。
一 个Linux 系统的文件结构如下图所示。不同的Linux发行版本的目录结构和具体的实现功能存在 一 些细微的差别。但是主要的功能都是一 致的。一 些常用目录的作用如下所述。
/etc :包括绝大多数Linux系统引导所需要的配置文件,系统引导时读取配置文件,按照配置文件的选项进行不同情况的启动,例如fstab、host.conf等;
/lib: 包含C编译程序需要的函数库,是一 组二进制文件,例如glibc等;
/usr: 包括所有其他内容,如src、local。Linux的内核就在/usr/src中。其下有子目录/bin, 存放所有安装语言的命令,如gee、perl等;
var: 包含系统定义表,以便在系统运行改变时可以只备份该目录,如eaehe;
/tmp: 用于临时性的存储;
/bin: 大多数命令存放在这里;
/home: 主要存放用户账号,并且可以支持ftp的用户管理。系统管理员增加用户时,系统在home目录下创建与用户同名的目录,此目录下一般默认有Desktop目录。
/dev: 这个目录下存放一种设备文件的特殊文件,如fd0、had等。
/mnt: 在Linux系统中,它是专门给外挂的文件系统使用的,里面有两个文件edrom、floopy,登录光驱、软驱时要用到。
刚开始使用Linux的人比较容易混淆的是Linux下使用斜杠**“/”,而在DOS/Windows下使用的是反斜杠"“。例如在Linux中,由于从UNIX集成的关系,路径用”/usr/src/Linux"表示,而在Windows下则用"\usr\src\Linux"**表示。在Linux下更加普遍的问题是字母大小写敏感,例如文件Hello.c和文件bello.c在Linux下不是一个文件,而在Windows下则表示同一个文件。
Linux操作系统概述相关推荐
- 第一章 Linux操作系统概述
接下来我将根据<Linux C编程完全解密>这本书,整理Linux系列相关笔记,并写成文章.本文将是该系列文章的第一篇. 第1章 Linux操作系统概述 1.1 认识Linux操作系统 1 ...
- doc unix linux,[整理]unix,linux操作系统概述及基本知识.doc
[整理]unix,linux操作系统概述及基本知识.doc unix,linuxunix,linux 操作系统概述及基本知识操作系统概述及基本知识unix,linux 操作系统概述 及基本 知识 un ...
- UNIX和Linux操作系统概述
参考 UNIX和Linux操作系统概述 - 云+社区 - 腾讯云 UNIX:一个多用户和多任务的计算机操作系统,主要的用户界面是命令行界面. UNIX的设计理念:在UNIX系统中所有的东西都是文件, ...
- linux 写操作系统 pdf,Linux操作系统概述.pdf
Liux操作系统 一.概述 教材和参考资料 • E-Learning上将提供课程ppt以及部分文字资料 • L命令行与脚本编程大全 (第3版),R B,C B著, 门佳 .武海峰译, 人民邮电出版社 ...
- Linux操作系统文档
一. Linux操作系统概述 l 为什么要学习Linux操作系统: 1. 大部分服务端都是使用Linux操作系统(Django,爬虫,科学运算等项目是部署到服务器中的) 2. 一些企业和学校(国外 ...
- Linux 文件系统概述
1.什么是文件系统: 请参见:<Linux 文件系统概述> 2.文件系统的组织结构简说: 当您使用Linux的时候,如果您通过ls -la / 就会发现,在/下包涵很多的目录,比如etc. ...
- [操作系统精髓与设计原理笔记] Chapter2 操作系统概述
Chapter2 操作系统概述 2.1 操作系统的目标和功能 2.1.1 作为用户/计算机接口的操作系统 操作系统是应用程序和计算机硬件间的接口,三个目标:方便.有效.扩展能力 计算机软硬件结构 ...
- 关于客户机服务器与微内核结构操作系统,第1章 操作系统概述1
<第1章 操作系统概述1>由会员分享,可在线阅读,更多相关<第1章 操作系统概述1(41页珍藏版)>请在人人文库网上搜索. 1.操作系统概述 苏锐丹 操作系统概述 n操作系统的 ...
- 操作系统原理——(1)引言:计算机系统和操作系统概述
目录 计算机系统概述 计算机系统的基本组成 处理寄存器和指令执行 中断 存储器 I/O访问方式 操作系统概述 操作系统的概念及功能 操作系统的发展 衡量操作系统的指标 操作系统的结构 现代操作系统的基 ...
最新文章
- html5 银行卡号校验,js 实现 银行卡号 格式验证 示例代码
- 【Machine Learning】KNN学习算法与C语言实现
- 近世代数--整环上的整除理论--主理想整环中最大公因子的存在表示定理
- android系统镜像:boot.img kernel.img ramdisk.img system.img userdata.img cache.img recovery.img
- python 判断div 之间的内容是否为空_python实现单向链表数据结构及其基本方法
- 华为27asph是什么型号_上半年苹果全球销量第一,红米次之,华为表现不佳
- NYOJ 451(组合数+全错位)
- oracle label security redition,今天在用11GR2客户端全库导出10GR2版本的数据库时报ORA-00904错误...
- PHP中try、catch、finally的执行顺序
- Code-NFine:NFine介绍
- “衣带渐宽终不悔,为伊消得人憔悴” 读《唐宋词十七讲》有感二 —— 2021.12.23 晚八时
- 融云聊天--web SDK API
- jquery获取tr下第某个td的值
- 【Python爬虫】下载b站视频。超详细。
- python 形态学
- 中英文名片拼写法对照
- 服务器ssd硬盘接笔记本,让你的老本满血复活,笔记本固态硬盘升级指南
- VK第三方登录(JavaScript SDK)
- 小程序移植公众号网页,laravel,vue
- web自动化之元素定位
热门文章
- 现货交易、远期合同交易和期货交易
- 论文阅读(8)Cool your jets:海洋无脊椎动物的生物喷射推进(2021)
- 信用卡智能还款是什么,靠不靠谱?
- 【MySQL | 运维篇】06、MySQL 分库分表之 MyCat 分片规则
- gsea结果分析图怎么看_GSEA富集分析图讲解
- Landsat 行列号与经纬度在线转换
- js中Numer类型最大值9007199254740991,精度丢失问题解决
- 漫画 | 程序员大战公务员!到底谁猛?
- RAS - Reliability, Availability and Serviceability
- zcmu-1919: kirito(多重背包——二进制优化)