我的编程空间,编程开发者的网络收藏夹
学习永远不晚

一文揭开操作系统的神秘面纱

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

一文揭开操作系统的神秘面纱

 1 操作系统简介

在如今的世界里,绝大多数人都会对Windows,Linux及MacOS等操作系统有一定的使用经验,但是很多时候对操作系统本身并没有太多感知。毕竟与用户直接打交道的大多数是各种炫酷的客户端软件,包含精美的字体、图标和图片等。

图1 Windows10

虽然一般来说这样漂亮的用户界面通常不属于操作系统,但可看作它是操作系统的一部分,通过操作系统来完成其底层复杂的与硬件层面的交互工作。

现今的计算机是一个极其复杂的系统,一般由一个或多个处理器,以及一些主内存、磁盘、网络接口、各种外设以及各种其他输入/输出设备组成。如果每个程序员都必须详细了解所有这些硬件层面的原理和机制,然后才能编写相应的代码,那么可想而知这样的效率会有多低。

图2 操作系统所处层次结构

此外,管理所有这些组件并优化使用它们是一件非常困难的工作。因此,计算机配备了一层称为操作系统的软件,其作用是为用户程序提供简洁方便的计算机模型,并统一管理所需要的资源。

图3 计算机基本硬件组成

在这里,我们看到计算机最底部是各种硬件,包括芯片,主板,磁盘,键盘,显示器等。在硬件之上则是软件。大多数计算机都有两种操作模式:内核模式和用户模式。

内核模式Kernel Mode:

在内核模式下,程序具有硬件的所有控制权限,可以执行所有CPU指令,可以访问任意地址的内存。在内核模式下的任何异常都是灾难性的,将会导致整台机器停机。

用户模式User Mode:

在用户模式下,程序没有对硬件的直接控制权限,也不能直接访问地址的内存。程序是通过调用系统接口API来访问硬件和内存。在这种保护模式下,即使程序发送崩溃也是可以恢复的。

操作系统可以看作是最基本的软件,它运行在内核模式(也称为管理程序模式)下。在这种模式下,它可以完全访问所有硬件,并且可以执行机器可以执行的任何指令。

而在用户模式下运行的一般都为直接面向用户的应用软件,在该模式下只能使用一部分机器指令。特别是,那些影响机器控制或「I/O输入输出」的指令在用户模式程序中是禁止的。

2 操作系统作用

看起来操作系统好像就是横跨在用户应用软件和底层硬件之间的桥梁,通过运行在内核模式进行硬件的控制和调度。事实上,操作系统的作用可大致分为两大方面。

作为计算机硬件的抽象层

大多数计算机在机器语言级别上的体系结构是极其原始的,主要说的是指令集,内存组织,I/O处理和总线结构。在这样的结构下是没办法进行自定义编程的,特别是对于I/O操作而言。因而,没有理智的程序员愿意在硬件级别处理磁盘和内存。

为了解决这样尴尬的局面,从而产生了一个称为磁盘驱动程序的软件。它用来处理硬件并提供一个接口来读取和写入磁盘块,而使得我们无需关注其细节。这本身就是操作系统最初具有的功能之一,包含许多用于控制I/O设备的驱动程序。

图4 让人头疼的设备驱动

但是对于大多数应用程序来说,光有驱动程序是不够的。因此,所有操作系统都为使用磁盘提供了另一层抽象而又便于理解的概念:文件。程序可以创建,写入和读取文件,而不需要处理硬件层面中复杂的工作原理和实现细节。

这种所谓对硬件层面的抽象是管理所有这些复杂底层硬件的关键。一个好的抽象系统将几乎不可能完成的任务变成可以进行管理的任务。所以事实上操作系统所干的事,首先是定义和实现抽象。然而是使用这些抽象来解决上层用户的问题。

[[344049]]

图5 「文件」是操作系统最重要的抽象概念

「文件」是几乎每个计算机用户都可以理解的一种抽象。一个文本,一个照片,一封保存的电子邮件,一首周杰伦的歌或一个网页,这些都可看作是抽象出来的文件。正是通过操作系统的抽象作用,使得我们可以在处理文本、照片、邮件的时候只需要点击几下,而不需要去考虑在SATA磁盘中数据的存放格式发生了如何变化。

图4 操作系统对硬件层的抽象

显而易见的是,操作系统的主要任务之一是隐藏硬件,并以简单且好看的抽象形式呈现程序,以方便用户的使用。这也是Windows系统持续几十年的市场占额的原因所在,相较于其它的系统,Windows以更接近用户体验的抽象方式从而赢得了市场。

作为计算机的资源管理器

上面的作用简单来说就是操作系统为用户层面的应用程序提供了一种硬件的抽象,是自顶向下的作用。除此之外,操作系统还可以作为自底向上的中间人对应用程序所需要的资源进行管理和分发。在自下而上的流程中,操作系统的工作是在需要处理器、内存和I/O设备的各种程序之间提供有序且受控的分配。

图4 操作系统对底层资源的管理

