从01开始 从01开始
首页
  • 计算机科学导论
  • 操作系统
  • 计算机网络
  • 关于本站
  • 网站日记
  • 赞赏支持
  • 如何搭建一个博客
  • 如何搭建一个邮箱
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 操作系统
  • 计算机网络
  • 关于本站
  • 网站日记
  • 赞赏支持
  • 如何搭建一个博客
  • 如何搭建一个邮箱
GitHub (opens new window)
  • 计算机科学导论

  • 操作系统

    • 我的操作系统学习笔记

      • 学习操作系统之前
        • 学操作系统之前的知识储备
        • 什么是操作系统
        • 为什么要学习操作系统
        • 怎么学习操作系统
        • 总结
        • 参考
      • 从操作系统启动开始
      • 操作系统接口
      • 操作系统历史与学习任务
      • 如何高效管理CPU:并发和进程
      • 如何支持多进程
      • 用户级线程
    • 我的操作系统实验笔记

    • 操作系统
  • Linux

  • 编译原理

  • 计算机网络

  • 数据库

  • 计算机基础学习路线
  • 计算机基础
  • 操作系统
  • 我的操作系统学习笔记
2022-10-22
目录

学习操作系统之前

# 0.学习操作系统之前

在深入学习操作系统之前,我们先聊聊以下几点内容

  1. 学操作系统之前的知识储备
  2. 什么是操作系统(what?)
  3. 为什么要学习操作系统(why?)
  4. 怎么学习操作系统(how?)

‍

# 学操作系统之前的知识储备

在学习操作系统之前,最好有以下的知识储备,不然学起来有一点点吃力。如果完全没基础的话,基本上是很难学习下去的。

  1. 数字电路(学习计算机组成原理之前的知识储备)
  2. 计算机组成原理(知道什么是CPU,CPU是干嘛用的,怎么运行起来的)
  3. C语言(操作系统主要由C语言实现,了解基本语法和指针)
  4. 汇编(学习操作系统对汇编的要求很高,个人认为学完《汇编语言-王爽著》就差不多了)

‍

‍

‍

# 什么是操作系统

在讲什么是操作系统之前,我们先看看为什么会有操作系统,以此来理解操作系统的作用。

在计算机发展简史里我们可以知道,人们对计算的需求越来越大,计算的数据量也越来越高,因此人们发明了计算机,并不断提高计算机的性能,如今人们的生活越来越离不开计算机了。

那么,计算机是怎么构成的呢?根据计组里学的冯诺依曼结构,我们可以知道计算机由控制器,运算器,存储器,输入和输出设备组成。

​

‍

‍

如今,计算机已经包含了很多外设,例如键盘,鼠标,显示器等,如下:

image​

‍

计算机能帮助我们解决实际的问题,比如在早期用于战争时期的弹道计算,再比如如今我们用的PPT,浏览器,导航软件等等。

我们先来看一个最简单的例子:在屏幕上输出一个HelloWorld。怎么实现呢?我们要通过发送指令给CPU,让CPU执行。假设HelloWorld已经在内存里了,地址为300,那么首先是将H的ASCII码放到显存里(假设地址是77),那么显示器上就会显示一个字符H;下一步就是 显示字符 ‘e’,再下一步就是显示字符 ‘l’。所以输出HelloWorld,就得一个一个的,慢慢地放到显存上。这样,计算机就帮我们解决了一个问题:显示指定的字符串(这里需是汇编的知识)

我们思考一下,上述过程是不是太麻烦了?明明我们用C语言的话,我们只需一行代码就能解决:

printf("HelloWorld")

‍

那么,为什么C语言就能直接调用printf,不用操作硬件?因为操作系统帮我们操作了硬件。也就是说有了操作系统后,再使用计算机硬件就变得很简单。这就是为什么会有操作系统。

我们可以给操作系统下个简单的定义:在计算机硬件之上,封装了一层软件,使计算机使用起来更方便。这就是操作系统。

