登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

『簡體書』ARM Linux内核源码剖析

書城自編碼: 2426250
分類: 簡體書→大陸圖書→計算機/網絡操作系統/系統開發
作 者: [韩]尹锡训 等著
國際書號(ISBN): 9787115359100
出版社: 人民邮电出版社
出版日期: 2014-07-01
版次: 1 印次: 1
頁數/字數: 518/786000
書度/開本: 16开 釘裝: 平装

售價:NT$ 891

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
地理计算与R语言
《 地理计算与R语言 》

售價:NT$ 551.0
沈括的知识世界:一种闻见主义的实践(中华学术译丛)
《 沈括的知识世界:一种闻见主义的实践(中华学术译丛) 》

售價:NT$ 398.0
大思维:哥伦比亚商学院六步创新思维模型
《 大思维:哥伦比亚商学院六步创新思维模型 》

售價:NT$ 332.0
宏观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
《 宏观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】 》

售價:NT$ 709.0
UE5虚幻引擎必修课(视频教学版)
《 UE5虚幻引擎必修课(视频教学版) 》

售價:NT$ 505.0
真需求
《 真需求 》

售價:NT$ 505.0
阿勒泰的春天
《 阿勒泰的春天 》

售價:NT$ 230.0
如见你
《 如见你 》

售價:NT$ 234.0

建議一齊購買:

+

NT$ 713
《 深入分析GCC 》
+

NT$ 739
《 Linux设备驱动开发详解:基于最新的Linux4.0 》
+

NT$ 822
《 精通Linux内核网络 》
+

NT$ 739
《 Android深度探索 卷2 系统应用源代码分析与ROM定制(附光盘) 》
+

NT$ 972
《 深入理解Android内核设计思想 》
+

NT$ 828
《 深度探索Linux操作系统:系统构建和原理解析(深度阐释Linux操作系统原理的里程碑之作,切入角度十分独特,从微观和宏观上剖析操作系统的本质) 》
編輯推薦:
此书献给想了解或分析Linux代码的各位读者!
逐行分析ARM Linux内核加载到RAM并运行Shell前的全部初始化过程!
Linux内核代码分析全新方法!
Linux内核代码分析实用指南!
本书主要内容
内核源代码构建系统
ARM处理器结构
构建高效分析环境
汇编级启动过程
内核分析常用API、ARM指令、GAS关键词
发生中断到调用处理器的详细过程
內容簡介:
《ARMLinux内核源码剖析》是多位作者在3年Liunx内核分析经验和庞大资料基础上写成的,收录了其他同类书未曾讲解的内容并进行逐行分析,一扫当前市场中其他理论书带给读者的郁闷。书中详细的代码分析与大量插图能够使读者对Linux内核及ARM获得正确认识,自然而然习得如何有效分析定期发布的Linux内核。
《ARMLinux内核源码剖析》适合想从Linux内核启动开始透彻分析全部启动过程的读者,因Linux代码量庞大而束手无策的人、想要了解Linux实际运行过程的人、渴求OS实操理论的人,本书必将成为他们不可或缺的参考书。
關於作者:
尹锡训
mindwave@nate.com
所在公司的主营业务是在Linux、安卓系统上制作无线终端,担任工程师已有3年。一直用C语言、Python、Java开发各种产品。最近把对未来的期待、展望与精力集中到Linux内核以及创业上,并不断为之努力。
崔范松
吉林人,毕业于长春工业大学法学专业。大量接触并翻译过各类计算机图书及相关资料,并从事过游戏策划及软件测试工作。喜欢散步、旅游等户外运动,梦想成为一名自由职业者。
目錄
第一部分 ARM Linux内核——分析内核前需要做的准备
 第1章 内核介绍及2.6版和3.2版之间的差异 
1.1 内核的诞生、作用以及内部结构 
 1.1.1 Linus创造的Linux 
 1.1.2 由多种子系统集成运行的单内核 
 1.1.3 全世界最著名的通用操作系统 
1.2 内核2.6版和3.2版之间的差异 
 第2章 内核构建系统 
