お世話になっております。
これまでの認識だと、OSの当初はほぼファイル管理のために存在しました。
両者は一対一的な関係を持っていると思います。
なので、
Q1:「Windows Subsystem of LINUX」のようなLINUXからWindowsのファイルを操作できる場合、
物理的に同じファイルに対して、LINUXのファイル管理システムとWindowsのファイル管理システムの間
コミュニケーションや合同作業を行うのでしょうか。
それから
Q2:ある特定のファイルに関して下記のような情報がいつ生成され、或いは何によって決められるのでしょうか。
読み取りアクセス権かつ読み取り共有
読み書きアクセス権かつ共有無し
書き込みアクセス権かつ共有無し
Q3:「Windows Subsystem of LINUX」の場合、上記情報を二つのOSが同時に持たなければならないでしょうか。
ぜひご教授お願い致します。
「Windows Subsystem of LINUX」の並行性に関わるファイル操作問題
Re: 「Windows Subsystem of LINUX」の並行性に関わるファイル操作問題
前回 #2 で紹介したサイトは読んだのでしょうか・・・^^; (再載します)
http://www.atmarkit.co.jp/ait/articles/ ... ws039.html
Windows10があれば[ Windowsの機能の有効化 ]で 「Windows Subsystem of LINUX」 を選べば簡単に Windows10上にLINUXのファイル・システムが作られ Windows10ファイル・システムのファイルをよむことがでます
しつもんには
まずフォーラム(掲示板)ルールを読んで
自分は今何がしたくて
どう取り組んで(作ったプログラムはどれで
どのようなエラーやトラブルで困っていて
自分は何が解らないのか、知りたいのか
今のCの知識はどの程度なのか(Linux,Windows10も)
この5点をしっかりと明記して下さい。
どう質問していいか解らない時は、以下のテンプレをコピペして、
各項目に対して答える形で記載して下さい。
[1] 質問文
[1.1] 自分が今行いたい事は何か
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
[1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
[1.4] 今何がわからないのか、知りたいのか
[2] 環境
[2.1] OS : Windows, Linux等々
[2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々
[3] その他
・どの程度C言語を理解しているか(Linux,Windows10も)
http://www.atmarkit.co.jp/ait/articles/ ... ws039.html
Windows10があれば[ Windowsの機能の有効化 ]で 「Windows Subsystem of LINUX」 を選べば簡単に Windows10上にLINUXのファイル・システムが作られ Windows10ファイル・システムのファイルをよむことがでます
しつもんには
まずフォーラム(掲示板)ルールを読んで
自分は今何がしたくて
どう取り組んで(作ったプログラムはどれで
どのようなエラーやトラブルで困っていて
自分は何が解らないのか、知りたいのか
今のCの知識はどの程度なのか(Linux,Windows10も)
この5点をしっかりと明記して下さい。
どう質問していいか解らない時は、以下のテンプレをコピペして、
各項目に対して答える形で記載して下さい。
[1] 質問文
[1.1] 自分が今行いたい事は何か
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
[1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
[1.4] 今何がわからないのか、知りたいのか
[2] 環境
[2.1] OS : Windows, Linux等々
[2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々
[3] その他
・どの程度C言語を理解しているか(Linux,Windows10も)
Re: 「Windows Subsystem of LINUX」の並行性に関わるファイル操作問題
まず,根本の話です。
Windowsの実行環境というのは,「Windowsの本体と言うべきカーネル部分」と「サブシステム」という組み合わせからなっています。
Windowsサブシステム(正確に書くならWin64サブシステムやWin32サブシステム)やWindows Subsystem for LINUXは後者です。
前者の中にデバイスドライバやNT Kernel,NT Executiveが含まれます。
ややこしいことにWindows GDIなどはカーネルモードで動いていますが,Windows GDIはそもそもWindowsサブシステムの機能です (なのでUser32.dllに含まれる)。
普段「Windows」と呼んでいるものは,「Windowsカーネル」に「Windowsサブシステム」が載ったもののことになります。
「Windows Subsystem for LINUX」はサブシステムであり,「Windowsサブシステム」と併存する位置関係にあります。
ただし,WSLは特殊なサブシステムで,
ref) Windows Subsystem for Linux Overview - Windows Subsystem for Linux @ MSDN blog
その情報をNT ExecutiveのIoCreateFileに渡すことで (具体的にはDesiredAccessとShareAccess),最終的にシステム上で決定します。
実際にはここから本来のI/Oがあるでしょうけれども,そこは私には追うための知識が無いので省略します。
このため,開いているファイルのアクセス権や共有情報はWindowsサブシステムもWSLもひっくるめて一元的に管理されています。
Windowsの実行環境というのは,「Windowsの本体と言うべきカーネル部分」と「サブシステム」という組み合わせからなっています。
Windowsサブシステム(正確に書くならWin64サブシステムやWin32サブシステム)やWindows Subsystem for LINUXは後者です。
前者の中にデバイスドライバやNT Kernel,NT Executiveが含まれます。
オフトピック
NT ExecutiveがNT Kernelとして扱われるのかはよくわからない。
資料見る限り,厳密には違うけれども(NT KernelはNT ExecutiveとHALの間,とか書かれている),
厳密さが不要であればNT Kenrelの一部にExecutiveがあるとしていることもあるっぽい
資料見る限り,厳密には違うけれども(NT KernelはNT ExecutiveとHALの間,とか書かれている),
厳密さが不要であればNT Kenrelの一部にExecutiveがあるとしていることもあるっぽい
普段「Windows」と呼んでいるものは,「Windowsカーネル」に「Windowsサブシステム」が載ったもののことになります。
「Windows Subsystem for LINUX」はサブシステムであり,「Windowsサブシステム」と併存する位置関係にあります。
ただし,WSLは特殊なサブシステムで,
- 既存や過去のサブシステム (WindowsやOS/2, POSIX) は原則としてユーザーモードで完結していたが,WSLはカーネルモードにも実装が入る
- コンソールとなるbash.exeはWindowsサブシステム上で動作し,WSLとは各種プロセス間通信で入出力している
ref) Windows Subsystem for Linux Overview - Windows Subsystem for Linux @ MSDN blog
物理的に同じファイルに対して処理を行います。晩秋. さんが書きました: ↑5年前Q1:「Windows Subsystem of LINUX」のようなLINUXからWindowsのファイルを操作できる場合、
物理的に同じファイルに対して、LINUXのファイル管理システムとWindowsのファイル管理システムの間
コミュニケーションや合同作業を行うのでしょうか。
根本的にはプログラムが要求することで決まります。晩秋. さんが書きました: ↑5年前Q2:ある特定のファイルに関して下記のような情報がいつ生成され、或いは何によって決められるのでしょうか。
読み取りアクセス権かつ読み取り共有
読み書きアクセス権かつ共有無し
書き込みアクセス権かつ共有無し
その情報をNT ExecutiveのIoCreateFileに渡すことで (具体的にはDesiredAccessとShareAccess),最終的にシステム上で決定します。
実際にはここから本来のI/Oがあるでしょうけれども,そこは私には追うための知識が無いので省略します。
NT ExecutiveのIO Managerが全てのサブシステムのI/Oを取り仕切ります。晩秋. さんが書きました: ↑5年前Q3:「Windows Subsystem of LINUX」の場合、上記情報を二つのOSが同時に持たなければならないでしょうか。
このため,開いているファイルのアクセス権や共有情報はWindowsサブシステムもWSLもひっくるめて一元的に管理されています。
オフトピック
IoCreateFile自体もIO ManagerのAPIの模様
Re: 「Windows Subsystem of LINUX」の並行性に関わるファイル操作問題
Mathさま ご案内下さったリンクを参照させて頂きました。
YuOさま
自分の質問に精確に命中したご解説、ありがとうございます。
YuOさま
自分の質問に精確に命中したご解説、ありがとうございます。
NT ExecutiveのIO Managerが全てのサブシステムのI/Oを取り仕切ります。
このため,開いているファイルのアクセス権や共有情報はWindowsサブシステムもWSLもひっくるめて一元的に管理されています。