Linux系统简介及发展历史

Linux的概况

Linux是自由软件

·Linux是一种类UNIX操作系统。Linux内核由Linus Torvalds在1991年发布。在加上用户空间的应用程序之后,成为Linux操作系统
·只要遵循GNU通用公共许可证(GPL),任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布
·在The Linux Kernel Archives网站上可以找到Linux内核的源代码

Linux的应用场景

·Linux最初是在英特尔x86处理器上面开发,设计为只在PC上使用的操作系统
·目前Linux已经被移植到更多的计算机硬件平台,远远超出其他任何操作系统
·Linux应用在绝大多数的超级计算机,嵌入式设备和路由器等设备上
·在移动设备上广泛使用的Android操作系统就是创建在Linux内核之上

 Linux的历史

Unix操作系统

·AT&T公司的贝尔实验室在70年代开发了Unix操作系统,它由Ken Thompson、Dennis Ritchie和Douglas McIlroy等人开发
·在开发Unix系统的过程当中,为增加Unix系统的可移植性,Ken Thompson和Dennis Ritchie使用C语言重写了Unix
·Unix操作系统有AT&T System V 和 Berkeley BSD两个大系列。苹果公司的MacOS就是购买的Berkeley BSD系列的授权
·Unix的体系结构分为3层,从内到外依次是:内核--系统调用--应用层

1. 内核负责两个功能:控制计算机硬件资源;为其他程序运行提供环境
2. 系统调用就是内核的接口,通常在系统调用之上还封装了公用函数库。应用程序可以通过系统调用或者公用函数库来使用内核提供的功能
3. 使用频率最高的应用程序就是shell,shell是一个命令行解释器,它读取用户输入,然后执行命令。

·在早期,各个发行厂商拿到Unix的内核授权以后,会根据本身硬件和客户需求来设计各自的系统调用和公用函数库,这样就导致了在各个发行版本上开发的程序不能跨越发行版本使用,并且产生大量的重复开发成本。为了减少这种开发成本,POSIX标准便应运而生,POSIX为各个接口提供规范(IEEE 1003.1)。只需要进行少量甚至无需修改,遵守POSIX标准的代码就可以在不同操作系统的机器上使用

 开源运动的兴起

·1983年,Richard Stallman创立GNU计划,GNU的全名是Gnu's Not Unix,它的目标就是开发出一个遵循GPL(即开源规范)的类Unix操作系统。在90年代初期,遵循GPL的库、编译器、调试工具和文本编辑器都已经开发完成,但是依然没有一个内核开发完成。当时,微内核构造的GNU Hurd正在开发中,但是进度极其缓慢

Linux诞生

·由于Unix操作系统的各种优秀特性,它在市场上占据了庞大的份额。但是Unix操作系统是商业软件,使用它需要交纳昂贵的授权费用,这对个人用户以及科研院校十分不友好。一些类Unix系统,比如Minix,不支持任何类型的非学术领域使用,极大地限制了Unix系统的使用范围
·1990年,19岁大学生的Linus Torvalds开始在Minix上面学习操作系统相关课程。在1991年他在社区上提出要写出一个全新的开源的内核。

·1993年,宏内核构造的Linux内核面世,并且Linux内核的源代码遵循GNU的GPL。从此以后,广大的社区开发者便为新生的Linux内核积极贡献自己的力量
·Linux操作系统是同时兼容System V和Berkeley BSD两大系列的,著名的《UNIX环境高级编程》所讲述的知识也适用于Linux
·所有的内核源码都可以在kernel.org上面找到并下载

Linux操作系统成功原因

·开源是Linux成功的核心原因。在Linus刚刚推出Linux内核的时候,它实际上只有不到1万行代码,实现了一个简单的内核。但是在开源社区(GNU)的推动之下,Linux开始迅速地发展起来,越来越多程序员开始为Linux系统贡献自己的力量
·另一方面Linux内核兼容了POSIX标准,之前为其他Unix系统编写的旧程序可以无痛苦地转移到Linux操作系统上

Linux发行版本

·通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版,一些流行的主流Linux发布版,包括Debian(及其派生版本Ubuntu、Linux Mint)、Fedora(及其相关版本Red HatEnterprise Linux、CentOS)和openSUSE等
·Linux发行版包含Linux内核和支撑内核的实用程序和库,通常还带有大量可以满足各类需求的应用程序。

Linux内核简述

