美文网首页大数据
顶级运维工程师的692页操作系统价值观总结,代码竟也泄露了?

顶级运维工程师的692页操作系统价值观总结,代码竟也泄露了?

作者: 用嘴写代码 | 来源:发表于2020-10-08 16:57 被阅读0次

文末附彩蛋、运行效果图以及源代码

计算机相关专业的读者们在大学时都学习过《操作系统》这门课程。对于什么是操作系统,老师们普遍以理论概念为主进行教授,比如,什么是进程,什么是线程,什么是文件系统等知识点。可是,像进程与线程的创建过程、空间换时间的应用场景等内容却鲜有提及。不过,可能有些人觉得没有必要非常清楚这些问题,以前的我也曾有过此种想法。待到有幸从事几年Linux内核级的研发工作后,我才逐渐对上述问题有了比较直观、深刻的认知,并且慢慢体会到,如果不清楚操作系统原理,某些问题解决起来非常困难。

在计算机领域,中国的发展速度仍然落后于发达国家,师资力量不足是在所难免的。一些学校只是概括性地传授微机原理、汇编语言、计算机组成原理、编译原理、操作系统等基础知识,甚至还可能只将它们作为选修课程。但在工作多年的反思中才发现,它们是融会贯通计算机领域的必要知识,它们往往决定了一个人能在计算机行业走多远。而且,目前中国软件行业仍以外包为主,能够静下心来做技术储备、基础知识培训的自主研发型公司少之又少,这种局面使得我们想在工作中弥补基础知识依然十分困难。

现今,网络上已有不少关于操作系统实践类的文章和图书,这些文章和图书作为入门学习是很不错的选择。可是,这些文章和图书内容的一个通病是,操作系统普遍采用Intel 32位处理器的虚拟平台进行开发、研制。这个32位处理器的虚拟平台虽然学起来简单,但如果用到工作中举一反三的话,还是存在诸多差距与不足。比较典型的例子有,虚拟平台与物理平台在软硬件执行流程上的差异、多核处理器间的通信机制、高级中断控制器的配置、先进的64位处理器体系结构等,这些问题难以正确分析、推理及解决,会导致理论与实践脱节。

考虑到对操作系统感兴趣的读者不在少数,基础知识的掌握水平势必参差不齐。为了照顾到各个方面,本书将尽量做到既适合在校学习理论知识的初学者,又适合在职工作的软件工程师或有一定基础的业余爱好者。

《一个64位操作系统的设计与实现》讲述了一个64位多核操作系统的自制过程。首先从虚拟平台构筑起一个基础框架,随后再将基础框架移植到物理平台中进行升级、完善与优化。为了凸显64位多核操作系统的特点,物理平台选用搭载着Intel Core i7处理器的笔记本电脑。与此同时,本书还将Linux内核的源码精髓、诸多官方白皮书以及多款常用协议浓缩于其中,可使读者在读完本书后能够学以致用,进而达到理论联系实际的目的。

这不是一本由几万行代码简单罗列成的书,也不是一本由各种技术文档堆砌成的书。当你在学习计算机操作系统原理时迷失了方向,它会为你点亮一盏灯,照亮前方的路

本文将从目录、主要内容和总结这三部分的结构给大家介绍,同时附上部分运行效果图及源代码,希望大家能够喜欢!!

目录

主要内容

全书共16章。第1~2章讲述了操作系统的基础概念和开发操作系统需要掌握的知识;第3~-5章在虚拟平台下快速构建起一个操作系统模型;第6~16章将在物理平台下对操作系统模型做进一步升级、 优化和完善。

第一部分 操作系统相关知识介绍及环境搭建

这一部分将介绍操作系统相关知识及环境搭建方法,包含两章内容:

第1章操作系统概述;

第2章环境搭建及基础知识。

第1章操作系统概述:本章首先从宏观上介绍操作系统由哪几部分组成,然后介绍编写操作系统必须掌握的知识,最后再简要介绍本书操作系统。

本章主要向读者介绍如下内容

什么是操作系统

操作系统的组成结构

编写操作系统需要的知识

