一个64位操作系统的设计与实现 pdf 电子书 免费 下载地址

一个64位操作系统的设计与实现 pdf格式下载
一个64位操作系统的设计与实现书籍详细信息
  • ISBN:9787115475251
  • 作者:田宇 
  • 出版社:人民邮电出版社
  • 出版时间:2018-5
  • 页数:692
  • 价格:139.00元
  • 纸张:暂无纸张
  • 装帧:暂无装帧
  • 开本:暂无开本
  • 语言:未知
  • 丛书:图灵原创
  • TAG:暂无
  • 豆瓣评分:暂无豆瓣评分
  • 豆瓣短评:点击查看
  • 豆瓣讨论:点击查看
  • 豆瓣目录:点击查看
  • 读书笔记:点击查看
  • 原文摘录:点击查看
  • 更新时间:2024-06-01 01:26:09

内容简介:

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

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

本书既适合在校学习理论知识的初学者,又适合在职工作的软件工程师或有一定基础的业余爱好者。


书籍目录:

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

第1章 操作系统概述  4

1.1 什么是操作系统  4

1.2 操作系统的组成结构  4

1.3 编写操作系统需要的知识  7

1.4 本书操作系统简介  8

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

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

2.1.1 VMware的安装  9

2.1.2 编译环境CentOS 6  10

2.1.3 Bochs虚拟机  11

2.2 汇编语言  14

2.2.1 AT&T汇编语言格式与Intel汇编语言格式  14

2.2.2 NASM编译器  16

2.2.3 使用汇编语言调用C语言的函数  16

2.3 C语言  19

2.3.1 GNU C内嵌汇编语言  20

2.3.2 GNU C语言对标准C语言的扩展  23

第二部分 初级篇

第3章 BootLoader引导启动程序  30

3.1 Boot引导程序  30

3.1.1 BIOS引导原理  31

3.1.2 写一个Boot引导程序  32

3.1.3 创建虚拟软盘镜像文件  36

3.1.4 在Bochs上运行我们的Boot程序  38

3.1.5 加载Loader到内存  40

3.1.6 从Boot跳转到Loader程序  52

3.2 Loader引导加载程序  54

3.2.1 Loader原理  54

3.2.2 写一个Loader程序  55

3.2.3 从实模式进入保护模式再到IA-32e模式  65

3.2.4 从Loader跳转到内核程序  75

第4章 内核层  78

4.1 内核执行头程序  78

4.1.1 什么是内核执行头程序  78

4.1.2 写一个内核执行头程序  79

4.2 内核主程序  83

4.3 屏幕显示  85

4.3.1 在屏幕上显示色彩  86

4.3.2 在屏幕上显示log  88

4.4 系统异常  100

4.4.1 异常的分类  101

4.4.2 系统异常处理(一)  102

4.4.3 系统异常处理(二)  109

4.5 初级内存管理单元  121

4.5.1 获得物理内存信息  121

4.5.2 计算可用物理内存页数  123

4.5.3 分配可用物理内存页  126

4.6 中断处理  142

4.6.1 8259A PIC  142

4.6.2 触发中断  148

4.7 键盘驱动  152

4.7.1 简述键盘功能  152

4.7.2 实现键盘中断捕获函数  154

4.8 进程管理  155

4.8.1 简述进程管理模块  155

4.8.2 PCB  156

4.8.3 init进程  163

第5章 应用层  171

5.1 跳转到应用层  171

5.2 实现系统调用API  180

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

第三部分 高级篇

第6章 处理器体系结构  190

6.1 基础功能与新特性  190

6.1.1 运行模式  190

6.1.2 通用寄存器  191

6.1.3 CPUID指令  192

6.1.4 标志寄存器EFLAGS  193

6.1.5 控制寄存器  195

6.1.6 MSR寄存器组  199

6.2 地址空间  199

6.2.1 虚拟地址  200

6.2.2 物理地址  200

6.3 实模式  200

6.3.1 实模式概述  201

6.3.2 实模式的段寻址方式  201

6.3.3 实模式的中断向量表  201

6.4 保护模式  202

6.4.1 保护模式概述  202

6.4.2 保护模式的段管理机制  206

6.4.3 保护模式的中断/异常处理机制  214

6.4.4 保护模式的页管理机制  217

6.4.5 保护模式的地址转换过程  224

6.5 IA-32e模式  226

6.5.1 IA-32e模式概述  226

6.5.2 IA-32e模式的段管理机制  228

6.5.3 IA-32e模式的中断/异常处理机制  234

6.5.4 IA-32e模式的页管理机制  234

6.5.5 IA-32e模式的地址转换过程  237

第7章 完善BootLoader功能  238

7.1 实模式的寻址瓶颈  238

7.1.1 错综复杂的1 MB物理地址空间  238

7.1.2 突破1 MB物理内存瓶颈  239

7.1.3 实模式下的4 GB线性地址寻址  240

