리눅스와 윈도우 커널


9

나는 리눅스에서 일하고 친구는 Windows 7에서 일합니다.

NetBeans, Eclipse, pgAdmin 및 기타 프로그램이 실제로 Windows보다 Linux에서 훨씬 더 많이 열리는 속도에 놀랐습니다.

시간로드 차이를 일으키는 Linux와 Windows 커널의 주요 차이점은 무엇입니까?

두 시스템 모두 정확히 동일한 하드웨어 구성을 갖습니다.


1
우스운, 내 경험은 정반대입니다- 모든 PC에서 Windows의 프로그램은 Linux보다 특히 더 빨리로드되는 경향이 있습니다 (특히 Windows 7에서는 과거 사용에 따라 어떤 프로그램을 열 었는지 추측하고 메모리에 미리로드합니다) ) . 아마도 그의 Windows 시스템은 bloatware로 가득 차 있습니까? 회사는 안티 바이러스 Windows 전용입니까? 동일한 시스템에서 Linux를 실행 해 보았습니까 (하드 드라이브 장애가로드 시간에 크게 영향을 미침) .
BlueRaja-대니 Pflughoeft

@ BlueRaja-DannyPflughoeft 귀하의 의견에 감사드립니다. 내가 질문에 말했듯이, 두 기계는 모두 동일한 하드웨어 구성을 가지고 있으며, 둘 다 Windows 7과 함께 제공되지만 Linux 사용자이고 아니, 그의 창은 부풀어지지 않습니다.
Gerep

1
@ BlueRaja-DannyPflughoeft Windows에 바이러스 백신을 설정 한 후에는 훨씬 더 느려지는 흥미로운 것을 발견했습니다. 사실, 블로 트웨어가 필요없이 안티 바이러스 만 설치하면됩니다. GNU / Linux는 (적어도 아직) 필요하지 않으며 ,이 작은 것도 훨씬 더 많은 성능을 제공했습니다.
Hi-Angel

답변:


8

이것은 단지 내 추측이지만, 일단 모든 것이 컴파일되면 (이진 데이터로 변환되어 컴퓨터가 실행할 수있는) 회사에서 일할 때 아무도 더 이상 소스 코드를 볼 수 없다고 생각합니다. 작동하는 한 중요하지 않습니다 .
Linux는 오픈 소스이므로 원하는 경우 모든 사람이 소스 코드를 볼 수 있습니다. 게으르고 시스템이나 종류를 느리게 만드는 정말 엉뚱한 코드를 작성하면 모두가 본 것처럼 명성이 있습니다. 개발자와 사용자 모두 비슷합니다. 이것이 오픈 소스 개발자가 게으른 경향이있는 이유 중 하나라고 생각합니다.

또한 Windows 커널의 핵심은 오늘날의 것이 되려는 의도로 작성되지 않았으며 (Linux는 아니었지만 이전 비트를 최적화하려는 노력을 기울였습니다) 개발자는 항상 추가하고 추가하고 있습니다. 코드가 너무 비밀스러워서 아무도 더 이상 무언가를 만들 수 없을 때까지. 지저분한 코드의 두 가지 속성은 종종 중복성이 많고 더 이상 두 코드 간의 링크를 쉽게 볼 수 없으므로 최적화를 시작할 수조차 없다는 것입니다. 단지 예 (비밀 한 것이 아님);

for (int i = 0; i < 20; i++)
{
    if (x == y)
    {
        if (z <= u)
        {
            goto banana;
        }
    }
}

위의 예는 훨씬 더 효율적으로 수행 될 수 있습니다.

for (int i = 0; (i < 20) && (x == y) && (z <= u); i++)
{
    banana ();
}

1
프로그래머 영역에서 현재 합의는 게으른 코딩 및 / 또는 조잡한 코딩이 컴파일러에서 잘 최적화되어 있다는 것입니다. 그러나 컴파일러는 부풀어 오르고 레거시를 도울 수 없으며 이는 의도와 관련이있을 수 있습니다.
Chris K

4
그 코드 예제는 모두 거의 확실 같은 일 (마이너스 함수를 호출 대 고토) ...에 컴파일
대니 Pflughoeft - BlueRaja

@ BlueRaja-DannyPflughoeft 알고 있지만 간단한 설명이 필요합니다.
RobinJ

