2023-03-07
原文作者:程序员cxuan 原文地址:https://www.cnblogs.com/cxuanBlog

很多读者问我如何学习操作系统?推荐几本操作系统可以看的书?操作系统都需要学什么?有哪些视频可以看吗?下面我就针对性的对这些问题做一下我自己的阐述。

学习操作系统不是为了让你设计一个操作系统,而是为了让你更好的了解其运行原理。

如果你觉得操作系统有些难度的话,强烈推荐看一下我的这本 PDF。

程序员必知核心基础知识

这个 PDF 能让你对计算机的硬件和运行原理有基本的入门。

这本 PDF 可以说是对任何小白都适用了,如果你能看完,就说明你有一定的基础了,可以正式入门操作系统了。

我学习操作系统是根据机械工业出版社的《现代操作系统》第四版学习的。我是根据中文版和英文版结合来看的,看完你可能会很懵逼,但是没关系,就一句话很重要。

花 200 - 300 小时入门一门课程,然后在你职业生涯中,不时温习其中的精髓

操作系统学习之旅

下面是操作系统的大纲

202303072320501761.png

先对上面操作系统大纲有个印象,下面我会对每个章节放上我的文章和学习重点

202303072320512432.png

第一章 操作系统概述

在这一章节,你需要知道

202303072320523733.png

  • 什么是操作系统?什么是计算机系统?操作系统有什么用?操作系统满足了什么需求?什么是内核态和用户态?
  • 计算机都有哪些硬件?它们各自的作用是什么?内存的层次模型是什么?多线程和多核芯片的关系?为什么会出现高速缓存?磁盘的构造是什么?I/O 的三种方式是什么?中断的处理过程?总线是什么?
  • 都有哪些操作系统?
  • 操作系统都有哪几类抽象?进程是什么?什么是地址空间?文件是什么?什么是 shell?
  • 系统调用是什么?系统调用的分类
  • 操作系统的结构有哪些?单体系统、分层系统、微内核、客户-服务器模式都是什么意思?

你可以从下面我的文章中找到答案

写给大忙人看的操作系统

第二章 进程和线程

在这一章节,你需要知道下面这些内容

202303072320538614.png

  • 进程模型?进程创建的方式有几种?进程的终止方式?Unix 和 Windows 体系结构一样吗?什么是上下文切换?进程有哪几种实现?
  • 并行和并发一样吗?
  • 线程和进程一样吗?有了进程为什么还要有线程?什么是 POXIS 线程?线程实现有几种方式?
  • 进程间通信有几种方式?竞态条件是什么?临界区是什么?
  • 操作系统是如何调度的?进程有哪些行为?调度算法有哪些?调度的分类?

你可以从我下面这篇文章中找到答案

写给大忙人看的进程和线程

第三章 内存管理

在这一章,你需要知道下面这些知识点

202303072320559075.png

  • 什么是无存储器抽象?
  • 什么是有存储器抽象?什么是地址空间的概念?如何管理空闲内存空间?有哪些管理算法?
  • 页面置换算法有哪些?页面置换算法的优劣性对比?如何选择?
  • 什么是虚拟内存?为什么能运行比系统内存还多的程序?什么是页和页表?内存如何加载数据?页表的结构是什么?如何优化/加速分页过程?如果页表特别大,该采取哪种方式进行优化?

你可以从我下面这篇文章中找到答案

操作系统内存管理

第四章 文件系统管理

在这一章,你需要知道下面这些知识点

202303072320570096.png

  • 什么是文件?文件是一种抽象吗?文件的命名是怎样的?文件的结构是什么?文件有哪些类型?文件如何访问?属性是什么?文件如何操作?
  • 什么是一级语录系统?路径名是什么?
  • 文件系统布局是怎样的?文件系统实现有哪几种方式?inode 是什么?
  • 文件系统的管理和优化是什么?磁盘空间是如何管理的?文件备份是什么?如何进行文件备份?
  • 如何优化文件系统性能?

你可以从我下面这篇文章中找到答案

简直不要太硬了!一文带你彻底理解文件系统

第五章 I/O 管理