本书操作系统简介

第2章环境搭建及基础知识:本章介绍编写本书操作系统所需的基础知识、系统环境及环境搭建方法,大家不必在这方面耗费太多精力,本若够用就好的原则即可。

本章主要向读者介绍如下内容

虚拟机及开发系统平台介绍

汇编语言

C语言

第二部分初级篇

初级篇将快速搭建起一个操作系统雏形,使读者初步了解操作系统的组织结构、各模块的功能以及模块间的联系,包括如下3章内容。

第3章BootL oader引导启动程序:本章将采用一种简洁、高效的开发方式对BootLoader引导启动程序进行讲解,进而将BootL oader引导启动程序的整体概貌展现在读者面前,然后在高级篇里对BootI oader引导启动程序的更多技术细节再做进一步解释。

从这一章开始,将正式进入操作系统开发环节。话不多说,精彩即刻开始!

本章主要向读者介绍如下内容

Boot引导程序

Loader 引导加载程序

第4章内核层:经过BootLoader引导加载程序的洗礼后,现在正式进入系统内核程序的研发环节,本章将会把系统内核各个部分的基础功能展现在读者面前。当读者了解系统内核的基础功能后,高级篇再对这部分内容进行结构化和深入化。

本章主要向读者介绍如下内容

内核执行头程序

内核主程序

屏幕显示

系统异常

初级内存管理单元

中断处理

键盘驱动

进程管理

第5章应用层:经过前一章的学习,我们已经简单实现了操作系统的内核层程序。虽然这个系统的核心极其简陋,但它已是原理性知识的实践化,这就是种进步。内核层 主要是为应用层提供服务的, 既然内核层已经初步实现,本章将会把工作重心从内核层转移到应用层。

本章主要向读者介绍如下内容

跳转到应用层

实现系统调用API

实现一个系统调用处理函数

第三部分高级篇

高级篇将会补充讲解初级篇跳过的复杂内容,并在此基础上进行诸多功能扩展和原理性描述,相关章节包括如下内容:其中,第6章是对处理器体系结构的探索,主要针对Intel处理器在各种运行模式下的寻址方式进行讲解;第7章补充了初级篇引导启动部分遗漏的内容,并将BootLoader程序移植到物理平台;第8~14章属于内核层的内容,这部分内容深化并升级了初级篇的系统内核,使其功能更加丰富、健壮;第15章属于应用层的内容,它将-一个只能显示Hello World !的应用程序,演变成一个具备交互能力的Shell命令解析器。

第6章处理器体系结构:本章主要介绍Intel处理器体系结构相关知识,并结合这些知识对初级篇编写的程序进行补充讲解,从而使读者们更加直观地学习这部分内容。限于篇幅,本章将主要讲解Intel处理器的基础功能、各种运行模式的特点、各个地址空间的转换过程及方法等常用知识,而像高级中断控制器( APIC )、多核处理器管理等知识将会在需要时另作补充。

本章主要向读者介绍如下内容

基础功能与新特性

地址空间

实模式

保护模式

IA-32e模式

第7章完善BootLoader功能:本章将会对初级篇编写的BootL oader程序进行升级和完善,并补充讲解遗漏的技术细节。而且从本章开始我们将进入物理平台的研发工作,光听听就会觉得这是一件令人热血沸腾的事,想必读者已经期待物理平台的讲解许久了。

本章主要向读者介绍如下内容

实模式的寻址瓶颈

获取物理地址空间信息

操作系统引导加载阶段的内存空间划分

U盘启动

在物理平台上启动操作系统

细说VBE功能的实现

第8章内核主程序:本章将会继续对初级篇中的内核主程序进行功能性补充,并对操作系统的地址空间划分情况以及此前遗漏的编译、链接等知识予以补充说明。

本章主要向读者介绍如下内容

内核主程序功能概述

操作系统的Makefile编译脚本.

操作 系统的kernel.lds链接脚本

操作系统的线性地址空间划分.

获得处理器的固件信息

