操作系统:原理与实现:principle and implementation9787111722489
正版图书,可开发票,请放心购买。
¥
89.25
7.5折
¥
119
全新
库存153件
作者陈海波 夏虞斌 等
出版社机械工业出版社
ISBN9787111722489
出版时间2022-10
装帧平装
开本16开
定价119元
货号12216258
上书时间2024-12-22
商品详情
- 品相描述:全新
- 商品描述
-
目录
CONTENTS目 录丛书序言序言一序言二前言第一部分 操作系统基础第1章 操作系统概述 21.1 简约不简单?:从Hello World说起 21.2 什么是操作系统 31.3 操作系统简史 51.3.1 GM-NAA I/O?:第一个(批处理)操作系统 51.3.2 OS/360?:从专用走向通用 61.3.3 Multics/UNIX/Linux?:分时与多任务 61.3.4 macOS/Windows?:以人为本的人机交互 71.3.5 iOS/Android?:移动互联网时代的操作系统 81.4 操作系统接口 101.5 思考题 12参考文献 12第2章 操作系统结构 132.1 操作系统的机制与策略 142.2 操作系统复杂性的管理方法 152.3 操作系统内核架构 172.3.1 简要结构 182.3.2 宏内核 182.3.3 微内核 202.3.4 外核 222.3.5 其他操作系统内核架构 242.4 操作系统框架结构 262.4.1 Android系统框架 262.4.2 ROS系统框架 282.5 操作系统设计?:Worse is better? 292.6 ChCore?:教学科研型微内核操作系统 312.7 思考题 32参考文献 32第3章 硬件环境与软件抽象 353.1 应用程序的硬件运行环境 353.1.1 程序的运行?:用指令序列控制处理器 363.1.2 处理数据?:寄存器、运算和访存 383.1.3 条件结构?:程序分支和条件码 433.1.4 函数的调用、返回与栈 463.1.5 函数的调用惯例 503.1.6 小结?:应用程序依赖的处理器状态 523.2 操作系统的硬件运行环境 543.2.1 特权级别与系统ISA 543.2.2 异常机制与异常向量表 573.2.3 案例分析?:ChCore启动与异常向量表初始化 603.2.4 用户态与内核态的切换 613.2.5 系统调用 643.2.6 系统调用的优化 663.3 操作系统提供的基本抽象与接口 673.3.1 进程?:对处理器的抽象 693.3.2 案例分析?:使用POSIX进程接口实现shell 703.3.3 虚拟内存?:对内存的抽象 733.3.4 进程的虚拟内存布局 753.3.5 文件?:对存储设备的抽象 773.3.6 文件?:对所有设备的抽象 793.4 思考题 803.5 练习答案 81参考文献 82第4章 虚拟内存管理 834.1 CPU的职责?:内存地址翻译 844.1.1 地址翻译 844.1.2 分页机制 854.1.3 多级页表 874.1.4 页表项与大页 914.1.5 TLB?:页表的缓存 934.2 操作系统的职责?:管理页表映射 964.2.1 操作系统为自己配置页表 964.2.2 如何填写进程页表 974.2.3 何时填写进程页表?:立即映射 1014.2.4 何时填写进程页表?:延迟映射 1044.2.5 常见的改变虚拟内存区域的接口 1084.2.6 虚拟内存扩展功能 1094.3 案例分析?:ChCore虚拟内存管理 1124.3.1 ChCore内核页表初始化 1124.3.2 ChCore内存管理 1154.4 思考题 1184.5 练习答案 119参考文献 121第5章 物理内存管理 1225.1 操作系统的职责?:管理物理内存资源 1225.1.1 目标与评价维度 1225.1.2 基于位图的连续物理页分配方法 1235.1.3 伙伴系统原理 1265.1.4 案例分析?:ChCore中伙伴系统的实现 1275.1.5 SLAB分配器的基本设计 1315.1.6 常用的空闲链表 1335.2 操作系统如何获得更多物理内存资源 1345.2.1 换页机制 1345.2.2 页替换策略 1375.2.3 页表项中的访问位与页替换策略实现 1405.2.4 工作集模型 1415.2.5 利用虚拟内存抽象节约物理内存资源 1425.3 性能导向的内存分配扩展机制 1435.3.1 物理内存与CPU缓存 1445.3.2 物理内存分配与CPU缓存 1465.3.3 多核与内存分配 1475.3.4 CPU缓存的硬件划分 1475.3.5 非一致内存访问(NUMA架构) 1495.3.6 NUMA架构与内存分配 1505.4 思考题 1515.5 练习答案 152参考文献 152第6章 进程与线程 1546.1 进程的内部表示与管理接口 1546.1.1 进程的内部表示—PCB 1546.1.2 进程创建的实现 1556.1.3 进程退出的实现 1596.1.4 进程等待的实现 1606.1.5 exit与waitpid之间的信息传递 1626.1.6 进程等待的范围与父子进程关系 1646.1.7 进程睡眠的实现 1666.1.8 进程执行状态及其管理 1666.2 案例分析?:ChCore微内核的进程管理 1696.2.1 进程管理器与分离式PCB 1696.2.2 ChCore的进程操作?:以进程创建为例 1706.3 案例分析?:Linux的进程创建 1726.3.1 经典的进程创建方法?:fork 1726.3.2 其他进程创建方法 1756.4 进程切换 1796.4.1 进程的处理器上下文 1806.4.2 进程的切换节点 1806.4.3 进程切换的全过程 1816.4.4 案例分析?:ChCore的进程切换实现 1826.5 线程及其实现 1916.5.1 为什么需要线程 1916.5.2 用户视角看线程 1926.5.3 线程的实现?:内核数据结构 1946.5.4 线程的实现?:管理接口 1956.5.5 线程切换 2006.5.6 内核态线程与用户态线程 2006.6 纤程 2026.6.1 对纤程的需求?:一个简单的例子 2036.6.2 POSIX的纤程支持?:ucontext 2046.6.3 纤程切换 2066.7 思考题 2076.8 练习答案 208参考文献 209第7章 处理器调度 2107.1 处理器调度机制 2107.1.1 处理器调度对象 2117.1.2 处理器调度概览 2117.2 处理器调度指标 2147.3 经典调度策略 2167.3.1 先到先得 2167.3.2 短任务优先 2187.3.3 短完成时间优先 2197.3.4 时间片轮转 2207.3.5 经典调度策略的比较 2217.4 优先级调度策略 2227.4.1 高响应比优先 2237.4.2 多级队列与多级反馈队列 2237.4.3 优先级调度策略的比较 2297.5 公平共享调度策略 2297.5.1 彩票调度 2317.5.2 步幅调度 2337.5.3 份额与优先级的比较 2357.6 多核处理器调度机制 2367.6.1 运行队列 2367.6.2 负载均衡与负载追踪 2377.6.3 处理器亲和性 2387.7 案例分析?:Linux调度器 2397.7.1 O(N)调度器 2407.7.2 O(1)调度器 2417.7.3 接近公平调度器 2427.7.4 Linux的细粒度负载追踪 2447.7.5 Linux的NUMA感知调度 2457.8 思考题 2467.9 练习答案 247参考文献 248第8章 进程间通信 2498.1 进程间通信基础 2508.1.1 进程间通信接口 2508.1.2 一个简单的进程间通信设计 2538.1.3 数据传递 2558.1.4 通知机制 2578.1.5 单向和双向 2578.1.6 同步和异步 2588.1.7 超时机制 2598.1.8 通信连接 2608.1.9 权限检查 2618.1.10 命名服务 2628.1.11 总结 2638.2 文件接口IPC?:管道 2648.2.1 Linux管道使用案例 2658.2.2 Linux中管道进程间通信的实现 2678.2.3 命名管道和匿名管道 2698.3 内存接口IPC?:共享内存 2708.3.1 共享内存 2708.3.2 基于共享内存的进程间通信 2728.4 消息接口IPC?:消息队列 2738.4.1 消息队列的结构 2748.4.2 基本操作 2748.5 案例分析?:L4微内核的IPC优化 2758.5.1 L4消息传递 2758.5.2 L4控制流转移 2778.5.3 L4通信连接 2798.5.4 L4通信控制(权限检查) 2798.6 案例分析?:LRPC的迁移线程模型 2808.6.1 迁移线程模型 2818.6.2 LRPC设计 2818.7 案例分析?:ChCore进程间通信机制 2838.8 案例分析?:Binder IPC 2858.8.1 总览 2868.8.2 Binder IPC内核设计 2868.8.3 匿名共享内存 2908.9 思考题 2918.10 练习答案 292参考文献 292第9章 并发与同步 2949.1 同步场景 2959.1.1 一个例子?:多线程计数器 2959.1.2 同步的典型场景 2979.2 同步原语 2999.2.1 互斥锁 3009.2.2 读写锁 3029.2.3 条件变量 3049.2.4 信号量 3139.2.5 同步原语的比较 3169.3 死锁 3189.3.1 死锁的定义 3189.3.2 死锁检测与恢复 3209.3.3 死锁预防 3219.3.4 死锁避免 3229.3.5 哲学家问题 3259.4 活锁 3269.5 思考题 3279.6 练习答案 330参考文献 335第10章 同步原语的实现 33610.1 互斥锁的实现 33610.1.1 临界区问题 33610.1.2 硬件实现?:关闭中断 33710.1.3 软件实现?:皮特森算法 33710.1.4 软硬件协同?:使用原子操作实现互斥锁 34010.2 条件变量的实现 34510.3 信号量的实现 34610.3.1 非阻塞信号量 34710.3.2 阻塞信号量 34810.4 读写锁的实现 35210.4.1 偏向读者的读写锁 35310.4.2 偏向写者的读写锁 35410.5 案例分析?:Linux中的futex 35610.6 案例分析?:微内核中的同步原语 36010.7 思考题 36110.8 练习答案 364参考文献 364第11章 文件系统 36611.1 基于inode的文件系统 36711.1.1 一个不用inode的简单文件系统 36711.1.2 inode与文件 36811.1.3 多级inode 37011.1.4 文件名与目录 37411.1.5 存储布局 37711.1.6 从文件名到链接 37811.1.7 符号链接(软链接) 38111.2 基于表的文件系统 38211.2.1 FAT文件系统 38211.2.2 &
— 没有更多了 —
以下为对购买帮助不大的评价