Unix内核源码剖析

Unix内核源码剖析
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [日] ,
2014-03
版次: 1
ISBN: 9787115345219
定价: 79.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 368页
字数: 433千字
正文语种: 简体中文
95人买过
  •   为什么要阅读内核源代码
      ● 对计算机系统的全貌有更深入的了解
      ● 对学到的算法和思路举一反三
      ● 加深对操作系统的理解
      ● 提升自身的技术水平
      为什么选择UNIX V6?
      ● 代码行数约为1 万行
      ● 有充实的资料可参考
      ● 网罗了操作系统的基本功能
      ● 简化的设计
      ● 便于读者对系统有完整的了解
      ● 有模拟器可供参考
      《Unix内核源码剖析》是一本Unix内核源代码的阅读指南。作者结合UNIX V6已公开的相关文档,对其内核源码进行详细剖析,旨在让读者更深入地理解进程、中断、块I/O系统、文件系统、字符I/O系统、启动系统等操作系统的基本原理。
      《Unix内核源码剖析》适合操作系统的初中级学习者阅读,特别适合通过大学课程和其他入门书对操作系统有所了解,但是对具体细节缺乏深入理解的读者,以及那些对操作系统的具体实现有兴趣的读者。   青柳隆宏,日本资深程序员,现在硅谷从事计算机处理芯片的设计工作。曾设计了超级计算机“京”的L1缓存,该计算机在2011年排名世界Top 500超级计算机的第1位,也是人类历史上第一台计算能力跨越1亿亿次每秒的计算系统。

      译者简介:
      殷中翔,日本国立九州大学系统信息专业硕士学位。具有十余年软件开发经验,现主要从事企业Web系统服务器端的开发及维护工作。
    第I部分
    什么是UNIX V6  

    第1章 UNIX V6的全貌  
    1.1  什么是UNIX  V6  
    1.2  UNIX的历史
    1.3  UNIX  V6内核  
    1.4  构成UNIX V6运行环境的硬件  
    PDP-11  
    1.5  代码  
    1.6  手册  
    1.7  小结  

    第II部分
    进程  

    第2章 进程  
    2.1  进程的概要  
    什么是进程  
    进程的并行执行  
    进程的执行状态  
    用户模式和内核模式  
    交换处理
    2.2  proc结构体和user结构体  
    proc结构体  
    user结构体  
    2.3  为进程分配的内存  
    代码段  
    数据段  
    虚拟地址空间  
    变换地址  
    2.4  小结  

    第3章 进程的管理I  
    3.1  进程的生命周期  
    3.2  创建进程  
    进程的复制  
    父进程和子进程  
    系统调用fork  
    newproc()  
    panic()  
    3.3  切换执行进程  
    中断执行进程  
    进程的执行状态  
    选择执行进程的算法  
    上下文切换  
    系统调用wait  
    sleep()  
    swtch()  
    swtch()  的返回位置  
    setpri()  
    wakeup()  
    setrun()  
    3.4  执行程序  
    程序执行文件的格式  
    系统调用exec  
    estabur()  
    sureg()  
    expand()  
    3.5  进程的终止  
    系统调用exit  
    系统调用wait  
    3.6  数据区域的扩展  
    系统调用break  
    3.7  管理内存和交换空间  
    map结构体  
    获取未使用区域  
    释放区域  
    3.8  小结  

    第4章 交换处理  
    4.1  什么是交换处理  
    代码段和数据段  
    sched()  
    xswap()  
    4.2  共享代码段的处理  
    xalloc()  
    xfree()  
    xccdec()  
    4.3  小结  

    第III  部分
    中断  

    第5章 中断与陷入  
    5.1  什么是中断与陷入  
    什么是中断  
    什么是陷入  
    5.2  优先级与向量(Vector)  
    中断优先级和处理器优先级  
    中断和陷入向量  
    5.3  中断和陷入的处理流程  
    发生中断或陷入  
    执行call和trap  
    5.4  时钟中断处理函数  
    时钟设备的规格  
    时钟中断处理函数的内容  
    clock()  
    5.5  陷入处理函数  
    trap()  
    grow()  
    5.6  系统调用的处理流程  
    传递参数的方法  
    sysent结构体  
    trap()  
    5.7  小结  

    第6章 信号  
    6.1  什么是信号  
    信号的发送方法  
    确认接收信号  
    信号的种类  
    ssig()  
    kill()  
    signal()  
    psignal()  
    issig()  
    psig()  
    core()  
    在系统调用处理中处理信号  
    6.2  跟踪功能  
    什么是跟踪  
    ipc结构体  
    跟踪的处理流程  
    stop()  
    ptrace()  
    procxmt()  
    wait()  
    6.3  小结  

    第IV  部分
    块I/O  系统  

    第7章 块设备子系统  
    7.1  设备的基础  
    设备的种类  
    设备驱动  
    类别和设备编号  
    特殊文件  
    7.2  块设备子系统  
    缓冲区  
    b-list和av-list  
    RAW  输入输出  
    7.3  缓冲区的初始化  
    binit()  
    clrbuf()  
    7.4  缓冲区的获取和释放  
    getblk()  
    notavail()  
    brelse()  
    7.5  读取  
    读取的种类  
    bread()  
    iowait()  
    iodone()  
    geterror()  
    breada()  
    incore()  
    7.6  写入  
    写入的种类  
    bwrite()  
    bawrite()  
    bdwrite()  
    bflush()  
    7.7  RAW输入输出  
    physio()  
    swap()  
    7.8  小结  

    第8章 块设备驱动  
    8.1  什么是块设备驱动  
    块设备驱动表  
    设备处理队列  
    处理流程  
    8.2  RK-11磁盘驱动  
    RK11-D  
    特殊文件  
    设定bdevsw[]  
    中断处理函数  
    RK11-D  的寄存器  
    rkstrategy()  
    rkstart()  
    rkaddr()  
    devstart()  
    rkintr()  
    RAW  输入输出  
    8.3  小结  

    第V  部分
    文件系统  

    第9章 文件系统  
    9.1  什么是文件系统  
    inode  
    树状结构的命名空间  
    挂载  
    访问权限  
    根磁盘  
    9.2  块设备的区域  
    用于启动的区域  
    超级块  
    inode区域  
    存储区域  
    9.3  挂载  
    mount结构体  
    系统调用mount  
    getmdev()  
    系统调用umount  
    9.4  inode的获取和释放  
    inode[]  
    iget()  
    iput()  
    iupdat()  
    9.5  inode与存储区域的对应关系  
    bmap()  
    itrunc()  
    9.6  分配块设备中的块  
    ialloc()  
    ifree()  
    alloc()  
    free()  
    getfs()  
    badblock()  
    9.7  将路径变为inode  
    目录的内容  
    namei()  
    access()  
    9.8  初始化与同步  
    iinit()  
    update()  
    9.9  小结  

    第10章 文件处理  
    10.1  用户程序对文件的处理  
    10.2  3  个结构体  
    标准输入输出  
    10.3  文件的生成和打开处理  
    系统调用creat  
    maknode()  
    wdir()  
    系统调用open  
    open1()  
    falloc()  
    ufalloc()  
    openi()  
    10.4  文件的读取和写入  
    系统调用read、write  
    rdwr()  
    readi()  
    writei()  
    iomove()  
    getf()  
    10.5  指定文件的读写位置  
    系统调用seek  
    10.6  关闭文件  
    系统调用close  
    closef()  
    closei()  
    10.7  目录的生成  
    系统调用mknod  
    10.8  文件的链接  
    系统调用link  
    suser()  
    10.9  删除文件  
    系统调用unlink  
    10.10  小结  

    第11章 管道  
    11.1  什么是管道  
    使用管道的优点  
    11.2  开始管道通信  
    系统调用pipe  
    11.3  收发数据  
    writep()  
    readp()  
    plock()  
    prele()  
    11.4  结束管道通信  
    closef()  
    11.5  建立管道通信的流程  
    建立父子进程间的通信  
    系统调用dup  
    11.6  小结  

    第VI  部分
    字符I/O  系统  

    第12章 字符设备  
    12.1  字符设备驱动  
    字符设备缓冲区  
    对缓冲区的操作  
    初始化缓冲区池  
    12.2  LP11设备驱动  
    什么是LP11  
    LP11设备驱动的功能  
    lpopen()  
    lpwrite()  
    lpcanon()  
    lpoutput()  
    lpstart()  
    lpint()  
    lpclose()  
    12.3  小结  

    第13章 电传终端  
    13.1  什么是电传终端  
    电传终端的接口  
    特殊文件  
    tty  结构体  
    maptab[]  
    partab[]  
    KL11/DL11  
    KL11/DL11设备驱动的规格  
    KL11/DL11设备驱动函数  
    13.2  终端的开启和关闭  
    klopen()  
    klclose()  
    wflushtty()  
    flushtty()  
    13.3  终端的设定  
    gtty()  
    stty()  
    sgtty()  
    klsgtty()  
    ttystty()  
    13.4  从终端输入文字  
    klrint()  
    ttyinput()  
    13.5  读取输入的数据  
    klread()  
    ttread()  
    canon()  
    13.6  向终端输出数据  
    klwrite()  
    ttwrite()  
    ttyoutput()  
    ttstart()  
    ttrstrt()  
    klxint()  
    13.7  小结  

    第VII  部分
    启动系统  

    第14章 启动系统  
    14.1  启动的流程  
    start  
    main()  
    /etc/init  
    14.2  小结  
    附 录  参考资料等  
    A.1 参考文献、网站  
    A.2 pre  K&R  C  
    后记  
    索引 
  • 内容简介:
      为什么要阅读内核源代码
      ● 对计算机系统的全貌有更深入的了解
      ● 对学到的算法和思路举一反三
      ● 加深对操作系统的理解
      ● 提升自身的技术水平
      为什么选择UNIX V6?
      ● 代码行数约为1 万行
      ● 有充实的资料可参考
      ● 网罗了操作系统的基本功能
      ● 简化的设计
      ● 便于读者对系统有完整的了解
      ● 有模拟器可供参考
      《Unix内核源码剖析》是一本Unix内核源代码的阅读指南。作者结合UNIX V6已公开的相关文档,对其内核源码进行详细剖析,旨在让读者更深入地理解进程、中断、块I/O系统、文件系统、字符I/O系统、启动系统等操作系统的基本原理。
      《Unix内核源码剖析》适合操作系统的初中级学习者阅读,特别适合通过大学课程和其他入门书对操作系统有所了解,但是对具体细节缺乏深入理解的读者,以及那些对操作系统的具体实现有兴趣的读者。
  • 作者简介:
      青柳隆宏,日本资深程序员,现在硅谷从事计算机处理芯片的设计工作。曾设计了超级计算机“京”的L1缓存,该计算机在2011年排名世界Top 500超级计算机的第1位,也是人类历史上第一台计算能力跨越1亿亿次每秒的计算系统。

      译者简介:
      殷中翔,日本国立九州大学系统信息专业硕士学位。具有十余年软件开发经验,现主要从事企业Web系统服务器端的开发及维护工作。
  • 目录:
    第I部分
    什么是UNIX V6  

    第1章 UNIX V6的全貌  
    1.1  什么是UNIX  V6  
    1.2  UNIX的历史
    1.3  UNIX  V6内核  
    1.4  构成UNIX V6运行环境的硬件  
    PDP-11  
    1.5  代码  
    1.6  手册  
    1.7  小结  

    第II部分
    进程  

    第2章 进程  
    2.1  进程的概要  
    什么是进程  
    进程的并行执行  
    进程的执行状态  
    用户模式和内核模式  
    交换处理
    2.2  proc结构体和user结构体  
    proc结构体  
    user结构体  
    2.3  为进程分配的内存  
    代码段  
    数据段  
    虚拟地址空间  
    变换地址  
    2.4  小结  

    第3章 进程的管理I  
    3.1  进程的生命周期  
    3.2  创建进程  
    进程的复制  
    父进程和子进程  
    系统调用fork  
    newproc()  
    panic()  
    3.3  切换执行进程  
    中断执行进程  
    进程的执行状态  
    选择执行进程的算法  
    上下文切换  
    系统调用wait  
    sleep()  
    swtch()  
    swtch()  的返回位置  
    setpri()  
    wakeup()  
    setrun()  
    3.4  执行程序  
    程序执行文件的格式  
    系统调用exec  
    estabur()  
    sureg()  
    expand()  
    3.5  进程的终止  
    系统调用exit  
    系统调用wait  
    3.6  数据区域的扩展  
    系统调用break  
    3.7  管理内存和交换空间  
    map结构体  
    获取未使用区域  
    释放区域  
    3.8  小结  

    第4章 交换处理  
    4.1  什么是交换处理  
    代码段和数据段  
    sched()  
    xswap()  
    4.2  共享代码段的处理  
    xalloc()  
    xfree()  
    xccdec()  
    4.3  小结  

    第III  部分
    中断  

    第5章 中断与陷入  
    5.1  什么是中断与陷入  
    什么是中断  
    什么是陷入  
    5.2  优先级与向量(Vector)  
    中断优先级和处理器优先级  
    中断和陷入向量  
    5.3  中断和陷入的处理流程  
    发生中断或陷入  
    执行call和trap  
    5.4  时钟中断处理函数  
    时钟设备的规格  
    时钟中断处理函数的内容  
    clock()  
    5.5  陷入处理函数  
    trap()  
    grow()  
    5.6  系统调用的处理流程  
    传递参数的方法  
    sysent结构体  
    trap()  
    5.7  小结  

    第6章 信号  
    6.1  什么是信号  
    信号的发送方法  
    确认接收信号  
    信号的种类  
    ssig()  
    kill()  
    signal()  
    psignal()  
    issig()  
    psig()  
    core()  
    在系统调用处理中处理信号  
    6.2  跟踪功能  
    什么是跟踪  
    ipc结构体  
    跟踪的处理流程  
    stop()  
    ptrace()  
    procxmt()  
    wait()  
    6.3  小结  

    第IV  部分
    块I/O  系统  

    第7章 块设备子系统  
    7.1  设备的基础  
    设备的种类  
    设备驱动  
    类别和设备编号  
    特殊文件  
    7.2  块设备子系统  
    缓冲区  
    b-list和av-list  
    RAW  输入输出  
    7.3  缓冲区的初始化  
    binit()  
    clrbuf()  
    7.4  缓冲区的获取和释放  
    getblk()  
    notavail()  
    brelse()  
    7.5  读取  
    读取的种类  
    bread()  
    iowait()  
    iodone()  
    geterror()  
    breada()  
    incore()  
    7.6  写入  
    写入的种类  
    bwrite()  
    bawrite()  
    bdwrite()  
    bflush()  
    7.7  RAW输入输出  
    physio()  
    swap()  
    7.8  小结  

    第8章 块设备驱动  
    8.1  什么是块设备驱动  
    块设备驱动表  
    设备处理队列  
    处理流程  
    8.2  RK-11磁盘驱动  
    RK11-D  
    特殊文件  
    设定bdevsw[]  
    中断处理函数  
    RK11-D  的寄存器  
    rkstrategy()  
    rkstart()  
    rkaddr()  
    devstart()  
    rkintr()  
    RAW  输入输出  
    8.3  小结  

    第V  部分
    文件系统  

    第9章 文件系统  
    9.1  什么是文件系统  
    inode  
    树状结构的命名空间  
    挂载  
    访问权限  
    根磁盘  
    9.2  块设备的区域  
    用于启动的区域  
    超级块  
    inode区域  
    存储区域  
    9.3  挂载  
    mount结构体  
    系统调用mount  
    getmdev()  
    系统调用umount  
    9.4  inode的获取和释放  
    inode[]  
    iget()  
    iput()  
    iupdat()  
    9.5  inode与存储区域的对应关系  
    bmap()  
    itrunc()  
    9.6  分配块设备中的块  
    ialloc()  
    ifree()  
    alloc()  
    free()  
    getfs()  
    badblock()  
    9.7  将路径变为inode  
    目录的内容  
    namei()  
    access()  
    9.8  初始化与同步  
    iinit()  
    update()  
    9.9  小结  

    第10章 文件处理  
    10.1  用户程序对文件的处理  
    10.2  3  个结构体  
    标准输入输出  
    10.3  文件的生成和打开处理  
    系统调用creat  
    maknode()  
    wdir()  
    系统调用open  
    open1()  
    falloc()  
    ufalloc()  
    openi()  
    10.4  文件的读取和写入  
    系统调用read、write  
    rdwr()  
    readi()  
    writei()  
    iomove()  
    getf()  
    10.5  指定文件的读写位置  
    系统调用seek  
    10.6  关闭文件  
    系统调用close  
    closef()  
    closei()  
    10.7  目录的生成  
    系统调用mknod  
    10.8  文件的链接  
    系统调用link  
    suser()  
    10.9  删除文件  
    系统调用unlink  
    10.10  小结  

    第11章 管道  
    11.1  什么是管道  
    使用管道的优点  
    11.2  开始管道通信  
    系统调用pipe  
    11.3  收发数据  
    writep()  
    readp()  
    plock()  
    prele()  
    11.4  结束管道通信  
    closef()  
    11.5  建立管道通信的流程  
    建立父子进程间的通信  
    系统调用dup  
    11.6  小结  

    第VI  部分
    字符I/O  系统  

    第12章 字符设备  
    12.1  字符设备驱动  
    字符设备缓冲区  
    对缓冲区的操作  
    初始化缓冲区池  
    12.2  LP11设备驱动  
    什么是LP11  
    LP11设备驱动的功能  
    lpopen()  
    lpwrite()  
    lpcanon()  
    lpoutput()  
    lpstart()  
    lpint()  
    lpclose()  
    12.3  小结  

    第13章 电传终端  
    13.1  什么是电传终端  
    电传终端的接口  
    特殊文件  
    tty  结构体  
    maptab[]  
    partab[]  
    KL11/DL11  
    KL11/DL11设备驱动的规格  
    KL11/DL11设备驱动函数  
    13.2  终端的开启和关闭  
    klopen()  
    klclose()  
    wflushtty()  
    flushtty()  
    13.3  终端的设定  
    gtty()  
    stty()  
    sgtty()  
    klsgtty()  
    ttystty()  
    13.4  从终端输入文字  
    klrint()  
    ttyinput()  
    13.5  读取输入的数据  
    klread()  
    ttread()  
    canon()  
    13.6  向终端输出数据  
    klwrite()  
    ttwrite()  
    ttyoutput()  
    ttstart()  
    ttrstrt()  
    klxint()  
    13.7  小结  

    第VII  部分
    启动系统  

    第14章 启动系统  
    14.1  启动的流程  
    start  
    main()  
    /etc/init  
    14.2  小结  
    附 录  参考资料等  
    A.1 参考文献、网站  
    A.2 pre  K&R  C  
    后记  
    索引 
