令和4年春期午前問16の解説について

maronさん  
(No.1)
解説でどうしてもわからないところがあるので教えてほしいです。
解説の手順3の「ジョブB,ジョブCが生起される。多重度は2なのでどちらも実行開始される」についてですが、問題文の(4)にある「直後のジョブが複数個ある場合には、最初に生起されるジョブだけが先行ジョブの一時ファイルを参照する。」とあるのでジョブCは実行開始されないのでは?と考えています。
そして開始時に50Mバイトを確保するので解説とは異なる実行状況で考えています。

私の考える実行状況を図にすると以下です。
|A  |B  |C  |D  |E  |F  |
|50M|  |  |  |  |  |ジョブA実行中
|50M|50M|  |  |  |  |ジョブB実行中(ジョブC待機中)
|50M|50M|50M|50M|  |  |ジョブC、D実行中
|  |50M|50M|50M|50M|  |ジョブE実行中
|  |  |  |50M|50M|50M|ジョブF実行中

結果的に答えは同じ200Mにはなりますが、私の理解が追い付いていないので教えてください。
2025.07.31 22:04
maronさん  
(No.2)
URLを張るのを忘れていました。
こちらになります。
https://www.ap-siken.com/kakomon/04_haru/q16.html
2025.07.31 22:05
jjon-comさん 
AP プラチナマイスター
(No.3)
応用情報 令和4年 春期 午前 問16
https://www.ap-siken.com/kakomon/04_haru/q16.html

応用情報 令和元年 秋期 午前 問17
https://www.ap-siken.com/kakomon/01_aki/q17.html

No.1に賛成です。解説文の修正を依頼するのがよいと思います。
https://www.ap-siken.com/bbs/5848.html
2025.07.31 23:19
maronさん  
(No.4)
コメントありがとうございます。
過去の掲示板のリンクまでありがとうございます!
すでに掲示板にて議論が行われていたんですね。
そちらも参考に理解を深めたいと思います。
2025.08.01 05:35
ストップビットさん 
(No.5)
そもそも、スレッド5848は修正依頼なのにスルーされているのです。
仮想記憶の解説も放置っぽい。
2025.08.01 08:14
boyonboyonさん 
AP シルバーマイスター
(No.6)
この投稿は投稿者により削除されました。(2025.08.01 11:34)
2025.08.01 11:34
boyonboyonさん 
AP シルバーマイスター
(No.7)
ジョブCは、ジョブAの一時ファイルを参照しないのではないでしょうか。
ジョブB終了時に、ジョブAの一時ファイルは削除されるので、待っていてもジョブCは参照できないと思うのですが。
***ジョブCが、ジョブBより先に実行されれば、ジョブBがジョブAの一時ファイルを参照しないことになります。
2025.08.01 11:33
管理人 
(No.8)
少し前に議論していただいたスレッドも拝見しております。

x→yの関係があれば,ジョブXの開始時に作成した一時ファイルは,直後のジョブYで参照し,ジョブYの終了時にその一時ファイルを削除する。直後のジョブが複数個ある場合には,最初に生起されるジョブだけが先行ジョブの一時ファイルを参照する。
私は上記の説明について、x→y のように後続のジョブが1つの場合はyがxの一時ファイルを参照する。ただし、x→y, x→z のように後続のジョブが2つの場合には、zはxの一時ファイルは参照せず、文字どおりyだけが参照すると解釈いたしました。

「最初に生起されるジョブだけが」とあることから、参照の先後関係ではなく、参照の有無の条件指定という認識です。

このため、ジョブB, Cが同時に開始する解説となっております。
2025.08.01 12:40
ストップビットさん 
(No.9)
追加の解説で、わたしは理解しました。
2025.08.01 18:20
maronさん  
(No.10)
管理人さん
コメントありがとうございます。
すみません、まだ理解できておりません。

>「最初に生起されるジョブだけが」とあることから、参照の先後関係ではなく、参照の有無の条件指定という認識です。
>このため、ジョブB, Cが同時に開始する解説となっております。

