一、前言

最近看了一篇将Unix和Linux历史的帖子,虽然有点水,但是还是放个链接吧花了一天时间,终于把unix、linux、ios、android区别大致联系搞清楚,好像很复杂的,这个帖子写的比较口水话,但是对于了解Unix与Linux的发展与历史还是蛮有帮助的,看了这篇帖子之后,尽管知道了Unix与Linux从无到有的过程,但是发现自己对操作系统这个东西的认识更加模糊了,因为前期大致读过《深入理解计算机系统》和《操作系统》两本书,了解过一些操作系统的内容,但由于是非科班出身,有很多本质的概念并不理解,所以这里就回顾了上面两本书中的一些内容,再加上网上的一些资料,对操作系统和操作系统内核这两个概念进行了整理。

二、操作系统理解

一句话理解操作系统:操作系统就是为用户(使用计算机的人)提供服务,使用户能在计算机上使用各种应用程序(QQ、浏览器)来操作计算机资源(如QQ需要使用显示器资源、用浏览器下载资料需要硬盘资源,同时所有这些应用程序都需要使用CPU这个最主要的资源)。

可以从两方面理解上面这句话,一方面从操作系统本身来理解。其实说起操作系统这个概念,作为非科班出身的我们大多都是比较模糊的,同时感觉跟这个东西就很近,因为在每台计算机中都有一个操作系统,你运行的任何应用软件都离不开操作系统,为什么离不开操作系统呢?其实说白了,一台计算机就是一组资源,你运行在计算机上的应用程序本质上是离不开计算机的各种资源(如处理器、内存、I/O设备等),只是为了方便,人们就构造了操作系统这种东西,因为每一台计算机的各种资源都来自不同的厂家,它们有不同的标准,有不同的差别,所以你针对某一类的I/O设备开发的应用程序就不能在另一台装有不同I/O设备的计算机上运行,而操作系统就完美的消除了这种差别与无法扩展的缺点,所以从逻辑上来说,操作系统位于应用程序与计算机资源的中间层

同时,作为中间层,必须要干好中间层的工作,所以总的来说,操作系统有两个基本功能

(1)防止硬件被失控的应用程序滥用;

(2)向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备

另一方面,从计算机CPU(处理器)来看,操作系统实际上不过是一组计算机程序(可以理解成很多个应用程序的集合,而这些应用程序基本都是与硬件打交道的),与其他计算机程序类似(不管是你自己写的HelloWord小程序还是像QQ这样的应用程序,以及大型的服务器程序),它们都给处理器提供指令,然后处理器就执行这些指令,完成这些程序的功能,最大的区别在于操作系统和其他程序的意图不同:操作系统程序通过控制处理器使用其他计算机资源,并控制其他程序的执行时机,这促使处理器完成系统任务的调度。但是(刚刚也说明了,操作系统除了和其他程序的意图不同,其他都一样,所以)处理器为了做任何一件这样的事情(指的是执行另一个程序),都必须停止执行操作系统程序,转而去执行其他程序(这其实是进程切换),因为既然操作系统也是一个程序(进程),而任何处理器同时只能处理一个进程,所以操作系统同样和其他程序(进程)一样需要调度,只是操作系统是处于主动调度的位置,而其他程序是被动的由操作系统的控制来实现调度。

三、操作系统内核

关于操作系统和操作系统内核这两个概念,很多人尝试去区分与解释,但是发现很难得解释的完全(包括我自己,这里只是把我自己的理解整理出来,有什么不对的地方,希望大家批评指正,共同进步)。

查看了一些网上和CS系列书籍中的关于操作系统内核的概念解释,总结之后,我的理解是:

(1)操作系统包括操作系统内核(这是必然的),也就是说内核程序是操作系统所包含的一组计算机程序中的一个子集,所以内核程序也是一组计算机程序,而这些内核程序是操作系统中最常使用基本模块,直接与硬件打交道,主要由用于管理存储器、文件、外设和系统资源的那些部分组成。

