计算机底层知识之操作系统

  • Post author:
  • Post category:其他




给时光以生命,而不是给生命以时光



大家好,我是

「柒八九」

今天,我们继续

「计算机底层知识」

的探索。我们来谈谈关于

「操作系统」

的相关知识点。

如果,想了解该系列的文章,可以参考我们已经发布的文章。如下是往期文章。



文章list



  1. 计算机底层知识之CPU


  2. 计算机底层知识之二进制


  3. 计算机底层知识之处理小数


  4. 计算机底层知识之内存和磁盘的关系&数据压缩


  5. 计算机底层知识之运行环境&可执行文件



你能所学到的知识点




  1. 操作系统功能的历史

    「推荐阅读指数」

    ⭐️⭐️⭐️⭐️
  2. 意识到操作系统的存在

    「推荐阅读指数」

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

    「推荐阅读指数」

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

    「推荐阅读指数」

    ⭐️⭐️⭐️⭐️⭐️
  5. Windows 操作系统的特征

    「推荐阅读指数」

    ⭐️⭐️⭐️



好了,天不早了,干点正事哇。
alt




操作系统功能的历史



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

「加载」



「运行功能」



「监控程序」

,这就是操作系统的原型。

通过事先启动监控程序,程序员就可以根据需要将各种程序加载到内存中运行。

alt

随着时代的发展,人们在利用

「监控程序」

编写程序的过程中,发现很多程序都有

「共通」

的部分。例如,键盘输入、显示器输出文字等。因此,基本的

「输入输出」

部分的程序被追加到了监控程序中。因此,初期的操作系统就应用而生了。

初期的操作系统 = 监控程序 + 基本的输入输出程序
初期的操作系统 = 监控程序 + 基本的输入输出程序

之后,开始有更多的功能被追加到监控程序中。例如,硬件控制程序、语言处理器(汇编、编译、解析)以及各种实用程序等。从此可知,

「操作系统本身并不是单独的程序,而是多个程序的集合体」

alt



意识到操作系统的存在



我们希望制作应用的程序员意识到一点,那就是他们制作的不是硬件,而是

「利用操作系统功能的应用」

虽然,对程序员来说,掌握硬件的基本知识是必需的,不过,在操作系统诞生后,就没有必要再编写直接控制硬件的程序了。不过,

「要想成为一个全面的程序员,有一点需要清楚的是,掌握基本的硬件知识,并借助操作系统进行抽象化,可以大大提高编程效率。」



在操作环境这个运行环境下,应用并不是直接控制硬件,而是通过操作系统来

「间接」

控制硬件。



alt



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



操作系统的硬件控制功能,通常是通过一些小的

「函数集合」

的形式来提供的。这些函数及调用函数的行为统称为


系统调用

System Call



,也就是应用对操作系统的功能进行调用。


C语言

等高级编程语言并不依存于特定的操作系统。这是因为无论

Windows

还是

Linux

都能使用几乎相同的源代码。因此,

「高级编程语言的机制就是,使用独自的函数名,然后再在编译时将其转换成相应操作系统的系统调用」

用高级编程语言编写的应用在

「编译后」

,就转换成了利用系统调用的

「本地代码」

alt



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



通过使用操作系统提供的

「系统调用」

,程序员就没必要编写直接控制硬件的程序了。而且,通过使用高级编程语言,有时甚至也无需考虑系统调用的存在。这是因为

「操作系统和高级编程语言能够使硬件抽象化」

我们用

C语言

编写一个往文件中写入字符串的应用。

#include <stdio.h>

void main(){
  //打开文件
  FILE *fp = fopen("MyFile.txt","w");
  
  /写入文件
  fputs("前端柒八九",fp);
  // 关闭文件
  fclose(fp);
}

  • fopen()

    是用来打开文件的函数

  • fputs()

    是用来往文件中写入字符串的函数

  • fclose()

    是用来关闭文件的函数

在应用被编译运行后,

MyFile

文件中就会被写入

前端柒八九

字符串。



文件是操作系统对磁盘媒介空间的抽象化



正如前面介绍过,硬件被划分为了多个扇区,并以扇区为单位对磁盘进行读写。
alt

变量

fp

中被赋予的是

fopen()

函数的返回值。该值称为

「文件指针」

。应用打开文件后,操作系统就会自动申请分配用来管理文件读写的内存空间。这个内存空间的地址可以通过

fopen()

函数的返回值获得。用

fopen()

打开文件后,接下来就是通过指定文件指针来对文件进行操作。




Windows 操作系统的特征




  1. 32/64

    位操作系统
  2. 通过

    「API函数集」

    来提供系统调用
  3. 提供采用了


    图形用户界面

    Graphical User Interface



    的用户界面
  4. 通过

    WYSIWYG

    实现打印输出
  5. 提供多任务功能
  6. 提供网络功能及数据库功能
  7. 通过

    「即插即用」

    实现设备驱动的自动设定

我们来挑几个我们比较感兴趣的来简单讲讲。



通过

WYSIWYG

实现打印输出




WYSIWYG



What You See Is What You Get

的缩写。翻译成中文就是

「所见即所得」


WYSIWYG

指的是显示器上显示的内容可以直接通过打印机打印输出。在

Windows

中,显示器和打印机是被作为同等的图形输出设备处理的,而该功能也就为

WYSIWYG

的实现提供了条件。

借助

WYSIWYG

功能,基本上在同一个程序中就可以实现显示和打印这两方面的操作了。



提供多任务功能






「多任务」

指的是同时运行多个程序的功能。

Windows

是通过

「时钟分割」

技术来实现多任务功能的。



时钟分割指的是在短时间间隔内,多个程序切换运行的方式。在用户看来,就是多个任务在同时运行。而

Windows

会自动切换多个程序的运行。此外,

Windows

还具有

「以程序中的函数为单位来进行时钟分割的多线程功能」

alt



提供网络功能及数据库功能




Windows

中,网络功能是作为

「标准功能」

提供的。数据库功能有时也会在之后进行追加。网络功能和数据库功能,虽并不是操作系统本身不可欠缺的功能,但因为它们和操作系统很接近,所以被统称为

「中间件」

而不是应用。



中间件的意思是处于

「操作系统和应用的中间」



操作系统和中间件合在一起,也称为

「系统软件」

alt



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





即插即用

Plug-and-Play



指的是新的设备连接(

Plug

)后立刻就可以使用(

Play

)的机制。新的设备连接到计算机后,系统就会自动安装和设定用来控制该设备的

「设备驱动」

程序。

设备驱动是操作系统的一部分,提供了同硬件进行基本的输入输出的功能。




后记




「分享是一种态度」

参考资料:《程序是怎样跑起来的》


「全文完,既然看到这里了,如果觉得不错,随手点个赞和“在看”吧。」

alt



版权声明:本文为weixin_52884694原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。