きっかけ
就職活動(書類応募や面接準備など)を優先していたら、数週間まったくプログラミングができない状況になってしまった。
「このままじゃITエンジニアを目指す意味がなくなってしまうんじゃないか?」と不安になった。
試み
そこで、毎朝30分だけでもプログラミングを先にやるというルールを決めて実行してみた。
成果
おかげで少ない時間でも毎日プログラミングができた。
優先度通りに作業する原則からは外れるけど、学習の流れが途切れないという点では有意義だった。
発展
優先度スケジューリング
OSは解答をすでに知っていた。
タスクスケジューリングの一つである優先度スケジューリング(priority scheduling)
は、優先度の高いタスク(プロセス)から実行する。
Resource starvation
この時、低い優先度のタスクがずっと後回しになり実行されない状態をResource starvation(Starvation、資源飢餓、飢餓状態)
という。
Aging
この問題を解決するためにOSはAging
を使う。
時間が経つにつれて低い優先度のタスクの優先度を少しずつ上げ、最終的に実行機会を与える仕組みだ。
ラウンドロビン・スケジューリング
もう一つのタスクスケジューリング方式がラウンドロビン・スケジューリング(round-robin scheduling)
だ。
すべてのタスクに一定の時間単位(タイムクォンタム、タイムスライス)を与え、実行していく方式である。
毎日30分だけプログラミングする習慣は、時間を区切って実行機会を作るという点でラウンドロビンに似ている。
もちろん、実際のラウンドロビンは優先度を考慮せずすべてのタスクに平等に時間を割り当てるので、私のやり方と完全に一致するわけではない。
それでも少しずつでも必ず実行機会を与えるという点では十分に似ていると思う。
まとめ
就活を優先する中で後回しにされがちだったプログラミング時間を、毎朝30分だけでも確保することで習慣として続けることができた。
振り返ってみれば、この方法はOSのAging
やラウンドロビン・スケジューリング
に似ていた。
感想
プログラミングを学ぶ中で一番楽しい瞬間は、コードや概念が自分の日常とつながる時だ。
ただ技術を覚えるだけでなく、その思考法を生活に取り入れているんだと実感できて嬉しい。
参考
-
優先度スケジューリング
タスクスケジューリング -
ラウンドロビン・スケジューリング
Round Robin Scheduling in Operating System
ラウンドロビン -
Resource starvation
【OS入門#4】Operating Systemを学習:スケジューリングとは
リソーススタベーション