找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

811

积分

0

好友

108

主题
发表于 12 小时前 | 查看: 1| 回复: 0

1 操作系统功能的历史

在计算机中尚不存在操作系统的年代,完全没有任何程序,因此程序员就需要编写出处理相关的所有程序。用机器语言编写程序,然后再使用开关将程序输入,这一过程非常麻烦。于是,有人开发出了仅具有加载和运行功能的 监控程序,这就是操作系统的原型。

监控程序加载和运行两个程序的流程图

之后,随着时代的进一步发展,开始有更多的功能被追加到监控程序中,比如,为了方便程序员的硬件控制程序、编程语言处理器(汇编、编译、解析)以及各种实用程序等,结果就形成了和现在相差不大的操作系统。因此,操作系统本身并不是单独的程序,而是多个程序的集合体。

监控程序与基本输入输出程序功能示意图

操作系统组成结构图

2 要意识到操作系统的存在

对于程序员而言,掌握硬件知识无疑是重要的基础。不过,自操作系统诞生以后,就无需再编写直接控制硬件的复杂程序了。 应用开发者得以从底层硬件细节中解放出来。

在这个由操作系统构建的运行环境中,应用程序并非直接对硬件发号施令,而是通过操作系统这一中间层来间接实现硬件控制。

软件、操作系统与硬件的层级交互关系图

3 系统调用和高级编程语言的移植性

操作系统将硬件控制功能,以一系列小型函数集合的形式提供给上层应用。这些函数以及调用它们的行为,统称为 系统调用(system call),可以理解为应用程序对操作系统功能的“调用”。

用高级编程语言编写的程序,在编译后,其代码就转换成了包含系统调用的本地机器码。

高级编程语言程序在不同操作系统下编译为使用对应系统调用的示意图

虽然有些高级语言允许直接调用系统调用,但这样开发出的应用程序在移植性上往往表现不佳。例如,一个直接调用了Windows系统调用的程序,显然无法在Linux环境下直接运行。

4 操作系统和高级编程语言使硬件抽象化

借助操作系统提供的系统调用,程序员得以摆脱编写直接控制硬件程序的繁琐。更进一步,通过使用高级编程语言,开发者有时甚至无需感知系统调用的存在。这背后的功臣,正是操作系统和高级编程语言实现的 硬件抽象化

#include <stdio.h>
void main() {
    // 打开文件
    FILE *fp = fopen("MyFile.txt", "w");

    // 写入文件
    fputs("你好", fp);

    // 关闭文件
    fclose(fp);
}

“文件”这一概念,正是操作系统对磁盘物理空间的一种抽象。 作为硬件的磁盘,其空间被划分为类似年轮的多个扇区,数据读写以扇区为单位。如果直接操作硬件,开发者就需要精确指定扇区位置进行I/O。

但在上面的代码清单中,你完全看不到“扇区”的踪迹。传递给 fopen() 的是文件名和模式,传递给 fputs() 的是字符串和文件指针,传递给 fclose() 的也仅是文件指针。磁盘的读写操作被“文件”这个概念彻底封装,整个流程抽象为了 fopen()fputs()fclose() 这三个清晰易懂的函数调用。

从磁盘扇区到文件概念的抽象化过程示意图

5 Windows 操作系统的特征

Windows 作为主流的操作系统之一,具备以下几个核心特征。

(1) 32 位操作系统(也有 64 位版本)

尽管目前已有64位版本,但32位Windows仍被广泛使用。这里的“32位”指的是CPU一次处理效率最高的数据单位大小。

(2) 通过 API 函数集来提供系统调用

Windows通过一套名为API(Application Programming Interface,应用程序接口)的函数集来提供系统调用。API是应用程序开发者与操作系统之间的桥梁。

(3) 提供采用了图形用户界面的用户界面

GUI(图形用户界面)允许用户通过点击屏幕上显示的窗口、图标等可视化元素进行操作,极大提升了易用性。

(4) 通过 WYSIWYG 实现打印输出

WYSIWYG(所见即所得)意味着屏幕上显示的内容可以直接由打印机原样输出。Windows将显示器和打印机视为同等的图形输出设备,从而实现了这一功能。

(5) 提供多任务功能

多任务 指的是同时运行多个程序的能力。Windows通过 时钟分割 技术实现这一点。该技术让CPU在极短的时间间隔内快速切换运行多个程序,在用户看来它们就像在同时运行。此外,Windows还支持 多线程,允许在一个程序内部以函数为单位进行更细粒度的切换执行。

程序1与程序2通过时钟分割切换运行的多任务时序图

(6) 提供网络功能及数据库功能

网络功能在Windows中是标准配置。数据库(数据库服务器)功能有时则需要额外安装。这些功能虽非操作系统的核心,但由于紧贴操作系统层,常被称为 中间件,意为处于操作系统和应用之间。操作系统与中间件合称为 系统软件,应用程序可以同时利用二者的功能。

应用、操作系统、中间件与系统软件的架构关系图

(7) 通过即插即用实现设备驱动的自动设定

即插即用 机制使得新设备连接到计算机后,系统能够自动识别、安装并配置用于控制该设备的 设备驱动 程序,实现“即插即用”。

希望这篇关于操作系统核心作用的解析,能帮助你更清晰地理解这个现代计算机中不可或缺的基石。如果想探讨更多计算机系统底层原理,欢迎在云栈社区交流分享。




上一篇:手把手在AWS免费服务器上部署基于AI大模型的Clawdbot代理
下一篇:从Keil C51到Arm Cortex-M:MCU进化史的下半场,编译器如何颠覆32位时代?
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-27 19:32 , Processed in 0.386023 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表