LG-重學操作系統
背景介紹
操作系統(Operating System)作為一門計算機專業大學必修課,更是計算機領域的本源知識。任何編程語言學下去都會碰到操作系統知識,比如 Java 的虛擬機、Go 語言的協程與通道、Node.js 的 I/O 模型等。
如今在任何一家中大型互聯網公司,操作系統相關的內容,都已經成為你漲薪、過面試的高頻必考內容,比如 Linux 指令、中斷、多線程、并發、性能、內存管理、系統穩定性、文件系統、容器和虛擬化等,知識都來源于操作系統。
專欄解讀
這個專欄共 8 個模塊,39 講內容,80+ 大廠面試真題,帶你提升實際工作場景中的實戰能力,帶你輕松應對大廠面試。
另外,這門課程對標的是架構師層級的基礎能力,真正把內容學透,你對技術的理解就能達到阿里 P7 及以上層級。
1.全面知識體系+高頻面試考點:專欄內容體系全面,涵蓋面試中遇到的計算機原理與操作系統類問題的所有方向,每一個知識點都從大廠高頻面試題切入,引出實際業務問題與技術難點,每一模塊學完還有練習題加餐,從解題思路中鞏固所學,幫你重構知識體系,通關高頻考點。
2.從模塊一到模塊三,分別是計算機組成原理、Linux 指令入門、操作系統概述。這部分內容是學好操作系統必備的基礎知識,帶你從圖靈機和馮諾依曼模型講起,深 入Linux 指令,入門 Bash 編程,并幫助你在日志分析、性能監控、集群管理等方面做得更優秀。幫助你對比市面上的操作系統,比如 Win/Mac/Linux/Unix/Android 等,讓你對操作系統生態有一個整體的認識。
3.從模塊四到模塊八,分別是進程與線程、內存管理、文件系統、網路與安全、虛擬化與其他。這部分內容會圍繞進程展開學習操作系統的核心能力,帶你深入探索日常開發場景涉及的各個方面,比如多線程編程中的 AQS 的原理、數據同步中的樂觀鎖、高并發時有哪些提升性能的方法等等。這些內容是成為架構師的必備,也是所有開發者進階不可或缺的知識。
4.提高實際工作場景中的實戰能力。通過面試只是短期目標,本專欄除了講解系統知識與面試考點,還會結合高頻實戰場景深入分析,比如高并發、多線程編程技巧;數據庫底層(MySQL/Hadoop)的文件系統;如何從系統層面看容器化技術等等。理解這些問題背后的原理,你的實戰開發能力將得到質的提升。
目錄 /共51節
開篇詞
開篇詞 | 為什么大廠面試必考操作系統?
課前必讀 | 構建知識體系,可以這樣做!
模塊一:(前置知識)計算機組成原理
01 | 計算機是什么:“如何把程序寫好”這個問題是可計算的嗎?
02 | 程序的執行:相比 32 位,64 位的優勢是什么?(上)
03 | 程序的執行:相比 32 位,64 位的優勢是什么?(下)
04 | 構造復雜的程序:將一個遞歸函數轉成非遞歸函數的通用方法
05 | 存儲器分級:L1 Cache 比內存和 SSD 快多少倍?
加餐 | 練習題詳解(一)
模塊二: Linux 指令入門
06 | 目錄結構和文件管理指令:rm / -rf 指令的作用是?
07 | 進程、重定向和管道指令:xargs 指令的作用是?
08 | 用戶和權限管理指令: 請簡述 Linux 權限劃分的原則?
09 | Linux 中的網絡指令:如何查看一個域名有哪些 NS 記錄?
10 | 軟件的安裝: 編譯安裝和包管理器安裝有什么優勢和劣勢?
11 | 高級技巧之日志分析:利用 Linux 指令分析 Web 日志
12 | 高級技巧之集群部署:利用 Linux 指令同時在多臺機器部署程序
加餐 | 練習題詳解(二)
模塊三:操作系統基礎知識
13 | 操作系統內核:Linux 內核和 Windows 內核有什么區別?
14 | 用戶態和內核態:用戶態線程和內核態線程有什么區別?
15 | 中斷和中斷向量:Java/js 等語言為什么可以捕獲到鍵盤輸入?
16 | Win/Mac/Unix/Linux 的區別和聯系:為什么 Debian 漏洞排名第一還這么多人用?
加餐 | 練習題詳解(三)
模塊四: 進程和線程
17 | 進程和線程:進程的開銷比線程大在了哪里?
18 | 鎖、信號量和分布式鎖:如何控制同一時間只有 2 個線程運行?
19 | 樂觀鎖、區塊鏈:除了上鎖還有哪些并發控制方法?
20 | 線程的調度:線程調度都有哪些方法?
21 | 哲學家就餐問題:什么情況下會觸發饑餓和死鎖?
22 | 進程間通信: 進程間通信都有哪些方法?
23 | 分析服務的特性:我的服務應該開多少個進程、多少個線程?
加餐 | 練習題詳解(四)
模塊五:內存管理
24 | 虛擬內存 :一個程序最多能使用多少內存?
25 | 內存管理單元: 什么情況下使用大內存分頁?
26 | 緩存置換算法: LRU 用什么數據結構實現更合理?
27 | 內存回收上篇:如何解決內存的循環引用問題?
28 | 內存回收下篇:三色標記-清除算法是怎么回事?
加餐 | 練習題詳解(五)
模塊六:文件系統
29 | Linux 下的各個目錄有什么作用?
30 | 文件系統的底層實現:FAT、NTFS 和 Ext3 有什么區別?
31 | 數據庫文件系統實例:MySQL 中 B 樹和 B+ 樹有什么區別?
32 | HDFS 介紹:分布式文件系統是怎么回事?
加餐 | 練習題詳解(六)
模塊七: 網絡與安全
33 | 互聯網協議群(TCP/IP):多路復用是怎么回事?
34 | UDP 協議:UDP 和 TCP 相比快在哪里?
35 | Linux 的 I/O 模式:select/poll/epoll 有什么區別?
36 | 公私鑰體系和網絡安全:什么是中間人攻擊?
加餐 | 練習題詳解(七)
模塊八:虛擬化和其他
37 | 虛擬化技術介紹:VMware 和 Docker 的區別?
38 | 容器編排技術:如何利用 K8s 和 Docker Swarm 管理微服務?
39 | Linux 架構優秀在哪里?
40 | 商業操作系統:電商操作系統是不是一個噱頭?
加餐 | 練習題詳解(八)
結束語
結束語 | 論程序員的發展——信仰、選擇和博弈