查看详情
系列丛书 / 更多
Unix内核源码剖析
机器学习实战
[美]Peter Harrington 著;李锐、李鹏、曲亚东 译
Unix内核源码剖析
图灵程序设计丛书:Python基础教程
[挪威]Magnus Lie Hetland 著;司维、曾军崴、谭颖华 译
Unix内核源码剖析
JavaScript高级程序设计(第3版)
[美]Nicholas C.Zakas 著;李松峰、曹力 译
Unix内核源码剖析
Python编程:从入门到实践
[美]埃里克·马瑟斯(Eric Matthes) 著;袁国忠 译
Unix内核源码剖析
R语言实战(第2版)
[美]卡巴科弗(Robert I. Kabacoff) 著;王小宁、刘撷芯、黄俊文 译
Unix内核源码剖析
算法(第4版)
[美]Robert、[美]Kevin Wayne 著;谢路云 译
Unix内核源码剖析
大数据:互联网大规模数据挖掘与分布式处理
[美]Anand、[美]Jeffrey David Ullman 著;王斌 译
Unix内核源码剖析
Spark快速大数据分析
[美]卡劳(Holden Karau)、[美]肯维尼斯科(Andy Konwinski)、[美]温德尔(Patrick Wendell)、[加拿大]扎哈里亚(Matei Zaharia) 著;王道远 译
Unix内核源码剖析
MySQL必知必会
[英]福塔(Ben Forta) 著;刘晓霞、钟鸣 译
Unix内核源码剖析
Objective-C基础教程 第2版
[美]Scott、[美]Waqar、[美]Mark Dalrymple 著;周庆成 译
Unix内核源码剖析
图解HTTP
[日]上野·宣 著;于均良 译
Unix内核源码剖析
算法图解
袁国忠 译
相关图书 / 更多
Unix内核源码剖析
Unreal Engine 5完全自学教程
崔润(同步Sch)
Unix内核源码剖析
Unity 2D游戏开发
[美]弗兰茨·兰辛格 (Franz Lanzinger)著 周子衿 译
Unix内核源码剖析
Unity 3D游戏开发(第3版)
宣雨松
Unix内核源码剖析
Unity实战(第3版)
[美]约瑟夫·霍金(Joseph Hocking)著 王冬 殷崇英 译
Unix内核源码剖析
Unity3D虚拟现实应用开发实践())
刘龙
Unix内核源码剖析
Unity互动媒体设计实例教程
赵志靖;周静
Unix内核源码剖析
Unity 3D 游戏开发(微课版)
黄展鹏
Unix内核源码剖析
Unity 3D游戏开发
[美]弗兰茨·兰辛格 (Franz Lanzinger)著 周子衿 译
Unix内核源码剖析
Unity实战技巧精粹:290秘技大全
[日]药师寺国安
Unix内核源码剖析
Unity 3D游戏开发技术详解与典型案例
吴亚峰
Unix内核源码剖析
Unreal Engine 5从入门到精通
左未
Unix内核源码剖析
Unity Shader入门与实战
黄志翔
您可能感兴趣 / 更多
Unix内核源码剖析
你想活出怎样的人生
[日]宫崎骏 著;磨铁文化 出品
Unix内核源码剖析
空腹的神奇自愈力(诺贝尔奖研究证实,空腹是打开身体自我修复及细胞自噬的开关。七分饱,不看医;五分饱,笑到老;科学空腹活百岁)
[日]船濑俊介 著;李萌 译;紫图图书 出品
Unix内核源码剖析
怕痛的我,把防御力点满就对了6【定制泡泡弹幕卡牌x4】高人气动画原著轻小说
[日]夕蜜柑 著;[日]狐印 绘;酷威文化 出品
Unix内核源码剖析
OVERLORD.8半森妖精的神人(上,下)
[日]丸山黄金 著;刘晨 译
Unix内核源码剖析
少年星象
[日]NOEYEBROW 绘;漫友文化 出品
Unix内核源码剖析
新书开店:1000 家人气旺店的实操技巧
[日]富田英太 著;张凤 译;颉腾文化 出品
Unix内核源码剖析
葡萄球菌(直木奖得主经典社会派推理代表作首次引进,每一个细节都是预告结局的伏笔,高节奏反转的情节令人拍案称奇。)
[日]道尾秀介
Unix内核源码剖析
PLUTO冥王 001(简体中文版,“日本漫画之神—浦泽直树作品,首刷限定附赠镭射明信片一张)
[日]浦泽直树×手冢治虫
Unix内核源码剖析
PLUTO冥王 002(简体中文版,“日本漫画之神—浦泽直树作品,首刷限定附赠镭射明信片一张)
[日]浦泽直树×手冢治虫
Unix内核源码剖析
獾的美食奇遇(全3册精装,日本知名图画书作家安井季子、画家重森千佳联袂打造,绘本妈妈海桐推荐)
[日]安井季子/文 (日)重森千佳 图
Unix内核源码剖析
妈妈,对不起(宫西达也图画书)表达孩子对妈妈的爱
[日]宫西达也 著;彭懿 译
Unix内核源码剖析
大口大口地吃,好吃极了(宫西达也图画书)付诸行动,才有收获
[日]宫西达也 著;朱自强 译