在这一章,你需要知道下面这些知识点

202303072320585537.png

  • I/O 设备都分为哪几类?各自的优缺点是什么?什么是内存映射I/O ,它的优缺点是什么?什么是 DMA? DMA 的工作原理?什么是中断?中断有哪些分类,各自是什么意思,如何解释?
  • I/O 的软件目标是什么?有哪几类 I/O 方式?
  • I/O 层次结构如何划分?
  • 磁盘是如何工作的?磁盘的构造?磁盘调度算法有哪些?磁盘如何处理错误?
  • 什么是时钟?各自解释一下时钟硬件、软件和定时器?

你可以从我下面这篇文章中找到答案

肝了很久!一文了解操作系统 I/O

第六章 死锁详解

202303072320596338.png

  • 操作系统是如何定义资源的?什么是可抢占资源和不可抢占资源?
  • 死锁的模型,死锁有哪几种类型?
  • 什么是鸵鸟算法?
  • 死锁如何检测?通过哪几种方式恢复死锁?
  • 如何避免死锁?
  • 如何破坏死锁?
  • 什么是资源死锁?除此之外还有哪些死锁方式?

你可以从我下面这篇文章中找到答案

写给大忙人看的死锁详解

操作系统概念和面试题

如果你看完计算机必知的核心基础知识后还是感觉有些吃力,不妨先看看我整理的操作系统核心概念

我写了一份操作系统词典送给你!

还有为你准备的操作系统面试题

看完这篇操作系统,和面试官扯皮就没问题了

操作系统学习资料

开源项目

首先给大家推荐一个非常好的开源项目

自学计算机科学

你不仅仅可以找到操作系统相关的资源,你还可以找到其他计算机黑皮书资源

202303072321006579.png

里面有一句话非常提神

如果你是一个自学成才的工程师,或者从编程培训班毕业,那么你很有必要学习计算机科学。幸运的是,不必为此花上数年光阴和不菲费用去攻读一个学位:仅仅依靠自己,你就可以获得世界一流水平的教育。

为什么有的人说学习计算机基础没有必要?现在看来简直是天方夜谭

软件工程师分为两种:一种充分理解了计算机科学,从而有能力应对充满挑战的创造性工作;另一种仅仅凭着对一些高级工具的熟悉而勉强应付。

这两种人都自称软件工程师,都能在职业生涯早期挣到差不多的工资。然而,随着时间流逝,第一种工程师不断成长,所做的事情将会越来越有意义且更为高薪,不论是有价值的商业工作、突破性的开源项目、技术上的领导力或者高质量的个人贡献。

学习视频

除此之外,我在 B 站上也给大家找来了一些学习视频

机械工业黑皮书系列 B 站视频

《现代操作系统》:https://www.bilibili.com/video/av9555596?from=search&seid=8107077283516919308

《算法导论》:https://www.bilibili.com/video/av48922404?from=search&seid=10653982037326460685

《深入理解计算机系统》:https://www.bilibili.com/video/av31289365?from=search&seid=16298868573410423104

《计算机网络:自顶向下方法》:https://www.bilibili.com/video/av41404195?from=search&seid=15854652450440912260

《计算机程序的构造和解释》:https://www.bilibili.com/video/av8515129?from=search&seid=537958487190286356

《编译原理》:https://www.bilibili.com/video/av17649289?from=search&seid=5673462623145874347

《数据库系统概念》:https://www.bilibili.com/video/BV1PJ411F78b?from=search&seid=2655021297331616552

操作系统书籍推荐

操作系统网站推荐

给大家推荐一些我在学习操作系统这门课的过程中,经常参考的网站

一般很少有人推荐操作系统的网站吧。。。。。。这几个网站来源于我平常的学习总结,也有一些是来源于网上优秀的回答,希望这几个网站能够助力你对操作系统有更深的认识。

studytonight

studytonight 简直太棒了!!! studytonight 会包括 operationg system,但是并不是说 studytonight 就是一个单纯的 OS 学习网站,它是一个基础教程网,它的首页是这样的,不仅限于 os ,还会包括 Java、C、CSS、OS、Computer network 等

