ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
無料
ブラウザよりも高速アクセス!
 

シグナル (Unix)

索引 シグナル (Unix)

ナル(signal)とは、Unix系(POSIX標準に類似の)OSにおける、限定的なプロセス間通信の形式を使って、プロセスに対し、非同期で、イベントの発生を伝える機構である。シグナルが送信された際、OSは宛先プロセスの正常な処理の流れに割り込む。どんな不可分でない処理の間でも割り込むことができる。受信プロセスが以前にシグナルハンドラを登録しておけば、シグナル受信時にそのルーチンが実行される。さもなくば、デフォルトのシグナル処理が行われる。(同様なものは他のTSSなどでも開発されてはいるが、UNIXのシグナルは)1970年ごろベル研究所でUNIXに実装された。後にPOSIXである程度は標準化されているが、標準化が諦められているような振舞などもいくつかあり、特に他の幾つかの要素(fork等)とマルチスレッドとシグナルが絡むと実装毎の対処にプログラミングが大変になることがある。.

50 関係: 子プロセス不可分操作仮想記憶例外処理ページフォールトバックグラウンド (ソフトウェア)バスエラーリエントラントトランスレーション・ルックアサイド・バッファブレークポイントプロセスプロセスグループプロセス間通信パイプ (コンピュータ)ファイルシステムファイル記述子ベル研究所制御構造オペレーティングシステムカーネルコンテキストスイッチコールスタックコアダンプシェルシステムコールセグメンテーション違反ゼロ除算タイマーCPUCPUモード端末競合状態Dd (UNIX)InitKillLinuxMallocMmapNaNPOSIXPrintfSingle UNIX SpecificationUNIXUnix系X/OpenX86標準Cライブラリ浮動小数点数擬似端末性能解析

子プロセス

子プロセスとは、コンピュータのプロセス管理に関わる用語で、ほかのプロセスから呼び出されたプロセスのことを言う。チャイルドプロセスとも言い、呼出元のプロセスのことを親プロセスあるいはペアレントプロセスと呼ぶ。 マルチタスクのオペレーティングシステムに関してはプロセス管理の記事に詳しく述べられている。 MS-DOS や PC DOS でも子プロセスと呼ばれるものが実装されていた。本稿ではこれについても述べる。.

新しい!!: シグナル (Unix)と子プロセス · 続きを見る »

不可分操作

不可分操作(ふかぶんそうさ)あるいはアトミック操作 (atomic operation) とは、情報工学においていくつかの操作を組み合わせたもので、システムの他の部分から見てそれらがひとつの操作に見えるものをいう。.

新しい!!: シグナル (Unix)と不可分操作 · 続きを見る »

仮想記憶

仮想記憶(かそうきおく、Virtual Memory、バーチャルメモリ)とは、コンピュータ分野におけるメモリ管理の仮想化技法の一種であり、オペレーティングシステムなどが物理的なメモリを、アプリケーション・ソフトウェア(プロセスなど)に対して、専用の連続した主記憶装置に見えるように提供する。 この技術により、物理的な主記憶装置に加えてハードディスク装置等の補助記憶装置を併用すれば、物理的な主記憶装置よりも大きな仮想メモリを提供する事ができる。またアプリケーション・プログラム側は、物理メモリ上のアドレスを意識しなくて良いため、マルチタスクの実現が容易である。このため現代のオペレーティングシステムの多くが仮想記憶をサポートしている。 仮想的に与えられたアドレスを仮想アドレス (virtual address) または論理アドレス (logical address)、実記憶上で有効なアドレスを物理アドレス (physical address) または実アドレス (real address) という。仮想アドレスの範囲を仮想アドレス空間、物理アドレスの範囲を物理アドレス空間という。.

新しい!!: シグナル (Unix)と仮想記憶 · 続きを見る »

例外処理

例外処理(れいがいしょり)とは、プログラムの上位の処理から呼び出されている下位の処理で継続不能、または継続すれば支障をきたす異常事態に陥ったとき、制御を呼び出し元の上位の処理に返し安全な状態になるよう回復処理をすること。その際に発生した異常のことを例外と呼ぶ。 継続不能や継続すると問題になる様な状態としては、次のようなものが挙げられる。.

新しい!!: シグナル (Unix)と例外処理 · 続きを見る »

ページフォールト

ページフォールト (page fault) とは、プログラムが物理メモリがマップされていない仮想アドレス空間上のページにアクセスしたときにハードウェアが発生する割り込み(または例外)である。ページフォールトを処理するソフトウェアは一般にオペレーティングシステム (OS) の一部であり、ページフォールトを発生させるハードウェアを一般にメモリ管理ユニットと呼ぶ。OSのメモリ管理がページフォールトを処理し、その仮想アドレスにアクセスできるようにするか、無効なアクセスであるとしてページフォールトを発生させたプログラムを強制終了させることができる。 名前にフォールト(障害)とあるものの、ページフォールトは必ずしも致命的なエラーではない。Windows、UNIX/Unix系OS(macOS、Linux、*BSD、Solaris、AIX、HP-UXなど)、z/OSといった仮想記憶方式を採用するOSでは、ページフォールトは普通に発生するし、必須な機能でもある。マイクロソフトは(Windows Vistaなどの)リソースモニタの最近のバージョンで、ページフォールトの意味で「ハードフォールト」(hard fault) という呼称を使っている。.

新しい!!: シグナル (Unix)とページフォールト · 続きを見る »

バックグラウンド (ソフトウェア)

ンピュータソフトウェアのプロセスにおいて、バックグラウンドは相対的に低い優先度で動作し、入力がごく少ないか全くなく、最小限の出力を行うプロセスを表す。 バックグラウンドプロセスは、大まかに2つのカテゴリに分類することが出来る。デーモンと計算集約型タスクである。.

新しい!!: シグナル (Unix)とバックグラウンド (ソフトウェア) · 続きを見る »

バスエラー