打个比方,我们知道操作系统允许多个程序同时运行并占用内存。想象一下,如果在一台计算机上运行的三个程序都试图在同一台打印机上同时打印输出,将会发生什么。三个程序调用打印机打印可看作是对资源对请求,如果没有操作系统对资源请求的管理和分配,那么整个计算机的输出结果将会是完全混乱的。

图5 多个程序同时调用打印机的错误输出

打印机这个例子还只是最简单直接的资源请求和分配问题,而其它比如网络资源、内存资源的请求冲突问题的影响就更大了。如果处理不好资源请求之间的问题,不同应用程序之间则会发生严重的串扰,以致出现各种无法调试的错误。

操作系统主要是以时间和空间这两种方式进行复用或共享资源。对资源进行时分复用时,不同的程序或用户轮流使用它。他们中的第一个开始使用资源,然后再使用另一个,依此类推。

图6 操作系统在时间维度上分配资源

这实际上就是所谓时间片的概念,在时间的纬度上为每个程序分配一段资源占用的机会。还是共享打印机的例子,当有多个程序都想用打印机的时候,就按照时间发送的顺序在打印机上线性排序,一个一个来。

另一种是空间多路复用。最主要的区别在于不是每个程序轮流使用,而是每个程序都获得了一部分资源。

图7 操作系统在空间维度上分配资源

例如,通常将主存储器划分为几个可同时使用的区域,每个程序可以同时占用。假设有足够的内存来容纳多个程序,那么相较于所有内存分配个一个程序而言,一次将多个子内存分配给多个程序就更有效。

当然,这会引起公平性以及安全性等问题,这也是操作系统需要解决的问题之一。进行空间多路复用的另一个资源是磁盘。

在绝大数系统中,单个磁盘可以同时容纳来自多个程序或用户的文件。而操作系统在这其中的作用就是根据用户或程序来确定其对应的一块磁盘区域,从而保证程序正常的运行。

总结

操作系统复杂性绝不是几篇文章可以介绍的完的,但是这些理论上的思想正是操作系统架构形成的基础。了解操作系统能够让我们真正走进程序代码执行的内部,从高级语言出发进而理解硬件层面的执行,从而能够真正从平台及系统层面优化我们代码的性能。

作者简介:我是安酱,一个稀里糊涂地进了大厂的业余码农。分享全栈技术,目标架构师。关注我,一起向技术大牛进阶!

本文转载自微信公众号「 业余码农」,可以通过以下二维码关注。转载本文请联系 业余码农公众号。

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

一文揭开操作系统的神秘面纱

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

一文揭开操作系统的神秘面纱

在如今的世界里,绝大多数人都会对Windows,Linux及MacOS等操作系统有一定的使用经验,但是很多时候对操作系统本身并没有太多感知。毕竟与用户直接打交道的大多数是各种炫酷的客户端软件,包含精美的字体、图标和图片等。
操作系统2024-12-10

揭开操作系统性能调优的神秘面纱

操作系统性能调优是一门复杂而细致的艺术,本文旨在揭开它的神秘面纱,提供一种循序渐进的方法,帮助您提升系统性能,优化用户体验。
揭开操作系统性能调优的神秘面纱
2024-02-29

揭开操作系统升级补丁的神秘面纱

操作系统升级补丁:揭开神秘面纱
揭开操作系统升级补丁的神秘面纱
2024-04-03

揭开操作系统性能监控的神秘面纱

操作系统性能监控:揭开神秘面纱
揭开操作系统性能监控的神秘面纱
2024-03-02

一文揭开 NVIDIA CUDA 神秘面纱

今天我们继续来聊一下人工智能生态相关技术 - 用于加速构建 AI 核心算力的 GPU 编程框架 - CUDA 。

代码的囚笼:揭开闭源操作系统的神秘面纱

代码的囚笼:揭开闭源操作系统的秘密
代码的囚笼:揭开闭源操作系统的神秘面纱
2024-02-15

揭开网络操作系统的神秘面纱:开启互联世界的旅程

网络操作系统 (NOS) 将网络和服务器资源抽象成统一的计算资源,可通过网络轻松访问,揭开网络操作系统的神秘面纱,开启互联世界的精彩旅程。
揭开网络操作系统的神秘面纱:开启互联世界的旅程
2024-02-26

揭开操作系统日志分析的神秘面纱,洞察系统运行的脉搏

操作系统像一个无形的指挥家,在计算机硬件与软件之间担当着关键桥梁,统筹着系统的资源和进程,保证计算机的稳定运行。让我们揭开操作系统的秘面纱,深入探索它的运行脉搏,洞悉其运作原理及其实践应用。
揭开操作系统日志分析的神秘面纱,洞察系统运行的脉搏
2024-02-06

揭开 Python CPython 的神秘面纱

Python CPython 是 Python 语言最受欢迎的实现,在本文中,我们将深入探索 CPython 的内部机制,包括其架构、内存管理和优化技术,帮助您更深入地理解 Python 的底层实现。
揭开 Python CPython 的神秘面纱
2024-03-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录