读书之《操作系统之哲学原理》第一篇 基础原理篇 第一章 操作系统导论

156 阅读5分钟

在学习操作系统这门偏底层的课,带着问题去学习,比如操作系统在计算机运行过程中扮演什么角色?它的发展历史是什么?它完成了什么功能?它是如何实现这些这些功能的?等其他一些问题。

操作系统对于我们的日常开发到底有没有用呢?

作者给出了这样的观点,即“As you will”。如果你有意愿或者有行动使用操作系统,那么它就是有用的。

作者将计算机的学科性质归类为“人造学科”,区别于“自然学科”,并给除了人造学科的四个特点:

1.不精确、具有相对性

2.从对人类活动的观察导出

3.依赖于人的主观判断力

4.通常符合人的直觉

第一个特点就是所谓的没有对错,在人造的学科里,只有所谓的好或者坏,合适或者不合适。

第二个特点就是很多计算机的设计灵感,来源于对人类活动的抽象。

第三个特点就是在人造的学科里,人的主观能动性起着关键性的作用,不同人观察同样的现象,得出的结论可能不一样,多数人所认同的抽象就将成为人造学科里的标准。

第四个特点是人造学科里的许多原理与人的直觉相呼应,可以按照生活中的场景去理解一些原理。

明白了计算机是人造事物,操作系统是一个人造的系统,我们就可以按照人造物的特点来进行学习,更容易掌握操作系统的原理。

程序是如何运行的呢?

首先是编程,现在我们多数使用高级语言,但是计算机并不认识高级语言,需要通过编译生成计算机能够识别的机器语言。再将机器语言程序加载到内存中,形成一个运动中的程序,即“进程”,而这需要操作系统的帮助,进程需要在CPU上执行才算是真正在执行,,而将进程调度到CPU上运行,也由操作系统来完成。然后,在CPU上执行的机器语言指令,需要变成在时钟脉冲里执行的单位,这需要指令级结构和硬件的支持,整个程序的执行,需要操作系统提供服务和程序语言提供执行环境。如下图所示,整个程序的执行过程。

微信截图_20220526150033.png

什么是操作系统呢?

Operating Systems指的就是掌控局势的一种系统。也就是说,计算机里面的一切事情,均由Operating Systems来掌控。那么我们现在面临两个问题, 1.操作系统到底是什么?2.操作系统到底操控了什么事情?

我们先回答第一个问题,操作系统是一个介于计算机硬件和应用程序之间的一个软件系统。再来回答第二个问题,最开始的时候是人直接去操作硬件,并没有操作系统。但是由于计算机越来越复杂,人已经不能胜任直接掌控计算机的任务了,于是我们编写出操作系统这个软件来掌控计算机。操作系统具体的功能包括:

  • 替用户和应用程序管理计算机上的软硬件资源
  • 保证计算机资源的公平竞争和使用
  • 防止对计算机资源的非法侵占和使用
  • 保证操作系统自身正常运转

操作系统的魔幻家角色和管理者角色

所谓魔幻家角色,将计算机以一个更容易,更方便,更强大的方式呈现给用户使用。更直白地说就是把差的东西变好,把少得东西变多,把复杂的东西变容易。如果在裸机上编程是很困难的,各种数据转移需要用户自己来控制,对不同设备需要用不同的命令来驱动,操作系统将这些工作从用户手中接过来,从而让用户感觉到编程是一件很容易的事。

所谓的管理者角色,就是操作系统对CPU、内存、磁盘等的管理,使得不同用户或者同一用户的不同程序之间可以安全有序的共享这些硬件资源。操作系统本身的设计还包括如下两项:

1.健壮性管理,操作系统自身的正常运作

2.安全性管理,防止非法操作和入侵

操作系统和应用程序有什么关系呢?

操作系统是软件,应用程序也是软件,操作系统就是被应用程序调用的关系。操作系统给用户程序提供各种服务,用户程序在运行过程中不断使用操作系统提供的服务来完成自己的任务。

为什么学习操作系统?

首先操作系统的功能在很多领域都有使用。并发程序的开发,web,分布式系统和网络等,这些领域大量使用了操作系统的概念和技术。学好了操作系统,你就可以对你做的事情更加有信心。其次,操作系统的技巧在很多领域也有使用,如抽象,缓存,并发等。不过最重要的不是上面两条,而是操作系统真的很有意思。如果想知道计算机系统是如何运转的,就必须学习操作系统。