バスエラー (bus error) とは、コンピュータなどのバスへのアクセスに、何らかの問題があるため、読み書きのリクエストに応じられない、といったようなエラーである。 要因はおおざっぱに、論理的なもの(ソフトウェア的なもの)と物理的なもの(ハードウェア的なもの)に分けられる。論理的なものとしては、セグメンテーション違反やアラインメント違反(後述の「不整列アクセス」)など、物理的なものとしては、コンピュータの検出した一般的なデバイスが故障することが原因でも起きることがあるほか、まれにコンピュータハードウェアが物理的に壊れたことを示すことがある。 いずれにしても、詳細や細かい分類の違いはハードウェアやオペレーティングシステムのアーキテクチャや実装によって異なる(場合によっては、プロセッサの提供元とオペレーティングシステムの提供元で違う用語を使っているようなこともあるだろう)。いくつかの例を詳解する。; 存在しないアドレスへのアクセス; 不整列アクセス CPUは普通どんな時もデータバス幅いっぱいにデータをアクセスする。バイトデータにアクセスするために、CPUはデータバス幅いっぱいにメモリアクセスをして、ここのバイトをマスクしたりシフトしたりする。これは非効率的ではあるが、特に順番に処理を行うたいていのソフトウェアにとって本質的な特性だとして大目に見られている。バイトではなく、2つのアライメントにまたがる程より大きな単位のデータの場合は、データバスで2回以上データを取ってくる必要がある。CPUがサポートしていれば可能だが、この機能は機械語レベルで直接必要になることはめったにないので、CPU設計者は普通このような実装を避け、その代わりに不整列メモリアクセスとしてバスエラーを発行する。CPUのメモリアクセス機構とコンパイラの進歩により、以前よりも問題として目立たなくなってきている。64bitCPUへの移行が行われ、ワード幅が増えた関係で、バスエラーが多発しやすくなっている。.

新しい!!: シグナル (Unix)とバスエラー · 続きを見る »

リエントラント

リエントラント(reentrant、再入可能)とは、プログラムやサブルーチンが実行中に割り込まれ、その実行が完了する前に再び呼び出され実行されても安全だという性質を指す。割り込みは分岐や呼び出しなどの内部的な動きによって生じる場合もあるし、ハードウェア割り込みやシグナルなどの外部の動きによって生じる場合もある。割り込んでの呼び出しが完了すれば、割り込まれた呼び出しが実行を継続できる。 この定義はシングルスレッドのプログラミング環境が起源であり、ハードウェア割り込みで割り込まれた制御の流れが割り込みサービスルーチン (ISR) に転送されることから生まれた。ISRが使用するサブルーチンは割り込みをきっかけとして実行される可能性があるため、リエントラントでなければならない。OSのカーネルが使用するサブルーチンの多くは、カーネルで確保済みのリソースを超えられない制限がありリエントラントではない。そのためISRでできることは限られている。例えば、一般にISRからファイルシステムにはアクセスできないし、場合によってはヒープ領域も確保できない。 直接または間接に再帰可能なサブルーチンはリエントラントである。しかし、グローバル変数が処理の流れの中でしか変化しないことを前提としているサブルーチンはリエントラントではない。グローバル変数を更新するサブルーチンが再帰的に呼び出されれば、1回のサブルーチン実行の中でグローバル変数は突然変化することになる。 リエントラント性の概念はシングルスレッドの環境に起源があり、マルチスレッド環境でのスレッドセーフという概念とは異なる。リエントラントなサブルーチンはスレッドセーフにすることもできるが、リエントラントだというだけであらゆる状況でスレッドセーフと言えるわけではない。逆にスレッドセーフなコードはリエントラントである必要はない(後述の例を参照)。.

新しい!!: シグナル (Unix)とリエントラント · 続きを見る »

トランスレーション・ルックアサイド・バッファ

トランスレーション・ルックアサイド・バッファ(英: Translation Lookaside Buffer、TLB)とは、メモリ管理ユニット内のある種のキャッシュであり、仮想アドレスから物理アドレスへの変換の高速化を図るものである。こんにちの仮想記憶をサポートするマイクロプロセッサは、仮想空間と物理空間のマッピングにTLBを利用しているのがほとんどである。 TLBは通常、連想メモリ (CAM) で実装されている。CPUがメモリ空間にアクセスする際、検索キーとして仮想アドレスを使い、TLB上にそのアドレスに対応するエントリがあれば、検索結果として対応する物理アドレスが返る。これを「TLBヒット」と呼ぶ。要求したアドレスがTLB内にない場合は「TLBミス」であり、アドレス変換のためにページテーブルを辿っていかなければならない。これを「ページウォーク」と呼ぶ。ページウォークは複数個所のメモリの内容を読み取り、そこから物理アドレスを計算しなければならず、時間がかかる作業である。ページウォークによって物理アドレスが判明した後、その仮想アドレスと物理アドレスのマッピングがTLBに格納される。.

新しい!!: シグナル (Unix)とトランスレーション・ルックアサイド・バッファ · 続きを見る »

ブレークポイント

Eclipseのデバッグインタフェースで、プログラムがブレークポイントで停止している様子 ブレークポイント(breakpoint)は、ソフトウェア開発のデバッグ作業において実行中のプログラムを意図的に一時停止させる箇所である。ブレークポイントの指定機能は多くのデバッガに備えられており、これを用いることでプログラムの任意箇所への到達を自動的に捕捉できる。ブレークポイントでの停止後、プログラマは通常のデバッグ作業同様に実行環境(メモリ、レジスタ、ログ、ファイルなど)を観察し、プログラムが期待通りに機能しているかどうかを判断する。 通常、ブレークポイントにはプログラムの実行を中断させるかどうかを決定する1つ以上の条件を設定できる。 最も一般的なブレークポイントは、指定した命令を実行する前にプログラムの実行を停止する。これを「命令ブレークポイント」などと呼ぶ。 また、メモリの特定領域の読み込み、書き込み、更新をトリガーとして停止させる場合もある。これを「データブレークポイント」あるいは「ウォッチポイント」などと呼ぶ。 他にも時刻を指定する方式のブレークポイント、キー入力などをトリガーとするブレークポイントがある。 CPUの多くはブレークポイントをハードウェアでサポートしている。このハードウェアには、分岐遅延スロットにある命令にはブレークポイントを設定できないなどといった制限がある場合もある。そのような制限はマイクロアーキテクチャに起因するもので、プロセッサによって様々である。大まかに言えば、ブレークポイントに到達すると例外を発生し、それによってデバッグ対象プロセスを実行できない状態に遷移させ、デバッガプロセスに制御を移す。 ハードウェアがサポートしていない場合、デバッガでソフトウェア的にブレークポイントを実装する必要がある。命令ブレークポイントの場合、単にブレークポイントを設定した命令を別の命令に置換すればよい。しかし、データブレークポイントをソフトウェアで実現しようとすると、デバッグ対象アプリケーションの性能が大幅に低下することが多い。 プログラミング言語の実装によっては、デバッグ機能を他のプログラムに公開している場合もある。例えば、FORTRANの一部の方言には AT 文があるが、これは元々は命令ブレークポイントのためのものだった。Pythonには Python プログラムからアクセス可能なデバッガが実装されている。このような機能を乱用するとCOMEFROM文のような機能が実装できる。.