第9章高级内存管理单元:本章内容仍将涉及内存和物理页的分配/回收算法,虽然在初级内存管理单元一节中, 已经实现了对物理内存信息的检测,并初步实现了物理页的分配功能,但这些功能还不够强大,不足以支撑整个系统内核的正常运行,因此需要通过本章内容对现有内存管理单元进行补充完全。

本章主要向读者介绍如下内容

SLAB内存池

基于SLAB内存池技术的通用内存管理单元

调整物理页管理功能

页表初始化

第10章高级中断处理单元:在初级篇中,我们已经实现了单核处理器的中断处理单元,它基于8259A PIC实现,是单核处理器时代的典型中断控制器芯片。由于8259A芯片只能将中断请求信号投递给一个指定的处理器,所以当多核处理器问世后,如果依然沿用此类芯片,则在爆发大量中断请求时,此类芯片势必会影响处理器对它们的响应速度。

本章主要向读者介绍如下内容

APIC概述

Local APIC

I/O APIC

中断控制器的模式选择与初始化

高级中断处理功能

第11章设备驱动程序:本章将涉及键盘、鼠标控制器的配置,键盘扫描码的解析,鼠标数据包格式的解析,硬盘控制器协议的使用等知识点。

本章主要向读者介绍如下内容

键盘和鼠标驱动程序

硬盘驱动程序

第12章进程管理:经过设备驱动程序一章的洗礼后,本章将对初级篇的进程管理单元(或称进程管理模块)进行补充、升级与完善,这一过程将涉及多核处理器、进程调度、临界区竞争、进程间通信等重要内容和相关知识点。相信经过此次升级后的进程管理单元会更加精彩。

本章主要向读者介绍如下内容

进程管理单元功能概述

多核处理器

进程调度器

内核同步方法

完善进程管理单元

第13章文件系统:本章将带领读者实现功能更强大的FAT32文件系统。

本章主要向读者介绍如下内容

文件系统概述

解析FAT32文件系统

虚拟文件系统

第14章系统调用API库:本章将在适当参考POSIX规范标准的基础上,从现有核心模块中为应用程序抽象出系统调用API。

本章主要向读者介绍如下内容

系统调用API结构

基于POSIX规范实现系统调用

第15章Shell命令解析器及命令:经过对POSIX规范的粗浅学习和系统调用API的简单实现后,应用程序已能够在系统内核的帮助下实现一些基础操作。本章将在此基础上实现Shell命令解析器和若干基础命令,以增强操作系统的功能和使用体验。此举不仅可以有针对性地实现更多系统调用API、扩大应用程序对系统调用API的测试范围,而且还为操作系统引入交互功能,可谓一举多得。

本章主要向读者介绍如下内容

Shell命令解析器

基础命令

第16章一个彩蛋:当读者看到此处时,想必大多数人都会觉得意犹未尽,同时也盼望着尽早看完本书后能够大干一番。虽然本操作系统的主体内容已经结束,但考虑到许多初学者会在调试阶段反复反汇编system文件去查找问题,为了让异常信息便于观察和理解,本节特意为读者引入内核栈反向跟踪技术,此技术可在内核触发异常时打印出内核层的函数调用过程。

这份【一个64位操作系统的设计与实现】共有692页,需要完整版的小伙伴,可以转发此文关注小编,私信小编【学习】或【资料】来获取!!

一个64位操作系统的设计与实现(运行效果图)

由于篇幅限制在这里只给大家展示部分,完整版可获取

初级篇

第3章

第4章

第5章

高级篇

第7章

第9章

第13章

第16章

一个64位操作系统的设计与实现-源代码

以高级篇第16章为例:

以上文档、运行效果图及源代码均免费分享,有需要获取用于学习的朋友,帮忙转发一下,关注小编,私信【学习】或【资料】获取即可

希望大家能把本文的内容认真学习到手,并且能够灵活运用到工作当中,增加自己的技术深度和广度,让自己变得更有价值!

也希望本文能够得到大家的喜欢!

相关文章

网友评论

    本文标题:顶级运维工程师的692页操作系统价值观总结,代码竟也泄露了?

    本文链接:https://www.haomeiwen.com/subject/mxjhpktx.html