(2)内核程序一直占据内存中的一段内存,这样处理器可以随时调用这些内核程序;

(3)而操作系统除了内核程序外,还有包括其他一些基本组件,如文本编辑器、编译器、用来与用户进行交互的程序等

对于第(2)点,可以引入《深入理解计算机系统》这本书中关于“虚拟存储器”(P12)解释的一幅图来说明,如下:

上图中,关于进程的虚拟地址空间的说明中,最上面的子区域“内核虚拟存储器”就是用来存储内核程序和数据的,这个地址空间是一个固定的结构,所以对于每一个应用程序(进程)来说,都具有同样结构的虚拟地址空间,这就可以保证每个进程都能调用操作系统内核程序来完成自己的功能。

下面再用一幅图说明操作系统内核是操作系统的一组子程

上图中,操作系统的内核包围硬件,同时,其外层是系统调用接口,这就是操作系统中除内核以外的其他组件。

下面整理两个网友关于操作系统与操作系统内核的解释,个人觉得解释的还是比较好的:

(1)内核,是操作系统的基础模块,用于管理系统资源。例如提供对软件层面的抽象(例如对进程、文件系统、同步、内存、网络协议等对象的操作和权限控制),和对硬件访问的抽象(例如磁盘,显示,网络接口卡(NIC));操作系统,在内核的基础上有延伸,包括了提供基础服务的系统组件。

(2)内核,就是计算机学科意义上的操作系统,直接与硬件交互,提供CPU时间片管理、中断、内存管理、IO管理等等;一般意义上的操作系统包含的东西要更多一些,至少要有用户交互的基本程序,比如一个命令行界面和基本的指令(文件遍历、进程管理等等),或者图形界面的桌面和文件浏览器。

四、总结

总的说来,一个操作系统包含了内核(是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件)以及其他计算机系统所必须的组件(如函数库、编译器、调式工具、文本编辑器、网站服务器,以及一个Unix的使用者接口(Unix shell)等,这些都是操作系统的一部分,而且每一个模块如编译器都是一个单独的进程,运行在操作系统中)。所以一个内核不是一套完整的操作系统,拿Linux来说,Linux这个词本身只表示Linux内核,但现在大家已经默认的把Linux理解成整个Linux系统,这是由于历史原因造成的(具体可以看本文前言中提到的那篇文章),也就是说人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和应用程序的操作系统(也被称为GNU/Linux),而基于这些组件的Linux软件被称为Linux发行版。一般来讲,一个Linux发行版本出来包括Linux内核之外,还包含大量的软件(套件),比如软件开发工具,数据库,Web服务器(例如Apache),X Window,桌面环境(比如GNOME和KDE),办公套件(比如OpenOffice、org)等等。

操作系统与操作系统内核相关推荐

  1. 操作系统:操作系统内核是什么?

    文章目录 前言 一.内核是什么? 二.内核分类 1.宏内核 2.微内核 3.混合内核 4.外内核 前言 这篇记录笔者对操作系统内核学习和整理的感悟 一.内核是什么? 要想弄懂操作系统内核是什么,先来看 ...

  2. 嵌入式实时操作系统11——操作系统内核运行原理

    先展示一个操作系统运行动态图 1.操作系统内核关键知识点 本文将用一个实际的工程例子来剖析操作系统内核运行原理.在此之前我们先回顾一下之前文章讲述的重点知识点. <嵌入式实时操作系统3--任务切 ...

  3. GNU操作系统和操作系统内核和MinGW

    一.什么是 MinGW ? MinGW 的全称是:Minimalist GNU on Windows .它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 W ...

  4. 操作系统 操作系统内核

    文章目录 Intro 操作系统 操作系统内核 二者的区别和联系 Intro 今天在给 Linux 16.04LTS 换系统内核的时候突然想了解一下操作系统内核和操作系统之间的关系, 于是在网上浏览了一 ...

  5. 简单谈谈操作系统内核的组成和架构

    本文是本人对学习操作系统的一些思考. 文章目录 计算机硬件 资源管理 内核架构 宏内核 微内核 混合内核 后记 计算机由两部分组成: 硬件和 软件.软件又分为 系统软件和 应用软件. 应用软件 系统软 ...

  6. 操作系统内核和操作系统的区别

    操作系统内核和操作系统的区别 内核指的是一个提供硬件抽象层.磁盘及文件系统控制.多任务等功能的系统软件.内核是一个操作系统的核心,是操作系统最基本的部分.它负责管理系统的进程.内存.设备驱动程序.文件 ...

  7. 发布AI操作系统、应用市场,开源机器学习数据库和AI操作系统内核,第四范式这波操作有点秀!

    "AI的发展经历了'高期望--能否落地--落地是否有用"等多次潮起潮落.今天,AI的价值再次引发一些讨论和怀疑." 第四范式创始人兼首席执行官戴文渊在近日举行的新品发布会 ...

  8. 【转载】笔记:计算机_体系结构_操作系统_软件_操作系统内核_GNU_Linux_C_Python_Latex_Java_TCP/IP_MacOS_Windows这些词语的历史,关系

    一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图灵(Alan Mathison Turi ...

  9. linux操作系统 抢占式,Linux操作系统内核抢占补丁的基本原理(2)

    Linux操作系统内核抢占补丁的基本原理(2) 2008-02-23 07:26:45来源:互联网 阅读 () int this_cpu, c; #ifdef CONFIG_PREEMPT ctx_s ...

  10. 一般而言,以下不属于操作系统内核功能的是()————操作系统

    一般而言,以下不属于操作系统内核功能的是() A. 资源抽象 B. 资源分配 C. 资源共享 D. 程序编辑 答案: D 解析: 操作系统内核的基本功能有资源抽象,资源分配和资源共享.

最新文章

  1. 基于EasyNVR摄像机网页无插件直播服务二次开发实现H5播放页面的简单集成方案...
  2. protect a health
  3. 牛客 数素数 (20)
  4. Chrome/Chromium HTML5 video 视频播放硬件加速
  5. 机动车驾驶人科目三考试项目及合格标准
  6. html5 canvas 图像预览,html5-canvas 加载并显示图像
  7. 互联网日报 | 7月4日 星期日 | 高途回应招聘团队被裁传闻;恒大半年劲销3568亿领跑行业;吉利发布共同富裕计划行动纲领...
  8. UE3 内存使用和分析
  9. android sqlite数据库死锁,SQLite也可能出现死锁。
  10. 阿里巴巴Java开发文档2020版学习-日期时间
  11. MySQL性能优化[实践篇]-复合索引实例
  12. 网络七层及四层协议通俗详解
  13. 编写程序求解百鸡百钱问题。公鸡5元一只,母鸡3元一只,小鸡一元3只,问100元钱买100只鸡,可买公鸡、母鸡、小鸡各多少只?
  14. 基于TTP223金属触摸开关电路模块原理图和PCB工程文件
  15. “软件工程”学习笔记、复习资料
  16. 逆置线性表(线性表)
  17. 快读快写和fread,fwrite--zhengjun
  18. 千万级巨型汉语词库分享
  19. 关于Pytorch中dim使用的一点记录
  20. suma服务器 硬盘安装,[Server] HP DL380 G6更新esxi6.0 SATA 硬盘掉线问题

热门文章

  1. java jsonp网络爬虫_JSOUP 爬虫
  2. 智慧水务项目建设方案
  3. 算法 --- 阿克曼(Ackmann)函数
  4. GIS应用实例--模型预测、多元回归、空间自相关分析
  5. 修改群晖mac 及 sn
  6. 《公共安全视频监控联网信息安全技术要求》(国标GB/35114-2017)
  7. java smtp服务器,用Java实现SMTP服务器
  8. QT出现应用程序无法正常启动0xc000007b的错误
  9. java 硬盘序列号_java肿么获取硬盘序列号 iteye
  10. 【系统分析师之路】系统分析师冲刺习题集(企业信息化)