新しい!!: シグナル (Unix)とブレークポイント · 続きを見る »

プロセス

プロセスとは、情報処理においてプログラムの動作中のインスタンスを意味し、プログラムのコードおよび全ての変数やその他の状態を含む。オペレーティングシステム (OS) によっては、プロセスが複数のスレッドで構成される場合があり、命令を同時並行して実行する。.

新しい!!: シグナル (Unix)とプロセス · 続きを見る »

プロセスグループ

プロセスグループ (Process Group) とは、POSIX準拠のオペレーティングシステムにおいて、1個以上のプロセスの集まりを意味する。この集まりはプロセスグループリーダーとなっているプロセスのプロセスIDと同じ値をプロセスグループIDとして識別に使用する。 プロセスグループはシグナルを複数のプロセスに配布するために使用される。killシステムコールはシグナルを個々のプロセスに送るだけでなく、プロセスグループに送ることもできる。プロセスグループに向けられたシグナルは、そのグループのメンバーである全プロセスに送られる。 プロセスグループへのシグナル送信は、シェルプログラムが使用するジョブコントロールの基本となっている。ttyデバイスドライバは、キーボードからの割り込みを契機としてフォアグラウンドのプロセスグループに SIGTSTP、SIGQUIT、SIGINTというシグナルを送る。また、フォアグラウンドでないプロセスグループが端末からの入力待ち状態(また、適切なフラグが設定されていれば表示待ち状態も)になっている場合にSIGTTINシグナルやSIGTTOUシグナルを送る。シェル(ひいてはその操作者)はコマンドパイプラインからプロセスグループを生成し、どのプロセスグループが端末の制御を握るフォアグラウンドのプロセスグループになるかを制御する。 プロセスグループは常にひとつのリーダーから始まるが、必ずしも常にリーダーが必要というわけではない(リーダーが他のプロセスより先に終了することがある)。POSIXによれば、プロセスが偶然にグループリーダーなることはない。そのため、あるプロセスIDがプロセスグループIDとして使われている間は、それがプロセスIDとして再利用されないようにする必要がある。プロセスグループのリーダーになるには、明示的に setpgid() または setsid() システムコールを呼び出す必要がある。 setpgid()システムコールは新たなプロセスグループを生成したり、プロセスを既存のプロセスグループに入れたりする汎用の呼び出しである。リーダーになるには、自身のプロセスIDを指定すればよいが、通常 setpgid(0,0) という形で呼び出す。シェルがコマンドパイプラインのために新たな子プロセスをforkすると、親であるシェルプロセスと子プロセスは直ちにそのプロセスをプロセスグループリーダーにしようとする。(両者がそれを試みるのは、子プロセスがプロセスグループリーダーになろうとすること、子プロセスがコマンドを実行しようとすること、親または端末デバイスドライバがジョブコントロールのシグナルをそのプロセスグループに送ろうとすること、これらの競合状態が発生するのを防ぐためである。) プロセスグループ自体はセッション (session) の一員となる。これはテキストユーザインタフェースが使われているUnix系システムで使われたもので、いわゆる「ログインセッション」を意味している。グラフィカルユーザインタフェース (GUI) が使われるようになってこのコンセプトはほとんど意味がなくなり、カーネルがセッションに関して行っていた処理の大部分も無視されている。GUIではログインセッションに関しては全く別の機構が使用されている。セッションリーダーと呼ばれるひとつのプロセスが制御端末とやり取りして端末が切断されるときにセッション内の全プロセスが停止することを保証する。セッションリーダーがいない場合、その端末のフォアグラウンドのプロセスグループがセッション内の他のプロセスグループの面倒も見ることが期待されている。プロセスは異なるセッションのプロセスグループに移動することはできず、プロセスグループも別のセッションに移動することはできない。プロセスグループを生成するプロセスは、自身が入っているセッション内でしかプロセスグループを生成できない。 setsid()システムコールを使用して新しいセッションを作る。成功すると、そのプロセスは同時に新たなプロセスグループリーダーにもなる。つまり、このシステムコールはひとつの新しいプロセスグループを持つ新しいセッションを生成することを目的としている。そのとき現在のプロセスがセッションとプロセスグループのリーダーとなる。.

新しい!!: シグナル (Unix)とプロセスグループ · 続きを見る »

プロセス間通信

プロセス間通信(IPC、interprocess communication)はコンピュータの動作において複数のプロセス間(の複数のスレッド間)でデータをやりとりするための仕組み。通信するプロセスは同一コンピュータ上にある場合と、ネットワークで接続された別のコンピュータ上にある場合がある。そのようなローカル内対リモート間といったような分類以外にも多くの観点から分類でき、また、スレッド間の通信の帯域幅とレイテンシは様々であり、やりとりされるデータの種類も様々である。メッセージパッシング、同期、共有メモリ、RPCなどといったメカニズムやプリミティブがある。 プロセス間通信の目的・理由には以下のようなものがある。.

