Mercurial > hg > Document > Growi
changeset 37:6433952b3356
backup 2021-02-03
author | autobackup |
---|---|
date | Wed, 03 Feb 2021 00:10:04 +0900 |
parents | b436c224edfd |
children | 3aa2defe6f56 |
files | user/Okud/メモ/2021/02/02.md user/anatofuz/note/2021/02/02.md user/masato/メモ/2021/01/19.md user/tobiuo/メモ/2021/02/02.md |
diffstat | 4 files changed, 172 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/Okud/メモ/2021/02/02.md Wed Feb 03 00:10:04 2021 +0900 @@ -0,0 +1,103 @@ +# Gears OS Device Driver 作成 +## 研究目的 +2017年にIntel社が2020年までにLegacy BIOSとUEFIへの互換を非推奨とし、互換モジュールのCSMを削除すると発表した。 +Legacy BIOSは長年に渡り16bitパソコンの時代からの資産を引き継いできたため、16bitモードでしか動作しない。 +そのためPCの進化に伴い、致命的な問題点が発生する。 +問題点として、拡張性がないことがあげられる。EthernetやUSBにつながるでディスクなど、新たにブートデバイスが追加されるたびに, +OSのブートローダを変更しなければならない。またマザーボードごとに、ファームウェアをアセンブラで開発する必要がある。 +また、1MBのメモリ制限により、セキュリティを含めたシステム機能の強化が困難であるためセキュリティにも問題がある。 +これらの問題を解決するためにUEFIが開発された。 +UEFIは、2TBを超える大きなディスクからブートでき、高速にブートできる。 +CPUに依存しないアーキテクチャとドライバを持ちネットワークも使用可能な柔軟なプレOS環境が利用できる。 +今後、Legacy BIOSからUEFIへの移行が急速に進むだろう。\\\ +当研究室では、信頼性と拡張性をテーマにGearsOSを開発している。 +GearsOSはContinuation based C(CbC)によってアプリケーションとOSそのものを記述している。 +現在、CbCで証明可能なOSを実装するために、xv6のCbCの書き換えを行っている。 +xv6はレガシーOSなため、UEFIから起動することができない。 +UEFIからxv6を起動させることができれば、拡張性が大きく広がる。 +本研究では、ARMで動くシングルコンピュータであるRaspberryPi上にUEFIからGearsOSをブートさせることを目指している。 + + +##進捗 +- 卒論を書き始めた(第一章くらい) +- x86_64用のbootloaderを動かしてみた +```shine@KokinoMacBook-Pro xv6_uefi % make +#./build.sh +cp -r edk2/xv6_bootloader/build/RELEASE_GCC5/X64/loader.efi image/EFI/BOOT/BOOTX64.efi +qemu-system-x86_64 \ + -drive if=pflash,format=raw,readonly,file=edk2/Build/OvmfX64/RELEASE_GCC5/FV/OVMF_CODE.fd \ + -drive if=pflash,format=raw,file=edk2/Build/OvmfX64/RELEASE_GCC5/FV/OVMF_VARS.fd \ + -drive if=ide,file=fat:rw:image,index=0,media=disk \ + -gdb tcp::4321 \ + -m 2048 \ + -smp 4 \ + -nographic +WARNING: Image format was not specified for 'json:{"fat-type": 0, "backing": {"driver": "vvfat_write_target"}, "dir": "image", "driver": "vvfat", "floppy": false, "rw": true, "write-target": {"driver": "qcow", "file": {"driver": "file", "filename": "/var/folders/d9/yw4d8pk13mv_2r1x41bjs_w80000gn/T//vl.BpQ3DX"}}}' and probing guessed raw. + Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. + Specify the 'raw' format explicitly to remove the restrictions. +``` +``` +Qemu + +Loading File: \kernel +FileSize=730832 +Successfully Loaded File: \kernel +Ehdr Address:7E836000 +Phdr Address:7E836034 +Start Address:100000 +End Address:10B000 +Start Address:8010A7A6 +End Address:80196000 +Allocate Start Address:100000 +Allocate End Address:80196000 +Entry Address:100010 +AllocatePages=14 +Could not allocate pages at 7FE91890 +Signature:RSD PT +XSDT Address: 7FBF90E8 +Current Mode 2, 800x600 +Max Mode 28 +Frame Base Address: 80000000 +Frame Size: 1D5000 +Horizontal Resolution: 320 +Vertical Resolution: 258 +Pixels per Scan Line: 320 +Signature:APIC +MADT Address: 7FBF5000 +MADR_ADDR: 52584 +LAPIC Address: FEE00000 +LAPIC Flags: 0001 +MADT Length: 0090 +EntryType:0 +Processor Local APIC ACPI Processor ID: 0 APIC ID: 0 Flag: 1 +EntryType:0 +Processor Local APIC ACPI Processor ID: 1 APIC ID: 1 Flag: 1 +EntryType:0 +Processor Local APIC ACPI Processor ID: 2 APIC ID: 2 Flag: 1 +EntryType:0 +Processor Local APIC ACPI Processor ID: 3 APIC ID: 3 Flag: 1 +EntryType:1 +I/O APIC I/O APIC ID: 0 I/O APIC Address : FEC00000 +EntryType:2 +Interrupt Source Override Bus Source: 0 IRQ Source: 0 +EntryType:2 +Interrupt Source Override Bus Source: 0 IRQ Source: 5 +EntryType:2 +Interrupt Source Override Bus Source: 0 IRQ Source: 9 +EntryType:2 +Interrupt Source Override Bus Source: 0 IRQ Source: A +EntryType:2 +Interrupt Source Override Bus Source: 0 IRQ Source: B +EntryType:4 +Non-maskable interrupts ACPI Processor ID: FF +KernelAddress : 0 +BootStrap GDT Descriptor Address: 50050 +AllocatePool=0 +Loading File: \logo.bmp +Failed to Open \logo.bmp +Failed to Load Bitmap Image: \logo.bmp +Failed to draw bitmap file \logo.bmp +``` + +- loadはできてるっぽいがどこかで引っかかってる +- \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/anatofuz/note/2021/02/02.md Wed Feb 03 00:10:04 2021 +0900 @@ -0,0 +1,20 @@ +# 研究目的 +- アプリケーションの信頼性を保証するには土台となるOSの信頼性を高く保証する必要がある + - しかしOSの機能をテストですべて検証するのは不可能である。 +- 定理証明やモデル検査を利用して、テストに頼らずに保証したい + - 証明しやすい形、かつ実際に動くソースコードが必要 + - 継続ベースの状態遷移系で再実装することで表現しやすくしたい +- プログラムは二つの計算に分離される + - プログラムは入力と出力の関係を決める計算(ノーマルレベル) + - その計算に必要なメタな計算(メタレベル) +- プログラムの信頼性の保証を動作しつつ行うには、メタレベルの計算を活用したい +- そのためにはメタレベルの計算を柔軟に扱うAPIや, メタレベルを保証しつつCbCを拡張した実装方法が必要 +- 本研究ではノーマル/メタレベルでの実装に適した、継続を基本とする言語Continuation Based Cを用いて、OSの実装を行い、メタ>計算APIについて考察する。 + + + +# 今週 +- windowsにした + - linuxにしたい +- 修論かいてる + - がんばろう
--- a/user/masato/メモ/2021/01/19.md Tue Feb 02 00:10:03 2021 +0900 +++ b/user/masato/メモ/2021/01/19.md Wed Feb 03 00:10:04 2021 +0900 @@ -1,17 +1,18 @@ # ## 研究目的 +近年のゲームではインタラクティブミュージックなど、プレイヤーと双方向に影響し合う技術が流行っている +ゲームのインタラクティブなシステムはプレイヤーのゲームへの没入感を高める効果がある。 +その一つとしてプレイヤーの周囲の環境に応じて、サウンドの音響効果を調整することでゲーム体験を向上させる。 ## 興味あること ### サウンド 環境推定からの音響再現 -空間の広さ、材質からリバーブのパラメータを変える +空間の広さ、材質からリバーブのパラメータを変えて、音響を再現 音の発生方向により特定周波数の減衰を行う -NierAutomataあたりでまとめられていた - #### リバーブ 畳み込み,周波数領域での乗算
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/tobiuo/メモ/2021/02/02.md Wed Feb 03 00:10:04 2021 +0900 @@ -0,0 +1,45 @@ +# 研究目的 +現在開発の進んでいる言語にスクリプト言語のRakuがある. +Rakuは起動時間がPerl5やPython, Rubyなどの主要なスクリプト言語に比べて非常に低速である. +RakuはコンパイラがRakuそのもので書かれているため, 毎回コンパイラのロードとコンパイル, JITコンパイルを繰り返すことになる. +最近のスクリプト言語では, コンパイラが自身で書かれているケースが多い. 例えば, PyPy, Go言語, Haskellなどである. +そこで, この問題を解決するために, 既にコンパイラをロードしてあるサーバーを用意し, サーバー上でスクリプト言語を実行する手法を提案している. +Rakuに対しては, 当研究室にてAbyssサーバーを開発している. + +# やったこと +- all.tをlocalで動かした. + - `grep -L Test::Util ./**/*.t | xargs cat >> all.t`を実行して`Test::Util`を使用していないtファイルを連結. + - `sed -i -e '/use v6;/d' all.t`で`all.t`内の`use v6;`を全部消去. +- all.rakudoも同じように作成して実行してみたがエラーが出て失敗. + +- all.tをAbyssで動かしてみた. + - utf-8関係のエラーで途中終了する. + ``` + # is Uni.new(0x1F6B4, 0x1F3FE, 0x200D, 0x2640).Str.chars, 1, "Codes: ⟅0x1F6B4, 0x1F3FE, 0x2Malformed termination of UTF-8 string + in block <unit> at other/client3.p6 line 1 + ``` + +- 標準出力と同じように標準エラー出力も出せるようにした. + +- 実行結果が1行しか出ないのを直した. +```perl6:client2.p6 +while my $buf = $conn.recv(:bin) +{ + $sock_msg = $buf.decode; + last; +} +say $sock_msg; +``` +から +```perl6:client2.p6 +while my $buf = $conn.recv(:bin) +{ + $sock_msg = $buf.decode; + say $sock_msg; +} +``` +にした. + +- 実行結果が1行ごとに改行されているのを直した. + - $buf.gistで中身を確認してみたらLFが入っていた. + - sayの代わりにprintを使ったら余計な改行なくなった. \ No newline at end of file