2009-06-10 3 views
7

WWDC 2009 기조 연설을보고 누군가가 Windows 7/Vista에 대해 말한 내용이 궁금합니다.DLL 및 레지스트리의 문제점은 무엇입니까?

연사는 7이 여전히 DLL과 같은 기술을 사용했기 때문에 여전히 열악한 운영 체제라고 주장했습니다. 기재. 그의 주장은 얼마나 정확하며 OS X은 그와 얼마나 다른가요? 심지어 os x는 동적으로 라이브러리를로드했습니다. 나는 레지스트리 물건이 약간의 무게를 가지고있을 것 같아요.

누구나 내 OS의 전략의 차이점을 설명 할 수 있습니까?

내가 여기있는 장식품을 선동하려고 아니에요 또는 아무것도, 난 그냥 두 운영 체제는 일반적으로 문제를 해결할 방법을 알고 싶어요 ..

감사합니다,

kreb

+0

그래서 어쨌든, 나는 여전히 문제가 있다고 생각합니다. dll과 레지스트리가 열등하다면 왜 그렇게됩니까? 대변인이 말한 바가 사실이라면 DLL과 레지스트리보다 우월한 OS X가 사용하는 것은 무엇입니까? – krebstar

답변

4

DLL을

OS X와 ​​Windows의 가장 큰 차이점은 Windows가 역사적으로 (즉, 당신이 하나의 DLL을 설치, 모두가 그것을 사용할 수 있습니다) 모든 사람의 코드를 공유함으로써 공간/메모리를 저장하려고한다는 것입니다. 애플은 비 시스템 라이브러리를 모든 애플리케이션에 정적으로 컴파일한다. 디스크 공간/메모리를 낭비하지만 앱을 배포합니다. 방법은이며 버전 문제는 더 쉽지 않습니다.

레지스트리

OS의 X 은 대신 대부분 그렇지 않은 경우를 제외하고 파일 시스템처럼 마법의 구성 요소로, 속성 목록라는 단지 플랫 파일을있어,는 레지스트리를 가지고있다. Apple의 접근 방식은 한 컴퓨터에서 다른 컴퓨터로 설정을 쉽게 마이그레이션 할 수있게 해주는 반면 Windows의 접근 방식은 메모리가 더 빠르며 앱이 큰 성능 저하없이 키를 쉽게 "볼"수있게합니다 (즉, 한 앱에서 키를 변경하고 다른 앱에서 키를 변경합니다 즉시 그것에 대해 알고있다). 결론적으로

은 10.6 Win7에 주로 주로 서버입니다 비스타, 단지처럼 주로 주로 10.4 등과 같은 코드였다 10.5과 같은 코드 기조 발표자의 그것의 가득

'03 등이 있습니다. 운영체제에서 테스트 된 코드가 너무 많아서 모든 버전을 출시하지 않을 수 있습니다. 특히 고객의 앱을 실제로 사용하려는 경우 더욱 그렇습니다.

+0

고마워요, 아주 명확했다 .. :) 배리 웍스도 좋은데이 최선의 답변으로 받아들입니다 .. – krebstar

+0

모든 비 시스템 라이브러리가 정적으로 응용 프로그램에 연결되어 있다고 말하는 것은 무능합니다 OS X의 번들. 앱 번들에는 프레임 워크 (동적으로 링크 된 라이브러리)가 포함될 수 있고 일부는 비 시스템 프레임 워크를 묶을 수 있지만 시스템 전체 또는 사용자 전체의 라이브러리/프레임 워크 폴더에 프레임 워크를 설치하여 사용할 수 있습니다 많은 응용 프로그램에 의해. 일반적으로 설치 프로그램을 사용하여 드롭 다운 설치가 가능하지 않은 OS X 응용 프로그램 (예 : 전체 설치 프로그램이 필요함)은 이러한 프레임 워크를 설치합니다. –

+0

모든 실질적인 의도와 목적을 위해 프레임 워크를 만들 수있는 사람은 Apple뿐입니다. 그렇지 않으면 모든 앱이 .pkg 파일이됩니다. –

-4