7.2 获取物理地址空间信息  240

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

7.4 U盘启动  244

7.4.1 USB-FDD、USB-ZIP和USB-HDD启动模式的简介  244

7.4.2 将Boot引导程序移植到U盘中启动  251

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

7.6 细说VBE功能的实现  261

7.6.1 VBE规范概述  261

7.6.2 获取物理平台的VBE相关信息  272

7.6.3 设置显示模式  279

第8章 内核主程序  282

8.1 内核主程序功能概述  282

8.2 操作系统的Makefile编译脚本  282

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

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

8.5 获得处理器的固件信息  290

第9章 高级内存管理单元  297

9.1 SLAB内存池  297

9.1.1 SLAB内存池概述及相关结构体定义  298

9.1.2 SLAB内存池的创建与销毁  299

9.1.3 SLAB内存池中对象的分配与回收  302

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

9.2.1 通用内存管理单元的初始化函数slab_init  308

9.2.2 通用内存的分配函数kmalloc  312

9.2.3 通用内存的回收函数kfree  317

9.3 调整物理页管理功能  321

9.3.1 内存管理单元结构及相关函数调整  321

9.3.2 调整alloc_pages函数  323

9.3.3 创建free_pages函数  327

9.4 页表初始化  330

9.4.1 页表重新初始化  331

9.4.2 VBE帧缓存区地址重映射  334

第10章 高级中断处理单元  337

10.1 APIC概述  337

10.2 Local APIC  338

10.2.1 Local APIC的基础信息  338

10.2.2 Local APIC整体结构及各功能描述  344

10.3 I/O APIC  352

10.3.1 I/O APIC控制器的基础信息  353

10.3.2 I/O APIC整体结构及各引脚功能  356

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

10.4.1 中断模式  359

10.4.2 Local APIC控制器的初始化  362

10.4.3 I/O APIC控制器的初始化  368

10.5 高级中断处理功能  375

10.5.1 Linux的中断处理机制概述  375

10.5.2 实现中断上半部处理功能  377

第11章 设备驱动程序  382

11.1 键盘和鼠标驱动程序  382

11.1.1 键盘和鼠标控制器  382

11.1.2 完善键盘驱动  389

11.1.3 实现鼠标驱动  398

11.2 硬盘驱动程序  403

11.2.1 硬盘设备初探  403

11.2.2 完善硬盘驱动程序  418

第12章 进程管理  428

12.1 进程管理单元功能概述  428

12.2 多核处理器  429

12.2.1 超线程技术与多核技术概述  429

12.2.2 多核处理器间的IPI通信机制介绍  434

12.2.3 让我们的系统支持多核  437

12.3 进程调度器  464

12.3.1 Linux进程调度器简介  465

12.3.2 墙上时钟与定时器  468

12.3.3 内核定时器  479

12.3.4 实现进程调度功能  486

12.4 内核同步方法  498

12.4.1 原子变量  498

12.4.2 信号量  499

12.4.3 完善自旋锁  501

12.5 完善进程管理单元  503

12.5.1 完善PCB与处理器运行环境  503

12.5.2 完善进程调度器和AP处理器引导程序  508

12.5.3 关于线程  514

第13章 文件系统  516

13.1 文件系统概述  516

13.2 解析FAT32文件系统  517

13.2.1 FAT32文件系统简介  517

13.2.2 通过实例深入解析FAT32文件系统  523

13.2.3 实现基于路径名的文件系统检索功能  532

13.3 虚拟文件系统  552

13.3.1 Linux VFS简介  552

13.3.2 实现VFS  554

第14章 系统调用API库  566

14.1 系统调用API结构  566

14.2 基于POSIX规范实现系统调用API库  567

14.2.1 POSIX规范下的系统调用API简介  567

14.2.2 升级系统调用模块  568

14.2.3 基础文件操作的系统调用API实现  574

14.2.4 进程创建的系统调用API实现  599

14.2.5 内存管理的基础系统调用API实现  618

第15章 Shell命令解析器及命令  626

15.1 Shell命令解析器  626

15.1.1 Shell命令解析器概述  626

15.1.2 实现Shell命令解析器  627

15.2 基础命令  641

15.2.1 重启命令reboot  641

15.2.2 工作目录切换命令cd  642

15.2.3 目录内容显示命令ls  645

15.2.4 文件查看命令cat  654

15.2.5 程序执行命令exec  655

第16章 一个彩蛋  665

附录 术语表  676

参考资料  679


作者介绍:

田宇

Linux内核爱好者,曾在多家大中型软件公司从事软件开发工作,参与过多款高端嵌入式产品的开发研制,主要负责Linux内核和驱动的研发,以及开源操作系统环境的深度定制。


出版社信息:

暂无出版社相关信息,正在全力查找中!


书籍摘录:

暂无相关书籍摘录,正在全力查找中!


在线阅读/听书/购买/PDF下载地址:


