
キャッシュメモリがメモリアクセスにおいてどれだけの効果を持つか、実験によって確かめます。 00:00 前置き 00:37 キャッシュメモリとは 04:20 実験方法 07:07 結果 09:08 まとめ テキスト https://speakerdeck.com/sat/kiyatusiyumemorifalsexiao-guo 本動画シリーズは以下の本をなぞるように進めていますが、しょっちゅう脱線します。よろしければお買い求めください。 https://amzn.to/3RVWdo3 メンバーになるにはこちらをクリックしてください。とくに特典はないですが、メンバー数が多くなるとうれしくなって動画をアップロードする頻度が高まるかもしれません。 https://www.youtube.com/channel/UCgrUyRFiHhV607Orhriau6w/join
この記事は未踏ジュニアAdvent Calendar : 10日目です. カーネル, 書きたくないですか? こんにちは, horizon (@horizon2k38)です. 私は2023年の未踏ジュニアでA9Nというマイクロカーネルを作成していました. 人類なら誰しもがカーネルを書きたいと思ったことがあるはずです. そんな方のために, 未踏期間で得られた "0からカーネルを如何にして学び, 実装したか" という知見をより一般化して解説しようと思います. この記事の内容をすべて達成することで, あなたもきっとカーネルを書くことができるでしょう. やれば出来る きっと 絶対 私No.1 注: この記事はどちらかといえば初心者向けなので, 自信がある方は最下部の"参考文献"と, 私が書いた低レイヤー学習のロードマップのみ読むことをおすすめします. カーネル/OSとは そもそもカーネルとは, 所謂
目次 背景 目的 内容 所感 背景 仕事をしていると、共通ファイルサーバにあるファイルが更新されたらすぐに知りたいと思う場面が多々ありました。毎回フォルダにアクセスして更新されているかを確認するのは面倒であり、ファイルが更新されたら誰かがお知らせしてくれれば便利だなぁと思っていました。 目的 フォルダにあるファイルが更新されたら、通知されるプログラムを作成すること。 内容 コードのコンセプト プログラムの流れを考えます。 まず、ファイルを監視するのか、フォルダを監視するのかを場合分けする必要があります。ファイルとフォルダの場合についてそれぞれについて深掘りしていきます。 【ファイルの場合】 プログラムを実行した際のファイルの更新日を記録する 更新日を定期的に取得する その2つの日付を比較して異なれば通知する 【フォルダの場合】 [ファイルの個数を監視] プログラムを実行した際のファイルの数
本書では、小さなOSをゼロから少しずつ作っていきます。 OSと聞くと腰が引けるかもしれませんが、OS (特にカーネル) の基本機能は案外単純です。巨大なオープンソースソフトウェアとしてよく挙げられるLinuxでさえ、バージョン0.01はたった8413行でした。様々な要求に応えるために次第に肥大化していっただけで、当初は大変素朴な実装になっていました。 本書では素朴なコンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書きをC言語で実装します。これだけ様々な機能が詰め込まれているのに、コードは合計でたった1000行未満です。 「1000行なら1日でできそう」と思うかもしれませんが、初学者には少なくとも3日はかかるでしょう。OS自作のハマりポイントは「デバッグ」です。アプリケーション開発とは違うデバッグ手法・能力を習得する必要がありま
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau (University of Wisconsin-Madison) NEW: Security Chapters by Peter Reiher (UCLA) Welcome to Operating Systems: Three Easy Pieces (now version 1.10 -- see book news for details), a free online operating systems book! The book is centered around three conceptual pieces that are fundamental to operating systems: virtualization, concurrency, and pers
この本は組込みシステムやOSのような低レイヤーシステムの開発経験がないプログラマーのような人が、自作OSをはじめるため解説本です。 著者自身、本職はウェブプログラマーですが、趣味で組込みOSの自作をしています。この本はそのノウハウ集のようなものです。 このような低レイヤーシステムはC言語で開発されることが多いのですが、今回はRustを使います。 RustはC言語と比較して、様々なモダンな機能やツール郡を取り揃えている上に、C言語の長所である直接のメモリ制御ができ、パフォーマンスも高いとして組込みシステム開発でつかえるとして注目されています。 Rustそのもの解説は控えめですが、低レイヤーシステム開発特有のテクニックは必要に応じて解説します。 想定読者 ある程度はプログラミング経験があることを前提としています。 また、レジスタやメモリなどコンピュータアーキテクチャに関する基礎用語の説明もちゃ
Rust を勉強し始めたので冬休みの間に Linux の boot protocol を喋る x86ブートローダー(自称:Krabs)を作ってみました。この記事では、開発に至った動機や、作成した Krabs の特徴とか仕組み、開発中におきた嬉しかったことなどについて書きたいと思います。 Krabs とは Krabs は、Rustで書かれた x86/x86_64(Legacy BIOS) 向けの4段ロケット構成のチェインローダーです。 bzip2 で圧縮された ELF 形式のカーネルを起動できます。bzip2 圧縮されたイメージを解凍して、次に展開してでてきた ELF イメージを再配置してからの、カーネルの起動となります。 内部では libbzip2 の C ライブラリを利用していますが、それ以外は全て Rust で記述されています。 GitHub - o8vm/krabs: An x86
作成日:2006.03.30 修正日:2016.10.17 更新記録 (2006.03.30) 2006/3/10 と2006/3/11 の日記の内容を元に作成。 (2006.04.07) SPARC 32 ビットプロセッサのページテーブル構成を修正。 (2006.05.25) 3.2節ページテーブルエントリを追加。 (2012.05.29) PowerPC のセグメントサイズの誤りの修正と図の追加。 (2016.10.17) Intel64 の Process-Context Identifiers(PCIDs) と Protection Keys の説明を追加。また TLB エントリの無効化と ARM の情報も追加。タイポの修正。 1. はじめに 2. 仮想メモリの全体像とページング以外の機構 事前処理 事後処理 3. ページング 3.1 ページウォーク 3.2 ページテーブルエントリ
マイクロカーネルは浪漫に溢れる非常に作りがいのあるソフトウェアです。この記事は,「マイクロカーネルベースのOSの一から作ってIaaSで動かす」ことを目標に作ったマイクロカーネルベースのOS Resea(りーせあ)の設計と実装について軽くまとめた物です。 ソースコードはGitHubにあります。 マイクロカーネルとは Linuxのようなモノリシックカーネルでは色んな機能がカーネル空間で動きますが,マイクロカーネルではユーザプロセスたちが互いに通信しながらOSを作り上げます。プロセス・スレッド・仮想メモリ管理,プロセス間通信,タイマーといった必要最低限の機能だけをカーネルが担います。デバイスドライバやファイルシステムといった残りの機能は,独立したユーザプロセスとして動きます。たとえデバイスドライバが暴走しても他のコンポーネントを壊すことはないのです。マイクロカーネルは信頼性が高く,疎結合で美しい
みなさん、自作OSという言葉をご存知でしょうか? 自作PCという言葉には馴染みがあっても、自作OSという言葉は初めて聞いたという方も多くいらっしゃると思います。本連載では、そもそも自作OSとは何か、という基本的なところから、自作OSのこれまでの歴史、現代のコンピューターにおける自作OSの難しさ、そして自作OSの将来的な可能性について、筆者の実体験を踏まえながらご紹介したいと思います。 身近にあるOSの例 自作OSというのは、OS, つまりオペレーティングシステムを自分の手でつくりあげることを指します。といっても、そもそもOSとは何か知らない方も多くいらっしゃると思いますので、最初はそもそもOSとは一体何なのか見ていきましょう。 さて、みなさんの知っているOSにはどんなものがあるでしょうか?下記の図は、2019年5月の、日本国内におけるOSのシェアを示したグラフです。 最も多く使われているO
This blog series creates a small operating system in the Rust programming language. Each post is a small tutorial and includes all needed code, so you can follow along if you like. The source code is also available in the corresponding Github repository. Latest post: Async/Await The first step in creating our own operating system kernel is to create a Rust executable that does not link the standar
釣りタイトルだと思った皆さん、残念ながら本記事は釣り記事ではありません。 安心して読み進めてください。 「強くなりたいです。どうやったら強くなれますか?」 恐らく情報系の多くの人が抱えている疑問なのではないでしょうか。 「I know everything」みたいに言える人って中々いないですよね。 ちなみに、僕も強くなりたいです。 どうやったら強くなれるんでしょうね。もし強くなれる方法があったら知りたいですよね。 そもそも強さって・・・何だ? そもそも論で行くと、「強くなりたい」とだけ言うのは少し微妙で、どのように強くなりたいか、という具体的なイメージがあった方が良いのではないかとは思うのですが、まあそんな事を思う人は恐らくこのブログを読んでいない事でしょう。 なのでこちらで「強さとは何か」を邪推してみるわけですが、このページを読んでいらっしゃる中高生の皆さん的には、「周囲にドヤれる、tw
この記事では OS 自作の最初の一歩の部分を紹介します.OS 開発を始める前に雰囲気をつかみたい,という方に向けて書いています. 「セキュリティキャンプ 2018」の「OS 開発ゼミ・フルスクラッチ OS を書こう!」の補足資料でもあります. ハローワールド 何はともあれ,他の OS の力を借りずに起動して画面にメッセージを表示するようなプログラムを作ることが OS 作成の第一歩でしょう. ここでは「30 日でできる!OS 自作入門」のノリで,バイナリエディタを使ってハローワールドをしてみます. 「30 日でできる!OS 自作入門」は 12 年前の本なのでなかなか試せませんが1,本記事は最新のやり方で説明してありますから,現代のパソコンで試せます. 唐突ですが,何かバイナリエディタ2を起動してください. そうしたら,次の 2KiB のバイナリ列を入力し,BOOTX64.EFI という名前で
Mac OSX におけるはりぼてOSの開発環境を(再)整備した話 この記事は、自作OS Advent Calendar 2016の一部として作成されました。 はりぼてOSをマルチプラットフォームで開発できるよう、開発環境を整備した話が書かれています。 タイトルに反して、Linuxでの開発についても書かれています! 背景 みなさんは「はりぼてOS」をご存知ですか? はりぼてOSは、川合秀実氏著の「30日でできる!OS自作入門」という本の中でつくりあげられるOSです。 名前の通り、非常に「はりぼて」な完成度となっておりますが、それでもブートローダーを含めフルスクラッチで開発されており、またKさん(川合秀実氏のこと)らしく、フロッピーディスク1枚に余裕で収まるサイズを実現しており、OS自作の基礎を学ぶには最適です。 …なんてことは、自作OSアドベントカレンダーをご覧になっている皆様にとっては常識
builderscon tokyo 2018 2018-09-08 10:00-11:00 @ Track-C
はじめに この記事は自作OSでUSBキーボードを実装しようとして半年くらい四苦八苦していた経緯の備忘録です。時系列で書いてくので、読みにくかったらごめんなさい。 USB周りの経験値がゼロな状態から実装した結果、遠回りやら勘違いやらいろいろしているのですが、そこら辺の苦労話が少しは伝わると良いなぁ、と思って書いたものです。 あと、上級者向けに伏線となった部分を赤字にしてあります。読んでいくにつれ、この伏線が回収される(=僕の努力が水の泡になる)のですが、是非伏線の段階で「m9(^Д^)プギャーwwwwww」してみてください。 あと、タイトルは若干釣りです。それも最後まで読んでもらえれば分かるかと。 ソースは以下の通り。 github.com 背景&きっかけ 自分でOSを書いていると、キーボードで文字を入力したくなるわけです。C言語の入門でscanfとかやるのと同じですね。 キーボードから
この記事は Kobe University Advent Calendar25日目の記事です。 低レイヤー技術(後述)をこれから学びたい人向けの入門記事です。 自身の経験を踏まえ、より多くの人達にこのレイヤーに興味を持ってほしくて書きました。 決して卒論がやばくてAdvent calendarのネタが作れなかったわけでは(ry なぜこんな記事を書いたか いわゆるシステムプログラミングのような低レイヤー(と言って差し支えない)ジャンルって一体何から始めれば良いのかいまいちピンと来ないし、何が面白いのかも分からないと思われている事が多いと思います。 にもかかわらず低レイヤーの魅力や学び方の指針みたいな物を示した、いわゆる入門記事ってかなり少ないんですよね。 本記事はこれからシステムプログラミングを始めたい方や、既にかじってみたが中々先が見えてこない、将来何の役に立つのか不安という方達に読んでい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く