コンピュータ・システム ―プログラマの視点から(電子書籍版)

出版社: 丸善出版
著者:
発行日: 2019-03-29
分野: 基礎・関連科学  >  基礎医学関連科学一般
ISBN: 9784621302019
電子書籍版: 2019-03-29 (電子書籍版)
電子書籍
章別単位での購入はできません
ブラウザ、アプリ閲覧

17,600 円(税込)

商品紹介

コンピュータ・システムの構造と設計についての多様な側面がプログラマの視点から書かれた一冊。コンピュータ・システムに関する書籍には、ハードウェア・アーキテクチャ、オペレーティング・システム、コンパイラ、ネットワークなど、システムのある一側面について作り手の視点から著されたものが多いなか、本書ではそれらのシステム全体に関する知識をどう活用すればよいプログラムを書けるのか、それらがプログラムの正しさ、性能、利便性にどう影響するかがプログラマの観点から統一的に著されている。本書はx86-64マシン・コードを実行可能なマシンでLinux上のCプログラムがどう動くかに焦点を当てており、読者はすぐに試してみて結果をじかに見ることができる。カーネギー・メロン大学のコンピュータ科学入門コースから生まれた世界的に定評のある教科書の第3版の翻訳。

目次

  • 表紙
  • 監訳者まえがき
  • 序文
  • 著者紹介
  • 監訳者・訳者一覧
  • 目次
  • 第1章 コンピュータ・システム・ツアー
  • 1.1 情報はビット + コンテクストである
  • 1.2 プログラムは別のプログラムによって別の形に翻訳される
  • 1.3 言語システムの働きを理解することは割に合う
  • 1.4 プロセッサはメモリに格納された命令を読んで解釈する
  • 1.5 キャッシュが性能を左右する
  • 1.6 ストレージ・デバイスは階層を形成する
  • 1.7 オペレーティング・システムがハードウェアを管理する
  • 1.8 システムはネットワークを使って他のシステムと通信する
  • 1.9 重要なテーマ
  • 1.10 まとめ
  • 書誌ノート
  • 練習問題の解答
  • 第I部 プログラムの構造と実行
  • 第2章 情報の表現と操作
  • 2.1 情報の格納
  • 2.2 整数の表現
  • 2.3 整数演算
  • 2.4 浮動小数点数
  • 2.5 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 第3章 プログラムのマシン・レベルの表現
  • 3.1 歴史的な視点
  • 3.2 プログラムのエンコーディング
  • 3.3 データ・フォーマット
  • 3.4 情報へのアクセス
  • 3.5 算術および論理演算
  • 3.6 制御
  • 3.7 プロシージャ
  • 3.8 配列の配置とそのアクセス
  • 3.9 非均質データ構造
  • 3.10 マシン・レベル・プログラムにおける制御とデータの組み合わせ
  • 3.11 浮動小数点コード
  • 3.12 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 第4章 プロセッサ・アーキテクチャ
  • 4.1 Y86 - 64命令セット・アーキテクチャ
  • 4.2 論理設計とハードウェア制御言語HCL
  • 4.3 シーケンシャルなY86 - 64の実装
  • 4.4 パイプライン処理の一般的な原理
  • 4.5 パイプライン化されたY86 - 64の実装
  • 4.6 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 第5章 プログラム性能の最適化
  • 5.1 最適化コンパイラの機能とその限界
  • 5.2 プログラム性能の表現
  • 5.3 プログラム例
  • 5.4 ループ非効率性の除去
  • 5.5 関数呼び出しの削減
  • 5.6 不要なメモリ参照の削除
  • 5.7 最新のプロセッサを理解する
  • 5.8 ループ・アンローリング
  • 5.9 並列性の強化
  • 5.10 コンバイン・コードの最適化に対する結果のまとめ
  • 5.11 いくつかの制限事項
  • 5.12 メモリ性能を理解する
  • 5.13 現実世界での生活 : 性能向上のテクニック
  • 5.14 性能ボトルネックを明確にし削除する
  • 5.15 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 第6章 メモリ階層
  • 6.1 ストレージの技術
  • 6.2 局所性
  • 6.3 メモリ階層
  • 6.4 キャッシュ・メモリ
  • 6.5 キャッシュに優しいコードを書く
  • 6.6 まとめ : プログラム性能に対するキャッシュの影響
  • 6.7 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 第II部 コンピュータ・システム上でのプログラムの実行
  • 第7章 リンク
  • 7.1 コンパイラ・ドライバ
  • 7.2 静的リンク
  • 7.3 オブジェクト・ファイル
  • 7.4 再配置可能オブジェクト・ファイル
  • 7.5 シンボルおよびシンボル・テーブル
  • 7.6 シンボル解決
  • 7.7 再配置
  • 7.8 実行可能オブジェクト・ファイル
  • 7.9 実行可能オブジェクト・ファイルのロード
  • 7.10 共有ライブラリの動的リンク
  • 7.11 アプリケーションからの共有ライブラリのロードおよびリンク
  • 7.12 ポジション非依存コード ( PIC )
  • 7.13 ライブラリのインターポジショニング
  • 7.14 オブジェクト・ファイルを操作するツール
  • 7.15 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 第8章 例外的な制御フロー
  • 8.1 例外
  • 8.2 プロセス
  • 8.3 システム・コールにおけるエラー・ハンドリング
  • 8.4 プロセス制御
  • 8.5 シグナル
  • 8.6 非局所的ジャンプ
  • 8.7 プロセスを扱うためのツール
  • 8.8 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 第9章 仮想メモリ
  • 9.1 物理アドレシングと仮想アドレシング
  • 9.2 アドレス空間
  • 9.3 キャッシュするツールとしてのVM
  • 9.4 メモリ管理ツールとしてのVM
  • 9.5 メモリ保護ツールとしてのVM
  • 9.6 アドレス変換
  • 9.7 ケース・スタディ : Intel Core i7 / Linux メモリ・システム
  • 9.8 メモリ・マッピング
  • 9.9 動的なメモリ割り当て
  • 9.10 ごみ集め
  • 9.11 Cプログラムでよくあるメモリ関連のバグ
  • 9.12 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 第III部 プログラム間のやり取りと通信
  • 第10章 システム・レベルI / O
  • 10.1 UNIX I / O
  • 10.2 ファイル
  • 10.3 ファイルのオープン・クローズ
  • 10.4 ファイルの読み書き
  • 10.5 RIOパッケージを用いたロバストな読み書き
  • 10.6 ファイルのメタデータの読み込み
  • 10.7 ディレクトリの中身の読み込み
  • 10.8 ファイル共有
  • 10.9 I / Oのリダイレクト
  • 10.10 標準I / O
  • 10.11 まとめ : どのI / O関数を用いるべきか ?
  • 10.12 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 第11章 ネットワーク・プログラミング
  • 11.1 クライアント・サーバ・プログラミング・モデル
  • 11.2 ネットワーク
  • 11.3 グローバルIPインターネット
  • 11.4 ソケット・インターフェース
  • 11.5 ウェブ・サーバ
  • 11.6 まとめ : TINYウェブ・サーバ
  • 11.7 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 第12章 並行プログラミング
  • 12.1 プロセスによる並行プログラミング
  • 12.2 I / Oマルチプレクシングによる並行プログラミング
  • 12.3 スレッドによる並行プログラミング
  • 12.4 スレッド・プログラムにおける共有変数
  • 12.5 セマフォによるスレッドの同期
  • 12.6 並行処理のためのスレッドの使い方
  • 12.7 他の並行性問題
  • 12.8 まとめ
  • 書誌ノート
  • ホームワーク
  • 練習問題の解答
  • 付録A エラー・ハンドリング
  • A.1 UNIXシステムにおけるエラー・ハンドリング
  • A.2 エラー・ハンドリング・ラッパー
  • 参考文献
  • 索引
  • 奥付