2.1 内核初始化 
2.2 内核配置 
2.3 内核构建 
2.4 内核安装 
 第3章 了解ARM处理器 
3.1 处理器概要和特征 
3.2 处理器架构与核心 
3.3 处理器命名规则 
3.4 处理器内部结构 
3.5 处理器模式和寄存器 
3.6 处理器异常 
3.7 硬件扩展功能 
 3.7.1 缓存 
 3.7.2 内存管理装置 
 3.7.3 协处理器 
 第4章 构建分析环境 
4.1 下载并安装Linux源内核 
 4.1.1 下载源内核 
 4.1.2 安装源内核 
4.2 安装ctags+cscope 
 4.2.1 用ctags制作源代码标签 
 4.2.2 制作cscope标签数据库 
4.3 vim插件下载及环境设置 
 4.3.1 下载vim插件 
 4.3.2 vim+plugin的环境结构 
 4.3.3 vim环境设置 
4.4 查看源码分析环境工具 
第二部分 内核的启动——start_kernel调用方法
 第5章 准备解压内核 
5.1 进入启动加载后结束首个启动——start标签 
5.2 BSS系统域初始化——not_relocated标签 
5.3 激活缓存——cache_on标签 
5.4 页目录项初始化——__setup_mmu标签 
5.5 指令缓存激活及缓存策略适用——__common_mmu_cache_on标签 
 第6章 从压缩的内核zImage还原内核映像 
6.1 解压内核并避免覆写——wont_overwrite、decompress_kernel标签 
6.2 调用已解压内核——call_kernel标签 
6.3 缓存清理及清除——cache_clean_flush标签 
6.4 缓存禁用——cache_off标签 
 第7章 调用start_kernel 
7.1 初始化指向——stext标签 
7.2 处理器信息搜寻——__look_processor_type 
 7.2.1 __lookup_processor_type标签 
 7.2.2 __proc_info_begin和__proc_info_end中保存的信息 
 7.2.3 在MMU禁用状态下将虚拟地址转换为物理地址 
 7.2.4 查找proc_info_list结构体并比较处理器信息 
7.3 搜寻我的机型——__lookup_machine_type 
 7.3.1 __lookup_machine_type标签 
 7.3.2 保存在__arch_info_begin和__arch_info_end中的machine_desc信息及访问路径 
 7.3.3 查找machine_desc结构体并比较机器信息 
7.4 源自启动加载项的atags——__vet_atags标签 
7.5 对虚拟内存进行基础创建——__create_page_tables标签 
7.6 设置核心(core)——v6_setup标签 
7.7 打开MMU并使用虚拟地址——__enable_mmu__turn_mmu_on标签 
7.8 跳转至start_kernel——__mmap_switched 标签 
第三部分 内核的执行——内核的起始与结束位置
 第8章 start_setup_processor_id~lock_kernel 
8.1 smp_setup_processor_id、lockdep_init、debug_objects_early_init 
 8.1.1 smp_setup_processor_id 
 8.1.2 lockdep_init 
 8.1.3 debug_objects_early_init 
8.2 栈溢出感应——__boot_init_stack_canary 
8.3 初始化提供进程集成方法的cgroup——__cgroup_init_early 
 8.3.1 cgroupfs_root和cgroup的关联初始化——init_cgroup_root 
 8.3.2 初始化子系统——cgroup_init_subsys 
8.4 禁用IRQ 
8.5 early_boot_irqs_off、early_init_irq_lock_class 
8.6 大内核锁——lock_kernel 
 第9章 注册针对时钟事件的处理器 
9.1 函数的声明和定义——tick_init 
9.2 注册处理事件的处理器——_clockevents_register_notifier 
 9.2.1 为clockevents_lock添加自旋锁 
 9.2.2 clockevents_chain生成原理 
 9.2.3 在clockevents_chain中注册tick_notifier的方法 
 9.2.4 对clockevents_lock解除自旋锁的原理 
 第10章 在CPU位图中注册当前运行CPU初始化HIGHMEM管理 
