タグ

OSに関するakaneharaのブックマーク (13)

  • シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita

    はじめに シェルスクリプトで二重起動防止やロックをする方法を検索すると、いろいろな方法や書き方が見つかりますが、どれを使えばよいのか、当に正しく動くのか、不安になりますよね? ディレクトリ (mkdir) やシンボリックリンク (ln) を使った独自実装の例も見かけますが、エラー発生時や予期せぬ電源断、CTRL+C で止めたときなどでも問題は発生しないのでしょうか? まず、ディレクトリやシンボリックリンクを使った独自実装はしない。これを肝に銘じてください。シェルスクリプトでのロック管理はとても難しく、一般的な排他制御の知識に加えて、シェルスクリプト特有の問題、シグナルやトラップ、サブシェルや子プロセスの問題、さらには特定のシェル固有の仕様やバグなどさまざまな問題に対処する必要があり大変です。独自実装の例では古いロックファイルが残ってしまい、それをいつどのタイミングで片付ければ安全なのか?

    シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita
  • Linuxの強味

    The Linux Edge Linuxの強味 Linus Torvalds リーナス・トーバルズ Translation by Akira Kurahone 今現在、Linuxには数百万人のユーザがいる。数千人の開発者がいる。市場は拡大しつつある。Linuxは、組み込み用システムでも使われている。ロボット制御システムでも使われている。スペースシャトルに搭載されて宇宙へも行った。私としては、こうなることを十分予見していた、と言いたいし、これはLinuxの世界制覇計画の一環にすぎない、とも言いたいところだが、正直な話、こうなってしまったことに私自身が少々驚いている。私としては、Linuxのユーザが千人から百万人に増えたときのことより、それが一人から百人に増えたときのことをよく覚えている。 Linuxは、移植性と利便性を前提にしたから成功したわけではない。Linuxは、優れた設計理念と開発モデ

  • RustでOS作成したという論文を訳してみた その1 - 飽きっぽい人のブログ

    ここの翻訳になります 原文は2015年に書かれたものなので現在のRustの仕様と異なることが書いてある場合があります 文章はGithubで管理されています この翻訳は7割方間違っているので信用しないでください 次:その2 Reenix: RustでのUnixライクオペレーティングシステムの実装 Alex Light(alexander_light@brown.edu) Advisor: Tom Doeppner Reader: Shriram Krishnamurthi Brown University, Department of Computer Science 要旨 この論文はRustでのUnixライクなOSカーネルの実装でわかった成功と失敗の体験を説明するものである。 CS167/9のために書かれたWeenix OSの基礎デザインと大量の低レベルな処理をサポートするコードを使って

    RustでOS作成したという論文を訳してみた その1 - 飽きっぽい人のブログ
  • 低レイヤーの歩き方 - るくすの日記 ~ Out_Of_Range ~

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

    低レイヤーの歩き方 - るくすの日記 ~ Out_Of_Range ~
  • CPU実験で自作CPUにUNIXライクOS (xv6) を移植した話 - 豆腐の豆腐和え

    今年のCPU実験では、有志からなる我らがX班が、おそらくCPU実験史上初である自作CPUへのOS (xv6) 移植に成功しました。コア係とコンパイラ係の面々がそれぞれまとめ記事を書いていたので、OS係から見たOS移植のまとめも書こうかなと思います。こんなことしてましたってことが伝わればいいなと思います。 この記事を読む後輩やらなんやらがいたら、ぜひ僕らがやったようなことはさっさとクリアしちゃって、さらにさらに面白いことをする踏み台にしていってほしいですね。 どなたが読んでもある程度概要が伝わるよう、まずCPU実験とは何かということをさらっと書いた後、実際にxv6を移植するにあたってやったことをまとめたいと思います。 CPU実験とは CPU実験は僕の学科(理学部情報科学科)で3年冬に行われる、半年間にわたる学科名物演習です。 最初の週で4~5人程度の班に分けられた後、それぞれの班でオリジナル

    CPU実験で自作CPUにUNIXライクOS (xv6) を移植した話 - 豆腐の豆腐和え
  • xv6 - Wikipedia

    xv6は、ANSI Cによる、Sixth Edition Unixのマルチプロセッサx86システムへの再実装である。xv6はMITにおけるオペレーティングシステムエンジニアリング (6.828) コースにて、教育を目的として使われている。 オペレーティングシステムの目的[編集] LinuxやBSDとは異なり、xv6は1セメスターで学習するのに十分なほどシンプルであり、Unixの重要な概念と構造を含んでいる [1]。 このコースでは、オリジナルのV6のコードを学習するのではなく、xv6を使う。それは、PDP-11マシンは簡単には手に入らないし、オリジナルのV6は非常に古いANSI C以前のC言語で書かれているためである。 セルフドキュメンテーション[編集] xv6のMakefileの面白い特徴として、ソースコード全体を読みやすい形式で掲載したPDFファイルを生成するオプションを持っていること

    xv6 - Wikipedia
  • 世界のOSたち | マイナビニュース

    コンピューターというハードウェアを活用するために欠かせないのが、OS(Operating System:オペレーティングシステム)の存在です。我々が何気なく使っているWindows OSやMac OS XだけがOSではありません。世界には栄枯盛衰のごとく消えていったOSや、冒険心をふんだんに持ちながらひのき舞台に上ることなく忘れられてしまったOSが数多く存在します。「世界のOSたち」では、今でもその存在を確認できる世界各国のOSを不定期に紹介していきます。 【レビュー】世界のOSたち - Windows OSの未来を作った「Windows NT 3.x」後編 [13:32 8/14] 【レビュー】世界のOSたち - Windows OSの未来を作った「Windows NT 3.x」前編 [16:41 8/13] 【レビュー】世界のOSたち - 日でも大成功を収めた「Windows 3.1

    世界のOSたち | マイナビニュース
  • スケジューリング - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "スケジューリング" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2021年6月) 計算機科学においてスケジューリング(英: scheduling)は、スレッドやプロセスやデータの流れについて、システム資源(例えば、プロセッサ時間、通信帯域など)へのアクセスを与える方法である。システムを効果的に負荷分散するため、あるいはターゲットの Quality of Service を保証するためになされる。スケジューリングアルゴリズムは、マルチタスク(同時に複数のプロセスを実行)や多重化(複数のデータの流れを同時に転送)の発展とともに進化してきた。

  • UNIX/Linux互換OSをゼロから作った話 - Qiita

    こんにちはredcap97です。 私は、UNIX互換OSをゼロから作っています。 ある程度動くようになったので紹介したいと思います。 デモ 現在、QEMUの上で動作するようになっています。CPUはx86ではなくARMを対象に作っています。シェルと基的なコマンドが動作するようになっていて、リダイレクトやパイプも利用できます。 Dockerを使うと簡単にOSを動かすことができます。 概要 33のシステムコールを実装している システムコールはLinuxと互換性がある シェルはDashが利用できる Coreutilsのコマンドが使える libcはmusl libcを使用している ファイルシステムはMinix File Systemを実装している 以上です。 私は実装がとても遅いので、ここまで作るのに2年ぐらいかかっています。 Linusの偉大さを肌で感じなら、これからもノロノロと作っていきたいと

    UNIX/Linux互換OSをゼロから作った話 - Qiita
  • UNIX/Linux 環境でのコマンドライン操作に慣れる…前の基礎知識 - Qiita

    前置き このテキストは「格的にターミナルにこもって作業をはじめる前にとりあえず知っておいた方が良いこと」をまとめたものです.情報系の研究室に配属されたばかりの新4年生,というかなり絞られた対象を想定読者にしているため,一部偏った記述があるかもしれません.レベル感としては「ls とか cd が何をするコマンドなのかは分かるし,C のプログラムをターミナルから emacs を叩いて書いたこともある.標準入力とかパイプとか言われれば使えるような気がする.が,複雑なコマンドを書かれるとよく分からないし,ターミナルの中で生活しているわけではない」…くらいを想定しています. 参考文献の列挙など,今後加筆・修正をおこなう可能性は高いです.誤りがあればコメント欄などでご指摘いただけると助かります. はじめに コマンド とは,いわゆる黒い画面で打ち込まれるアレのことです.たとえば学生実験などで触ってきた

    UNIX/Linux 環境でのコマンドライン操作に慣れる…前の基礎知識 - Qiita
  • MALLOC

    時事ネタ いや、「今、fj.comp.lang.cが熱い!」という話は ちょっと前から聞き及んではいたのですが、 流量が尋常じゃないらしいので、 忙しさもあって読むのを控えていたんですけど、 先日、大筋を拾い読みしてみました。 確かに熱いですねえ。 いったん収束するかなあ、と思ったら、なんかまた泥沼の気配が(^^; fjを読んでない人のために説明すると(って、 私も普段はあんまり読んでないんですが)、 「malloc()で確保した領域は、必ずfree()で解放しなきゃいけないか?」という 話題でして、「exit()する時には、OSが解放してくれるんだから 別にfree()しなくてもいいじゃん」という主張と、 「いや、malloc()には常に対になるfree()があるべきだ」という主張があって、 議論を呼んでいたのでした。 んで、私がどう思うかなんですが、 私は面倒臭がりなので、free()

  • プロセス、スレッド、ファイバ、タスク、ジョブ、違いを整理してみよう - Schi Heil と叫ぶために

    まずは分かりやすいプロセスとスレッドから。 WindowsLinux などの汎用 OS 上のアプリケーションは一般にプロセスとして動作している。プロセスはプログラムの実行単位である。プロセスは1つ以上のスレッドと、ファイル、ヒープメモリなどのリソースで構成される。一方、スレッドは CPU 利用の単位である。スレッドはそれぞれが専用のスタックと CPU レジスタのコピーを保持するが、ファイルやヒープメモリは同一プロセス内の全てのスレッドで共有する。 スレッドのさらにサブセットがファイバである。スレッドとの違いは切り替え動作にありファイバのほうが軽いというメリットがある。プロセス、スレッド、ファイバの関係はこちらの説明が分かりやすかった。 プロセスはプログラム実行のための固有のメモリ空間を持っており、最も独立性の高い実行単位である反面、起動や切り替えに時間がかかるという特性を持っています

    プロセス、スレッド、ファイバ、タスク、ジョブ、違いを整理してみよう - Schi Heil と叫ぶために
  • 1