新しい!!: シグナル (Unix)とプロセス間通信 · 続きを見る »

パイプ (コンピュータ)

ある端末上で3つのパイプで繋いだプログラムを実行する際の入出力の流れ Unix系オペレーティングシステムにおけるパイプ(pipe)、もしくはパイプライン (pipeline) とは、複数のプログラムの入出力をつなぐための仕組み(プロセス間通信)の一つである。大変便利であることからUnix系以外でも同様の実装や、あるいは擬似的な実装によって似たようなことができるものも多い。直接の親子関係にあるプロセス間で通信をおこなうためfork前にあらかじめ共有しておく「無名パイプ」と、親子関係などにないプロセス間で一時ファイルなどを通して接続する(接続を確立するためにファイルを経由するだけで、接続自体はファイルを経由するわけではない)「名前付きパイプ」がある。ダグラス・マキルロイがUnixシェル向けに考案したことから始まり、パイプライン輸送からの連想で名付けられた。 特に、シェルなどでは縦棒( | )の記号を使って無名パイプを簡単に利用でき、それを指して「パイプ」と言うことも多い。プロセス群の標準ストリームを連鎖的に相互接続するもので、あるプロセスの標準出力 (stdout) を直接別のプロセスの標準入力 (stdin) に接続する。 「1つだけの仕事をうまくやる、道具のようなソフトウェア」(Software Tools)をパイプラインによって組み合わせる、というアイデアはUNIXやUnix系のOS以外にも、MS-DOS をはじめとする様々なOSやアプリケーションに、動作に多少の違いはあるものの受け継がれている。パイプで連結することを前提とした構成のプログラムをフィルタと呼ぶ。 前述のシェルのコマンドラインにおけるパイプは、中置記法で結合法則を満たす演算子と見ることができる(その時、演算子(オペレータ)のオペランドにあたるのは、各プログラムである)。これを一種の「合成」と見ることもできる。一般に数学で、f, g, h という関数があるとして h(g(f(x))) というような計算をすることを考える時、関数を関数合成の演算子 ∘ で合成した (h∘g∘f)(x) というものを考えることがあるが、パイプの演算子 | はこれに似ており (progF あるいは (progF | progG | progH) といったような感じになる。.

新しい!!: シグナル (Unix)とパイプ (コンピュータ) · 続きを見る »

ファイルシステム

ファイルシステムは、コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ。ファイルとは、主に補助記憶装置に格納されたデータを指すが、デバイスやプロセス、カーネル内の情報といったものもファイルとして提供するファイルシステムもある。 より正確に定義すれば、ファイルシステムは抽象データ型の集まりであり、ストレージ、階層構造、データの操作/アクセス/検索のために実装されたものである。ファイルシステムを特殊用途のデータベース管理システム (DBMS) と見なせるかどうかは議論があるが、ファイルシステムとデータベース管理システムには多くの共通点がある。.

新しい!!: シグナル (Unix)とファイルシステム · 続きを見る »

ファイル記述子

標準入力(stdin)、標準出力(stdout)、標準エラー出力(stderr)のファイル記述子の概念図 ファイル記述子(ファイルきじゅつし、file descriptor)とは、プログラミングにおいてファイルへの参照を抽象化したキーである。ファイルディスクリプタあるいはFDとも呼ばれる。Microsoft Windowsでは、「ファイルハンドル」がほぼ相当するが、技術的には異なるオブジェクトである。.

新しい!!: シグナル (Unix)とファイル記述子 · 続きを見る »

ベル研究所

ベル研究所(ベルけんきゅうじょ、Bell Laboratories)はもともとBell System社の研究開発部門として設立された研究所であり、現在はノキアの子会社である。「ベル電話研究所」、略して「ベル研」とも。.

新しい!!: シグナル (Unix)とベル研究所 · 続きを見る »

制御構造

制御構造(せいぎょこうぞう)は、コンピュータ・プログラミング言語、特に手続き型プログラミングや命令型プログラミングにおいて、ループや飛び越しなどといった、手続き(プロシージャ)中の実行順を順次実行から変化させたり、サブルーチン呼出しやその戻り、などといった制御を行う「文 (プログラミング) 」などの構造(言語の構成要素)である。 制御構造の種類は言語によって様々だが、典型的には以下のようなものがある(用語「ブロック」については、ブロック (プログラミング) の記事を参照)。.

新しい!!: シグナル (Unix)と制御構造 · 続きを見る »

オペレーティングシステム

ペレーティングシステム(Operating System、OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)のために、ソフトウェアの中でも基本的、中核的位置づけのシステムソフトウェアである。通常、OSメーカーが組み上げたコンピュータプログラムの集合として、作成され提供されている。 オペレーティングシステムは通常、ユーザーやアプリケーションプログラムとハードウェアの中間に位置し、ユーザーやアプリケーションプログラムに対して標準的なインターフェースを提供すると同時に、ハードウェアなどの各リソースに対して効率的な管理を行う。現代のオペレーティングシステムの主な機能は、ファイルシステムなどの補助記憶装置管理、仮想記憶などのメモリ管理、マルチタスクなどのプロセス管理、更にはGUIなどのユーザインタフェース、TCP/IPなどのネットワーク、などがある。オペレーティングシステムは、パーソナルコンピュータからスーパーコンピュータまでの各種のコンピュータや、更にはスマートフォンやゲーム機などを含む各種の組み込みシステムで、内部的に使用されている。 製品としてのOSには、デスクトップ環境やウィンドウシステムなど、あるいはデータベース管理システム (DBMS) などのミドルウェア、ファイル管理ソフトウェアやエディタや各種設定ツールなどのユーティリティ、基本的なアプリケーションソフトウェア(ウェブブラウザや時計などのアクセサリ)が、マーケティング上の理由などから一緒に含められていることもある。 OSの中で、タスク管理やメモリ管理など特に中核的な機能の部分をカーネル、カーネル以外の部分(シェルなど)をユーザランドと呼ぶ事もある。 現代の主なOSには、Microsoft Windows、Windows Phone、IBM z/OS、Android、macOS(OS X)、iOS、Linux、FreeBSD などがある。.

新しい!!: シグナル (Unix)とオペレーティングシステム · 続きを見る »

カーネル

ーネルはアプリケーションソフトウェアとコンピュータのハードウェアを結び付ける。 カーネル(kernel)は、階層型に設計されたオペレーティングシステム (OS) の中核となる部分である。アプリケーションとハードウェアレベルでの実際のデータ処理との間の架け橋である。システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理する。 オペレーティングシステムの基本コンポーネントとして、カーネルはメモリ、CPU、入出力を中心としたハードウェアを抽象化し、ハードウェアとソフトウェアがやり取りできるようにする。また、ユーザープログラムのための機能として、プロセスの抽象化、プロセス間通信、システムコールなどを提供する。 これらのタスクはカーネルによって方式が異なり、設計も実装も異なる。モノリシックカーネルは全てを一つの仮想アドレス空間に格納されたコードで実行して性能を向上させようとする。マイクロカーネルはサービスの大部分をユーザー空間で実行し、コードの保守性とモジュール性を向上させようとする, by K.J.。多くのカーネルはこの二つのカテゴリのいずれか、あるいは中間である。.

新しい!!: シグナル (Unix)とカーネル · 続きを見る »

コンテキストスイッチ

ンテキストスイッチ (context switch) とは、複数のプロセスが1つのCPUを共有できるように、CPUの状態(コンテキスト (情報工学))を保存したり復元したりする過程のことである。コンテキストスイッチはマルチタスクオペレーティングシステムに不可欠な機能である。通常コンテキストスイッチは多くの計算機処理を必要とするため、オペレーティングシステムの設計においてはコンテキストスイッチを最適化することが重要である。.

新しい!!: シグナル (Unix)とコンテキストスイッチ · 続きを見る »

コールスタック

ールスタック (Call Stack)は、プログラムに実行中にサブルーチンに関する情報を格納するスタックである。実行中のサブルーチンとは、呼び出されたが処理を完了していないサブルーチンを意味する。実行スタック (Execution Stack)、制御スタック (Control Stack)、関数スタック (Function Stack)などとも呼ばれる。また、単に「スタック」と言ったときにコールスタックを指していることが多い。コールスタックを正しく保つことは多くのソフトウェアが正常動作するのに重要であるが、その詳細は高水準言語からは透過的である。.

新しい!!: シグナル (Unix)とコールスタック · 続きを見る »

コアダンプ

アダンプ(英語:core dump)は、ある時点の使用中のメモリの内容をそのまま記録したものであり、一般に異常終了したプログラムのデバッグに使われる。最近では、特定のプロセスのメモリイメージ(あるいはその一部)とレジスタの内容などの情報を格納したファイルを指すのが一般的である。しかし、本来は使用中メモリの内容を全てプリントアウトしたものを指した。 その名前は、かつて主記憶用に利用された磁気コアメモリの内容を、ダンプトラックが砂利や小麦などを大量にダンプ(どさっと落とす)するかのようにプリントアウトすることから来ている。 異常終了したプロセスがコアダンプを出力することを、俗に「コアを吐く」という。.

新しい!!: シグナル (Unix)とコアダンプ · 続きを見る »

シェル

Bashのスクリーンショット シェル (shell) はオペレーティングシステム (OS) のユーザーのためにインタフェースを提供するソフトウェアであり、カーネルのサービスへのアクセスを提供する。それだけではなく、この用語は非常にゆるやかに応用され、特定のコンポーネントの周辺に構築された任意のソフトウェアを含むこともある。例えば、ウェブブラウザや電子メールクライアントはHTMLレンダリングエンジンの「シェル」といわれることがある。OSの内部(カーネル)とユーザーの間にある外殻であることから、このように呼ばれる。.

新しい!!: シグナル (Unix)とシェル · 続きを見る »

システムコール

テムコールとは、オペレーティングシステム (OS)(より明確に言えばOSのカーネル)の機能を呼び出すために使用される機構のこと。実際のプログラミングにおいては、OSの機能は関数 (API) 呼び出しによって実現されるので、OSの備える関数 (API) のことを指すこともある。なお、μITRONではサービスコールと呼ばれる。また、OSのことをスーパーバイザとも呼ぶため、スーパーバイザコールともいう。 例えば、C言語で使用できるfopen()やmalloc()などのライブラリ関数は、その関数内においてシステムコール(例えばPOSIX準拠のOSであればopen()やsbrk()など)を呼び出す。.

新しい!!: シグナル (Unix)とシステムコール · 続きを見る »

セグメンテーション違反

メンテーション違反(英語:segmentation fault)はソフトウェアの実行時に起きる特定のエラー条件である。segfault(セグフォールト)と略される場合がある。 セグメンテーション違反はアクセスが許可されていないメモリ上の位置、もしくは許可されていない方法(例えばリードオンリーの位置へ書き込みをしようとする、もしくはオペレーティングシステムの部分を上書きしようとする)でメモリ上の位置にアクセスしようとするときに起こる。MC68000のようなプロセッサに基づくシステムはこれらのイベントをアドレスエラーもしくはバスエラーとして参照しようとする傾向にある。 セグメント方式はメモリ管理とオペレーティングシステムを保護する方法の一つである。大部分の用途のためにページング方式に置き換えられつつあるが、セグメンテーションの専門用語はまだ多く使用されている。セグメンテーション違反はその一例である。オペレーティングシステムの中にはメインメモリ管理の方針としてページング方法が使用されているがいくつかの論理レベルでまだセグメンテーションを持つものがある。 UNIXライクのオペレーティングシステム上では、不正なメモリにアクセスをするプロセスはSIGSEGVシグナルを受け取る。Microsoft Windows上では、不正なメモリにアクセスするプロセスはSTATUS_ACCESS_VIOLATION例外を受け取る。.

新しい!!: シグナル (Unix)とセグメンテーション違反 · 続きを見る »

ゼロ除算

算(ゼロじょざん、division by zero)は、0で除す割り算のことである。このような除算は除される数を a とするならば、形式上は と書くことができるが、数学において、この式と何らかの意味のある値とが結び付けられるかどうかは、数学的な設定にまったく依存している話である。少なくとも通常の実数の体系とその算術においては、意味のある式ではない。 コンピュータなど計算機においても、ゼロ除算に対するふるまいは様々である。たとえば浮動小数点数の扱いに関する標準であるIEEE 754では、数とは異なる無限大を表現するものが結果となる。 しかし、浮動小数点以外の数値型(整数型など)においては多くの場合無限大に相当する値は定義されておらず、またいくつかの除算アルゴリズムの単純な実装(取尽し法など)においては無限ループに陥りかねないなど演算処理の中でも特異なふるまいとなるため、演算前にゼロ除算例外を発生させることで計算そのものを行わせないか、便宜上型が表現できる最大の数値、あるいはゼロを返すなどの特殊な処理とされる場合が多い(後述) 計算尺では、対数尺には0に相当する位置が存在しない(無限の彼方である)ため計算不可能である。.

新しい!!: シグナル (Unix)とゼロ除算 · 続きを見る »

タイマー

タイマー(timer)は、あらかじめ設定した時間までの残り時間を表示し(カウントダウン)、残り時間ゼロとなったときに、ブザーや発光で設定された時間が経過したことを知らせる装置のことを指す。その他にも計測開始時からの経過時間(カウントアップ)を行うストップウオッチや、定期的に電源をオンオフしたり、カウントダウンを意識せずにある時刻を設定しておいて知らせる(目覚まし時計)なども含めて、広い意味で時計(日本においてのクロック/ウォッチ)全般のことを指すこともある。計時機、計時器ともいう。タイマとも呼ばれる。 タイマーとしての単機能製品のほかに、通常の時計の一機能として時間経過を知らせる機能(正時ごとの時報音や、上記の目覚まし機能)、家電機器の動作予約機能、コンピュータ機器の動作上の内部機能として組み込まれている時間を計算する機能としてのタイマなどが上げられる。 コンピュータにおいては「クロック」とは時計機能そのものではなく、時刻の単位であり内部動作を同期する基準であり、そのクロックを数えることで一定時間の経過を知るタイマ機能が動作する。.

新しい!!: シグナル (Unix)とタイマー · 続きを見る »

CPU

Intel Core 2 Duo E6600) CPU(シーピーユー、Central Processing Unit)、中央処理装置(ちゅうおうしょりそうち)は、コンピュータにおける中心的な処理装置(プロセッサ)。 「CPU」と「プロセッサ」と「マイクロプロセッサ」という語は、ほぼ同義語として使われる場合も多いが、厳密には以下に述べるように若干の範囲の違いがある。大規模集積回路(LSI)の発達により1個ないしごく少数のチップに全機能が集積されたマイクロプロセッサが誕生する以前は、多数の(小規模)集積回路(さらにそれ以前はディスクリート)から成る巨大な電子回路がプロセッサであり、CPUであった。大型汎用機を指す「メインフレーム」という語は、もともとは多数の架(フレーム)から成る大型汎用機システムにおいてCPUの収まる主要部(メイン)、という所から来ている。また、パーソナルコンピュータ全体をシステムとして見た時、例えば電源部が制御用に内蔵するワンチップマイコン(マイクロコントローラ)は、システム全体として見た場合には「CPU」ではない。.