10.1 在包含热插拔信息的位图上添加执行init_task的CPU——boot_cpu_init 
10.2 管理高端内存——page_address_init 
 第11章 整体指向——setup_arch 
 第12章 unwind_init~early_trap_init 
12.1 栈回溯——unwind_init 
12.2 求出包含机器信息的machine_desc结构体——setup_machine 
12.3 处理ATAG信息——setup_arch 
12.4 处理启动参数——parse_cmdline 
12.5 构建源代码树——request_standard_resources 
12.6 初始化cpu possible位图——smp_init_cpus 
12.7 用栈指定各ARM异常模式——cpu_init 
12.8 初始化以处理异常——early_trap_init 
12.9 查看中断处理器函数 
 12.9.1 调用IRQ处理器——asm_do_IRQ 
 12.9.2 返回中断之前——ret_to_user标签 
 第13章 设置处理器—— setup_processor 
13.1 查看setup_processor结构 
13.2 查找CPU ID——read_cpuid_id 
13.3 查找处理器信息——lookup_processor_type 
13.4 查找处理器结构信息——cpu_architecture 
13.5 查找处理器缓存类型_cacheid_init 
13.6 调用处理器初始化函数——cpu_proc_init 
 第14章 准备内存分页—— paging_init 
14.1 查看paging_init的整体结构 
14.2 设置内存类型表——build_mem_type_table 
14.3 检验内存信息——sanity_check_meminfo 
14.4 准备页表——prepare_page_table 
 14.4.1 prepare_page_table 
 14.4.2 Linux的分页结构 
 14.4.3 求出页目录项 
 14.4.4 pmd_clear 
14.5 设备区域映射准备——devicemaps_init 
14.6 准备使用高端内存——kmap_init 
14.7 初始化零页 
 14.7.1 分配内存——__alloc_bootmem_nopanic 
 14.7.2 在指定节点使用fallback分配内存——alloc_bootmem_core 
 14.7.3 将虚拟地址变换为page结构体——virt_to_page 
14.8 保持数据缓存一致性——flush_dcache_page 
 第15章 在启动时初始化内存分配器 
15.1 bootmem函数流和数据结构 
15.2 查看bootmem_init结构 
15.3 查找虚拟内存盘位置——check_initrd 
15.4 将节点的BANK信息反映到页目录——bootmem_init_node 
 15.4.1 map_memory_bank 
 15.4.2 bootmem_bootmap_pages 
 15.4.3 find_bootmap_pfn 
 15.4.4 node_set_online 
 15.4.5 NODE_DATA宏 
 15.4.6 init_bootmem_node 
 15.4.7 free_bootmem_node 
 15.4.8 reserve_bootmem_node 
15.5 排除0号节点——reserve_node_zero 
15.6 排除虚拟内存盘节点——bootmem_reserve_initrd 
15.7 设置为无可用页——bootmem_free_node 
15.8 初始化free_area区域 
 15.8.1 free_area结构体 
 15.8.2 free_area_init_node 
 15.8.3 free_area_init_core 
 15.8.4 init_currently_empty_zone 
 15.8.5 memmap_init 
 第16章 mm_init_owner~preempt_disable 
16.1 设置内存拥有者——mm_init_owner 
16.2 保存命令行——setup_command_line 
16.3 初始化per-cpu数据——setup_per_cpu_areas 
16.4 求CPU个数——setup_nr_cpu_ids 
16.5 注册SMP上的启动进程——smp_prepare_boot_cpu 
16.6 初始化数据结构以使用调度程序——sched_init 
 16.6.1 为集合调度中使用的task_group的sched_entity结构体和runqueue结构体分配内存 
 16.6.2 初始化root_domain、rt_bandwidth、task_group相关数据结构 
 16.6.3 初始化系统上所有可用CPU的就绪队列 
 16.6.4 初始化当前任务的调度相关值与注册针对负载均衡的中断处理器 
16.7 允许内核抢占和阻止抢占——preempt_enablepreempt_disable 
 第17章 构建借用内存的后台 
