GithubHelp home page GithubHelp logo

ytoyoyama / interface_trykernel Goto Github PK

View Code? Open in Web Editor NEW
58.0 2.0 9.0 61 KB

Interface 2023年7月号 特集「ゼロから作るOS」配布プログラム

License: MIT License

C 97.06% Assembly 2.94%

interface_trykernel's Introduction

Interface 2023年7月号 特集「ゼロから作るOS」配布プログラム

概要

本リポジトリは、CQ出版(株) Interface 2023年7月号の特集「ゼロから作るOS」の配布プログラムです。
特集記事にて記載した自作OS「Try Kernel」のプログラムです。ラズパイPicoにて動作します。プログラムの内容、開発環境や手順については記事をご覧ください。
特集の各部、各章で作成した完成プログラムのソースコードを以下のディレクトリに格納しています。ディレクトリ毎に実行プログラムをビルドすることができます。part_5が完成したTry Kernelのプログラムとアプリケーションとなります。

part_2 第2部 起動処理を作る
├ sect_3 第3章
└ sect_4 第4章

part_3 第3部 マルチタスク機能を作る
├ sect_1 第1章
├ sect_2 第2章
└ sect_3 第3章

part_4 第4部 タスクの同期と通信機能を作る
├ sect_1 第1章
├ sect_2 第2章
└ sect_3 第3章

part_5 第5部 アプリケーションを作る

関連リンク

Try Kernelの単独のリポジトリは以下です。不具合修正以外のメンテは以下で行います。

https://github.com/ytoyoyama/trykernel

ライセンスについて

本プログラムはMITライセンスの下でオープンソースとして公開します。著作権および許諾表示を記載すれば、非営利、商用を問わず、使用、改変、複製、再頒布が可能な制限の緩いライセンスですので、本プログラムをOSの自作に活用いただけたらと思います。ライセンスの詳細については、同梱のLICENSEをご参照ください。
ただし、ブートコードの一部でPico C/C++ SDKのオブジェクトコードを利用してますので、それについてはPico C/C++ SDKのライセンスが適用されます。ソースファイルの冒頭に記載したライセンスに従ってください。このライセンスも厳しい制約はありません。該当するファイルは以下です。

part_2\sect_3\boot\boot2.c
part_2\sect_4\boot\boot2.c
part_3\sect_1\boot\boot2.c
part_3\sect_2\boot\boot2.c
part_3\sect_3\boot\boot2.c
part_4\sect_1\boot\boot2.c
part_4\sect_2\boot\boot2.c
part_4\sect_3\boot\boot2.c
part_5\boot\boot2.c

interface_trykernel's People

Contributors

ytoyoyama avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

interface_trykernel's Issues

セマフォ解放によるタスク起床について

素晴らしい書籍ありがとうございます。自作OSは初めてでしたので、大変勉強になりました。

一点疑問点がございます。
セマフォについて、tk_sig_sem内部のタスクの起床に関してsemidが考慮されていないように感じました。
具体的には、あるsemidが引数で与えられた時、そのsemidを考慮せずにtcb->waisemとsemcb->semcntを比べていると思います。

これを解決するために、タスクがsemidと結びつく必要があると考え、

  1. tcbにsemidを追加し、それと比較する
  2. semcbでwait_queueを割り振り、その中でタスクの起床を行う(mtkernelの実装はこちらのように思います)
    が必要になる気がしました。いかがでしょうか。

システム・タイマ処理の変更もれ

お疲れさまです。
書籍の83ページ

リスト5 システム・タイマ処理の変更

この変更が第4部以降のソースに適用されるべきではないでしょうか?
ソースコードを見る限り、変更もれのようです。

起床待ちでタイムアウト時の処理もれ のようですから、大きな問題ではないと思いますけど。

ファイル:kernel\systimer.c

ご確認お願いします。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.