原文赏析:

暂无原文赏析,正在全力查找中!


其它内容:

书籍介绍

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

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

本书既适合在校学习理论知识的初学者,又适合在职工作的软件工程师或有一定基础的业余爱好者。


精彩短评:

  • 作者: 守志奉道 发布时间:2021-09-18 15:27:33

    故事跌宕起伏,情节精彩纷呈。对手和队友如同太极之阴阳,互相对峙又互相转化,互相信任又互相提防,互相扶持又互相制约。故志同道合时为队友,各怀异心时为对手,因时而异、因势而异。一部五本,建议借阅。

  • 作者: usless 发布时间:2020-02-17 14:10:44

    比较现代的实现

  • 作者: 理性的光辉 发布时间:2023-06-28 14:36:07

    这比纯理论的书带给人的知识,更丰富和生动。

  • 作者: etds 发布时间:2022-11-26 16:56:17

    2022-11-26记:本书阅读花费五十多个小时,勉强完成第一个阶段(工程地址:https://github.com/BitInit/HelloOS)。还有进度调度、文件系统、shell待编写;内存管理待优化(伙伴算法、支持 slab)。

  • 作者: 虎弟想当幸运儿 发布时间:2022-05-13 16:09:06

    反正我是没能力做南大ICS的lab,感觉抄一遍这个也不赖,开头大几章汇编虽然劝退但是真的学了不少东西,后面的几章可以说是OS课本的绝佳实践

  • 作者: 可可西里 发布时间:2019-01-01 12:17:34

    比《操作系统真象还原》更具有实践性,比《orange's 一个操作系统的实现》讲解的更详细,建议三本书都读一读。


深度书评:

  • 读书报告

    作者:龙陌 发布时间:2021-03-13 11:43:14

    本书分为三个部分

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

    第一部分又分为两章内容:

    1.操作系统概述

    2.环境搭建及基础知识

    阅读指导:这部分主要针对业余爱好者和基础知识薄弱的人,若是底层开发工作和具有扎实的基础知识和有编程功底的业余可快速游览或跳过这部分

    第二部分为初级篇

    初级篇搭建一个操作系统雏形,初步了解操作系统机构各模块的功能和模块间联系

    有三章内容:

    3.Bootloader引导启动程序

    4.内核层

    5.应用层

    该三章内容使用少量代码组建成一个简单的操作系统框架模型,规避复杂和难以理解的内容。

    第三部分为高级篇

    高级篇补充讲解初级篇的复杂内容,再进行功能性扩充和原理性描述

    6.处理器体系结构

    7.完善BootLoader功能

    8.内核主程序

    9.内存管理

    10.高级中断处理单元

    11.设备驱动程序

    12.进程管理

    13.文件系统

    14.系统调用API库

    15.Shell命令解析器及命令

    16.一个彩蛋

    第一章

    1.介绍什么是操作系统-概念宽泛从办公生活使用的计算机到机械生产制造使用的仪器仪表,仅有一条指令的单片机都可叫操作系统。

    操作系统发展从只有简单逻辑门的电路到有核心 ,程序,可视化的UI操作界面,简单的操作方式,经历了多个系统版本,从单任务系统到工业的批处理再到响应用户请求的交互式分时系统,到工业,军事要求的实时系统,万物互连的嵌入式系统,及大容量的云系统。操作系统的更新换代是由于:1.硬件的不断升级。2.使用场景的需求。主要目的是为了方便人对硬件设备的使用与交互。

    2.操作系统组成结构-主要分为内核层和应用层

    内核层主要由:引导启动、内存管理、异常/中断处理、进程管理、文件系统等模块。

    内核层负责控制硬件设备、分配系统资源、为应用层提供健全的接口支持、保证程序运行稳定等全局性工作。

    内核层各模块介绍:

    引导启动:指计算机上电自检后跳转到内核执行程序前执行的小段程序。主要用于硬件自检、配置内核运行参数,将该数据提交给内核解析,引导程序只是为了辅助内核启动,启动后无用,不真正属于内核,作者在此处用或火箭和卫星的关系来分别形容引导启动程序和内核。引导程序之前分两部分——Boot和Loader,现在功能合并统称BootLoader。

    内存管理:内核的基础功能,管理物理内存,配有算法进行内存管理。伙伴算法:用来保持内存稳定,内存碎片管理,红黑树管理算法:线性结构转为树状缩短搜索时间,插入结点时调整树高。

    异常/中断处理:异常指处理程序执行时产生的错误和问题,对响应的错误提供处理,影响操作系统的整体处理速度,中断上半部要求快速响应及拿到数据后开启中断,下半部执行剩余中断,数据解析、驱动程序状态调整

    进程管理:进程和程序区别,程序是文件中的二进制代码,静止不动的。进程是程序加载到操作系统内运行的,是运动的。

    进程管理:

    1.要有好的进程调度策略,从O(1)调度策略到楼梯调度策略再到CFS调度策略

    2.进程间通信方法:SIGNAL信号、管道、共享内存、信号量等

    设备驱动:动态挂载到内核,与其他模块协作,给应用程序提供接口,方便调用。

    文件系统:将硬盘部分或全部扇区组织成便于管理的结构化单元,做成RAMDisk内存式硬盘用于提高读写速度,但在掉电后数据会丢失。

    应用层:系统调用API库、应用程序

    应用层负责人机交互。

    系统调用API库:API库给应用程序提供接口来实现应用程序的需求。

    应用程序:指用户安装的软件,系统提供的工具、软件、服务等。

    特殊的应用程序:窗口管理器,用于图形窗口管理;如窗口布局、键盘鼠标消息投递、窗口仲裁等。

    编写操作系统所需知识:硬件、软件

    硬件:处理器及外围设备组成与连接、控制、通信。了解芯片特性、通信方式、寄存器功能和控制方法

    软件:汇编、C语言

    汇编用于控制配置处理器,C语言主要用来写操作系统,高效灵活的算法,异常处理知识。

    第二章

    环境搭建及基础知识

    开发必备软件:VMware虚拟机软件,用来建立虚拟硬件平台,在该平台上安装操作系统

    编译环境:CentOS 6

    对安装的版本说明,对Linux 类系统的操作及命令和工具的说明。

    Bochs虚拟机:开源可调试虚拟机软件

    安装知识及配置参考,运行环境配置

    由于没有实际操作和对一些概念不了解,所以不是很容易理解,看到这里不是很容易看下去,怎么就突然安装虚拟机了?不应该继续介绍知识的吗,难道是要边做边学?所以这部分我跳着看了

    基础知识

    2.汇编语言介绍

    对AT&T和Intel汇编语言格式对比,在指令功能无太大区别,在书写、赋值、前缀等不同

    Intel AT&T

    关键字: 大写 小写

    赋值方向 从右向左 从左向右

    操作数前缀 寄存器立即数无前缀 寄存器前加%,立即数前加$

    对NASM编译器的符号说明

    符号[],访问变量里的数据

    符号$,当前行被编译后的地址

    符号$$,表示一个节起始被编译后的地址

    使用汇编语言调用C语言函数

    提过汇编指令JMP、CALL、RET及变种指令实现

    此处需要一定的汇编语言知识,虽然作者有解释,但并不容易理解解。

    4.GNU C语言对标准C语言的扩展

    为了提高C语言的易用性和开发效率,GNU C语言在标准C语言的基础上引入了诸多人性化的扩展。

    柔性数组成员(或称零长数组、变长数组)

    case关键字支持范围比配

    typedef关键字支持范围匹配

    可变参数宏

    元素符号:标准C语言规定数组和结构体必须按照固定顺序对成员(或元素)进行初始化赋值。GUN C语言为使数组和结构体初始化更加自由,特意放宽了限制。

    当前函数名:GNU C语言为当前函数的名字准备了两个标识符,它们分别是__PRETTY__FUNCTION__和__FUNCTION__,其中__FUNCTION__标识符保存着函数在源码中的名字,__PRETTY__FUNCTION__标识符则保存着带有语言特色的名字。

    特殊属性声明

    第三章

    BootLoader引导启动程序:

    1.Boot引导程序

    计算机上电启动后,首先会经过BIOS上电自检,这个过程BIOS会检测硬件设备是否存在问题。

    2.加载Loader到内存

    加载Loader程序,最理想的方法是从文件系统中把Loader程序加载到内存里。而另一个办法比较简单,选用逻辑简单的FAT12文件系统来装载Loader程序和内核程序。

    3.软盘扇区的四个部分

    引导扇区、FAT表、根目录区和数据区。

    4.从实模式进入保护模式再到IA-32e模式

    在实模式下,程序可以操作任何地址空间,而且无法限制程序的执行权限。

    在保护模式里,处理器按程序的执行级别分为0、1、2、3四个等级(由高到低顺序)。

    5.从实模式进入保护模式

    系统数据结构、中断和异常、分页机制、多任务机制。

    6.从保护模式进入IA-32e模式

    系统数据结构、中断和异常。

    第四章

    内核层:

    1.什么是内核执行头程序

    内核执行头程序,是内核程序中的一小段汇编代码。当Loader引导家在程序移交控制权后,处理器便会执行Kemel内核程序的这段代码。

    2.内核主程序

    内核主程序,或称内核主函数,相当于应用程序的主函数。

    第五章

    应用层:

    1.跳转到应用层

    借助RET类指令从伪造的函数调用现场中返回到目标程序段。

    第六章

    处理器体系结构:

    1.运行模式

    实模式、保护模式、系统管理模式、虚拟8086模式、IA-32e模式

    2.通用寄存器

    3.CPUID指令

    第七章

    完善BootLoader功能

    1.实模式的寻址瓶颈

    实模式的寻址瓶颈源于寻址寄存器的位宽过少,从而导致无法满足程序的寻址需求,并且在可寻址的物理地址空间内还包含着许多段非物理内存空间以及内存空洞,它们造成了内存空间的严重不足。

    2、VBE规范概述

    VBE标准制定了一套VGA ROM BIOS的扩展服务。这些服务可在DOS环境下通过INT 10h中断服务程序进入,或者直接调用非DOS操作系统的32位高效程序入口。

    第八章

    内核主程序:

    1.内核主程序功能概述

    内核主程序与普通应用程序的主函数极其相似,只不过内核主程序不会以正常的return方式返回。

    第九章

    高级内存管理单元:

    1.SLAB内存池

    内存池的作用是预先开辟若干个大小相等或不等的内存对象(存储空间)并对其进行管理,当内存对象需要使用时便从内存池中申请。当内存对象不再使用时再由内存池进行回收再利用。

    第十章

    高级中断处理单元

    1.APIC概述

    APIC摈弃了单核处理器的INTR中断请求引脚,而采用总线方式通信。使用总线通信方式的APIC将原来单个中断控制器拆为了2部分。

    2.Local APIC

    在处理器的每个核心中,都拥有一个Local APIC。Local APIC的功能比8259APic强大许多。

    3.中断模式

    PIC中断模式、Virtual Wire中断模式、Symmetric I/O中断模式

    4.Local APIC控制器的初始化

    第十一章——设备驱动程序:

    1. 键盘和鼠标驱动程序

    2.键盘和鼠标控制器(Intel 8042键盘控制器)

    第十二章

    进程管理

    1. 进程管理单元功能概述

    分时操作系统可以有效缓解这种性能浪费问题,并强化了进程管理单元这个概念。

    2. 多核处理器

    3. 进程调度器:运行状态、僵死状态、暂停状态、可中断状态、不可中断状态

    第十三章

    文件系统:

    1. 文件系统概述:文件是一个抽象的概念,它有组织地将多个数据块管理起来,以确保有足够的存储空间容纳数据。

    (超级块、目录项、数据区。)

    2. FAT32文件系统

    3. 虚拟文件系统:为了确保应用程序能够在不同种文件系统间平滑访问。

    第十四章

    系统调用API库:

    1. 系统调用API结构:系统调用API是应用程序与系统内核的主要通信方式之一,它将系统内核对外提供的功能封装成操作接口,供应用程序使用。

    2. 基础文件操作的系统调用API实现:文件的打开、关闭、读取、写入、位置索引操作。

    第十五章

    Shell命令解析器及命令

    1. Shell命令解析器:操作系统与用户间的沟通交流工作主要由交互系统负责完成,常用的交互系统有字符交互系统和图形交互系统两种。

  • 一个64位操作系统的设计与实现的读书报告

    作者:软件工程王晓辉 发布时间:2020-02-16 17:23:42

    读书报告--《一个64位操作系统的设计与实验》

    1.作者简介

    :田宇 Linux内核爱好者,曾在多家大中型软件公司从事软件开发工作,参与过多款高端嵌入式产品的开发研制,主要负责Linux内核和驱动的研发,以及开源操作系统环境的深度定制。

    2.内容概要

    :本书讲述了一个64位多核操作系统的自制过程。首先从虚拟平台构筑起一个基础框架,随后再将基础框架移植到物理平台中进行升级、完善与优化。为了凸显64位多核操作系统的特点,物理平台选用搭载着Intel Core i7处理器的笔记本电脑。与此同时,本书还将LInux内核的源码精髓、诸多官方白皮书以及多款常用协议浓缩在其中,可使读者在读完这本书后能够学以致用,进而达到理论联系实际的目的。全书共16章。第1~2章讲述了操作系统的基础概念和开发操作系统需要掌握的知识;第3~4章在虚拟平台下快速构建起一个操作系统模型;第6~16章将在物理平台下对操作系统模型做进一步升级、优化和完。 本书籍适合在校学习理论知识的初学者,又适合在职工作的软件工程师或有一定基础的业余爱好者。

    3.本书在表达、处理等方面的特别之处:

    操作系统由内核层与应用层两部分组成。内核层主要有引导启动、内存管理、异常/中断处理、进程管理、设备驱动、文件系统模板组成,而系统API库和应用程序属于应用层的范畴。

    作者在解释一个概念的问题上做的很详细,例如上几图显示,在第一章介绍最基础的概念时,直接引入,一句“什么是操作系统”作为一个小篇章的标题,醒人耳目,列举操作系统的组成结构后,又有图文示意,再有分点作析,思路清晰明了,让一个刚接触的新手有很好的逻辑框架,易于理解,且更好的有助于日后的学习。

    之后作者又详细的从硬件和软件两方面来介绍编写操作系统需要的知识,以及本书的简介,可以让读者做好充足的准备,开启操作系统的旅程。

    作者在第二章详细的讲解了如何环境搭建,介绍了虚拟机和开发系统,如何使用VMware软件建立虚拟硬件平台,并在虚拟平台上安装操作系统,同时作者还就开发过程中涉及的一些命令展开了扩展了编译器和编译工具,系统工具和命令等知识,让读者了解了更多的内容。

    在介绍语法和书写格式时,作者循序渐进,先是说明本书介绍的NASM编译器在语法和书写格式上,与MASM编译器比较相似,然后在逐一介绍相关符号[],$,,举了一个jmp$ 的例子,让读者切实理解,之后再引出“明白了符号$,那么,符号$$又是什么意思呢?”按照读者逻辑思路加深到了$$,层层叠加,徐徐渐进,让读者体会到发现学问这个的快乐。、

    4.作者在书中传递的讯息:

    作者将这本书分为三个部分:第一个部分是操作系统相关知识介绍及环境搭配;第二部分为初级篇;第三部分是高级篇。

    l 作者在第一部分为两章,分别写了操作系统的概述和环境搭建及基础知识,第一章介绍了什么是操作系统、操作系统的组成结构、编写操作系统所需要的知识。第二章介绍了虚拟机及开发系统平台的介绍、汇编语言AT&T汇编语言格式与Intel、以及C语言.。

    l 在第二部分里包含三部分:第三章讲的是BootLoader引导启动程序,介绍了BIOS的引导原理,教我们如何去写一个Boot引导程序,创建虚拟软盘镜像文件,在Bochs上运行Boot程序,加载Locader到内存,从Boot跳转到Loader程序,,之后介绍了:Loader原理,然后再教我们写一个Loaader程序,从实模式进入保护模式再到IA-32e模式,,从Loader跳转到内核程序。第四章讲的是内核层,先介绍什么是内核执行头程序,再写一个内核执行头程序,之后介绍在屏幕上显示色彩、显示log;第四节介绍了系统异常,包含了系统异常的分类,系统异常处理;第五节写了初级内存管理单元,包括有获得物理内存信息,计算可用物理内存页数,分配可用物理内存页;第六节讲的是中断处理,分别有8259APIC h和触发中断;第七节讲的是键盘驱动,简述了键盘的功能,实现键盘中端捕获函数;第八节讲的是进程管理,简述进程管理模块,PCB,init进程。第五章讲的是应用层,跳转到应用层,实现系统调用API,实现一个系统调用处理函数。

    l 第三部分讲的是高级篇,第三部分分为了第六章处理器体系结构、第七章完善BootLoader功能、第八章内核主程序、第九章高级内存管理单位、第十章高级中断处理单元、第十一章设备驱动程序、第十二章进程管理、第十三章文件系统、第十四章系统调用API库、第十五章Shell命令解析器及命令、最后还有一个大大的彩蛋。

    第六章讲的是基础功能和新特性,里面包含了运行模式、通用寄存器、CPUID指令、标志寄存器EFLAGS、控制寄存器、MSR寄存器组。地址空间,里面包含了虚拟地址、物理地址。实模式,里面包含了实模式概述、实模式的段寻址方式、实模式的中断向量表。保护模式概述、保护模式的段管理机制保护模式的中断/异常处理机制、保护模式的页管理机制、保护模式的地址转换过程。IA-32e模式主要讲IA-32e模式概述,端管理机制,中断/异常处理机制,业管理机制,地址转换过程。

    第七章讲的是完善BootLoader功能,实模式的寻址瓶颈包含了错综复杂的IMBA物理地址空间,突破1mb物理内存瓶颈,实模式下的4Gb线性地址寻址;第二节讲的是获取物理地址空间信息;第三节讲的是操作系统引导加载阶段的内存空间划分;第四节讲的是U盘启动,包含了Usb-FDD、USB-ZIp和USb-Hdd启动模式的简介,以及将Boot引导程序移植到U盘中启动;第五节讲的是在物理平台上启动操作系统;第六节讲的是细说VBE功能的实现,包含VBE规范概述,获取物理平台上启动操作系统VBE相关信息,设置显示模式。

    第八章讲的是内核主程序,包含了内核主程序功能概述,操作系统的makeflie编译脚本,操作系统的kernel.ids链接脚本,操作系统的线性地址空间划分,获取处理器的固件信息。

    第九章讲的是高级内存管理单元,第一节讲的是SLAB内存池,讲了SLaB内存池概述及相关结构体定义,SLab内存池的创建于销毁,SLab内存池中对象的分配与回收;第二节基于slab内存池技术的通用内存管理单元,主要讲了通用内存管理单元的初始化函数slab_init,,通用内存的分配函数kmalloc,通用内存的回收函数kfree,;第三节调整物理管理功能,主要讲了内存管理单元结构及相关函数调整,调整alloc_pages函数,创建free_pages函数;第四节页表初始化,包含了页表重新初始化,VBE怗缓存区地址重映射。

    第十章讲的是高级中断处理单元,第一节讲了APIC的概述;第二节讲的是Local APIC,包含了Local APic的基础信息,整体结构及各功能描述;第三节讲的是I/o APIC,包含了I/o APIC控制器的基础信息,以及整体结构及各引脚功能;第四节中断控制器的模式选择和初始化,包含了中断模式,Locate APIC控制器的初始化和I/o APIC控制器的初始化;第五节讲的是中断处理功能,包含了LINUX的中断处理机制概述和实现中断上半部分处理功能。

    第十一章讲的是设备驱动程序,第一节讲的是键盘和鼠标驱动程序,包含了键盘和鼠标控制器,完善键盘驱动实现鼠标驱动;第二节硬盘驱动程序,主要讲了硬盘设备初探以及完善硬盘驱动程序。

    第十二章讲的是进程管理,第一节进程管理单元功能概述;多核处理器,包含了超线绪技术与多核技术概述,多核处理器间的IPI通信机制介绍;进程调度器,主要讲了L I N u x进程调度器简介,墙上时钟与定时器,内核定时器,实现进程调度功能;第四节讲的是内核同步方法,讲的是原子变量,信号量化,晚上自选锁;第五节讲的是完善进程管理单元,完善P C B与处理器运行环境,完善进程带哦肚脐和A P处理器引导程序。

    第十三章讲的是文件系统,第一节是文件系统的概述,第二节讲的是解析FAT32wenji文件系统简述,通过实例深入解析fat 32文件系统,实现基于路径名的文件系统检索功能;第三节讲的是虚拟文件系统,讲的是L I n u x V F S简介以及实现VFS。

    第十四章讲的是系统调用A P i库,第一节讲的是系统调用API结构,;第二节讲的是基于P O S I X规范实现系统调用API库,包含了P O S I X规范下的系统调用 API简介,升级系统调用模块,基础文件操作的系统调用,API的实现,进程创建的系统调用API实现内存管理的基础系统调用。

    第十五章的内容是SHELL命令解析器及命令,第一节介绍了shell命令解析器,包含了shall命令解释器的概述,以及实现shell命令解析器;第二节讲的是基础命令,包括了重启命令reboot 工作目录切换命令cd,目录内容显示命令ls, 文件查看命令 cat,程序执行命令 exec 。

    l 最后作者还留了个彩蛋

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

    5个人喜欢的部分:

    本人喜欢的部分是初级篇的三个单元,比较基础,比较入门,好理解,是下一部分高级篇的根基,所以比较重视这几个章节的内容,打好基础后,学习后面的高级篇感觉就容易许多。 我最喜欢的一个句子就是“从这里开始你的旅程.......”,这个句子在这本书.介绍完目录后,独立开的一页,下一页就是第一章的对操作系统的概述,我认为学习这门操作系统就好比一场旅行,有明确的目标和路线后才能开始一个完好的旅行,才能真正的弄懂这门学问。

    6.对本书的评价和观感(如是否值得向其他读者推介):

    我认为这本书很有价值,很值得向其他读者推介,首先,第一点就是,作者在行文撰写方面,在第一章介绍最基础的概念时,直接引入,一句“什么是操作系统”作为一个小篇章的标题,醒人耳目,列举操作系统的组成结构后,又有图文示意,再有分点作析,思路清晰明了,让一个刚接触的新手有很好的逻辑框架,易于理解,且更好的有助于日后的学习。再者,作者有着清晰的思路,在这本书的路线很明显,作者将这本书分为三部分,操作系统相关知识介绍及环境搭配、初级篇、高级篇,让读者有着更好的方向去学习,去探索。

    7.读后感:(1)书中情节引起的联想 :学完这本书后让我联想到了以后操作系统的应用前景,意识到以后对软件工程这个专业的重要性,所以我更要认真努力加倍的潜心学习,查缺补漏,完善自我,在平日里不断地训练自己,达到十分熟练的地步,才能为以后的工作增添一份力。

    (2) 书中内容引起的疑问:1.在初级篇中的第三章,从BOOT跳转到LOader程序,感觉有点吃力,不太好理解;2.在第五章实现一个系统调用的处理函数,不是很熟练,每次都要对照书本,不能很好地掌握。;3.在高级篇中的第九章比较难懂........。

    (3) 本书令你有何提醒、启发及反思的部分:

    提醒:在阅读这本书的时候,我个人认为首先要有一定的相关基础,掌握好第一二部分的知识,并且要非常的熟练,这样。到了后面的高级篇才不会感觉到困难,打好基础是根本。

    启发:读完这本书我认为要更加努力的去学习探究领悟这方面的知识,不断地从挖掘和探索这领域的知识,开阔思域。

    反思:在阅读过程中,特别是到了高级篇, 我渐渐的发现有点吃力,原因就是我的知识面不足,导致有些地方不好理解,还有就是我急于求成,前面看的太快了,导致我的基础不够扎实,以至于后面高级篇的时候 ,越发的难理解作者想表达的意思,所以我认为基础才是唯一的捷径,不能急于求成。

    (4) 本书引起的思想上的改变:阅读完这本书后,我感觉仿佛打开了一个新世界的大门,在这里我要学习的东西还很多,需要探险的道路还很长,道阻且跻,长路漫漫,唯有保持初心,秉着一副渴望去求学的态度,一只谦虚的态度,多向老师教授们请教,才能多见识见识不一样的世界,在课余时间也要多在网上了解更多关于操作系统有关的内容知识,才能更好的巩固现有的知识,并且开阔我的视野,学无止境,可谓学到老活到老。

    (5) 本书令你引发的期望:阅读完这本书后,我期望就是能够在大学生涯中了解更多的相关知识 ,不断地提升自我,完善自我, 拓宽我的知识面,开阔我的视野,能够独立的完成一个操作系统,在以后在步入社会有一番作为,能够很好地掌握这门技术,能干出一番事业。

    8.从本书有何收获:阅读完这本书后,收益良多,能够在大学生涯中了解更多的相关知识 ,拓宽我的知识面,开阔我的视野,领略到了一番风景。

    9.引用本书或其他书籍的内容,或日常用语:“从这里开始你的旅程.......”,这个句子在这本书.介绍完目录后,独立开的一页,下一页就是第一章的对操作系统的概述,很有深意,让人感觉在一个书海中遨游,从开始的概述,到初级篇,然后深化到高级篇,无一不是一场旅行啊!


书籍真实打分

  • 故事情节:8分

  • 人物塑造:8分

  • 主题深度:5分

  • 文字风格:6分

  • 语言运用:8分

  • 文笔流畅:9分

  • 思想传递:9分

  • 知识深度:7分

  • 知识广度:3分

  • 实用性:4分

  • 章节划分:6分

  • 结构布局:9分

  • 新颖与独特:7分

  • 情感共鸣:5分

  • 引人入胜:6分

  • 现实相关:8分

  • 沉浸感:7分

  • 事实准确性:5分

  • 文化贡献:3分


网站评分

  • 书籍多样性:7分

  • 书籍信息完全性:6分

  • 网站更新速度:7分

  • 使用便利性:5分

  • 书籍清晰度:6分

  • 书籍格式兼容性:8分

  • 是否包含广告:5分

  • 加载速度:6分

  • 安全性:7分

  • 稳定性:6分

  • 搜索功能:9分

  • 下载便捷性:5分


下载点评

  • 书籍多(429+)
  • 傻瓜式服务(422+)
  • 内容完整(325+)
  • 内容齐全(258+)
  • 格式多(189+)
  • 中评多(471+)
  • 下载速度快(408+)
  • 书籍完整(116+)
  • 目录完整(516+)
  • 三星好评(671+)
  • 值得下载(401+)

下载评价

  • 网友 濮***彤: ( 2025-02-24 18:39:40 )

    好棒啊!图书很全

  • 网友 丁***菱: ( 2025-02-20 06:04:51 )

    好好好好好好好好好好好好好好好好好好好好好好好好好

  • 网友 马***偲: ( 2025-02-27 11:44:25 )

    好 很好 非常好 无比的好 史上最好的

  • 网友 通***蕊: ( 2025-02-24 05:17:49 )

    五颗星、五颗星,大赞还觉得不错!~~

  • 网友 冷***洁: ( 2025-03-05 14:17:13 )

    不错,用着很方便

  • 网友 国***舒: ( 2025-03-15 09:55:35 )

    中评,付点钱这里能找到就找到了,找不到别的地方也不一定能找到

  • 网友 习***蓉: ( 2025-03-10 10:40:18 )

    品相完美

  • 网友 隗***杉: ( 2025-02-19 01:57:17 )

    挺好的,还好看!支持!快下载吧!

  • 网友 宫***玉: ( 2025-03-12 12:21:16 )

    我说完了。

  • 网友 冉***兮: ( 2025-03-14 12:37:48 )

    如果满分一百分,我愿意给你99分,剩下一分怕你骄傲

  • 网友 常***翠: ( 2025-02-21 06:00:49 )

    哈哈哈哈哈哈

  • 网友 方***旋: ( 2025-03-12 17:08:41 )

    真的很好,里面很多小说都能搜到,但就是收费的太多了


最新书籍
随机推荐

lianjie

lianjie

lianjie

lianjie

lianjie

lianjie

lianjie

github

uqztgx.github.io

xfdave.github.io

xpqohk.github.io

crgbzb.github.io

giynyl.github.io

gwqewg.github.io

csqpdr.github.io

ydpljv.github.io

znrkwm.github.io

shuji.kpwvf.cn

zyfttc.github.io