17.1 在build_all_zonelists中操作的一些数据结构 
17.2 查看build_all_zonelists结构 
17.3 决定zone的列表方式——set_zonelist_order 
17.4 构建备用列表和备用位图——__build_all_zonelists 
 17.4.1 build_zonelists 
 17.4.2 build_zonelist_in_node_order 
 17.4.3 build_zonelists_in_zone_order 
 17.4.4 build_thisnode_zonelists 
 17.4.5 build_zonelists_cache 
17.5 输出备用列表信息——mminit_verify_zonelist 
17.6 指定处理页分配请求的节点——cpuset_init_current_mems_allowed 
17.7 求空页数——nr_free_pagecache_pages 
17.8 页移动性 
 第18章 page_alloc_init~pidhash_init 
18.1 处理用于热插拔CPU的页——page_alloc_init 
18.2 处理console参数——parse_early_param 
18.3 处理特殊参数——parse_args 
18.4 确认中断处理是否激活——irqs_disable 
18.5 内核异常列表定义——sort_main_extable 
18.6 初始化RCU机制——rcu_init 
18.7 准备使用IRQ——early_irq_init 
18.8 初始化中断——init_IRQ 
18.9 构建迅速搜寻进程信息的结构——pidhash_init 
 第19章 init_timers~page_cgroup _init 
19.1 初始化计时器——init_timers 
 19.1.1 timers_cpu_notify 
 19.1.2 register_cpu_notifier 
 19.1.3 open_softirq 
19.2 初始化高分辨率计时器——hrtimers_init 
19.3 注册softirq的回调函数——softirq_init 
19.4 设置xtime——timekeeping_init 
19.5 初始化硬件计时器——time_init 
19.6 初始化时钟时间——sched_clock_init 
19.7 激活CPU的中断处理——local_irq_enable 
19.8 检测用作根文件系统的init虚拟内存盘 
19.9 初始化以分配动态内存——vmalloc_init 
19.10 预先初始化目录项和索引节点缓存——vfs_caches_init_early 
19.11 初始化cpuset子系统——cpuset_init_early 
19.12 初始化内存子系统——page_cgroup_init 
 第20章 终止bootmem分配器并替换为伙伴系统 
20.1 mem_init函数的调用关系及其与数据结构的相互关系 
20.2 查看mem_init结构 
20.3 记录到不存在的内存位图——free_unused_memmap_node 
20.4 移交至普通空白页伙伴系统——free_all_bootmem_node 
 20.4.1 register_page_bootmem_info_node 
 20.4.2 free_all_bootmem_core 
 20.4.3 __free_pages_bootmem 
 20.4.4 __free_pages 
 20.4.5 free_hot_cold_page 
 20.4.6 __free_pages_ok 
20.5 移交到高端内存空白页伙伴系统——free_area 
 第21章 初始化以支持CPU热插拔 
21.1 初始化cpu_hotplug成员变量——cpu_hotplug_init 
21.2 CPU的联机→脱机转换处理 
 第22章 激活slab内存分配器——kmem_cache_init 
22.1 slab分配器的概念及结构体 
22.2 slab分配器的重要结构体——kmem_cache和kmem_list3 
22.3 查看kmem_cache_init结构 
22.4 初始化initkmem_list3[]、cache_cache、nodelist[] 
22.5 连接kmem_list3数组并决定cache压缩时间——set_up_list3s 
22.6 求出用于cache扩展压缩的页顺序——cache_estimate 
22.7 malloc_sizes和cache_names 
22.8 生成cache——kmem_cache_create 
 22.8.1 kmem_cache_zalloc 
 22.8.2 calculate_slab_order 
 22.8.3 setup_cpu_cache 
 22.8.4 enable_cpucache 
22.9 生成arraycache_init,kmem_list3 cache 
22.10 用kmalloc函数分配的内存替代静态分配的内存 
 第23章 kmem_trace_init~security_init 