5

아직 언급되지 않은 또 하나의 큰 것은 Linux가 더 나은 파일 시스템을 가지고 있다는 것입니다. 작은 파일에 대한 NTFS의 성능은 그다지 좋지 않습니다 .ext3이 더 좋고 ext4가 훨씬 좋습니다. 다른 질문 에 왜 흥미로운 추측이 있습니다 .

프로그램을 열 때 시작 시간의 상당 부분이 디스크에서 작은 파일을 많이로드하므로 파일 시스템을 신속하게 수행하는 것이 매우 중요합니다.


4

이것은 단지 제 의견이지만 GNU / Linux 시스템이 Windows보다 빠르다는 여러 가지 이유가 있으며 커널과 관련이있는 것은 아닙니다.

  • 분명히 RobinJ가 설명 한 이유가 있습니다. 소프트웨어가 오픈 소스 인 경우 코드가보다 효율적으로 작성되는 경향이 있음이 분명합니다
  • Linux는 매우 최적화 된 구성 요소를 사용합니다. 예를 들어 CPU 사용률을 최대화하는 매우 최적화 된 스케줄러를 사용합니다.
  • 리눅스 시스템은 메모리 조각화로 인한 고통이 적습니다.
  • Linux 시스템은 주 메모리를 더 잘 사용하며 일반적으로 캐시를 대량으로 사용하는 경향이 있으며, Windows 시스템은 가상 메모리를 대량으로 사용하는 경향이 있습니다
  • 리눅스 커널은 지속적으로 업데이트되고 쓸모없는 부분은 제거되지만 Linus Torvalds는 리눅스 커널이 "거대하고 부풀어 오르고있다"고 말했지만 NT 커널에 대한 반대 업데이트에서는 일반적으로 기존 커널 위에 빌드됩니다.

3

나는 커널만으로는 답이 아니라고 믿는다. Windows 7은 Windows가 처음으로 반응 가능하다고 생각할 정도로 반응이 좋았습니다.

속도 차이의 더 많은 부분이 소프트웨어 엔지니어링에 대한 @RobinJ의 생각과 관련이 있다고 생각합니다. Windows의 모든 기능 *은 일종의 Microsoft 프레임 워크 또는 다른 프레임 워크를 통해 MSDN에 구축되어 있습니다. 이것은 실제로 Big Business가 Microsoft를 좋아하는 방식과 관련이 있습니다. Microsoft는 다양한 프로그램 / 스위트 / 기술이 서로 대화 할 수 있도록 도와줍니다.

다음으로 개발자가 필수 사항을 쉽게 다루고 휠을 다시 만들지 않도록하기 위해 Microsoft는 제조업체가 Microsoft Visual C ++ 2008 재배포 가능 패키지와 같은 사전 컴파일 된 라이브러리를 번들로 제공하거나 요구할 수 있도록합니다. 또는 .Net4.0, MSSQL 2005, 광고 구역. 개발자가 새 소프트웨어를 사용하기 위해 Windows 컴퓨터에 설치 및 사용하고 최종 사용자가 설치해야하는 10 년 분량의 패키지가 있습니다.

따라서 Zyzzyx 프로그램을로드하고 실행하려면 하나 이상의 MSDN 재배포 가능 라이브러리가 존재하고 실행 중이어야합니다. 이 라이브러리는 프로그램이 OS와 상호 작용하는 방식을 결정합니다.

요약하자면, 수십 년에 걸친 소프트웨어에서 Window의 의도적 인 호환성으로 인해 리눅스 시스템이 부풀어지고 때로는 느리게 진행될 것이라고 생각합니다. 또한 Windows 용 비주얼 소프트웨어는 개발했지만 Linux 용은 아닙니다 .GTK, Qt, Py 등은 아닙니다. 리눅스가 덜 부풀어 오른다는 가정은 바로 그 것입니다.

추가로 편집 : FOSS 소프트웨어는 사람들이 항상 그것을 개선하도록합니다. 따라서 GTK는 GTK-2005와 GTK-2008이 동일한 컴퓨터에있는 것이 아니라 시간이 지남에 따라 개선되는 반면 Microsoft는 항상 그렇게합니다.

* -예외가 있습니다. 확실합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.