Linuxカーネルコミッタの夢を見る

10年以内にLinuxカーネルにコミットしたい(2020/10/1).無理だって?まあ見てなさい.

低レイヤー学習記【13日目】

取り組んだ内容

[1] OS自作入門,pp.222-230

[2] オペレーティングシステム ~設計と理論およびMINIXによる実装~,pp.1-22

[3] AtCoder

取り組んだ内容の詳細

[1] OS自作入門

・カウンタを実装した

・具体的には,ウィンドウ描画関数の上にフォントを描画し,描画されているフォントのメモリ内容を繰り返し処理によって随時更新するというもの

・カウンタの速さはおそらくマシンに依存していて実時間とはことなる

・カウンタ実装後,ウィンドウにちらつきが発生した,これは背景,ウィンドウという順に描画を行っているため二重に描画されている部分があるため.描画の必要のない背景などは描画しないようにウィンドウごとにパラメータを保持させて重なりを考慮するようにした

・マウスと重なった場合にちらつきが発生するためウィンドウのマップ(画面上のどの部分にウィンドウが位置するか,重なりはどうなっているか)を作成し,マップに基づいた描画を行うことで変化のあった部分のみ再描画するように変更した.

f:id:oirom0528:20201019202824p:plain

カウンタが動いてるよ

[2] オペレーティングシステム ~設計と理論およびMINIXによる実装~

・OSの歴史をコンピュータの歴史と重ねて説明していた,発展の経緯など

・プロセスやファイルの説明などOSの基礎についての説明

・プロセス間の橋渡しとなるパイプの概念など

[3] Atcoder

・ABC179-Eを解説を見て理解した

・周期性のある数列について周期部分をうまく管理するために配列を使ったり,累積和を保存しておくことで周期+余り分の数列を上手く取り扱っていた

所感

カウンタを実装しました.少し前からCプログラムソースばかりいじるようになってアプリケーション開発をしているような感覚です(違うか?).違いますね,アプリケーションを開発するための土台として必要な機能の開発なのでやはりOS開発です(アプリケーションつくるときにシステム由来の画面のちらつきとか考慮しないと思うので).最近ペースが落ちています,怠けてますね,だめです.ペースアップしていくぞ~!!

先日ブログにも書いたMINIXの書籍を学校の図書館で見つけてしまった(こんなマイナー?な本が所蔵されているなんて!)ので早速借りて読んでみた.総ページ数が1000ページと物凄い量だが文章が意外にも堅くないのでなんとか読み進められそう.OSの基礎について具体的な事例を挙げながら説明しておりとても良い.さすが教育用に開発されたMINIXを題材にしているだけある.

AtCoderの過去問に久しぶりに取り組みました.最近まったく精進できていなかったのでレート上げのためにもこれからまた続けたいと思う.先日参加したABC180では4コンテストぶりにレートが上がったのでうれしかった(灰色のくせにレート下がるってやばい).精進量に目を向けるのではなくアルゴリズムを丁寧に理解しながら実装力を身に着けて入茶を目指します.

f:id:oirom0528:20201019203506p:plain

次のコンテストでカラーリングしたい…