Loading... # 前言 最近找到一个好文档,关于如何用Rust编写一个操作系统,里面系统的讲述了操作系统的相关知识和源代码等等,所以就打算跟着这个文档开始学习操作系统相关的知识(之后就可以去读CSAPP了 --- # 从认识来看 一个操作系统(OS)是一个软件,它帮助用户和应用程序使用和管理计算机的资源。操作系统可能对最终用户不可见,但控制着嵌入式设备、更通用的系统(如智能手机、台式计算机和服务器)以及巨型机等各种计算机系统。 # 从功能开始 操作系统主要做的事情就只有两件:一是向下管理计算机硬件和各种外设,二是向上给应用软件提供各种服务帮助。 ![操作系统][1] ## 进一步描述 操作系统是一个可以管理CPU、内存和各种外设,并管理和服务应用软件的系统软件。 <div class="tip inlineBlock share"> 系统软件是在一个计算机系统范围内使用的软件,可涉及到整个计算机系统。文本编辑器这样的软件只涉及到对文本文件的编辑,并不能被叫做系统软件。而在计算机中安装的 C 标准库 libc(类似的有 Rust 标准库 等)可以算是一个,因为它提供了与OS交互的系统调用接口,其功能覆盖了整个计算机系统,会被许多不同的软件访问。 </div> 为了完成这些工作,操作系统需要知道如何与硬件打交道,如何更好地给应用软件提供服务,这就有一系列操作系统相关的理论、抽象、设计等来支持如何做和做得好的需求。 <div class="tip inlineBlock info"> 在不同的应用场景下,操作系统的边界也是不同的,我们可以把运行时库、图形界面支持库等这些可支持不同应用的系统软件 (System Software) 也看成是操作系统的一部分。比如说嵌入式环境,一般操作系统以运行时库的形式与应用程序紧密结合在一起,形成一个可在嵌入式硬件上单一执行的嵌入式应用。而 Android 应用运行在 ARM 处理器上 Android 操作系统的执行环境中。 </div> ## 简化描述 站在应用程序的角度来看,我们可以发现常见的应用程序其实是运行在由硬件、操作系统内核、运行时库、图形界面支持库等所包起来的一个 执行环境 (Execution Environment) 中,应用程序只需根据与系统软件约定好的应用程序二进制接口 (ABI, Application Binary Interface) 来请求执行环境提供的各种服务或功能,从而完成应用程序自己的功能。 于是我们可以将操作系统的定义简化成:**应用程序的软件执行环境**。 ![应用程序][2] # 一直在变化的定义 操作系统的内涵和外延随着历史的发展也一直在变化,并没有类似于“1+1=2”这样的明确定义。如今在二十一世纪初期的大众眼中,操作系统就是他们的手机/终端上的软件系统,包括各种应用程序集合,图形界面和网络浏览器是其中重要的组成部分。但无论操作系统的内在实现和具体目标如何变化,其管理计算机硬件,给应用提供服务的核心定位没有变化。 [1]: https://www.onesnowwarrior.cn/usr/uploads/2022/03/2565101620.png [2]: https://www.onesnowwarrior.cn/usr/uploads/2022/03/1682351027.png Last modification:March 24, 2022 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏
One comment
妙哇,点个