
Mac內建有VNC server與client,將權限設好後,就可以透過一台Mac遠端搖控另一台Mac的桌面。
今天突然想到,像ssh與telnet之類的遠端登入程式,都允許自己登入到自己上頭,那VNC呢?在已經有掌控權的桌面上,透過VNC自我控制會如何?邏輯上,這會導致什麼狀況?
換個方法想,VNC就是在電腦桌面上出現另一台電腦的桌面的縮影,透過滑鼠操作這桌面縮影,使用者可以控制那另一台電腦。但要是這另一台電腦其實就是原來這台電腦,邏輯上,桌面上的桌面縮影裡,就會出現同樣的桌面的縮影,而其中又該要有同樣的桌面的縮影,其中又該要有同樣的桌面的縮影,一直無限重覆下去。
假設這無限重覆不會拖累電腦效能,仍允許使用者在若干程度上作操作,又會有什麼狀況?邏輯上必然會出現的難題是,當你把滑鼠移到第N個桌面縮影上的某處想要做某個操作時,電腦怎麼知道你是對第N層桌面下指令還是第N-1層還是第N-2層還是第N-3層?此外,就連滑鼠的位置這件事都會變得難以定義。以上面那張圖為例,我是用A電腦(鮮藍色背景)透過VNC控制另一台電腦的桌面(灰藍色背景),現在想像這是同一台電腦的桌面,當我把滑鼠從第零層(鮮藍色的)的最左上角慢慢往畫面中間移,然後從第一層的最左上角移進第一層內,此時要是我們又定義這兩層出現的畫面要一模一樣,這時滑鼠該在哪?畫面稍中間一點的地方(以第零層的觀點)?還是畫面最左上角(第一層的觀點)?但不論是哪種,都會與這兩層需要一模一樣的條件相矛盾。
為了回答這問題,我冒著電腦當機的險,在同一台Mac上透過VNC朝自己連線。不過VNC很快就告訴我,自己連自己是不被允許的。OK,寫程式的人有防到這一點,很好。
不過我不死心,回家後,先用VNC連到辦公室的電腦(也就是上面那張圖片顯示的),然後再從辦公室的電腦透過VNC反向控置家裡的電腦,看看會出現什麼。
可以預測的是,這就像站在兩面平行鏡子中間一樣,會先看到另一面鏡子,然後看到其中有第一面鏡子,然後其中又有另一面鏡子,一直無限重覆下去。
結果也真如我以上所說的,兩台電腦的桌面不斷彼此重覆出現。而且,當連線建立時,會看到一層一層的桌面漸次出現。在兩片鏡子中,每一個鏡子的反射會以光速向遠處延伸。在此處,重覆桌面出現的速度則是由網路速度決定。
有趣的是,雖然理論上這會產生無窮多的工作,電腦卻不會因此完全不聽控制。一個可能性是當它發現桌面重覆到一定程度(譬如小於螢幕上的一個點),就停止這無限複製,所以並不會有無限多個桌面需要控制。
另一個可能是,桌面動態透過網路往返於兩部電腦間的時間,遠比電腦處理所需的時間長,所以不論桌面怎麼被覆製,都不會影響電腦效能或造成死當,我不敢說這個推論在邏輯上沒有漏洞。
另一個可能性是,具有多工的能力的作業系統,就算有無窮多個待辦事項,也還是會允許使用者介面回應一些使用者的動作,譬如移動滑鼠。但即使是這個可能性,待辦事項不段累積下去後,到某個臨界點也是會佔去過多記憶體空間,最後遲早要拖慢系統效能。我並沒有等太久,看看這件事會不會出現。
總之,電腦沒有死當在那,至少我還可以看到滑鼠在動來動去。不過,就像我前面提到的,一旦滑鼠從第零層移進第一層,它的行為就開始變怪。而且,不論是家裡的電腦還是辦公室的電腦,除了顯示滑鼠以外,都不接受任何指令,滑鼠怎麼點、鍵盤怎麼按都沒用,只有電源鍵因為跟桌面無關還可以動作。玩膩之後我就按下電源鍵,強迫電腦睡覺,把它叫醒後趁它要重新建立連線的空檔趕快把VNC關了。

0 意見:
張貼意見