23.1 生成ID alloccator缓存——idr_init_cache 
23.2 初始化pageset——setup_per_cpu_pageset 
23.3 指定交叉节点——numa_policy_init 
23.4 结束计时器初始化——late_time_init 
23.5 测定BogoMIPS——calibrate_delay 
23.6 制作位图以分配进程识别符(ID)——pidmap_init 
23.7 初始化优先树的数据结构——prio_tree_init 
23.8 生成anon_vma slab缓存——anon_vma_init 
23.9 为对象的每个用户赋予资格——cred_init 
23.10 初始化数据结构以使用fork函数——fork_init 
23.11 初始化生成进程的缓存——proc_caches_init 
23.12 初始化缓冲缓存——buffer_init 
23.13 准备密钥——key_init 
 第24章 初始化VFS中使用的多种缓存——vfs_cache_init 
 第25章 radix_tree_init~ftrace_init 
25.1 基数树相关数据结构初始化——radix_tree_init 
25.2 准备使用信号——signals_init 
25.3 注册并挂载proc文件系统——proc_root_init 
25.4 注册未能初始化的子系统——cgroup_init 
25.5 重置top_cpuset并注册cpuset文件系统——cpuset_init 
25.6 初始化任务统计信息接口——delayacct_init 
25.7 为管理延迟信息做准备——delayacct_init 
 25.7.1 延迟审计 
 25.7.2 delayacct_init 
 25.7.3 task_delay_info结构体和delayacct_tsk_init 
25.8 检查写缓冲一致性——check_bugs 
 第26章 同步内存与后备存储——page write back 
26.1 页回写机制 
26.2 激活页回写——pdflush_init 
26.3 pdflush线程 
26.4 指定页回写函数 
26.5 周期性页回写和强制性页回写回调函数调用方法 
 26.5.1 周期性页回写函数——wb_kupdate 
 26.5.2 强制性页回写函数——background_writeout 
26.6 初始化周期性页回写 
 第27章 查看启动内核的最终函数结构——rest_init 
 第28章 生成执行函数的内核线程——kernel_thread 
28.1 查看kernel_thread结构 
28.2 生成处理器的网关——do_fork 
28.3 复制父进程——copy_process 
 第29章 唤醒新生成的任务 
29.1 查看wake_up_new_task结构 
29.2 获取任务的就绪队列——task_rq_lock 
29.3 改善任务的优先顺序——effective_prio 
 第30章 准备使用内核 
30.1 将当前进程转移到其他CPU——sched_init_smp 
30.2 结束系统整体初始化——do_basic_setup 
 30.2.1 生成执行rcu_sched_grace_period的线程——rcu_init_sched 
 30.2.2 生成events工作队列——init_workqueues 
 30.2.3 初始化cpuset子系统的top_cpuset——cpuset_init_smp 
 30.2.4 生成khelper工作队列——usermodehelper_init 
 30.2.5 初始化Linux的设备模型——driver_init 
 30.2.6 在proc文件系统注册irq信息——init_irq_proc 
 30.2.7 调用内核未知子系统——do_initcalls 
30.3 为初始化之后的操作做准备——init_post 
 第31章 内核线程守护进程 
31.1 内核线程守护进程——kthreadd 
31.2 忽略信号——ignore_signals 
31.3 设置nice值——set_user_nice 
31.4 搜索执行任务的CPU——set_cpus_allowed_prt 
31.5 搜索包含列表的实际结构体位置——list_entry 
31.6 生成内核线程——create_kthread 
 第32章 find_task_by_pid_ns~cpu_idle 
32.1 用PID搜索任务——find_task_by_pid_ns 
32.2 解除BKL——unlock_kernel 
32.3 将调度类变更为idle——init_idle_bootup_task 
32.4 RCU机制激活完成通知——rcu_scheduler_starting 
32.5 激活内核抢占——preempt_enable_no_resched 
32.6 执行进程调度表——schedule 
32.7 Linux启动万里长征的终点——cpu_idle 
附录
 附录A 汇编语言、gas关键词总结 
 附录B 内核分析常见API 
 附录C 浅谈ext2文件系统 
 附录D Linux线程模型 
 附录E 链接器脚本文件结构 
后记 
索引 

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.