应用软件(我们平常使用的程序,浏览器,Word等)
操作系统(Windows,Linux等)
计算机硬件(CPU,内存,显卡等)

人们把只有计算机硬件的部分叫做裸机,(比如刚刚看到的CPU,内存条,显卡,显示器等),给裸机穿上衣服,使用起来就容易了

‍

那么,计算机管理哪些硬件呢?如下:

  1. CPU管理
  2. 内存管理
  3. 终端管理
  4. 磁盘管理
  5. 文件管理
  6. 网络管理
  7. 电源管理
  8. 多核CPU管理

后面三个暂且不表,我们先学习前面5个,这几个部分就是一台计算机必须的5个基本组成部分。一旦学完了这些部分,那么一台单CPU的操作系统是怎么工作的,我们就知道的七七八八了,后续再延伸学习网络管理和多核CPU管理就更容易。

‍

‍

‍

# 为什么要学习操作系统

身为这个行业的一员,操作系统是计算机最关键的一项技术了,如果我们只知道怎么使用操作系统,而不理解其内部的运作原理,是谈不上掌握这门关键技术的。

另一方面,我们出来社会上同其他人竞争,其他人是怎么学习操作系统的呢?比如斯坦福大学,他们是会做4个实验,会改动到操作系统里4个非常关键的部分,如果我们只知道一点皮毛的原理,是根本改动不了的。

而CMU(卡内基梅隆大学)更狠,直接从硬件上做一个系统出来,但只有经过这样的训练,在计算机行业中才能堪当大任。

虽然我们并不是打算比他们更狠,至少我们应该接近他们。

‍

‍

# 怎么学习操作系统

学习操作系统,有很多个层次。我们可以学习应用软件和操作系统之间的那一层,这也是很多同学学习的层次,比如知道有那些接口,怎么使用。但这样我们就只是知道一点皮毛,根本进不去操作系统。

image.png​

‍

‍

而本课程要做到的:是从接口深入进去,知道其内部是怎么运作的,比如printf是怎么实现的?进程是什么?知道这个后,我们至少可以扩充操作系统,能改动操作系统,也为编写一个操作系统打基础。

image.png​

‍

‍

而有的学校更狠,从硬件上配一个操作系统(例如CMU),这个要求是非常高的。

image.png​

‍

我们尽量集中在改造操作系统上,知道背后发生了什么事,而不仅仅知道其原理,跟要知道怎么用代码实现。本课程有8个实验认真做完后才算 真正地有改造操作系统的能力了。这里也借鉴斯坦福的一句话:Learn OS concepts by coding them!

‍

操作系统不简单,我们要阅读大量代码,撰写大量代码,不仅要知道代码,还要知道其背后原理;还要根据原理,能想到代码,两方面来回切换,对编程能力和抽象能力要求很高。

纸上觉来终觉浅,绝知此事要躬行。如果我们没有这样的决心,是学不好操作系统的,只有深入到操作系统内部,我们才能有这样的能力和国际接轨,掌握计算机的核心技术,同行业里的人进行同等的竞争。

‍

‍

# 总结

我们总结下本文讲述了什么:

  1. 什么是操作系统?操作系统简单来说就是硬件,能帮助我们更好的使用计算机硬件,管理计算机硬件
  2. 为什么要学操作系统?操作系统是计算机里的最关键的技术,学会它才能深刻掌握计算机原理。
  3. 怎么学习操作系统?学习操作系统有很多个层次,我们主要集中在能改动操作系统这一方面,并设置了8个实验

‍

‍

‍

# 参考

操作系统(哈工大李治军老师)32讲(全)超清_哔哩哔哩_bilibili (opens new window) 课程1

‍

在GitHub上编辑此页 (opens new window)
上次更新: 2022/10/23 11:52:34
计算机科学导论
从操作系统启动开始

← 计算机科学导论 从操作系统启动开始→

Theme by Vdoing | Copyright © 2022-2022 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式