Blog (4 of 8)
-
Linuxで始めるOS自作入門: 18日目
せっかくコンソール作ったので、コマンド実装しましょうという内容\ 章では `mem`, `cls`, `dir` の3つのコマンドを実装しているが、\ それぞれUNIX風に `mem`, `clear`, `ls`と名称を変更し、 コマンド一覧を表示するための`help`コマンドを実装 `ls`の実装にあたって、 [Linuxで始めるOS自作入門: 1日目](/blog/self-made-os-1day/) の内容が少々役に立った -完- ![osの画像](os-18day.png)
8/16/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 17日目
- idle - コンソール - 大文字/小文字, Shift, CapsLock... ## idle 何もしていないときにidle状態にしましょうねーというもの\ ビフォー・アフター ![idle前](os-17day-idle-before.png) ![idle後](os-17day-idle-after.png) CPU使用率が下がっていることを確認(ヨシ) ## コンソール 前回の要領で別タスクのコンソールを用意 ![コンソール](os-17day-console.png)
8/14/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 16日目
- マルチタスク2 - GDT ## マルチタスク2 前回の着手したマルチタスクの改良\ 具体的には優先順位を付けただけ(完)\ ひとまずこんな感じ ![OSの画像](os-16day.png) ここでは次の4つのタスクが動いている 1. メインタスク - デスクトップ - マウス - キーボード - アクティブウィンドウ(task_a) 1. task_b0 1. task_b1 1. task_b2 ## GDT 昔の内容過ぎて、GDTって何?ってなっていたのでお
8/13/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 15日目
前回から空いてしまったが... - マルチタスク - 今までと何が違うの? - 余談 ## マルチタスク ついに、という感じ\ マルチタスクは16日目でも扱うらしい\ 2つの関数を用意して、それを0.02秒毎に切り替えて実行する処理を作成 ```c void task1 (void) { // foo for (;;) { // bar } } void task2 (void) { // foo for (;;) { //
8/3/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 14日目(後半)
- キーボード入力 - ウィンドウ移動 - 余談 ## キーボード入力 キーボードの入力を拾って、 文字を表示しようという内容\ 書籍にかかれているものはJISキーボードのものだったので、 [ここ](https://wiki.osdev.org/Keyboard) を参考にUSキーボードに合わせました... ## ウィンドウ移動 画面をクリックしたらウィンドウを動かすことが出来るように... このあたりもマウス動かしたりと今までの応用といった感じ ## 余談 この分量だったら別に分けなくても良
7/18/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 14日目(前半)
- 13日目の内容確認 - 高解像度化 - 余談 ## 13日目の内容確認 タイマーの処理が本当に改善されているのかと言う内容の確認\ なにがどうベンチマークに関係しているのかという説明をしてくれている\ おしまい ## 高解像度化 今回この箇所で詰まったので、 ひとまずここまでで一区切りつけてまとめることに 今までずっと320x200だったので、 これを高解像度化するという内容\ 具体的には、 VESA という規格に対応しているBIOS (VESA BIOS extention: VBE)に対
7/17/2020
- OS自作入門
-
Goにおける排他制御の実装
## あらすじ なんやかんやあって前回の続き... 実装を調べるところまでを1つの記事にしようとしていたのだけど、 それだと何時まで経っても出せないということで分割 ## 実装を読む 前回の推測が正しいか、 実装を見て確かめることにする ### sync.Mutex ```golang type Mutex struct { state int32 sema uint32 } ``` Mutex の中身はこんな感じになっている 名前的に `Mutex.state` が怪し
7/11/2020
- golang
-
Goにおける排他制御の挙動
## はじめに 排他制御とは、 ある資源にアクセスするときに 自分以外が同時にアクセスしないようにする制御のこと Goでいうと、 `sync`package を利用して次のように実現出来る ```golang var num int func mutex() { var mtx sync.Mutex mtx.Lock() num++ mtx.Unlock() } ``` ここで疑問に思ったのが、 `mtx.Lock()`は何を Lock しているのか? ということ 1. 資源のLock
7/9/2020
- golang
-
Linuxで始めるOS自作入門: 13日目
## 13日目の内容 主にリファクタリングを行うのが今回の内容でした。 キーボード・マウス・タイマーのバッファを1つにまとめたり、 合わせて処理の最適化をしたり... バッファを1つに纏めるに当たり、バッファサイズを 8-bitsから 32-bitsに引き上げたりしていました。 ## 久しぶりに詰まった こういうときのために書き始めたんだよなーといったような出来事でした。 さて、今回のリファクタリングをいろいろ施して行った結果、 マウスなどの割り込み処理を一切受け付けなくなってしまって途方に暮れてま
7/5/2020
- OS自作入門
-
Linuxで始めるOS自作入門: 12日目
## 12日目の内容 - タイマー ## タイマー 時間を計測するためのタイマーを作成しようという内容。 ずっと、タイマーは1000クロックの何かが動作していて、そこに時間を読み出しに行っていると思ってた (いろいろ違った) ## つぶやき 当初はいろいろ引っかかることがあるだろうと思って記録を残し始めたのだけど、 正直最初くらいしか引っかかることがなかったというか... 最近はこのページの存在意義に疑問を感じる日々が続いている ## 成果物 ![OSの画面](os-12day.png)
6/29/2020
- OS自作入門