DLL의 나쁜 변화입니다 라이브러리 자체는 작동 할 수 없기 때문에 라이브러리 자체에서 작동 할 수 없으므로 추가 래퍼 실행 파일을 호출 (자동)하여 필요하지 않은 오버 헤드를 추가하고 실제로 사용중인 라이브러리를 알기가 훨씬 더 어려워집니다. 덜 중요한 또 다른 결함은 시스템이 라이브러리를 진정으로 공유 할 수 없다는 것입니다. * nix 시스템은 최상위 레벨에 있거나 kde-init과 같이 더 큰 래퍼 (wrapper) 아래에 라이브러리가 존재하는 것을 피함으로써 라이브러리를 모든 응용 프로그램에서 공유 할 수 있습니다. 즉, 각 라이브러리의 단일 복사본 만 필요하며, 필요에 따라 언제든지 단일 라이브러리를 쉽게 종료 할 수 있습니다.

레지스트리는 너무 많이 사용된다는 사실을 제외하면 좋은 생각입니다. 설치하는 거의 모든 것이 레지스트리를 사용하고 손상된 레지스트리를 사용하고 운영체제가 수정 될 때까지 거의 완전히 쓸모 없게 만듭니다. * nix 시스템에서는 서로 다른 내용의 파일을 여러 개 사용하고 드라이버는 Xorg의 config 파일을 통해 참조하며 설치된 응용 프로그램은 자체 데이터베이스에 기록되며 키 또는 ID는 종종 디렉토리에 기록됩니다. 단일 다용도 파일 이렇게하면 심각한 고장이 발생할 가능성이 줄어들며 언제든지 시스템을 수리 할 수 ​​있습니다. Xorg가 손상된 경우 설치 한 응용 프로그램 데이터베이스가 손상된 경우이를 복구하거나 다시 작성할 수 있으며 응용 프로그램 개별 설정 디렉토리가 손상되면 하나의 응용 프로그램 만 다시 설치하면됩니다 (가장 좋은 상업용 APS는 복구 방법이 있어야합니다 어쨌든)

+0

죄송합니다. DLL을 공유 할 수 있다고 생각 했습니까? 흠 .. =/어쨌든 대답 주셔서 감사합니다 :) – krebstar

+3

사실, DLL을 사용하는 모든 래퍼 실행 파일이 필요하지 않습니다, 그들은 직접 응용 프로그램에 의해 사용됩니다. 또한 응용 프로그램은 확실히 DLL을 공유 할 수 있습니다. 공유의 예는 Windows의 시스템 DLL 또는 .NET GAC 어셈블리입니다. –

+0

DLL에 대한 의견은 매우 잘못되었습니다. DLL은 프로세스간에 완전히 공유 될 수 있습니다. – Foredecker

7

물론 두 운영체제 모두 DLL을 사용할 수있는 기능을 갖추고 있습니다 (DLL을 사용하는 방식에 따라 OS X에서 Framework 또는 dylib라고 부름) .dylib는 DLL과 매우 흡사합니다. 라이브러리와 같이 여러 버전이 떠 다니는 경우가 있습니다. 반면 프레임 워크는 실제로 디렉토리 구조입니다. 동적 링크 된 라이브러리 (잠재적으로 여러 버전이 있음), 리소스, 헤더, 문서 등이 포함되어 있습니다. OS X의 동적 링커는 각 실행 파일의 프레임 워크에서 올바른 라이브러리 버전을 자동으로 선택합니다. 이 시스템은 윈도우의 DLL 관리보다 잘 작동하는 것처럼 보입니다. 물론 윈도우 운영체제는 OS X로 옮겨 갈 때 애플이 떨어 뜨린 레거시 문제에 묶여 있습니다. 공정하게 말하자면, 유닉스는 심볼릭 링크를 사용하여 dylib를 정확한 버전 관리 된 구현으로 연결하고 여러 설치된 버전을 허용하면서 오랫동안이 문제에 대한 해결책을 가지고있었습니다.

Windows 레지스트리에 해당하는 OS X은 없습니다. 이것은 좋고 나쁘다. 좋은 점은 레지스트리가 망가져 전체 OS X 시스템을 손상시키는 것이 훨씬 어렵다는 것입니다. OS X는 구성을 여러 별도의 파일에 저장합니다. 대개 응용 프로그램, 사용자 등에 관계없이 하나 이상의 파일에 저장됩니다. 이러한 파일은 일반적으로 plist (사전, 배열 및 기본 유형을 나타내는 XML 스키마) 형식의 파일입니다.나쁜 점은이 유닉스 -Y 유산을 유지함으로써 OS X는 레지스트리를 뒤져서 모든 종류의 미친 짓을 할 수있는 동일한 관리 도구가 없다는 것입니다.

+0

+1 좋은 답변 감사합니다 :) – krebstar

관련 문제