小白如何学操作系统?(一)

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

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

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

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

程序员必知核心基础知识

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

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

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

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

操作系统学习之旅

下面是操作系统的大纲

微信图片_20220414205052.png

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

微信图片_20220414205057.png

第一章 操作系统概述

在这一章节,你需要知道

微信图片_20220414205101.png

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

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

写给大忙人看的操作系统

第二章 进程和线程

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

微信图片_20220414205105.png

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

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

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

第三章 内存管理

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

微信图片_20220414205110.png

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

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

操作系统内存管理

第四章 文件系统管理

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

微信图片_20220414205113.png

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

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

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

第五章 I/O 管理

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

微信图片_20220414205121.png

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

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

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

第六章 死锁详解

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

微信图片_20220414205129.png

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

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

写给大忙人看的死锁详解

操作系统概念和面试题

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

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

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

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

操作系统学习资料

开源项目

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

自学计算机科学

https://link.zhihu.com/?target=https%3A//github.com/keithnull/TeachYourselfCS-CN/blob/master/TeachYourselfCS-CN.md

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

微信图片_20220414205137.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

相关文章
|
2月前
|
存储 算法 安全
|
2月前
|
存储 缓存 算法
|
2月前
|
存储 算法 Unix
|
3月前
|
存储 Unix Linux
进阶操作系统
进阶操作系统
34 1
进阶操作系统
|
8月前
|
存储 缓存 算法
操作系统笔记【面试】
操作系统笔记【面试】
47 1
|
10月前
|
存储 安全 Linux
计算机基础——操作系统
计算机基础——操作系统
116 0
|
算法 安全 调度
操作系统学习(二):浅析多级反馈队列MLFQ
在上篇文章操作系统学习(一):浅析操作系统进程调度算法中讲到,在一个通用的操作系统中,操作系统通常对每个作业的长度知之甚少。因此,我们如何建立一个没有这种先验知识的 SJF/STCF?更进一步,我们如何能够将已经看到的一些想法与 RR 调度程序结合起来,以便响应时间也变得很好?没有工作长度的先验(priori)知识,如何设计一个能同时减少响应时间和周转时间的调度程序? 多级反馈队列是用历史经验预测未来的一个典型的例子,操作系统中有很多地方采用了这种技术。
198 0
操作系统学习(二):浅析多级反馈队列MLFQ
|
人机交互
操作系统笔记
操作系统笔记
67 0
|
消息中间件 存储 算法
考研操作系统【1.3 操作系统运行环境】
考研操作系统【1.3 操作系统运行环境】
402 0
考研操作系统【1.3 操作系统运行环境】
|
缓存 程序员 编译器
考研操作系统【1.1 操作系统的基本概念】
考研操作系统【1.1 操作系统的基本概念】
120 0