2023030723210209810.png

这个页面一看就爱上了,和国内很多页面做的硬风格不同,这样的教程才不那么生硬和让人讨厌。在所有的素材库里面,有各种各样的教程

2023030723210306911.png

我们推荐的是操作系统,所以索性就点进去操作系统主页好了,点进去的页面就是这样的

studytonight 是一个对初学者来说学习操作系统的一个很友好的网站。

2023030723210410412.png

课程艺术主要分为三部分,由易到难分别是基础篇、中等篇、提高篇,我们点进去基础篇的第一篇

2023030723210530413.png
这一篇主要是对操作系统的介绍,操作系统的功能、操作系统任务等

通过简单的描述和图片来说明,让人感觉清晰易懂,很有目的性的学习,而且这些主题也可以作为面试题来考

2023030723210638114.png

你还真说对了,studytonight 还真的就有面试题

我们在 Test 页签下面会发现有很多面试题

2023030723210730315.png

我们选择 Operating System 进去之后会发现有很多的测试

2023030723210806016.png

是一个一体化的学习平台,适用于新手,我大致翻看了一下,里面的东西比较基础,受众广,是大家学习必备的一个网站。

udacity

udacity 是一个视频学习网站,界面看起来很清爽。

2023030723210898717.png

下面还有关于课程的介绍,同时你可以开始免费的课程,这个界面就是中文版了,让人眼前一亮

2023030723211046718.png

我的课程 就是你学过的所有课程,你可以在所有课程中搜索指定的课程,种类非常多

2023030723211153019.png

我们还是以操作系统为例,来看一下具体的课程

2023030723211303820.png

左面是具体的课程列表,右面是讲师授课部分,视频非常清晰,而且讲师吐字很清楚,可以锻炼英语。有一些小伙伴们说英文看不懂,对英文网而退却,这不是一个好习惯。英文在编程世界中的重要性不言而喻。所以英文是你一定要学好的一门语言。

2023030723211405121.png

讲师讲完课程之后还有具体的练习环节,作为学习巩固,非常不错。

udacity 的课程要比 studytonight 更深一些,操作系统这门课就分成了 22 堂课,每一堂课还有很多小节,真是一个非常好的网站。 我现在在写文章,我巴不得不写字了,马上学习! 。 还是忍住了,那就写完了马上去看!!!

tutorialspoint

tutorialspoint 这个网站也是一个资源教程网,这个网站的搜索指数非常高,基本上搜任何问题都有 tutorialspoint 的解释。

2023030723211519022.png

我们点进去 Library 之后发现,这就是教程宝库啊,罗列的非常清楚

2023030723211777723.png

tutorialspoint 也有视频教程,不过大多都收费。

2023030723211910524.png

教程非常多,不仅限于编程,也包含 Excel 、SAP 等教程。

tutorialspoint 还有电子书教程,不过大部分也是收费的,应该是 tutorialspoint 自己制作的 PDF,不知道写的怎么样,如果有兴趣的小伙伴可以付费下载,到时候记得给我发一份哦,嘿嘿。

2023030723212041125.png

说了这么多,我们还没有看 tutorialspoint 操作系统的主页呢

2023030723212171026.png

左边是导航栏,右边是具体的教程,这个样式感觉有些老,不过分类倒是很明确的,里面的内容要比 studytonight 差一些,也是一个入门非常好的教程网

classcentral

classcentral 这个网站有点强啊,里面汇总了各大名校的教程

2023030723212346627.png

我们发现了一个中文教程,一看是 南京大学 的教程,南京大学也是非常牛逼的一所学校,小编也有南大的基友在搞影视,其实我是一个被编程耽误的导演,狗头保命。

不扯皮了,来看看南大的课程

2023030723212507428.png

这么多牛逼的课程发现了中文大学,也侧面说明了我国大学在国际上的地位。Overview 是 OS 的总体介绍。

我们注册后点击开始课程,就进入讲课页面

2023030723212649429.png

课程分为 6 周,以视频的形式展开,我们开始 计算机系统概览

2023030723212765230.png

终于能看到国人讲的操作系统了!!!

右边还可以随时做笔记进行查看,课程还支持 下载 功能,非常不错!

2023030723213323831.png

好了我们该退出来了,一会儿又忍不住听课了!

nptel

仿佛见到了一个不得了的网站,这个网站的名字就隐隐的感觉有点牛逼。我们先看牛逼在哪,然后再看为什么牛逼

2023030723213503632.png

你能感觉出来牛逼了吗

这每一个目录都 TM 是一本书啊,虽然页数不多,但这确确实实是宝贝啊。

从操作系统概述到文件系统、进程管理、文件管理、I/O 管理等等等等。这还不是最牛逼的,最牛逼的是右边能免费 下载,你说气人不气人

2023030723213741433.png

每一章节都支持下载 PDF 版本。

我们带着好奇心,点开了 About Us

然后就看到了下面这段话

2023030723214357534.png

也就是说,这是一个 印度的国家增强型学习计划,也就是说,印度的各大名校联合推出的免费学习计划,这也能理解为什么印度人在电气、编程、通信方面能够越来越牛逼了。

2023030723214684735.png

这个网站你一定要看,我认为可以和黑皮书系列平起平坐了。

codescracker

codescracker 又是一个牛逼的网站,看完这个网站,我才觉得低调才是最牛逼的炫耀。。。

2023030723214846036.png

分类都非常全,解释的也很到位,但是 codescracker 并不只是一个 os 网站,它是一门编程语言的学习一站式平台,只不过网站比较简洁

2023030723215067937.png

可以看到有各种各样的教程,下面还是有测试类的,基本上企业用的语言都涵盖到了。

你必须要珍藏的一个网站。

sciencedirect

sciencedirect 这个网站真是太牛逼了。百度对 sciencedirect 的解释

2023030723215222738.png

不过 sciencedirect 大部分的 PDF 下载是需要收费的,感兴趣的小伙伴们可以购买

homepage

Homepage 是做什么的,一看主页就明白了

2023030723215435439.png

这是一个计算机科学和统计学的网站,然后我们点击 search 搜索 os 直接跳转到 os 的网站

2023030723215731340.png

然后就呵呵呵呵了,这个网站比较奇葩,它没有后退和前进的按钮,那怎么访问?

2023030723215859641.png

我是直接通过 url 访问的,主页就是 https://homepage.cs.uri.edu/faculty/wolfe/book/Readings/Reading01.htm

但是网站太硬核了,很好的一个学习资料哦。

computer.howstuffworks.com

computer.howstuffworks.com 就是一个计算机网站,它涵盖软件和硬件的方方面面。

2023030723215941142.png

Computer 知识包括 计算机硬件、网络、计算机软件、计算机秘密等等

都是一些讲的非常好的文章,可以说是计算机的百科全书了。

老样子我们点开 COMPUTER OPERATING SYSTEMS 专题,可以看到都是一些非常好的文章

2023030723220084143.png

加入收藏夹!

tldp.org

这个网站又是一个学习操作系统非常牛逼的网站,我都不知道今晚上说了多少次了,哈哈哈哈。

来看看主页是啥样的

2023030723220405944.png

这一看就是一个牛逼的网站,不要问我为什么,OS 的页面是这样的

2023030723220509145.png

没有任何点缀和装饰, 成年人的生活就这么朴实无华

bilibili

说到教程,怎么能没有我大 B 站?

各大视频厂家坐在一起谈论谁最牛逼,youtube 说,bilibili 你站起来,bilibili 很不情愿的说,"为什么"?"你站起来",youtube 说到,bilibili 很不情愿的站起来了,youbute 随后说: 我不是针对谁,各位在座的都是垃圾!

2023030723220693246.png

提出勘误

最后,提出几个我个人和读者发现的勘误。人非圣贤孰能无过,但是有错误还是要指出来的,以免大家碰到相同的问题无厘头,既浪费时间又没有效果,不去看英文原版的话很难发现问题。

2023030723220794647.png

2023030723220959348.png

2023030723221137749.png

2023030723221588550.png

阅读全文