今回混公学習団 12期に申し込みました。
このスタディで選んだ本はひとりで学ぶコンピュータ構造+OSです。
12期の活動期間は以下の通りです。
- 1週目: 7月1日 〜 7月7日
- 2週目: 7月8日 〜 7月14日
- 3週目: 7月15日 〜 7月21日
- 4週目: 7月22日 〜 7月28日
- 夏休み: 7月29日 〜 8月4日
- 5週目: 8月5日 〜 8月11日
- 6週目: 8月12日 〜 8月18日
- 振り返りタイム
そこで毎週1回は「混公コンウン」というタイトルで記事を書く予定です! 混公学習団はハンビット出版ネットワークが運営していますが、とても良いアイデアだと思います。運営のノウハウが蓄積されれば、トレバリのように大きくなれるかもしれません。
最低限読むべきスケジュールと宿題は以下の表にまとめられていました。
| # | 進度 | 基本宿題(必須) | 追加宿題(選択) |
|---|---|---|---|
| 1週目 (7/1 ~ 7/7) | Chapter 01 ~ 03 | p. 51の確認問題3番、p. 65の確認問題3番を解いて認証する | p. 100のスタックとキューの概念を整理する |
| 2週目 (7/8 ~ 7/14) | Chapter 04 ~ 05 | p. 125の確認問題2番、p. 155の確認問題4番を解いて認証する | Ch.05(05-1) コアとスレッド、マルチコアとマルチスレッドの概念を整理する |
| 3週目 (7/15 ~ 7/21) | Chapter 06 ~ 08 | p. 185の確認問題3番、p. 205の確認問題1番を解いて認証する | Ch.07(07-2) RAIDの定義と種類を簡単に整理する |
| 4週目 (7/22 ~ 7/28) | Chapter 09 ~ 11 | p. 304の確認問題1番を解いて認証する | Ch.11(11-2) 準備キューにA,B,C,D順に挿入されたと仮定した場合、先入先処理スケジューリングアルゴリズムを適用するとどのプロセス順にCPUが割り当てられるか解く |
| 5週目 (8/5 ~ 8/11) | Chapter 12 ~ 13 | p. 363の確認問題1番を解いて認証する | Ch.12(12-1) クリティカルセクション、相互排除の概念を整理する |
| 6週目 (8/12 ~ 8/18) | Chapter 14 ~ 15 | p. 400の確認問題1番を解いて認証する | Ch.14(14-3) プロセスが使用できるフレームが3つあり、ページ参照列が'2313523423'の場合、LRUページ置換アルゴリズムでこのページを参照すると何回のページフォルトが発生するか解く |
夏休み(7/29 〜 8/4)もあります。楽しい夏休み
追加学習資料もあります。
- Q&A: カン・ミンチョル著者のGitHub
- YouTube講義: 全講義リスト
とにかく8月まで頑張って読んでいきます!
1週目#
C01#
コンピュータ構造を理解すると、コンピュータに関連する問題解決能力が向上します。
コンピュータ構造を理解すると、プログラミング文法だけでは分かりにくいパフォーマンス/容量/コストを考慮しながら開発できます。
コンピュータが理解する情報にはデータと命令があります。
メモリは現在実行中のプログラムの命令とデータを格納する部品です。
CPUはメモリに格納された命令を読み込み、解釈し、実行する部品です。
補助記憶装置は電源が切れても保管するプログラムを保存する部品です。
入出力装置はコンピュータの外部に接続されてコンピュータ内部と情報をやり取りできる部品です。
システムバスはコンピュータの4つのコア部品(メモリ、CPU、補助記憶装置、入出力装置)が互いに情報をやり取りする通路です。
C02#
ビットは0と1で表現できる最小の情報単位です。
バイト、キロバイト、メガバイト、ギガバイト、テラバイトはビットより大きな情報単位です。
2進法は1を超える時点で桁上げをして0と1だけで数を表現する方法です。
2進法で負数は2の補数で表現できます。
16進法は15を超える時点で桁上げをして数を表現する方法です。
文字セットはコンピュータが認識できる文字の集まりで、文字セットに含まれる文字をエンコードして0と1で表現できます。
ASCII文字セットに0から127までの数が割り当てられてASCIIコードとしてエンコードされます。
EUC-KRは韓国語を2バイトサイズでエンコードできる完成型エンコーディング方式です。
Unicodeは各国の文字を広範囲に表現できる統一された文字セットであり、UTF-8、UTF-16、UTF-32はUnicode文字のエンコーディング方式です。
C03#
高級言語は人が理解しやすく書きやすいように作られた言語です。
低級言語はコンピュータが直接理解して実行できる言語です。
低級言語には0と1で構成された命令からなる機械語と、機械語を人が読みやすい形に翻訳したアセンブリ言語があります。
コンパイル言語はコンパイラによってソースコード全体が低級言語に変換されて実行される言語です。
インタプリタ言語はインタプリタによってソースコードが1行ずつ低級言語に変換されて実行される言語です。
命令はオペコードとオペランドで構成されます。
オペコードは命令が実行する演算を意味します。
オペランドは演算に使用するデータまたは演算に使用するデータが格納された場所を意味します。
アドレス指定方式は演算に使用するデータの位置を見つける方法です。
宿題#
p. 51の確認問題3番(必須)#
3.次の説明の空欄に入る適切な内容を書いてください。
プログラムが実行されるには必ず()に格納されている必要があります。
答え:メモリ
p. 65の確認問題3番(必須)#
3.1101(2)の負数を2の補数表現法で求めてください。
すべての0と1を反転:0010(2)
1を加算:0011(2)
1101(2)を負数で表現した値は()です。
答え:0011(2)
p. 100のスタックとキューの概念整理(選択)#
スタックとは片方の端が塞がった筒のような記憶領域です。後に格納したデータを最初に取り出すデータ管理方式です。LIFO(Last In First Out)データ構造です。
キューは両端が開いた筒のような記憶領域です。最初に格納されたデータから取り出すデータ管理方式です。FIFO(First In First Out)データ構造です。
Mediocrity knows nothing higher than itself, but talent instantly recognizes genius.
— Arthur Conan Doyle