小白如何学操作系统?
共 6712字,需浏览 14分钟
· 2020-08-05
点击蓝色“程序员cxuan ”关注我哟
加个“星标”,欢迎来撩
很多读者问我如何学习操作系统?推荐几本操作系统可以看的书?操作系统都需要学什么?有哪些视频可以看吗?下面我就针对性的对这些问题做一下我自己的阐述。
学习操作系统不是为了让你设计一个操作系统,而是为了让你更好的了解其运行原理。
如果你觉得操作系统有些难度的话,强烈推荐看一下我的这本 PDF。
这个 PDF 能让你对计算机的硬件和运行原理有基本的入门。
这本 PDF 可以说是对任何小白都适用了,如果你能看完,就说明你有一定的基础了,可以正式入门操作系统了。
我学习操作系统是根据机械工业出版社的《现代操作系统》第四版学习的。我是根据中文版和英文版结合来看的,看完你可能会很懵逼,但是没关系,就一句话很重要。
「花 200 - 300 小时入门一门课程,然后在你职业生涯中,不时温习其中的精髓」
操作系统学习之旅
下面是操作系统的大纲
先对上面操作系统大纲有个印象,下面我会对每个章节放上我的文章和学习重点
第一章 操作系统概述
在这一章节,你需要知道
什么是操作系统?什么是计算机系统?操作系统有什么用?操作系统满足了什么需求?什么是内核态和用户态? 计算机都有哪些硬件?它们各自的作用是什么?内存的层次模型是什么?多线程和多核芯片的关系?为什么会出现高速缓存?磁盘的构造是什么?I/O 的三种方式是什么?中断的处理过程?总线是什么? 都有哪些操作系统? 操作系统都有哪几类抽象?进程是什么?什么是地址空间?文件是什么?什么是 shell? 系统调用是什么?系统调用的分类 操作系统的结构有哪些?单体系统、分层系统、微内核、客户-服务器模式都是什么意思?
你可以从下面我的文章中找到答案
第二章 进程和线程
在这一章节,你需要知道下面这些内容
进程模型?进程创建的方式有几种?进程的终止方式?Unix 和 Windows 体系结构一样吗?什么是上下文切换?进程有哪几种实现? 并行和并发一样吗? 线程和进程一样吗?有了进程为什么还要有线程?什么是 POXIS 线程?线程实现有几种方式? 进程间通信有几种方式?竞态条件是什么?临界区是什么? 操作系统是如何调度的?进程有哪些行为?调度算法有哪些?调度的分类?
你可以从我下面这篇文章中找到答案
第三章 内存管理
在这一章,你需要知道下面这些知识点
什么是无存储器抽象? 什么是有存储器抽象?什么是地址空间的概念?如何管理空闲内存空间?有哪些管理算法? 页面置换算法有哪些?页面置换算法的优劣性对比?如何选择? 什么是虚拟内存?为什么能运行比系统内存还多的程序?什么是页和页表?内存如何加载数据?页表的结构是什么?如何优化/加速分页过程?如果页表特别大,该采取哪种方式进行优化?
你可以从我下面这篇文章中找到答案
第四章 文件系统管理
在这一章,你需要知道下面这些知识点
什么是文件?文件是一种抽象吗?文件的命名是怎样的?文件的结构是什么?文件有哪些类型?文件如何访问?属性是什么?文件如何操作? 什么是一级语录系统?路径名是什么? 文件系统布局是怎样的?文件系统实现有哪几种方式?inode 是什么? 文件系统的管理和优化是什么?磁盘空间是如何管理的?文件备份是什么?如何进行文件备份? 如何优化文件系统性能?
你可以从我下面这篇文章中找到答案
第五章 I/O 管理
在这一章,你需要知道下面这些知识点
I/O 设备都分为哪几类?各自的优缺点是什么?什么是内存映射I/O ,它的优缺点是什么?什么是 DMA?DMA 的工作原理?什么是中断?中断有哪些分类,各自是什么意思,如何解释? I/O 的软件目标是什么?有哪几类 I/O 方式? I/O 层次结构如何划分? 磁盘是如何工作的?磁盘的构造?磁盘调度算法有哪些?磁盘如何处理错误? 什么是时钟?各自解释一下时钟硬件、软件和定时器?
你可以从我下面这篇文章中找到答案
第六章 死锁详解
在这一章,你需要知道下面这些知识点
操作系统是如何定义资源的?什么是可抢占资源和不可抢占资源? 死锁的模型,死锁有哪几种类型? 什么是鸵鸟算法? 死锁如何检测?通过哪几种方式恢复死锁? 如何避免死锁? 如何破坏死锁? 什么是资源死锁?除此之外还有哪些死锁方式?
你可以从我下面这篇文章中找到答案
操作系统概念和面试题
如果你看完计算机必知的核心基础知识后还是感觉有些吃力,不妨先看看我整理的操作系统核心概念
还有为你准备的操作系统面试题
操作系统学习资料
开源项目
首先给大家推荐一个非常好的开源项目
自学计算机科学
https://link.zhihu.com/?target=https%3A//github.com/keithnull/TeachYourselfCS-CN/blob/master/TeachYourselfCS-CN.md
你不仅仅可以找到操作系统相关的资源,你还可以找到其他计算机黑皮书资源
里面有一句话非常提神
❝如果你是一个自学成才的工程师,或者从编程培训班毕业,那么你很有必要学习计算机科学。幸运的是,不必为此花上数年光阴和不菲费用去攻读一个学位:仅仅依靠自己,你就可以获得世界一流水平的教育。
❞
为什么有的人说学习计算机基础没有必要?现在看来简直是天方夜谭
❝软件工程师分为两种:一种充分理解了计算机科学,从而有能力应对充满挑战的创造性工作;另一种仅仅凭着对一些高级工具的熟悉而勉强应付。
这两种人都自称软件工程师,都能在职业生涯早期挣到差不多的工资。然而,随着时间流逝,第一种工程师不断成长,所做的事情将会越来越有意义且更为高薪,不论是有价值的商业工作、突破性的开源项目、技术上的领导力或者高质量的个人贡献。
❞
学习视频
除此之外,我在 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
操作系统书籍推荐
《操作系统导论》 强烈推荐,国外经典教材《Operating Systems:Three Easy Pieces》的中文版 《操作系统精髓与设计原理》 《深入理解计算机系统》 《现代操作系统》 《操作系统设计与实现》 《Linux内核设计与实现》 《深入理解linux内核》 《Linux设备驱动程序》 《Linux内核完全剖析》 《UNIX操作系统设计》
操作系统网站推荐
给大家推荐一些我在学习操作系统这门课的过程中,经常参考的网站
一般很少有人推荐操作系统的网站吧。。。。。。这几个网站来源于我平常的学习总结,也有一些是来源于网上优秀的回答,希望这几个网站能够助力你对操作系统有更深的认识。
studytonight
studytonight 简直太棒了!!!studytonight 会包括 operationg system
,但是并不是说 studytonight 就是一个单纯的 OS 学习网站,它是一个基础教程网,它的首页是这样的,不仅限于 os ,还会包括 「Java、C、CSS、OS、Computer network 等」。
![](https://filescdn.proginn.com/7c82df85672dd4315856085c38b99905/aa5d23ffbc379a4019f21125483bb255.webp)
这个页面一看就爱上了,和国内很多页面做的硬风格不同,这样的教程才不那么生硬和让人讨厌。在所有的素材库里面,有各种各样的教程
![](https://filescdn.proginn.com/10ed7ceb776b43517525b2fdabee0096/1c90c999777251b8d572622789438553.webp)
我们推荐的是操作系统,所以索性就点进去操作系统主页好了,点进去的页面就是这样的
studytonight 是一个对初学者来说学习操作系统的一个很友好的网站。
![](https://filescdn.proginn.com/0c96cae2a8902885b0b6bbf79682c607/409431114bdd0a55c5c491d437c7035b.webp)
课程艺术主要分为三部分,由易到难分别是基础篇、中等篇、提高篇,我们点进去基础篇的第一篇
这一篇主要是对操作系统的介绍,操作系统的功能、操作系统任务等
通过简单的描述和图片来说明,让人感觉清晰易懂,很有目的性的学习,而且这些主题也可以作为面试题来考
![](https://filescdn.proginn.com/6dfb0d83d1054e1468ae34c043493ff3/2a420dd1a6290ae78bcff08ca5509ecc.webp)
你还真说对了,studytonight 还真的就有面试题
我们在 Test 页签下面会发现有很多面试题
![](https://filescdn.proginn.com/6495d0d541f26e079fa2f8ba93e2611a/319c6efc1a1fbfa8031e3f2251f3466e.webp)
我们选择 「Operating System」 进去之后会发现有很多的测试
![](https://filescdn.proginn.com/8c51efa791f38fdd05b0726a74a67b3a/e1fb9c2bdbc0e1446597ae86786a1fcb.webp)
是一个一体化的学习平台,适用于新手,我大致翻看了一下,里面的东西比较基础,受众广,是大家学习必备的一个网站。
udacity
udacity 是一个视频学习网站,界面看起来很清爽。
![](https://filescdn.proginn.com/0ec3a330b29ccb59123d74e398c58a66/3b124db596c87b9b1d2bea2929f2ebb5.webp)
下面还有关于课程的介绍,同时你可以开始免费的课程,这个界面就是中文版了,让人眼前一亮
![](https://filescdn.proginn.com/99fbc005fa3efccb8a2ce8fd16562584/8ecd0a3c77dc1446be1b86b9f7e4726d.webp)
我的课程
就是你学过的所有课程,你可以在所有课程中搜索指定的课程,种类非常多
![](https://filescdn.proginn.com/06d2ca175fff809cc82c0e40bec4e7a6/f64cc85d699718c9b86a4609d6c6de05.webp)
我们还是以操作系统为例,来看一下具体的课程
![](https://filescdn.proginn.com/3465352e73bb85b0c9b1693962019e9a/77244668b26d6b95a68ecb6503df7974.webp)
左面是具体的课程列表,右面是讲师授课部分,视频非常清晰,而且讲师吐字很清楚,可以锻炼英语。有一些小伙伴们说英文看不懂,对英文网而退却,这不是一个好习惯。英文在编程世界中的重要性不言而喻。所以英文是你一定要学好的一门语言。
![](https://filescdn.proginn.com/3d69c0b2a3c6d01d3a1a17b5e23ed577/5f7cc79c4262a5a5cf2c18536f371d24.webp)
讲师讲完课程之后还有具体的练习环节,作为学习巩固,非常不错。
udacity 的课程要比 studytonight 更深一些,操作系统这门课就分成了 22 堂课,每一堂课还有很多小节,真是一个非常好的网站。「我现在在写文章,我巴不得不写字了,马上学习!」。还是忍住了,那就写完了马上去看!!!
tutorialspoint
tutorialspoint 这个网站也是一个资源教程网,这个网站的搜索指数非常高,基本上搜任何问题都有 tutorialspoint 的解释。
![](https://filescdn.proginn.com/420f81e97fdac8f37c6629da96e555de/176f6cb6e8b5eb253983e407fb7c0945.webp)
我们点进去 Library 之后发现,这就是教程宝库啊,罗列的非常清楚
![](https://filescdn.proginn.com/f116da11e8c8ee72271cde89b2410c68/e67064fd8ef37bb1f2cd00c817daf0c3.webp)
tutorialspoint 也有视频教程,不过大多都收费。
![](https://filescdn.proginn.com/02c901cd5e9aec07bb338e25aed83a39/f3da342e8ff5da5e93ce36f275c511db.webp)
教程非常多,不仅限于编程,也包含 Excel 、SAP 等教程。
tutorialspoint 还有电子书教程,不过大部分也是收费的,应该是 tutorialspoint 自己制作的 PDF,不知道写的怎么样,如果有兴趣的小伙伴可以付费下载,到时候记得给我发一份哦,嘿嘿。
![](https://filescdn.proginn.com/d6b1bbba0c28207e0864141bea9c3729/e0761d693246f15aa3bf583524ed3fd3.webp)
说了这么多,我们还没有看 tutorialspoint 操作系统的主页呢
![](https://filescdn.proginn.com/1d4fee13b27ed3497d0d41da37fb8a6c/8d921d73b5d939de886b2e6d581877dd.webp)
左边是导航栏,右边是具体的教程,这个样式感觉有些老,不过分类倒是很明确的,里面的内容要比 studytonight 差一些,也是一个入门非常好的教程网
classcentral
classcentral 这个网站有点强啊,里面汇总了各大名校的教程
![](https://filescdn.proginn.com/3a669c30e179dec2fd8fcc2c06862791/c25850c62a9d927a686e565b7d311cae.webp)
我们发现了一个中文教程,一看是 南京大学
的教程,南京大学也是非常牛逼的一所学校,小编也有南大的基友在搞影视,其实我是一个被编程耽误的导演,狗头保命。
不扯皮了,来看看南大的课程
![](https://filescdn.proginn.com/78c7b6750aee6e5e1cabe942764b72a5/b86dfcd9eccb117b477791125855361d.webp)
这么多牛逼的课程发现了中文大学,也侧面说明了我国大学在国际上的地位。Overview
是 OS 的总体介绍。
我们注册后点击开始课程,就进入讲课页面
![](https://filescdn.proginn.com/4341dbd340fb1f2719c1da695f20b0a0/55da11d9773d8b80f8c93195aeac1852.webp)
课程分为 6 周,以视频的形式展开,我们开始 计算机系统概览
。
![](https://filescdn.proginn.com/0402e9b18eea9408bc1af98d3d951f6a/8960241090be768790067cb89b9972e2.webp)
终于能看到国人讲的操作系统了!!!
右边还可以随时做笔记进行查看,课程还支持 下载
功能,非常不错!
![](https://filescdn.proginn.com/27eeae71259b80352fe934e0b5c80add/eaf2a68b1695c771857373ed50b0ac75.webp)
好了我们该退出来了,一会儿又忍不住听课了!
nptel
仿佛见到了一个不得了的网站,这个网站的名字就隐隐的感觉有点牛逼。我们先看牛逼在哪,然后再看为什么牛逼
![](https://filescdn.proginn.com/6deb20124137b5b56351fe3d10c32660/7ac4401b4a071cf5c254028557d45202.webp)
「你能感觉出来牛逼了吗」?
这每一个目录都 TM 是一本书啊,虽然页数不多,但这确确实实是宝贝啊。
从操作系统概述到文件系统、进程管理、文件管理、I/O 管理等等等等。这还不是最牛逼的,最牛逼的是右边能免费 下载
,你说气人不气人
![](https://filescdn.proginn.com/25acc7f83a46f96b1722f96f0b677c17/1ec2aee88315da165fdf2337a4abc4c7.webp)
每一章节都支持下载 PDF 版本。
我们带着好奇心,点开了 About Us
。
然后就看到了下面这段话
![](https://filescdn.proginn.com/213eac05fc18519b76e9a2a3ca35634c/d96041aee13edb1f0391a1d026eb4e53.webp)
也就是说,这是一个 印度的国家增强型学习计划,也就是说,印度的各大名校联合推出的免费
学习计划,这也能理解为什么印度人在电气、编程、通信方面能够越来越牛逼了。
![](https://filescdn.proginn.com/07164c97b2b297574e4368e3bf460e3d/77043c1f142e7087bb35af3dc17e8946.webp)
这个网站你一定要看,我认为可以和黑皮书系列平起平坐了。
codescracker
codescracker 又是一个牛逼的网站,看完这个网站,我才觉得低调才是最牛逼的炫耀。。。
![](https://filescdn.proginn.com/3dbfa3b5d2c6e6d5de6552e300b95ebd/f60f342d9b3e90dd80d9c1fc3f2484ed.webp)
分类都非常全,解释的也很到位,但是 codescracker
并不只是一个 os 网站,它是一门编程语言的学习一站式平台,只不过网站比较简洁
![](https://filescdn.proginn.com/3964f03728e78fbf8edefd42c9c846e8/e2e13378e6fbd8d1dc165be32e7fdd58.webp)
可以看到有各种各样的教程,下面还是有测试类的,基本上企业用的语言都涵盖到了。
你必须要珍藏的一个网站。
sciencedirect
sciencedirect 这个网站真是太牛逼了。百度对 sciencedirect 的解释
![](https://filescdn.proginn.com/2244688172aafc84f0303bd1461a5b8d/ae24e9b01caf020ecd0f03bea3fa3fa4.webp)
不过 sciencedirect 大部分的 PDF 下载是需要收费的,感兴趣的小伙伴们可以购买
homepage
Homepage 是做什么的,一看主页就明白了
![](https://filescdn.proginn.com/1a34b81834e74422c3219034a9ae4858/9e64f6753af36566caa95d98f466edb8.webp)
这是一个计算机科学和统计学的网站,然后我们点击 search 搜索 os 直接跳转到 os 的网站
![](https://filescdn.proginn.com/ec524475368aafb46bda6fef4f467177/b8b2eea0a9fa0bced007685178b7068d.webp)
然后就呵呵呵呵了,这个网站比较奇葩,它没有后退和前进的按钮,那怎么访问?
![](https://filescdn.proginn.com/41918b64f538caa163c1cb4fdffd4a30/d27c20200c98d131be7af728fddeddbd.webp)
我是直接通过 url 访问的,主页就是 https://homepage.cs.uri.edu/faculty/wolfe/book/Readings/Reading01.htm
但是网站太硬核了,很好的一个学习资料哦。
computer.howstuffworks.com
computer.howstuffworks.com 就是一个计算机网站,它涵盖软件和硬件的方方面面。
![](https://filescdn.proginn.com/970ad4fbcc7b2ac87d18eb9bd1575e46/b6e6974a0ffe066e035cd92faf905874.webp)
Computer 知识包括 「计算机硬件、网络、计算机软件、计算机秘密等等」
都是一些讲的非常好的文章,可以说是计算机的百科全书了。
老样子我们点开 COMPUTER OPERATING SYSTEMS 专题,可以看到都是一些非常好的文章
![](https://filescdn.proginn.com/4165fa1b2e1c90eb8e60566fe9e15661/5be3b727105d27cbbfaa8d98c2463dc0.webp)
加入收藏夹!
tldp.org
这个网站又是一个学习操作系统非常牛逼的网站,我都不知道今晚上说了多少次了,哈哈哈哈。
来看看主页是啥样的
![](https://filescdn.proginn.com/dbf3eb9b9194f6552f15420a18b42de7/c6f21895f2777814c0e3ba4fffbc8a5c.webp)
这一看就是一个牛逼的网站,不要问我为什么,OS 的页面是这样的
![](https://filescdn.proginn.com/1fcc448fb9f6d9429c9ff510362bd541/f97fff11921b0135b52a3a2913de36f2.webp)
没有任何点缀和装饰,「成年人的生活就这么朴实无华」。
bilibili
说到教程,怎么能没有我大 B 站?
各大视频厂家坐在一起谈论谁最牛逼,youtube 说,bilibili 你站起来,bilibili 很不情愿的说,"为什么"?"你站起来",youtube 说到,bilibili 很不情愿的站起来了,youbute 随后说:「我不是针对谁,各位在座的都是垃圾!」
![](https://filescdn.proginn.com/f6e8c735cf5fb277df9a8883cd784201/1b69ad61b25fa108e8e0c8c3da9de59b.webp)
提出勘误
最后,提出几个我个人和读者发现的勘误。人非圣贤孰能无过,但是有错误还是要指出来的,以免大家碰到相同的问题无厘头,既浪费时间又没有效果,不去看英文原版的话很难发现问题。
❝注:如果你在学习过程中也发现了勘误,欢迎添加我的微信 lx252279279,我可以帮助你反馈。
❞
最后
— 【 THE END 】— 本公众号全部博文已整理成一个目录,请在公众号里回复「m」获取! 3T技术资源大放送!包括但不限于:Java、C/C++,Linux,Python,大数据,人工智能等等。在公众号内回复「1024」,即可免费获取!!