この書籍の参考文献

参考文献のリンクは、リンク先の都合等により正しく表示されない場合がありますので、あらかじめご了承下さい。

本参考文献は電子書籍掲載内容を元にしております。

参考文献

P.851 掲載の参考文献
[1] Advanced Micro Devices, Inc. Software Optimization Guide for AMD64 Processors, 2005. Publication Number 25112.
[2] Advanced Micro Devices, Inc. AMD64 Architecture Programmer's Manual, Volume 1 : Application Programming, 2013. Publication Number 24592.
[3] Advanced Micro Devices, Inc. AMD64 Architecture Programmer's Manual, Volume 3 : General-Purpose and System Instructions, 2013. Publication Number 24594.
[4] Advanced Micro Devices, Inc. AMD64 Architecture Programmer's Manual, Volume 4 : 128-Bit and 256-Bit Media Instructions, 2013. Publication Number 26568.
[5] K. Arnold, J. Gosling, and D. Holmes. The Java Programming Language, Fourth Edition. Prentice Hall, 2005.
[7] A. Birrell. An introduction to programming with threads. Technical Report 35, Digital Systems Research Center, 1989.
[11] D. Bovet and M. Cesati. Understanding the Linux Kernel, Third Edition. O'Reilly Media, Inc., 2005.
[12] A. Demke Brown and T. Mowry. Taming the memory hogs : Using compiler-inserted releases to manage physical memory intelligently. In Proceedings of the 4th Symposium on Operating Systems Design and Implementation (OSDI), pages 31-44. Usenix, October 2000.
[13] R. E. Bryant. Term-level verification of a pipelined CISC microprocessor. Technical Report CMUCS-05-195, Carnegie Mellon University, School of Computer Science, 2005.
[15] D. Butenhof. Programming with Posix Threads. Addison-Wesley, 1997.
[26] C. Cowan, P. Wagle, C. Pu, S. Beattie, and J. Walpole. Buffer overflows : Attacks and defenses for the vulnerability of the decade. In DARPA Information Survivability Conference and Expo (DISCEX), volume 2, pages 119-129, March 2000.
[30] E. Demaine. Cache-oblivious algorithms and data structures. In Lecture Notes from the EEF Summer School on Massive Data Sets. BRICS, University of Aarhus, Denmark, 2002.
[31] E. W. Dijkstra. Cooperating sequential processes. Technical Report EWD-123, Technological University, Eindhoven, the Netherlands, 1965.
[35] M. W. Eichen and J. A. Rochlis. With microscope and tweezers : An analysis of the Internet virus of November, 1988. In Proceedings of the IEEE Symposium on Research in Security and Privacy, pages 326-343. IEEE, 1989.
[36] ELF-64 Object File Format, Version 1.5 Draft 2, 1998. Available at http://www.uclibc.org/docs/elf-64-gen.pdf.
[38] M. Frigo, C. E. Leiserson, H. Prokop, and S. Ramachandran. Cache-oblivious algorithms. In Proceedings of the 40th IEEE Symposium on Foundations of Computer Science (FOCS), pages 285-297. IEEE, August 1999.
[42] Google. IPv6 Adoption. Available at http://www.google.com/intl/en/ipv6/statistics.html.
[44] L. Gwennap. New algorithm improves branch prediction. Microprocessor Report 9 (4), March 1995.
[45] S. P. Harbison and G. L. Steele, Jr. C, A Reference Manual, Fifth Edition. Prentice Hall, 2002.
[46] J. L. Hennessy and D. A. Patterson. Computer Architecture : A Quantitative Approach, Fifth Edition. Morgan Kaufmann, 2011.
[47] M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008.
[49] Intel Corporation. Intel 64 and IA-32 Architectures Optimization Reference Manual. Available at http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html.
[50] Intel Corporation. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 1 : Basic Architecture. Available at http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html.
[51] Intel Corporation. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2 : Instruction Set Reference. Available at http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html.
[52] Intel Corporation. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3a : System Programming Guide, Part 1. Available at http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html.
[53] Intel Corporation. Intel Solid-State Drive 730 Series : Product Specification. Available at http://www.intel.com/content/www/us/en/solid-state-drives/ssd-730-series-spec.html.
[54] Intel Corporation. Tool Interface Standards Portable Formats Specification, Version 1.1, 1993. Order number 241597.
[56] R. Jones and R. Lins. Garbage Collection : Algorithms for Automatic Dynamic Memory Management. Wiley, 1996.
[58] R. Katz and G. Borriello. Contemporary Logic Design, Second Edition. Prentice Hall, 2005.
[59] B. W. Kernighan and R. Pike. The Practice of Programming. Addison-Wesley, 1999.
[60] B. Kernighan and D. Ritchie. The C Programming Language, First Edition. Prentice Hall, 1978.
[61] B. Kernighan and D. Ritchie. The C Programming Language, Second Edition. Prentice Hall, 1988.
[62] Michael Kerrisk. The Linux Programming Interface. No Starch Press, 2010.
[64] D. Knuth. The Art of Computer Programming, Volume 1 : Fundamental Algorithms, Third Edition. Addison-Wesley, 1997.
[65] J. Kurose and K. Ross. Computer Networking : A Top-Down Approach, Sixth Edition. Addison-Wesley, 2012.
[67] D. Lea. A memory allocator. Available at http://gee.cs.oswego.edu/dl/html/malloc.html, 1996.
[69] J. R. Levine. Linkers and Loaders. Morgan Kaufmann, 1999.
[70] David Levinthal. Performance Analysis Guide for Intel Core i7 Processor and Intel Xeon 5500 Processors. Available at https://software.intel.com/sites/products/collateral/hpc/vtune/performance_analysis_guide.pdf.
[71] C. Lin and L. Snyder. Principles of Parallel Programming. Addison Wesley, 2008.
[73] J. L. Lions. Ariane 5 Flight 501 failure. Technical Report, European Space Agency, July 1996.
[74] S. Macguire. Writing Solid Code. Microsoft Press, 1993.
[75] S. A. Mahlke, W. Y. Chen, J. C. Gyllenhal, and W. W. Hwu. Compiler code transformations for superscalar-based high-performance systems. In Proceedings of the 1992 ACM/IEEE Conference on Supercomputing, pages 808-817. ACM, 1992.
[77] M. Matz, J. Hubicka, A. Jaeger, and M. Mitchell. System V application binary interface AMD64 architecture processor supplement. Technical Report, x86-64.org, 2013. Available at http://www.x86-64.org/documentation_folder/abi-0.99.pdf.
[80] S. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997.
[84] L. Peterson and B. Davie. Computer Networks : A Systems Approach, Fifth Edition. Morgan Kaufmann, 2011.
[86] S. Przybylski. Cache and Memory Hierarchy Design : A Performance-Directed Approach. Morgan Kaufmann, 1990.
[89] J. Rabaey, A. Chandrakasan, and B. Nikolic. Digital Integrated Circuits : A Design Perspective, Second Edition. Prentice Hall, 2003.
[90] J. Reinders. Intel Threading Building Blocks. O'Reilly, 2007.
[95] J. Schindler and G. Ganger. Automated disk drive characterization. Technical Report CMU-CS-99-176, School of Computer Science, Carnegie Mellon University, 1999.
[97] R. C. Seacord. Secure Coding in C and C++, Second Edition. Addison-Wesley, 2013.
[100] J. P. Shen and M. Lipasti. Modern Processor Design : Fundamentals of Superscalar Processors. McGraw Hill, 2005.
[101] B. Shriver and B. Smith. The Anatomy of a High-Performance Microprocessor : A Systems Perspective. IEEE Computer Society, 1998.
[102] A. Silberschatz, P. Galvin, and G. Gagne. Operating Systems Concepts, Ninth Edition. Wiley, 2014.
[103] R. Skeel. Roundoff error and the Patriot missile. SIAM News 25 (4) : 11, July 1992.
[105] E. H. Spafford. The Internet worm program : An analysis. Technical Report CSD-TR-823, Department of Computer Science, Purdue University, 1988.
[106] W. Stallings. Operating Systems : Internals and Design Principles, Eighth Edition. Prentice Hall, 2014.
[107] W. R. Stevens. TCP/IP Illustrated, Volume 3 : TCP for Transactions, HTTP, NNTP and the Unix Domain Protocols. Addison-Wesley, 1996.
[108] W. R. Stevens. Unix Network Programming : Interprocess Communications, Second Edition, volume 2. Prentice Hall, 1998.
[109] W. R. Stevens and K. R. Fall. TCP/IP Illustrated, Volume 1 : The Protocols, Second Edition. Addison-Wesley, 2011.
[110] W. R. Stevens, B. Fenner, and A. M. Rudoff. Unix Network Programming : The Sockets Networking API, Third Edition, volume 1. Prentice Hall, 2003.
[111] W. R. Stevens and S. A. Rago. Advanced Programming in the Unix Environment, Third Edition. Addison-Wesley, 2013.
[112] T. Stricker and T. Gross. Global address space, non-uniform bandwidth : A memory system performance characterization of parallel systems. In Proceedings of the 3rd International Symposium on High Performance Computer Architecture (HPCA), pages 168-179. IEEE, February 1997.
[113] A. S. Tanenbaum and H. Bos. Modern Operating Systems, Fourth Edition. Prentice Hall, 2015.
[114] A. S. Tanenbaum and D. Wetherall. Computer Networks, Fifth Edition. Prentice Hall, 2010.
[115] K. P. Wadleigh and I. L. Crawford. Software Optimization for High-Performance Computing : Creating Faster Applications. Prentice Hall, 2000.
[116] J. F. Wakerly. Digital Design Principles and Practices, Fourth Edition. Prentice Hall, 2005.
[119] M. Wolf and M. Lam. A data locality algorithm. In Proceedings of the 1991 ACM Conference on Programming Language Design and Implementation (PLDI), pages 30-44, June 1991.
[120] G. R. Wright and W. R. Stevens. TCP/IP Illustrated, Volume 2 : The Implementation. Addison-Wesley, 1995.
[122] T.-Y. Yeh and Y. N. Patt. Alternative implementation of two-level adaptive branch prediction. In Proceedings of the 19th Annual International Symposium on Computer Architecture (ISCA), pages 451-461. ACM, 1998.

最近チェックした商品履歴

Loading...