CS6200 Graduate Introduction to Operating Systems

2024-08-09

gatech

omscs

os

前期2024-01~2024-05はGeorgia Tech OMSCSでGraduate Introduction to Operating Systemsを受講しました。前期がOMSCSでの最初のコースだったので、取りたいコースの中で最もベーシックで、OMS Reviewsでの評判も良さそうなこのコースを選択しました。

やったこと

ビデオや論文、記事を読んで学ぶ以外に、以下の課題に取り組みました。

感想

どの程度のレベルの課題が出るのかと少し心配していましたが、課題の内容自体は普段ソフトウェアエンジニアとして仕事をしているのであればさほど困らないレベルのものでした。ただ、課題は全てCとC++で書くものだったのですが、これらの言語をこれまでまともに使ったことがなかったので、言語自体の学習をしつつ課題を進めるのは少しタフでした。また、課題と一緒に提供されるスクリプトなどがUbuntu前提に書かれたものがほとんどだったので、課題をクリアするためにはUbuntu環境を用意する必要がありました。私は自宅にMacしかなかったので、Google Cloud上にVMを立てて、SSHして開発することにしました。その際にLinux PCを新しく購入するか、VMを立てるかで迷ったのですが新しく購入するPCを選んだり、配送をまったりする余裕がなくとりあえずVMを立てて凌ぐことにしました。VSCodeのプラグインを使えば、SSHした状態でもいつもの開発体験とほぼ変わらずに開発を進めることができたのでとてもよかったです。課題自体はコードベースが巨大になりコンパイルに時間がかかるわけでもないので、スペックが低いVMでも十分ストレスなく開発をすることができました。強いて言えば、VMの環境構築だけが面倒でしたが1回環境を作ってしまえばあとは使い回すことができるので、大きな問題ではありませんでした。

全てのコーディング課題に共通して言えることですが、OSの勉強というよりはCやC++でのコーディング(主にメモリ管理、multi thread / processにした際の競合管理)力を鍛える課題だった印象です。普段書いているAPIサーバーの裏側で、フレームワークや言語がどんな処理をしてくれているのか、コンピューターの気持ちを理解するにはとてもいい課題でした。一方、OSに関する知識はコーディング課題だけではあまり伸ばすことができませんでした。

リーディングやビデオも、すでに何らかで学習したことがある内容の復習といった感じでした。おそらく次のAdvanced Operating Systemでもう少しOSの詳細について勉強することになるのでしょうか。