新しい!!: シグナル (Unix)とCPU · 続きを見る »

CPUモード

CPUモード(プロセッサモード、特権レベル)とは、コンピュータのCPUの動作モードであり、CPUが実行できる操作を制限するものであるただし、本記事で説明するモードとはまったく異なる意味の「モード」もありうる。例えばバイエンディアンのプロセッサ(エンディアンの切り替えが可能なプロセッサ)には、モードを持っていて、どちらのエンディアンで動作するかをモード切り替えによって切り替えるものがある。。.

新しい!!: シグナル (Unix)とCPUモード · 続きを見る »

端末

端末(たんまつ、IT用語辞典 e-words「端末」 ターミナル)とは、.

新しい!!: シグナル (Unix)と端末 · 続きを見る »

競合状態

合状態(きょうごうじょうたい、Race Condition、レースコンディション、またはRace Hazard、レースハザード)は、システムや処理過程の問題であり、処理過程の出力結果がイベントなどの順序やタイミングと予期しない(かつ危険な)依存関係にある場合をいう。本来の意味は、2つの電気信号が競合していずれかが出力に影響を与える状態である。 競合状態は設計の不十分な電子工学システム、特に論理回路で発生するが、コンピュータソフトウェアでもよく発生する。.

新しい!!: シグナル (Unix)と競合状態 · 続きを見る »

