「Windows Subsystem of LINUX」の並行性に関わるファイル操作問題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
晩秋.

「Windows Subsystem of LINUX」の並行性に関わるファイル操作問題

#1

投稿記事 by 晩秋. » 5年前

お世話になっております。
これまでの認識だと、OSの当初はほぼファイル管理のために存在しました。
両者は一対一的な関係を持っていると思います。
なので、
Q1:「Windows Subsystem of LINUX」のようなLINUXからWindowsのファイルを操作できる場合、
物理的に同じファイルに対して、LINUXのファイル管理システムとWindowsのファイル管理システムの間
コミュニケーションや合同作業を行うのでしょうか。

それから
Q2:ある特定のファイルに関して下記のような情報がいつ生成され、或いは何によって決められるのでしょうか。

読み取りアクセス権かつ読み取り共有
読み書きアクセス権かつ共有無し
書き込みアクセス権かつ共有無し

Q3:「Windows Subsystem of LINUX」の場合、上記情報を二つのOSが同時に持たなければならないでしょうか。


ぜひご教授お願い致します。

Math

Re: 「Windows Subsystem of LINUX」の並行性に関わるファイル操作問題

#2

投稿記事 by Math » 5年前

前回 #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も

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: 「Windows Subsystem of LINUX」の並行性に関わるファイル操作問題

#3

投稿記事 by YuO » 5年前

まず,根本の話です。
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があるとしていることもあるっぽい
ややこしいことにWindows GDIなどはカーネルモードで動いていますが,Windows GDIはそもそもWindowsサブシステムの機能です (なのでUser32.dllに含まれる)。
普段「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があるでしょうけれども,そこは私には追うための知識が無いので省略します。
晩秋. さんが書きました:
5年前
Q3:「Windows Subsystem of LINUX」の場合、上記情報を二つのOSが同時に持たなければならないでしょうか。
NT ExecutiveのIO Managerが全てのサブシステムのI/Oを取り仕切ります。
このため,開いているファイルのアクセス権や共有情報はWindowsサブシステムもWSLもひっくるめて一元的に管理されています。
オフトピック
IoCreateFile自体もIO ManagerのAPIの模様

晩秋.

Re: 「Windows Subsystem of LINUX」の並行性に関わるファイル操作問題

#4

投稿記事 by 晩秋. » 5年前

Mathさま ご案内下さったリンクを参照させて頂きました。

YuOさま
自分の質問に精確に命中したご解説、ありがとうございます。
NT ExecutiveのIO Managerが全てのサブシステムのI/Oを取り仕切ります。
このため,開いているファイルのアクセス権や共有情報はWindowsサブシステムもWSLもひっくるめて一元的に管理されています。

返信

“C言語何でも質問掲示板” へ戻る