2013-01-01 81 views
-3

我在這個問題上有問題 你要實現一個代碼破解系統。系統將部署四個進程 (p1,p2,p3 & p4)以嘗試猜測加密代碼的密碼。 對於加密,我們認爲,其公式爲:C = P XOR K,其中進程創建和控制 - 同步

C = encrypted code 
P = plain text 
K = key 

解密的公式:P = C XOR K.所以,你的程序將設法找到說明使用 這個公式。異或運算符是^。 給定一個加密的代碼C和普通的代碼P,程序應該部署三個進程 來嘗試找到用於加密普通代碼的密鑰。這三個過程將在 下控制過程P1。 所有進程都會將其結果發送給進程P1,並且進程P1將終止三個進程,並在三個進程中的任何一個找到該進程時顯示加密密鑰和解密文本。 爲簡單起見,我們將考慮將原始數字P存儲在名爲 plain.txt的文件中,並將加密的代碼存儲在名爲cipher.txt的文件中。考慮只有 的數字存儲在這些文件中,它們的範圍介於0和100000000之間。 因此,我們有P和C程序應該找到關鍵字K.考慮K是0到1000000之間的正數 。

我的問題是我可以使用多少個信號量?什麼是每個人的價值? 我不需要幫我的代碼只是信號量

+0

當你真的想知道信號量如何工作時,爲什麼你會爲我們傾倒大量無關的作業? –

+1

我很確定我可以沒有信號量,但我想這不是任務...;) –

+0

好的,當3進程之一找到父進程殺死它的關鍵時,這是真的。但是如果我不使用信號量,爲什麼我需要三個進程? –

回答

1

數。如果這是一個正確還原的問題:一旦有3個工作進程的完成其工作,主進程

終止所有3名工人

,那麼你應該只需要1個信號,其中主會等待,和每一個工人都將發出完成後,其中第一個將解鎖高手,因此它可以終止該工人。事實上,你只需要一個互斥量,而不是一個完整的信號量。

+0

好的,當3個進程中的一個找到父進程殺死它的密鑰時爲true。但是如果我不使用信號量,爲什麼我需要三個進程? –