タグ

OSに関するAkinekoのブックマーク (18)

  • はじめに - Writing an OS in 1,000 Lines

    書では、小さなOSをゼロから少しずつ作っていきます。 OSと聞くと腰が引けるかもしれませんが、OS (特にカーネル) の基機能は案外単純です。巨大なオープンソースソフトウェアとしてよく挙げられるLinuxでさえ、バージョン0.01はたった8413行でした。様々な要求に応えるために次第に肥大化していっただけで、当初は大変素朴な実装になっていました。 書では素朴なコンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書きをC言語で実装します。これだけ様々な機能が詰め込まれているのに、コードは合計でたった1000行未満です。 「1000行なら1日でできそう」と思うかもしれませんが、初学者には少なくとも3日はかかるでしょう。OS自作のハマりポイントは「デバッグ」です。アプリケーション開発とは違うデバッグ手法・能力を習得する必要がありま

    はじめに - Writing an OS in 1,000 Lines
    Akineko
    Akineko 2023/08/06
  • 「ゼロからのOS自作入門」を Rust でやる (第1章~第4章) - gifnksmの雑多なメモ

    ゼロからのOS自作入門 を 一通り写経 したところ、 Rust に移植したくなったのでやっていきます。 次回: 「ゼロからのOS自作入門」を Rust でやる (第5章) - gifnksmの雑多なメモ 関連記事一覧: ゼロからのOS自作入門 カテゴリーの記事一覧 - gifnksmの雑多なメモ github.com Rust で OS なので名前は "錆OS" です。安直です。 "sabios" でざっとググったところ、スペイン語で "賢い" って意味があるようです。 良いですね。 クレバーな実装を目指したいところです。 方針 「ゼロからのOS自作入門」の章立てに沿って1章から順番に実装していきます。 C++ で一通り写経は完了しているので完成形の OS と関係ない節はスキップしていきます。 せっかく Rust で実装するので安全性や抽象化という点で MikanOS との差異を出せたら良

    「ゼロからのOS自作入門」を Rust でやる (第1章~第4章) - gifnksmの雑多なメモ
  • VM環境のCPU仮想化はどうやって実現しているのか ハードウェア仮想化支援機構の仕組み

    Arm入門勉強会とは、macOSがArmに移行したこの機にArmアーキテクチャでのプログラミングについて入門するソフトウェアエンジニアのための会です。今回主催の@nullpo_head 氏が、Armの仮想化支援機構について、その仕組みから深く説明します。前半は「現代のハードウェア仮想化支援機構」について。全2回。 ハードウェア仮想化支援とは何か 佐伯 学哉氏:入門セッション3つ目は『Armの仮想化支援機構』についての入門セッションです。どうぞよろしくお願いします。 発表のスタートとゴールです。VMwareとかQemuとか使ったことあるけど仮想マシンの仕組みなんも知らんというところがまずスタートになっています。 1個目のゴールは、最近のVMのざっくりした仕組みとハードウェア仮想化支援とは何かということがわかること。そしてその話のあとに実際にArmの仮想化支援機構の概要を説明し、Armの仮想

    VM環境のCPU仮想化はどうやって実現しているのか ハードウェア仮想化支援機構の仕組み
    Akineko
    Akineko 2021/02/26
  • 11種類のオペレーティング・システムについてまとめてみた - Qiita

    TL;DR 「オペレーティングシステム?知ってるよ。WindowsとかMacのことだよね」というぐらいの知識だった私が、二週間ほどひたすらWikipediaでインプットしまくったクソ浅い情報を共有します。 最初の動機 「Go言語が対応しているアーキテクチャってなんだろ?」 Go言語には環境変数をコンパイラに渡すことで、出力されるバイナリの対応するOSとアーキテクチャを変えることができます。 GOOS がオペレーティングシステム(OS)、 GOARCH がアーキテクチャです。 こんな感じにビルドすると、 linux というオペレーティングシステムで、 ppc64 というアーキテクチャに対応したバイナリが出力されます。 なるほど。 じゃあ、 Go言語が対応しているOSとアーキテクチャって何があるの? と疑問が湧いてきますね。 その疑問に応えるコマンドが go tool dist list です

    11種類のオペレーティング・システムについてまとめてみた - Qiita
    Akineko
    Akineko 2020/05/08
  • はじめに - Rustで始める自作組込みOS入門

    このは組込みシステムやOSのような低レイヤーシステムの開発経験がないプログラマーのような人が、自作OSをはじめるため解説です。 著者自身、職はウェブプログラマーですが、趣味で組込みOSの自作をしています。このはそのノウハウ集のようなものです。 このような低レイヤーシステムはC言語で開発されることが多いのですが、今回はRustを使います。 RustはC言語と比較して、様々なモダンな機能やツール郡を取り揃えている上に、C言語の長所である直接のメモリ制御ができ、パフォーマンスも高いとして組込みシステム開発でつかえるとして注目されています。 Rustそのもの解説は控えめですが、低レイヤーシステム開発特有のテクニックは必要に応じて解説します。 想定読者 ある程度はプログラミング経験があることを前提としています。 また、レジスタやメモリなどコンピュータアーキテクチャに関する基礎用語の説明もちゃ

  • 「OSの最深部」が垣間見える「ディスクの暗号化」に関するCloudflareのカーネル改善記録

    データの暗号化はインターネットでサービスを提供する企業には欠かせませんが、パフォーマンスの低下を嫌って自社サーバーのディスクに暗号化を施していない場合もあります。そんなディスクの暗号化によるパフォーマンス低下を改善した事例をCloudflareエンジニアであるIgnat Korchagin氏が公開しています。 Speeding up Linux disk encryption https://blog.cloudflare.com/speeding-up-linux-disk-encryption/ ストレージの構造は「アプリケーション」「ファイルシステム」「ブロックサブシステム」「物理ストレージ」といった層に分けることができ、ネットワークにおけるOSI参照モデルに似ているとのこと。高次元の層に対して低次元の層での処理は抽象化されており、それぞれの層で暗号化が可能です。通常、高次元の層に

    「OSの最深部」が垣間見える「ディスクの暗号化」に関するCloudflareのカーネル改善記録
    Akineko
    Akineko 2020/04/06
  • CとRustで一から作るマイクロカーネルOS

    マイクロカーネルは浪漫に溢れる非常に作りがいのあるソフトウェアです。この記事は,「マイクロカーネルベースのOSの一から作ってIaaSで動かす」ことを目標に作ったマイクロカーネルベースのOS Resea(りーせあ)の設計と実装について軽くまとめた物です。 ソースコードはGitHubにあります。 マイクロカーネルとは Linuxのようなモノリシックカーネルでは色んな機能がカーネル空間で動きますが,マイクロカーネルではユーザプロセスたちが互いに通信しながらOSを作り上げます。プロセス・スレッド・仮想メモリ管理,プロセス間通信,タイマーといった必要最低限の機能だけをカーネルが担います。デバイスドライバやファイルシステムといった残りの機能は,独立したユーザプロセスとして動きます。たとえデバイスドライバが暴走しても他のコンポーネントを壊すことはないのです。マイクロカーネルは信頼性が高く,疎結合で美しい

    CとRustで一から作るマイクロカーネルOS
  • コツコツやらない小6がVirtualBoxで「30日でできる!OS自作入門」をやり遂げる話。1日目 - Qiita

    追記 12/7 公開してから一年の月日が経ちました。早いですね。僕もこの一年に色々な経験をしていました。 記事を挙げた二日目には止まってしまったこのシリーズ。でも僕は諦めてません。絶対に戻ってきます。絶対に次の記事を書いて30日目までがんばります。少し待っていてください。(12月中にリニューアルさせたい) あと実は9日目くらいまでは完成していたのですがあんまり仕組みがわかってないです() 自己紹介 はじめまして。色んなことに挑戦してエラーで諦めてしまう小6のtatsuです。文章の所々間違っていると思いますがよろしくです。 環境構築 VirtualBox https://www.oracle.com/technetwork/jp/server-storage/virtualbox/overview/index.html バイナリエディタ Hex Fiend https://ridiculou

    コツコツやらない小6がVirtualBoxで「30日でできる!OS自作入門」をやり遂げる話。1日目 - Qiita
    Akineko
    Akineko 2019/11/25
  • 自作OSとかLinuxカーネルについて役立った本 - Qiita

    はじめに なんらかの理由によってOSやOSカーネルに興味を持つ人は多々います。しかし、その次のステップとしてどんなを読めばいいんだろうと思っている人はこれまたいっぱいいます。そこで、長年Linuxカーネルにかかわってきた筆者がこれまでに読んでよかったと思うものについてここの列挙しました。紹介するのはだけであって、記事は省いています。もう一点、筆者が書いたものは省いています。 OSそのものに興味を持った人は、その後に興味の方向が次のような二つに分かれることが多いと筆者は考えています。 オレオレOSを作りたい 既存のOSを改造したい この仮説をもとに、それぞれについて筆者がかつて真面目に読んだの中から「自作OS」および「Linuxカーネル」というキーワードでよかったものを挙げておきます。Linux以外の既存OSについては語れるほどの知識はないので書いてません。 筆者について の良し悪し

    自作OSとかLinuxカーネルについて役立った本 - Qiita
    Akineko
    Akineko 2019/09/30
  • 現代のコンピュータに�おける自作OS事情

    現代のコンピュータにおける 自作OS事情 2019-06-29 hikalium @ Hackers Champloo #hcmpl

    現代のコンピュータに�おける自作OS事情
    Akineko
    Akineko 2019/06/30
  • OSやネットワークなど初心者でも低レイヤー技術について学べる7冊の書籍 - paiza times

    Photo by edro Alonso こんにちは。谷口です。 プログラミング初心者の皆さんは、OSや仮想マシン、ネットワークシステムやコンピュータアーキテクチャなどといったいわゆる低レイヤーの分野を学んだことはありますか? 低レイヤー技術とは、すごく簡単に言うと、より物理的なコンピュータの仕組みに近い技術のことです。 例えば、初心者でもRubyPythonなどで、「Hello World」を表示させる、「1+2」の計算結果を変数に格納する…などといったことはできますよね。では、print関数や四則演算の実行を命令したときに、コンピュータのどこで、どんなことが起きているのでしょうか?これを理解するためには、低レイヤーに関する勉強が必要です。 「プログラミングできたら何が起きてるかなんてわからなくてもいいじゃん」と思われるかもしれませんが、実務でシステム障害が発生したり、メモリやCPU

    OSやネットワークなど初心者でも低レイヤー技術について学べる7冊の書籍 - paiza times
  • OSカーネルを0から作り始めてみた - Qiita

    1. 概要 OSカーネル[^1]をフルスクラッチで(0から)作り始めてみました。 稿では下記について記載します。 カーネルを自作し始めた背景 カーネル自作における方針 稿執筆時カーネルの機能概要 カーネルの実行方法 プロセスを起動してみる 今後の課題 2. 背景 私がカーネルを自作し始めた理由は次の2点です。 1.コンピュータがどの様に動いてるのか知りたかった 2.使用しているOSに不満があった 2.1 コンピュータがどの様に動いてるのか知りたかった かれこれ10年以上前に遡りますが、私が大学に入学した頃、VisualBasicやBasic、Cなどの言語を使って簡単なソフトウェアを作ることが出来ましたが、どうして簡単なコードでウィンドウが表示できるのか、どうしてprintf文を書けばコンソールに文字が出力できるのか、コンピュータはいったいどんな風に動いてるのか全く分からず、不思議で仕方

    OSカーネルを0から作り始めてみた - Qiita
    Akineko
    Akineko 2017/03/23
  • 低レイヤーの歩き方 - るくすの日記 ~ Out_Of_Range ~

    この記事は Kobe University Advent Calendar25日目の記事です。 低レイヤー技術(後述)をこれから学びたい人向けの入門記事です。 自身の経験を踏まえ、より多くの人達にこのレイヤーに興味を持ってほしくて書きました。 決して卒論がやばくてAdvent calendarのネタが作れなかったわけでは(ry なぜこんな記事を書いたか いわゆるシステムプログラミングのような低レイヤー(と言って差し支えない)ジャンルって一体何から始めれば良いのかいまいちピンと来ないし、何が面白いのかも分からないと思われている事が多いと思います。 にもかかわらず低レイヤーの魅力や学び方の指針みたいな物を示した、いわゆる入門記事ってかなり少ないんですよね。 記事はこれからシステムプログラミングを始めたい方や、既にかじってみたが中々先が見えてこない、将来何の役に立つのか不安という方達に読んでい

    低レイヤーの歩き方 - るくすの日記 ~ Out_Of_Range ~
  • CPU使用率100%のWebサーバをOSのチューニングだけでCPU使用率20%まで改善する - 人間とウェブの未来

    こんばんは、 @matsumotoryです。 hb.matsumoto-r.jp 上記エントリにおいて、プロセスの大量メモリ確保に伴うページテーブルサイズとベージテーブルエントリ数の肥大化によるcloneやexecveの性能劣化とCPU使用時間の専有問題、および、それらの解決方法についてシステムコールレベルで確認しました。 そこで今回は、システムコールやそのカーネル内部の処理の性能、というよりは、より実践的な環境であるApache httpdとmod_cgiを用いて、phpinfo()を実行するだけのCGIに対してベンチマークをかけた時にどれぐらいCPUのidleが空くか、システムCPUの使用量が変わるかを、前回示した解決方法の1つであるHugePagesを使うかどうかの観点で比較してみましょう。 特定条件下のWebサーバ環境のシステムCPUに起因する高負荷問題から、システムコールやカーネ

    CPU使用率100%のWebサーバをOSのチューニングだけでCPU使用率20%まで改善する - 人間とウェブの未来
    Akineko
    Akineko 2016/07/23
  • OSを書く:初歩から一歩ずつ | POSTD

    (注:2017/9/27、いただいたフィードバックを元に翻訳を修正いたしました。) (傑作映画 『おつむて・ん・て・ん・クリニック』 に登場する著書です) このチュートリアルは、アセンブリで とても 簡単なオペレーティング・システムを皆さんが自分自身で書けるようになるために書きました。元々は、 OSDev wiki でこのチュートリアルのベースとなるものを見つけたのがきっかけです。しかし、そこには何がどのように、どうして行われているのかという説明が一切ありませんでしたので、このチュートリアルを書くことを決めました。ということで、起動プロセスの基礎と、実行するのに必要なツールについて紹介していきます。 OSXLinuxWindowsなどのよく使われているオペレーティング・システムはドライバを持っており、ハードウェアとの間のインタフェースを提供し、一定レベルの安全性とセキュリティを保証しま

    OSを書く:初歩から一歩ずつ | POSTD
    Akineko
    Akineko 2016/07/19
  • 2回目のC言語で『12ステップで作る組込みOS自作入門 』の通りに組込みOSを作ってみた - 三等兵

    12ステップで作る組込みOS自作入門 出版社 : カットシステム (2010/05) 発行日 : 2010/05 前回の初めてのC言語で『30日でできる!OS自作入門』の通りに初めてのOSを作ってみた - 三等兵は汎用OSでしたが今度は組込みOSです。参考書は『12ステップで作る組込みOS自作入門 』です。こいつぁすげえや。丁寧に仕上げられた良書でした。 「組込み」とタイトルがついているので興味を示す層が狭そうですが、プログラムを書く多くの人にとって役立つ内容だったと思います。 前回は必死にわかんないーわかんないーを連呼しつつ頭を抱えて苦行みたいな感覚でやっちゃいましたけど、今回はそんな苦労もあったからか余裕を持って楽しめました。 書ではWindowsだけではなくLinuxでも開発できるよう解説されているのでどんな環境でも問題ありません。Linux入れるのがめんどくさかった私は例によって

    2回目のC言語で『12ステップで作る組込みOS自作入門 』の通りに組込みOSを作ってみた - 三等兵
  • 初めてのC言語で『30日でできる!OS自作入門』の通りに初めてのOSを作ってみた - 三等兵

    30日でできる! OS自作入門 出版社 : 毎日コミュニケーションズ 発行日 : 2006/3/1 良いです。アカデミックの匂いが良い意味で全くしない。その上での実践的なは日語で他に無いと思います。ガチムチアカデミックの批判にあえて真っ向勝負してるような意欲作です。 正しい知識だの用語だのそんなもんはどうでもいいから手を動かしてやってまえみたいな感じで。こういうのは頭いい人たちから批判されやすいですね。俗物な私にはぴったりでしたが。 書はWindows用のサンプルしかないんですがMac用に整えたので、それ公開するついでに思ったことつらつらと書いときます。 開発環境 Mac サンプルがWindows用なのでいろいろMac仕様にしなきゃいけない(後述) テキストエディタ EmacsだのVimだのなんでもいいので適当に用意 バイナリエディタ Macだと0xEDが良い http://www

    初めてのC言語で『30日でできる!OS自作入門』の通りに初めてのOSを作ってみた - 三等兵
  • 0から始めるOS開発

    「OS自作に興味はあるけれど、どこから手をつければ良いか分からない!」 そんな人のためのOS開発初心者用スモールステップページを作る事にしました。 Livaが気ままに不定期更新する予定です。何かあったらForumにでもどうぞ。

  • 1