操作系统概述及发展史、Linux内核、发行版及应用领域

一、 操作系统(Operation System,OS)

裸机:没有安装操作系统的计算机

  • 如果想在 裸机 上运行自己所编写的程序,就必须用机器语言书写程序
  • 如果计算机上安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序

操作系统作为接口示意图

1.1 操作系统的作用

  • 是现代计算机系统中 最基本和最重要 的系统软件
  • 是 配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展
  • 主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,以便于使用
  • 而其他的诸如编译程序、数据库管理系统,以及大量的应用软件,都直接依赖于操作系统的支持

 1.2 不同应用领域的主流操作系统

  • 桌面操作系统
    • Windows 系列:用户群体大
    • macOS:适合于开发人员
    • Linux:应用软件少
  • 服务器操作系统
    • Linux:安全、稳定、免费,占有率高
    • Windows Server:付费,占有率低
  • 嵌入式操作系统:Linux
  • 移动设备操作系统:iOS,Android(基于 Linux

1.3 虚拟机

虚拟机(Virtual Machine):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统

  • 虚拟系统通过生成现有操作系统的全新虚拟镜像,具有真实操作系统完全一样的功能
  • 进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响
  • 而且能够在现有系统与虚拟镜像之间灵活切换的一类操作系统

 二、OS发展史

2.1 Unix

1965 年之前的时候,电脑并不像现在一样普遍,它可不是一般人能碰的起的,除非是军事或者学院的研究机构,而且当时大型主机至多能提供30台终端(30个键盘、显示器),连接一台电脑

为了解决数量不够用的问题

  • 1965 年左后由 贝尔实验室 加入了 麻省理工学院 以及 通用电气 合作的计划 —— 该计划要建立一套 多使用者(multi-user)多任务(multi-processor)多层次(multi-level) 的 MULTICS 操作系统,想让大型主机支持 300 台终端
  • 1969 年前后这个项目进度缓慢,资金短缺,贝尔实验室退出了研究
  • 1969 年从这个项目中退出的 Ken Thompson 当时在实验室无聊时,为了让一台空闲的电脑上能够运行 "星际旅行(Space Travel)" 游戏,在 8 月份左右趁着其妻子探亲的时间,用了 1 个月的时间,使用汇编写出了 Unix 操作系统的原型
  • 1970 年,美国贝尔实验室的 Ken Thompson,以 BCPL 语言为基础,设计出很简单且很接近硬件的 B 语言(取BCPL的首字母),并且他用 B 语言 写了第一个 UNIX 操作系统
  • 1971 年,同样酷爱 "星际旅行(Space Travel)" 的 Dennis M.Ritchie 为了能早点儿玩上游戏,加入了 Thompson 的开发项目,合作开发 UNIX,他的主要工作是改造 B 语言,因为B 语言 的跨平台性较差
  • 1972 年,Dennis M.Ritchie 在 B 语言 的基础上最终设计出了一种新的语言,他取了 BCPL 的第二个字母作为这种语言的名字,这就是 C 语言
  • 1973 年初,C 语言的主体完成,Thompson 和 Ritchie 迫不及待地开始用它完全重写了现在大名鼎鼎的 Unix 操作系统

2.2 Minix

  • 因为 AT&T(通用电气) 的政策改变,在 Version 7 Unix 推出之后,发布新的使用条款,将 UNIX 源代码私有化,在大学中不能再使用 UNIX 源代码
  • Andrew S. Tanenbaum(塔能鲍姆) 教授为了能 在课堂上教授学生操作系统运作的细节,决定在不使用任何 AT&T 的源代码前提下,自行开发与 UNIX 兼容的操作系统,以避免版权上的争议
  • 以 小型 UNIX(mini-UNIX)之意,将它称为 MINIX

2.3 Linux

  • 1991 年 林纳斯(Linus) 就读于赫尔辛基大学期间,对 Unix 产生浓厚兴趣,尝试着在Minix 上做一些开发工作
  • 因为 Minix 只是教学使用,因此功能并不强,林纳斯 经常要用他的终端 仿真器(Terminal Emulator) 去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了 Linux 第一个内核的雏形,当时,他年仅 21 岁!
  • 林纳斯 利用 GNU 的 bash 当做开发环境,gcc 当做编译工具,编写了 Linux 内核,一开始 Linux 并不能兼容 Unix
    • 即 Unix 上跑的应用程序不能在 Linux 上跑,即应用程序与内核之间的接口不一致
    • 一开始 Linux 只适用于 386,后来经过全世界的网友的帮助,最终能够兼容多种硬件

C 语言

  • 在把 UNIX 移植到其他类型的计算机上使用时,C 语言强大的移植性(Portability)在此显现
    • 机器语言和汇编语言都不具有移植性,为 x86 开发的程序,不可能在 Alpha,SPARC 和 ARM 等机器上运行
  • 而 C 语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的 C 语言编译器和库,然后将 C 源代码编译、连接成目标二进制文件之后即可运行

三、Linux 内核及发行版

3.1 Linux 内核版本

  • 内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层
  • Linux 内核版本又分为 稳定版 和 开发版,两种版本是相互关联,相互循环
    • 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些 bug 或加入一些新的驱动程序
    • 开发版:由于要试验各种解决方案,所以变化很快
  • 内核源码网址:The Linux Kernel Archives,所有来自全世界的对 Linux 源码的修改最终都会汇总到这个网站,由 Linus 领导的开源社区对其进行甄别和修改最终决定是否进入到 Linux 主线内核源码中

3.2 Linux 发行版本

  • Linux 发行版(也被叫做 GNU/Linux 发行版)通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件
  • 常见的发行版本如下:Ubuntu、Redhat、Fedora、openSUSE、Linux Mint、Debian、Manjaro、Mageia、CentOS、Arch

  • 十大 Linux 服务器发行版排行榜:2016年十大Linux服务器发行版排行榜-linux服务器排行

在几乎每一份与 Linux 有关的榜单上,基于 Debian 的 Ubuntu 都占有一席之位。Canonical 的Ubuntu 胜过其他所有的 Linux 服务器发行版 ―― 从简单安装、出色的硬件发现,到世界级的商业支持,Ubuntu确立了难以企及的严格标准 

四、Linux 的应用领域

4.1 服务器领域

  • Linux 在服务器领域的应用是其重要分支
  • Linux 免费、稳定、高效等特点在这里得到了很好的体现
    • 早期因为维护、运行等原因同样受到了很大的限制
    • 近些年来 Linux 服务器市场得到了飞速的提升,尤其在一些高端领域尤为广泛

4.2 嵌入式领域

  • 近些年来 Linux 在嵌入式领域的应用得到了飞速的提高
  • Linux 运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百 KB 等特点,使其近些年来在嵌入式领域的应用得到非常大的提高
  • 主要应用:机顶盒数字电视网络电话程控交换机手机PDA、等都是其应用领域,得到了 Google、三星、摩托罗拉、NEC 等公司的大力推广

4.3 个人桌面领域

  • 此领域是传统 Linux 应用最薄弱的环节
  • 传统 Linux 由于界面简单、操作复杂、应用软件少的缺点,一直被 Windows 所压制
  • 近些年来随着 UbuntuFedora 等优秀桌面环境的兴起,同时各大硬件厂商对其支持的加大,Linux 在个人桌面领域的占有率在逐渐的提高

学习导航:https://www.xqnav.top/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/217575.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法刷题】Day12

文章目录 1004. 最大连续1的个数 III题干:算法原理:1、暴力枚举 计数器2、利用滑动窗口 代码: 746. 使用最小花费爬楼梯题干:算法原理:解法一:1.1 状态表示1.2 状态转移方程1.3 初始化1.4 填表顺序1.5 返回…

unity学习笔记18

模型文件属性简介 1.动画类型:一共有四种:无 表示没有动画,旧版 就表示这个模型文件里面的动画片段可以用animation组件来播放的,最后两个 ”泛型“和“人形”都是animator组件来播放的。区别是泛型支持所有类型的动画播放&#x…

LangChain的函数,工具和代理(四):使用 OpenAI 函数进行标记(Tagging) 提取(Extraction)

在上一篇博客LangChain中轻松实现OpenAI函数调用 中我们学习了如何使用Pydantic来生成openai的函数描述对象,并且通过在langchain中调用Pydantic生成的函数描述变量来轻松实现openai的函数调用功能,在此基础上今天我们再介绍两个非常实用的功能&#xff…

vue实现css过渡与css动画

一、过渡和动画的区别 过渡:通常用来表示元素上属性状态的变化。动画:通常用来表示元素运动的情况。 二、使用Vue实现基础得css过渡与动画 1. 动画 /* css */ keyframes leftToRight {0% {transform: translateX(-100px);}50% {transform: translateX(-5…

万兆多模光模块SFP-10G-SR:高速短距传输的最优选

随着信息技术的发展,企业和个人对数据传输速度和带宽需求不断增加。传统的千兆以太网已经不能满足高速数据传输的要求,因此万兆以太网技术崭露头角。作为万兆以太网中的重要组件之一,万兆多模SFP-10G-SR光模块引起了广泛的关注。本文将介绍万…

Sentinel基础知识

Sentinel基础知识 资源 1、官方网址:https://sentinelguard.io/zh-cn/ 2、os-china: https://www.oschina.net/p/sentinel?hmsraladdin1e1 3、github: https://github.com/alibaba/Sentinel 一、软件简介 Sentinel 是面向分布式服务架构的高可用流量防护组件…

【原神游戏开发日志1】缘起

【原神游戏开发日志1】缘起 版权声明 本文为“优梦创客”原创文章,您可以自由转载,但必须加入完整的版权声明 文章内容不得删减、修改、演绎 相关学习资源见文末 大家好,最近看到原神在TGA上频频获奖,作为一个14年经验的游戏开…

springboot集成docker

1、快速构建springboot-demo项目 地址:https://start.spring.io/

【C++】异常处理 ⑧ ( 标准异常类 | 标准异常类继承结构 | 常用的标准异常类 | 自定义异常类继承 std::exception 基类 )

文章目录 一、抛出 / 捕获 多个类型异常对象1、标准异常类2、标准异常类继承结构3、常用的标准异常类 二、自定义异常类继承 std::exception 基类1、自定义异常类继承 std::exception 基类2、完整代码示例 - 自定义异常类继承 std::exception 基类 一、抛出 / 捕获 多个类型异常…

万字长文带你搞定MMUTLBTWU

最近一直在学习内存管理,也知道MMU是管理内存的映射的逻辑IP,还知道里面有个TLB。 今天刚刚好看到了几篇前辈的文章,很是不错,于是这里来一起学习一下吧。 PART 一:MMU 架构篇 MMU(Memory Management Uni…

线程池(Linux +C/C++)

参考 手写线程池 - C语言版 | 爱编程的大丙 (subingwen.cn) 1.为什么需要线程池? 1)线程问题: (1)如果只使用线程创建函数,在不断有新的任务进来的时候,需要不断的创建任务;任务在…

Temu数据接口:为开发者提供的强大工具

在如今数字化的时代,数据成为了商业运营中不可或缺的一部分。为了满足开发者对数据获取和分析的需求,Temu平台推出了强大的数据接口,为开发者提供了丰富的API服务。通过Temu数据接口,开发者可以方便地获取商品信息、订单数据、用户…

【Avue】select的远程搜索 [模糊搜索]

一、需求 【模糊搜索】 二、实现avue的远程搜索 1、search为搜索 2、remote远程搜索 3、dictValue{{key}}为输入的值

@Scheduled,Quartz,XXL-JOB三种定时任务总结

Scheduled,Quartz,XXL-JOB三种定时任务总结 一、Scheduled 简介 Scheduled 是 Spring 框架中用于声明定时任务的注解。通过使用 Scheduled 注解,你可以指定一个方法应该在何时执行,无需依赖外部的调度器。 这个注解通常与Enab…

python的安装

python官网地址:https://www.python.org/ 以在windows下安装3.12.0版本为例。 下载安装包: 下载下来的安装包是python-3.12.0-amd64.exe,双击安装,按照提示,一步一步往下走: 到cmd下,输入py…

postgresql pg_hba.conf 配置详解

配置文件之pg_hba.conf介绍 该文件用于控制访问安全性,管理客户端对于PostgreSQL服务器的访问权限,内容包括:允许哪些用户连接到哪个数据库,允许哪些IP或者哪个网段的IP连接到本服务器,以及指定连接时使用的身份验证模…

单片机的扩展结构

目录 三种总线的构造方式 地址空间分配和外部地址锁存器 1.存储器地址空间分配 (1)74LS138 (2)74LS139 2.外部地址锁存器 (1)锁存器74LS373 静态数据存储器RAM的并行扩展 (1)常用的静态RAM (SRAM)芯片 (2)外扩数据存储器的读写操作时序 1.读片外RAM操作时序 2.写片…

JDK8新特性——Stream流

文章目录 一、Stream流体验二、Stream流的创建三、Stream流中间方法四、Stream流终究方法 Stream流(也叫Stream API)。它是从JDK8以后才有的一个新特性,是专业用于对集合或者数组进行便捷操作的 一、Stream流体验 需求:有一个Lis…

【学习笔记】混淆矩阵

混淆矩阵(Confusion Matrix),又称为错误矩阵,是一种特别适用于监督学习中分类问题评估模型性能的工具。在机器学习领域,混淆矩阵能够清晰地显示算法模型的分类结果和实际情况之间的差异,常用于二分类和多分…

vscode里面使用vue的一些插件,方便开发

1、vue 2 Snippets (vue语法提示) vue提示这个也可以 1.1 Vue VSCode Snippets 2、vetur Vetur支持.vue文件的语法高亮显示,除了支持template模板以外 3、Element UI Snippets(饿了么的提示) 4、indent-rainbow(缩进高亮提示) 5…
最新文章