·Linux内核结构是宏内核结构
·Linux内核的功能主要涉及这样几个方面:进程和进程调度、内存管理、文件系统管理和网络。硬件设备在使用的时候也会加载到内核里面。

宏内核和微内核是操作系统内核的两种不同架构。

宏内核是将操作系统的大部分功能集成在内核中,包括文件系统、设备驱动、网络协议等,这些功能都运行在内核空间。因此,宏内核的设计更加紧凑,但也更加复杂

微内核则将操作系统的核心功能尽可能地精简只保留最基本的功能,如进程管理、内存管理和通信机制等,其他功能如文件系统、网络协议等则运行在用户空间。微内核的设计更加灵活,但也更加复杂

宏内核的优点在于性能更高(尽管微内核采用了插件式的设计,扩展性很高。但是大家想,团队之间最重要的是什么,沟通和合作,正因为微内核分离了系统服务层,每次调用都需要通信,而这种通信是需要时间成本的,这就意味着微内核的效率往往是低于宏内核的),因为所有功能都运行在内核空间,不需要进行用户空间和内核空间的切换。而微内核的优点在于可靠性更高,因为内核更加简单,容错能力更强。

·“宏”也就是集成了大量的功能在内核中,"微"也就是只保留核心的功能.

下面详细描述一下宏内核和微内核的区别:

宏内核

宏内核简单理解其实就是把上面所有的功能都整合在一起。我们可以把进程管理、管理内存、管理硬盘、管理各种I/O设备……这些功能看作一个个模块。在宏内核中,这些模块都是集成在一起的,运行在内核进程中,只有处于内核态下才能运行

我们平常所使用的应用软件一般运行在用户态下,而运行操作系统程序,操作硬件则在内核态。运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。当我们在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完成某些它没有权力和能力完成的工作时就会切换到内核态(比如操作硬件)。

内核层中的功能模块都是链接在一起的,并没有一定的层次关系。它们之间可直接通过方法调用进行交互。

那宏内核中是如何工作的呢?

假设现在有一个应用程序需要使用到内存分配的功能,那么首先该应用程序会调用到系统提供的内存分配的接口(系统调用),此时CPU就会切换到内核态,并执行内存分配相关的代码。内核里的内存管理代码按照特定的算法,分配一块内存。并将分配的内存块的首地址,返回给内存分配的接口函数。当内存分配的接口函数返回时,此时CPU又会切换回用户态,应用程序会得到返回的内存块首地址,并开始使用该内存。

宏内核结构的优点就是它的性能十分好,像Linux就是传统的宏内核结构。其性能极高,但其缺点也很明显,就是其耦合度高,一旦其中一个模块出现问题,其他所有的模块都可能会受到影响。

微内核

微内核则和宏内核结构相反,它提倡内核中的功能模块尽可能的少。内核只提供最核心的功能,比如任务调度,中断处理等等。其他实际的模块功能如进程管理、存储器管理、文件管理……这些则被移出内核,变成一个个服务进程,和用户进程同等级,只是它们是一种特殊的用户进程。

微内核中定义一种进程间通信的机制——消息。当应用程序请求相关服务时,会向微内核发送一条与此服务对应的消息,微内核再把这条消息发送给相关的服务进程(特殊的用户进程),接着服务进程会完成相关的服务。

那么微内核是如何工作的呢?

还是刚刚内存分配的例子。这个时候应用程序首先会发送内存分配的消息,这个发送消息的接口函数是由微内核提供的。此时CPU切换到内核态,开始执行该函数的代码,微内核的代码会使当前进程停止运行,并将消息发送给内存管理的服务进程。内存管理服务进程收到该消息后,就会分配一块内存,并且也会通过消息的形式将分配的内存块的地址返回给内核。微内核再将该消息返回给发送内存分配消息的应用程序。此时CPU切换到用户态,应用程序会得到返回的内存块首地址,并开始使用该内存。

对比宏内核中,微内核结构主要是多了接收和发送消息的这一过程,实际上也是系统调用,只是并不是直接调用内存管理的接口函数,因为微内核中内存管理功能模块已经不属于系统调用了。所以对比起宏内核,微内核结构的性能会差不少。

但微内核降低了耦合度,模块移除内核后后使得即使某一个模块出现问题,只要重启这个模块的进程即可,不会影响到其他模块,更加的稳定。并且微内核有相当好的伸缩性、扩展性,因为模块功能只是一个进程,可以随时增加或减少系统功能。

  • 15
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~|Bernard|

你的鼓励是我写下去最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值