실수로 앱을 실행중인 상태로두고 Software Updater에서“지금 설치”를 클릭하면 어떻게됩니까?


22

update-manager예를 들어 소프트웨어 업데이터 가 팝업되어 Firefox에 대한 보안 업데이트가 표시됩니다. 당연히 계속하려면 "지금 설치"를 클릭하십시오.

그러나 이렇게해도 Firefox가 계속 실행되면 어떻게됩니까? 여전히 Firefox를 업데이트합니까? 업데이트를 건너 뛰고 다음에 다시 팝업을 표시합니까? 업데이트로 인해 Firefox가 강제 종료되고 충돌이 발생합니까? 소프트웨어를 부분적으로 만 업데이트하고 Firefox 설치를 중단 할 수 있습니까?


10
아무 일도 일어나지 않습니다. Firefox는 Ram에서 열려 있습니다. 때로는 업데이트를 감지하여 브라우저를 다시 시작하라는 메시지를 표시합니다. 그러나 더 많은 통찰력과 참고 자료를 가진 사람이 더 나은 답변을 줄 수 있습니다.
pLumo

3
나는 우분투에 대해 구체적으로 알지 못하지만 아치에서는 (이 경우에는 다른 점이 아니라고 생각합니다) 실행 중에 발 아래에서 파이어 폭스를 업데이트하는 것이 효과 가있는 것처럼 보이지만 파이어 폭스에서 가장 먼저하는 일은 의회. 나는 항상 현대 브라우저의 복잡한 특성으로 인해 모든 종류의 것들을 런타임로드한다고 생각했습니다. 그러나 파이어 폭스는 나에게 일어나는 유일한 일입니다.
탐정

2
다음에 탭을 열면 Firefox가 중지되고 다시 시작해야한다는 메시지가 표시됩니다. 다른 앱은 다른 기능을 수행 할 수 있습니다.
Michael Hampton

답변:


40

Windows를 생각해야합니다. 유닉스가 제대로 해냈고 나중에 Windows가 와서 잘못된 일을하는 방식을 개발했습니다.

Windows에서는 실행중인 프로세스에서 사용중인 파일을 바꾸면 해당 프로세스에 심각한 영향을 줄 수 있습니다. 프로세스는 해당 파일 내의 위치를 ​​참조하고 파일에서 잘못된 정보를 얻습니다. 일반적으로 치명적인 결과가 발생합니다. 그렇기 때문에 모든 프로세스가 올바른 버전의 라이브러리 등을 사용하도록하려면 Windows 업데이트를 일반적으로 재부팅해야합니다.

Unix를 사용하면 프로세스 가 파일을 연 후에는 파일 시스템에서 원본 파일을 제거하더라도 동일한 파일을 프로세스에서 항상 사용할 수 있습니다 .

업데이트 후 파일 시스템에는 다른 버전의 파일이 포함되며 업데이트 이후에 시작되는 모든 프로세스는 해당 새 파일을 사용합니다. 그러나 Windows와 달리 모든 이전 Unix 프로세스는 원래 시작한 원본 파일을 계속 사용합니다. 파일 시스템을 통해 더 이상 액세스 할 수 없더라도 해당 프로세스는 파일 프로세스를 사용하는 한 지속됩니다. 결국, 파일을 사용하는 프로세스가 없으면 이전 버전의 파일이 결국 삭제됩니다.

물론 업데이트의 이점을 즉시 얻으려면 Firefox (또는 다른 프로세스)를 다시 시작하기로 결정할 수 있습니다. 선택은 당신입니다.


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
토마스 워드

18

일반적으로 이미 열려있는 동안 프로그램을 업데이트해도 문제가 없습니다. 다른 응답자가 설명했듯이 실행 파일이 삭제 된 경우에도 실행중인 프로세스를 계속 실행할 수 있습니다.

그러나 Firefox의 다중 프로세스 모델로 인해 업데이트 후 다시 시작하라는 메시지가 표시 될 수 있습니다. Firefox 는 다른 웹 사이트를 격리하기 위해 새 프로세스를 생성 하기 때문에 업데이트 후 새 프로세스를 생성하지만 Firefox를 다시 시작하기 전에 새 프로세스는 나머지 브라우저보다 최신 버전의 Firefox가됩니다. 이로 인해 다양한 문제가 발생할 수 있으므로 Firefox에서 계속하기 전에 다시 시작하라는 메시지가 표시 될 수 있습니다.

또한 Chrome 아무것도하지 않는 "zygote"프로세스를 사용하여 이를 방지합니다 . 브라우저가 새로운 프로세스를 생성해야 할 때 OS가 브라우저 실행 파일을 다시 실행하도록 요청하는 대신 (가능한 업데이트 된 바이너리를 실행할 것임) zygote 프로세스에 자체 복제를 요청하고 사본 중 하나는 정상적인 렌더러가됩니다 방법.


1
또한 Firefox와 같은 복잡한 응용 프로그램을 사용하면 프로그램 실행시 발생하는 모든 문제를 처리하는 데 필요한 모든 것이 메모리에로드되지 않습니다. 따라서 필요에 따라로드되는 구성 요소는 유사하게 버전이 일치하지 않을 수 있습니다. Firefox가 실행되는 동안 업데이트 할 때 종종 Firefox가 중단되었습니다.
fixer1234

다중 프로세스 모델을 갖춘 브라우저 일뿐 만 아니라 IPC에 라이브러리를 사용하고 업데이트 전후에 라이브러리를로드 할 수있는 상황-브라우저는 요즘 가장 잘 알려진 예입니다 (Windows의 COM interop는 꽤 널리 퍼져 있다는 것은 더 많은 프로그램이 암시 적으로 이와 같은 것을 할 수 있음을 의미합니다). 또한 크롬은 접합자 프로세스에서이 문제를 완전히 피한다고 상상할 수 없습니다. 시작시 어느 시점에서든 필요할 수있는 모든 단일 라이브러리를 실제로로드합니까?
Voo

@Voo는 "시작할 때 필요할 수있는 모든 단일 라이브러리를 실제로로드합니까?"라고 묻습니다. 이 특정 예에 대해서는 잘 모르지만 일반적으로 필요하지 않습니다. 필요한 것은 시작할 때 각각의 가능한 라이브러리가 열려 있는지 확인하는 것이므로 필요한 경우 올바른 데이터를 읽을 수 있습니다. 파일 (또는 수십 개의 파일)을 여는 것은 파일에 포함 된 모든 것을로드하는 것과 비교하여 사소한 비용입니다.
레이 버터 워스

@Ray Fun fact : dlopen은 파일 이름 만 취하지 만 파일 디스크립터는 취하지 않았기 때문에 생각보다 간단하지 않을 수 있습니다 (/ proc로 놀아도 * nixes에서는 악명이 다릅니다). 그러나 더 큰 문제는 동적 로딩이 처음부터 사용되는 대부분의 사용 사례를 제거한다는 것입니다.
Voo

@Voo, 죄송합니다. 실수로이 의견이 Windows 및 dll이 아니라 유닉스 지향 스레드에 있다고 생각했습니다.
레이 버터 워스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.