Dd (UNIX)

ddはUnix系のシステムにあるプログラム(コマンド)で、データのコピーや変換をブロックデバイスを直接読み書きして行うことが特徴である。dataset definitionの略であるが、IBMのメインフレームのJob Control Language(ジョブ制御言語、JCL)の「DD文」(DD statement)に由来するため、引数の構文が、Unixの一般的なコマンドの引数のそれとは激しく異なっている(datasetというのはメインフレーム用語)。 ddの主な機能は指定されたバイト数もしくはブロック数のデータのコピーであり、この機能は、ハードディスク(全体もしくはパーティション単位、またはブートセクター等)のバックアップや、/dev/zeroや/dev/randomを用いて指定された領域を完全消去するために利用される。同様にディスクの(可能な限り)全状態をそのままクローンしたい、コンピュータ・フォレンジックスなどの場合にも使われる。 ddコマンドが行うようなディスクの直接の読み書きには、通常は管理者権限が必要であり、従って危険なコマンドであっても簡単に実行できてしまう状態で作業していることが多い。そしてddは、例えば、入力と出力の指定をうっかり逆にしただけで(具体的には "of" と "if" の、QWERTYキーボードでは隣の1文字の違いである)、大事なデータをバックアップする代わりに、まっさらなディスクの内容をそれに上書きして消してしまう、という恐ろしいことを起こし得る。そのためしばしばベテランは、data destroyer(あるいはdisk destroyer、destroyer.

新しい!!: シグナル (Unix)とDd (UNIX) · 続きを見る »

Init

initは、UNIXおよびUnix系システムのプログラムのひとつであり、他の全てのプロセスを起動する役目を持つ。デーモンとして動作し、一般にPID 1 を付与される。ブートローダがカーネルを起動し、カーネルがinitを起動する。代替手段を用意せずにinitを削除すると、次回のリブート時にシステムはカーネルパニックに陥る可能性がある。 init の機能はBSD系とSystem V系では大きく異なるため、ユーザーは自分のシステムがどちらのバージョンを使っているかをマニュアルで調べる必要がある。多くのLinuxディストリビューションで使われていたinitはSystem Vと互換性がある。SlackwareのようなLinuxディストリビューションではBSD系のinitを使っていた。Gentoo Linuxなどでは独自のinitを使用していた。ISO/IEC 23360-1:2006の国際規格になったLinux Standard Baseではinitを定義している。 他にもいくつかinitの設計上の限界に対処した代替として、systemdやUpstartがあり、Ubuntuや他のLinuxディストリビューションで採用している。.

新しい!!: シグナル (Unix)とInit · 続きを見る »

Kill

kill(キル)は、UNIXやUnix系のオペレーティングシステムにおいて、システム上で動作しているプロセスに簡単なメッセージを送るコマンドである。.

新しい!!: シグナル (Unix)とKill · 続きを見る »

Linux

Linux(リナックス、他の読みは後述)とは、Unix系オペレーティングシステムカーネルであるLinuxカーネル、およびそれをカーネルとして周辺を整備したシステム(GNU/Linuxシステムも参照)である。.

新しい!!: シグナル (Unix)とLinux · 続きを見る »

Malloc

malloc(マロック, エムアロック)、free、calloc、reallocは、動的メモリ確保を行うC言語の標準ライブラリの関数である。 mallocが使用する実際のメモリ確保機構には様々な実装がある。それらの性能は、実行時間と要求されるメモリの両面で様々である。.

新しい!!: シグナル (Unix)とMalloc · 続きを見る »

Mmap

mmap() は、UNIXのシステムコールのひとつで、ファイルやデバイスなどのオペレーティングシステム (OS) 上のリソースの一部または全部を連続した仮想アドレス空間にマッピングする関数である。 ファイルシステム上のリソースに対するアクセス方法として、ストリームI/Oを行うシステムコールとの比較で、ユーザ空間とカーネル空間の間で読み書きされるデータのブロック転送が多くのアーキテクチャ上では発生しないことから、好まれる場合がある。 デバイスでは、ioctl()とともにメモリマップドI/OやDMAなどの操作を抽象化するものとしてドライバからファイルI/Oサービスの一部として提供されることがある。.

新しい!!: シグナル (Unix)とMmap · 続きを見る »

NaN

NaN(Not a Number、非数、ナン)は、コンピュータにおいて、主に浮動小数点演算の結果として、不正なオペランドを与えられたために生じた結果を表す値またはシンボルである。NaNの体系的仕様は、無限大の表現などと共に1985年の IEEE 754 浮動小数点規格で標準が与えられている。 NaNには quiet NaN と signaling NaN の2種類がある。quiet NaN は不正な操作や不正な値で生じる誤りを伝播させるのに使用され、signaling NaN は数値計算との混合や基本的な浮動小数点演算への他の拡張といった高度な機能のサポートに使える。例えば結果が実数の範囲内でないゼロ除算において、ゼロ以外のゼロ除算は無限大だが、ゼロのゼロ除算は NaN である。負数の平方根は虚数となるため、浮動小数点数としては表現できず、NaN で表現される。他に、正負の無限大の両方が絡んだために、どちらの無限大ともできないような計算の結果も NaN である。また、NaN は計算上必要な値が得られていない場合にも使われることがあるBowman, Kenneth (2006) An introduction to programming with IDL: Interactive Data Language.

新しい!!: シグナル (Unix)とNaN · 続きを見る »

POSIX

POSIX(ポシックス、ポジックス、Portable operating system interface)は、各種UNIXを始めとする異なるオペレーティングシステム (OS) 実装に共通のアプリケーションプログラミングインタフェース (API) を定め、移植性の高いアプリケーションソフトウェアの開発を容易にすることを目的としてIEEEが策定したAPI規格である。POSIXという名前はリチャード・ストールマンがIEEEに提案したものである。末尾の「」はUNIX互換OSに「」の字がつく名前が多いことからつけられた。ISO/IEC JTC 1/SC 22でISO/IEC 9945として国際規格になっている。.

新しい!!: シグナル (Unix)とPOSIX · 続きを見る »

Printf

printf(プリントエフ、print formatted)は、C言語の標準入出力ヘッダー (stdio.h)で宣言されている関数である。引数で与えられた書式付きの文字列を、環境によって設定された標準出力 (stdout) に出力する。JIS X 3010:2003においてその機能は「実引数にstdoutを実引数として付加したfprintf関数と等価とする」と規定されている (7.19.6.3)。 この関数は、第1引数に与えられた文字列を出力する。C言語の他の単純な入出力関数に比べ、比較的複雑な構造を持っており、第1引数の文字列のなかで書式を指定することで、第2引数以降の任意の数の引数を、書式に従って出力することができる。また、整数型(int型)の戻り値を持ち、出力に成功した場合には転送したバイト数、出力に失敗した場合には負数を返却する。.

新しい!!: シグナル (Unix)とPrintf · 続きを見る »

Single UNIX Specification

Single UNIX Specification(SUS、唯一のUNIX仕様)とは、"UNIX"を名乗ることができるコンピュータのオペレーティングシステム (OS) の標準規格全体を総称したものである。SUSは、IEEEと The Open Group の標準化作業の結果に基づくもので、Austin Group が開発および保守を行っている。.

新しい!!: シグナル (Unix)とSingle UNIX Specification · 続きを見る »

UNIX

UNIX (ユニックス、Unix、)は、コンピュータ用のマルチタスク・マルチユーザーのオペレーティングシステムの一種である。公式な商標は「UNIX」だが、商標以外の意味として「Unix」、またはスモールキャピタルを使用して「Unix」などとも書かれる。Unixは1969年、AT&Tのベル研究所にて、ケン・トンプソン、デニス・リッチーらが開発を開始した。 当初はアセンブリ言語のみで開発されたが、1973年にほぼ全体をC言語で書き直した。このため、Unixは歴史上、初めて高水準言語で書かれたOSであると言われる。 1973年の段階ではPDP-11に依存したコードが多く、移植性は低かったが、その後徐々にPDP-11に依存したコードを減少させ、1978年にInterdata 8/32への移植に成功して以降、徐々に他のプラットフォームにも移植されていった。 現在では「Unix」という語は、Unix標準に準拠するあらゆるオペレーティングシステムの総称でもある。現在ではUnixシステムは多数の系統に分かれており、AT&Tの開発停止後も、多数の商用ベンダーや非営利組織などによって開発が続けられている。 1970年代から1980年代の初期にかけて、Unixは大学や研究所などの教育機関で広範囲に採用され、特にカリフォルニア大学バークレー校をオリジナルとするBSD系統が誕生した。また Version 7 Unix や UNIX System V の特徴を持つオペレーティングシステムは「伝統的なUNIX」(traditional Unix)とも呼ばれる。 2007年に、「UNIX」の商標の所有者である標準化団体のThe Open Groupは、Single UNIX Specificationを完全に満たすと認証を受けたシステムのみが「UNIX」の商標を得られるとした。このためそれ以外のシステムは(ずっと以前から、AT&T版およびBSD以外を指して使われていた用語だが)「Unixシステムライク」または「Unixライク(Unix系)」と呼ばれるようになった。ただし The Open Groupはその呼称を気に入っていない。 現在では多く使われているUnixとしてはmacOS、AIX、HP-UX、Solarisなどがある(いずれも商用)。また認証を受けていないUnix系としてはLinux(派生OSにAndroid他)やMINIX、BSDの派生OS(FreeBSD、NetBSD、OpenBSD、DragonFly BSDなど)がある。.

新しい!!: シグナル (Unix)とUNIX · 続きを見る »

Unix系

複数のUnix系システム間の関連図 Unix系(ユニックスけい、ユニックスライク)とは、Unixに類似した振る舞いをするオペレーティングシステム (OS) を指す用語である。その判断基準や範囲には複数の議論がある。.

新しい!!: シグナル (Unix)とUnix系 · 続きを見る »

X/Open

X/Open Company, Ltd. は、ヨーロッパのいくつかのUNIXシステム製造業者が1984年に設立したコンソーシアムであり、情報技術分野のオープン標準の確立と振興を目的としていた。特に当初の目的は、UNIX系のオペレーティングシステムの唯一の仕様を定義することで、それによってアプリケーションの相互運用性を高め、ソフトウェア移植のコストを削減しようとしていた。当初のメンバーは、Bull、ICL、シーメンス、オリベッティ、ニクスドルフであった(頭文字をとって BISON とも)。フィリップス、エリクソンがほどなく参加し、その時点で X/Open という名称となった。 X/Open は策定した仕様を X/Open Portability Guide (XPG) の名前で公表した。第1版では基本的なオペレーティングシステムのインタフェースをカバーし、最初の結成から1年以内に発表にこぎつけている。第2版は1987年で、初期化、端末インタフェース、プロセス間通信、C言語、COBOL、FORTRAN、Pascal、SQL、ISAM などもカバーしている。これらの多くは、既存の国際標準を参照しているだけである。 1988年に出た XPG3 では、POSIX のオペレーティングシステム仕様をカバーすることに注力している。このバージョンが最もよく使われ、その後にも影響を与えた。 1990年までに、X/Open は21の企業や団体が参加するようになった。当初の5社以外は以下の通り.

新しい!!: シグナル (Unix)とX/Open · 続きを見る »

X86

x86(エックスはちろく)は、Intel 8086、およびその後方互換性を持つマイクロプロセッサの命令セットアーキテクチャの総称。16ビットの8086で登場し、32ビット拡張の80386(後にIA-32と命名)、64ビット拡張のx64、広義には更にAMDなどの互換プロセッサを含む。 なおインテルのIA-64は全く異なる。.

新しい!!: シグナル (Unix)とX86 · 続きを見る »

標準Cライブラリ

標準Cライブラリ(ひょうじゅんシーライブラリ)は、C言語の標準規格で定められた、型・マクロ・関数の集合からなるライブラリである。.

新しい!!: シグナル (Unix)と標準Cライブラリ · 続きを見る »

浮動小数点数

浮動小数点数(ふどうしょうすうてんすう、英: floating point number)は、浮動小数点方式による数のことで、もっぱらコンピュータの数値表現において、それぞれ固定長の仮数部と指数部を持つ、数値の表現法により表現された数である。.

新しい!!: シグナル (Unix)と浮動小数点数 · 続きを見る »

擬似端末

擬似端末(ぎじたんまつ、pseudo terminal)とは、UNIXにおけるテキスト端末の擬似デバイスのマスター・スレーブのペアである。仮想コンソール、端末装置、シリアルポートハードウェアなどを使用しないテキスト端末のインターフェイスを提供する。これらのハードウェアの代わりに、擬似端末セッションの役割をソフトウェア(プロセス)が代用する。例えば、SSHなどでログインするとこの端末に接続される。.

新しい!!: シグナル (Unix)と擬似端末 · 続きを見る »

性能解析

フトウェア工学における性能解析または性能分析(Performance analysis)とは、動的プログラム解析の一種であり、プログラムの実行を通して情報を収集することでプログラムの性能を解析することを言う。逆にプログラムを実行せずに行う解析を静的コード解析と呼ぶ。性能解析の目的は、実行時間やメモリ使用量を最適化するためにプログラムのどの部分を改良すべきかを決定することである(ボトルネック、アムダールの法則参照)。.

新しい!!: シグナル (Unix)と性能解析 · 続きを見る »

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »