コース一覧へ戻る
AI031 プロフェッショナル

コンピュータシステム:プログラマーの視点から(グローバル版)

コンピュータシステムがプログラムを実行し、情報を格納する仕組みについての包括的な解説。このコースでは、高レベルなプログラミングと下位のハードウェアの間に存在するギャップを埋め、マシンレベルの表現、プロセッサアーキテクチャ、メモリ階層、並行プログラミングについて学びます。

5.0
36.0h
955 受講者
12 レッスン
0 いいね
人工知能
学習を開始

コース概要

コンテンツ概要

コンピュータシステムがプログラムを実行し、情報を格納する仕組みについての包括的な深掘り。このコースでは、高レベルなプログラミングと下位のハードウェアとの間のギャップを埋め、マシンレベルでの表現、プロセッサアーキテクチャ、メモリ階層、並行プログラミングについて学びます。

ハードウェアとソフトウェアのインターフェースを理解することで、システムプログラミングの技術を習得しよう。

著者: Randal E. Bryant, David R. O'Hallaron

謝辞: カーネギー・メロン大学の15-213コースの学生および教員による支援。Manasa S. および Mohit Tahiliani からの貢献も含まれます。

学習目標

  1. 情報がビットとシステム内の文脈を使ってどのように表現されるかを特定する。
  2. ソースコードから実行可能ファイルに至るまでのコンパイルシステムの4段階を追跡する。
  3. ハードウェアの構成とストレージデバイスの階層的性質を説明する。
  4. 10進数、2進数、16進数の表記法の相互変換を行い、マシンレベルのアドレス指定(エンディアン)を説明する。
  5. C言語におけるビット演算および論理演算を行い、算術シフトの結果を予測する。
  6. 整数符号化を分析し、オーバーフローの脆弱性やキャストエラーを特定する。
  7. 分析する:C言語の構造(ループ、分岐、手続き)とx86-64アセンブリ命令との対応関係。
  8. 分解する:実行時スタックを解明し、パラメータの渡し方、ローカル変数の保存方法、再帰呼び出しの管理方法を説明する。
  9. 評価する:異種データ構造のメモリレイアウトを評価し、アライメント規則を適用して総合的なストレージ要件を計算する。
  10. Y86-64プログラマー可視状態を定義し、命令をバイト列にエンコード・デコードする。

レッスン

Lesson