こちらについてですが、ジョブB,Cが生成する、ということをジョブB,Cが同時に開始する、と表現していると言うことでしょうか?
2025.08.02 14:11
jjon-comさん 
AP プラチナマイスター
(No.11)
No.7(boyonboyonさん)、No.8(管理人さん)を読んで、私も分かりました。
お二人の解釈が正しいです。
思い込みを捨てて問題文を読み直してみれば、お二人の指摘どおりの日本語になっています。

その上で次の提案をしたいです。

解説文に登場する
> 2. ジョブAが終了する。一時ファイルは直後のジョブB、Cで参照するので削除しない。
という2番目の文が誤解の元になっているように感じます。

例えば次のように修正すると、お二人の正しい解釈が明確に伝わると考えます。
----
1. ジョブAが生起され実行開始される。

2. ジョブAが終了する。一時ファイルは直後のジョブB、Cで参照するので削除しない。
→【修正案】ジョブAが終了する。一時ファイルは直後のジョブで参照するので削除しない。

3. ジョブB、ジョブCが生起される。多重度は2なのでどちらも実行開始される。
→【修正案】ジョブB、ジョブCの順に生起される。多重度は2なのでどちらも実行開始される。ファイルAの一時ファイルを参照するのは最初に生起されるジョブBだけで、ジョブCは参照しない。

4.ジョブB、ジョブCが終了する。ジョブAの一時ファイルが削除される。
→【修正案】ジョブB、ジョブCが終了する。ジョブAの一時ファイルはジョブBにより削除される。

5. ジョブD、ジョブEが生起される。多重度は2なのでどちらも実行開始される。
→【修正案】ジョブD、ジョブEの順に生起される。多重度は2なのでどちらも実行開始される。ファイルBの一時ファイルを参照するのは最初に生起されるジョブDだけで、ジョブEは参照しない。ファイルCの一時ファイルはジョブEが参照する。

6. ジョブD、ジョブEが終了する。ジョブB、ジョブCの一時ファイルが削除される。
→【修正案】ジョブD、ジョブEが終了する。ジョブBの一時ファイルはジョブDにより削除される。ジョブCの一時ファイルはジョブEにより削除される。

7. ジョブFが生起され実行開始される。
→【修正案】ジョブFが生起され実行開始される。ファイルD、ファイルEの一時ファイルはジョブFが参照する。

8. ジョブFが終了する。ジョブD、ジョブEの一時ファイルが削除される。
----
2025.08.03 10:44
jjon-comさん 
AP プラチナマイスター
(No.12)
蛇足ですが。
私自身は現解説文には影響されておらず、思い込みだったことを告白しておきます。

> ジョブXの開始時に作成した一時ファイルは,直後のジョブYで参照し,
という文の「参照」という用語から即座に「共有ロックの動き」をイメージし、

> 最初に生起されるジョブだけが先行ジョブの一時ファイルを参照する。
という文から「ん? 専有ロックの動き?」とイメージして違和感を持ちました。

この先入観から脱することができず、No.7やNo.8の日本語を何度も目にしていながらその意味を素直に読もうとしなかった。違和感よりも先入観を優先していました。
2025.08.03 11:41
管理人 
(No.13)
jjon-comさん、改善提案ありがとうございます。
投稿いただいた文章を踏まえて、解説を改善させていただきました。
2025.08.03 14:09
ストップビットさん 
(No.14)
わかりやすくなりましたが、ステップ8に
「後続ジョブがないので、ジョブFの一時ファイルが削除される。」
があってもよいと思います。

改善された解説でスレ主さんは理解できたでしょうか?
2025.08.03 15:19
maronさん  
(No.15)
皆さんコメントありがとうございます。
私もようやく理解できました。
問題文(4)の説明をずっと間違って認識しておりました。
X→Y
 ↘Z
この場合はXの一時ファイルを参照するのはYだけで、Zは参照しない。
実行多重度は2なのでYとZどちらも同時に実行される、ということですね。
(ZもXの一時ファイルを参照すると思い込んでいました。)
解説の更新もありがとうございます!
2025.08.03 22:31

返信投稿用フォーム

※SQL文は全角文字で記載してください。
※宣伝や迷惑行為を防止するため、当サイト、姉妹サイト、IPAサイト以外のURLを含む記事の投稿はできません。

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop