理解Unix进程

理解Unix进程

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
7.4210 评价豆瓣读书
免费试读

作品简介

本书从Unix编程的基础概念着手,采用循序渐进的方法,详细介绍了Unix进程的内部工作原理。《理解Unix进程》提供的许多简单而强大的技术,能够帮助Web开发人员深入了解Unix系统的并发性、守护进程、生成进程(spawning process)与信号等。同时,读者也可以使用这些技术和方法编写并调试自己的服务器。此外,《理解Unix进程》附录部分也涉及了一些流行的Ruby项目,让读者进一步了解如何巧妙运用Unix进程。

Jesse Storimer,高级软件工程师与自出版作家,服务于美国电子商务方案提供商Shopify。痴迷于编程,编程之余喜欢阅读、园艺以及徒步旅行等户外运动。除了经常写技术博客文章外,他还著有Working with TCP Sockets, Working with Ruby Threads两本颇有影响力的电子书。

作品目录

  1. 致谢
  2. 第1章 引言
  3. 第2章 基础知识
  4. 2.1 干嘛要在意?
  5. 2.2 驾驭神力!
  6. 2.3 概述
  7. 2.4 系统调用
  8. 2.5 命名法,wtf(2)
  9. 2.6 进程:Unix之本
  10. 第3章 进程皆有标识
  11. 3.1 交叉参考
  12. 3.2 实践领域
  13. 3.3 系统调用
  14. 第4章 进程皆有父
  15. 4.1 交叉参考
  16. 4.2 实践领域
  17. 4.3 系统调用
  18. 第5章 进程皆有文件描述符
  19. 5.1 万物皆为文件
  20. 5.2 描述符代表资源
  21. 5.3 标准流
  22. 5.4 实践领域
  23. 5.5 系统调用
  24. 第6章 进程皆有资源限制
  25. 6.1 找出限制
  26. 6.2 软限制与硬限制
  27. 6.3 提高软限制
  28. 6.4 超出限制
  29. 6.5 其他资源
  30. 6.6 实践领域
  31. 6.7 系统调用
  32. 第7章 进程皆有环境
  33. 7.1 这是个散列吗?
  34. 7.2 实践领域
  35. 7.3 系统调用
  36. 第8章 进程皆有参数
  37. 8.1 这是个数组!
  38. 8.2 实践领域
  39. 第9章 进程皆有名
  40. 9.1 进程命名
  41. 9.2 实践领域
  42. 第10章 进程皆有退出码
  43. 如何退出进程
  44. 第11章 进程皆可衍生
  45. 11.1 Luke,使用fork(2)
  46. 11.2 多核编程?
  47. 11.3 使用block
  48. 11.4 实践领域
  49. 11.5 系统调用
  50. 第12章 孤儿进程
  51. 12.1 失控
  52. 12.2 弃子
  53. 12.3 管理孤儿
  54. 第13章 友好的进程
  55. 13.1 对CoW好点
  56. 为何不可?
  57. 13.2 MRI/RBX用户
  58. 第14章 进程可待
  59. 14.1 看顾(Babysitting)
  60. 14.2 Process.wait一家子
  61. 14.3 使用Process.wait2进行通信
  62. 14.4 等待特定的子进程
  63. 14.5 竞争条件
  64. 14.6 实践领域
  65. 14.7 系统调用
  66. 第15章 僵尸进程
  67. 15.1 等待终有果
  68. 15.2 僵尸长什么样子?
  69. 15.3 实践领域
  70. 15.4 系统调用
  71. 第16章 进程皆可获得信号
  72. 16.1 捕获SIGCHLD
  73. 16.2 SIGCHLD与并发
  74. 16.3 信号入门
  75. 16.4 信号来自何方?
  76. 16.5 信号一览
  77. 16.6 重定义信号
  78. 16.7 忽略信号
  79. 16.8 信号处理程序是全局性的
  80. 16.9 恰当地重定义信号处理程序
  81. 16.10 何时接收不到信号?
  82. 16.11 实践领域
  83. 16.12 系统调用
  84. 第17章 进程皆可互通
  85. 17.1 我们的第一个管道
  86. 17.2 管道是单向的
  87. 17.3 共享管道
  88. 17.4 流与消息
  89. 17.5 远程IPC?
  90. 17.6 实践领域
  91. 17.7 系统调用
  92. 第18章 守护进程
  93. 18.1 首个进程
  94. 18.2 创建第一个守护进程
  95. 18.3 深入Rack
  96. 18.4 逐步将进程变成守护进程
  97. 18.5 进程组和会话组
  98. 18.6 实践领域
  99. 18.7 系统调用
  100. 第19章 生成终端进程
  101. 19.1 fork + exec
  102. 19.2 exec的参数
  103. Kernel#system
  104. Kernel#`
  105. Process.spawn
  106. IO.popen
  107. Open3
  108. 19.3 实践领域
  109. 19.4 系统调用
  110. 第20章 尾声
  111. 20.1 抽象
  112. 20.2 通信
  113. 20.3 再会,而非永别
  114. 附录A Resque如何管理进程
  115. A.1 架构
  116. A.2 利用进程衍生进行内存管理
  117. A.3 何必自找麻烦?
  118. A.4 难道垃圾收集器就不帮我们清理一下?
  119. 附录B Unicorn如何收割工作进程
  120. B.1 收割什么?
  121. B.2 总结
  122. 附录C preforking服务器
  123. C.1 高效的内存利用
  124. C.1.1 多个Mongrel
  125. C.1.2 多个Unicorn
  126. C.2 高效的负载均衡
  127. C.3 高效的系统管理
  128. preforking服务器的基础样例
  129. 附录D Spyglass
  130. D.1 Spyglass的体系
  131. D.2 启动Spyglass
  132. D.3 请求抵达之前
  133. D.4 建立连接
  134. D.5 万事皆毕
  135. D.6 启程
载入中

热门划线

  1. 以下是FreeBSD和Linux系统手册页中最常用的节:• 节1:一般命令• 节2:系统调用• 节3:C库函数• 节4:特殊文件2 人
  2. 资源一旦关闭,对应的文件描述符编号就又能够使用了2 人
  3. 这里所说的环境,指的是“环境变量”。环境变量是包含进程数据的键-值对(key-value pairs)。 所有进程都从其父进程处继承环境变量。它们由父进程设置并被子进程所继承。每一个进程都有环境变量,环境变量对于特定进程而言是全局性的。2 人
  4. 比起解析命令行选项,使用环境变量的开销通常更小一些2 人
  5. 有两种运作在进程自身层面上的机制可以用来互通信息。一个是进程名称,另一个是退出码。2 人
  6. 衍生(forking)是Unix编程中最强大的概念之一。fork(2)系统调用允许运行中的进程以编程的形式创建新的进程。这个新进程和原始进程一模一样。2 人
  7. 子进程从父进程处继承了其所占用内存中的所有内容,以及所有属于父进程的已打开的文件描述符。2 人
  8. 在fork(2)调用时,子进程从父进程处继承了所有的文件描述符,也获得了父进程所有的文件描述符的编号。这样,两个进程就可以共享打开的文件、套接字,等等。2 人
  9. 第一个是守护进程。守护进程是一种长期运行的进程,为了能够一直保持运行,它们有意作为孤儿进程存在。2 人
  10. 信号投递是不可靠的。我的意思是说如果你的代码正在处理CHLD信号,这时候另一个子进程结束了,那么你未必能收到第二个CHLD信号。2 人

喜欢这本书的人也喜欢