Linux가 다른 하드웨어 플랫폼으로 확장되는 이유는 무엇입니까?


22

Linux가 데스크탑, 랩톱, 서버, 내장 장치, 휴대 전화 등 다양한 유형의 컴퓨터에서 잘 작동하는 이유는 무엇입니까? 주로 시스템이 열려 있기 때문에 다른 환경에서 작동하도록 일부를 수정할 수 있습니까? 또는이 OS가 광범위한 플랫폼에서보다 쉽게 ​​작동하도록하는 Linux 커널 및 / 또는 시스템의 다른 속성이 있습니까?


7
나는 당신이 이미 해답의 일부를 가지고 있다고 생각합니다-개방성은 다른 그룹의 사람들이나 기업들이 그들의 요구에 쉽게 적응할 수있게합니다. 커널이 모 놀리 식으로 비판을 받았기 때문에 초기 디자인이 어떤 식 으로든 확장 성을 위해 의도적으로 최적화되었는지는 확실하지 않습니다. 다른 운영 체제보다 Linux 코어에서 많은 사람들이 작업했다고 생각합니다. 아마도 핵심 관리자가 코드를 명확한 인터페이스를 가진 조각으로 나눌 때주의를 기울여야합니까? 반면에 BSD의 일부 변형은 명시적인 목표로 이식성을 가지고 있습니다.
RedGrittyBrick

@Red : 마이크로 커널 대신 모 놀리 식 커널이라는 비판을 받았지만 디자인과는 아무런 관련이 없습니다. 그것은 사용자 공간에서 실행되는 커널의 양과 커널 공간에서 실행되는 양과 관련이 있습니다. 예를 들어 Windows NT의 커널은 매우 모듈 식이지만 대부분의 서비스 (예 : 파일 시스템)가 사용자 모드가 아닌 커널 모드에서 실행되기 때문에 기술적으로는 모 놀리 식입니다.
Billy ONeal

@Billy : Windows NT는 기술적으로 하이브리드 커널입니다. Microsoft는 여전히 메시지 전달을 사용하여 하위 시스템을 유지 관리하고 원하는대로 조각을 사용자 공간으로 옮길 수 있다고 생각합니다. 그들은 비스타의 그래픽 시스템으로 이것을했다 : NT 4.0 이후 커널 공간이 된 후에는 사용자 공간에있다
Zan Lynx

2
@Zan : "하이브리드 커널"상태 가 이의 제기 되었다는 인상을 받았습니다 . 그러므로 나는 "단일체"라고 말했습니다. NT는 라이브러리와 같은 조각으로 나뉘어져 있어도 많은 모 놀리 식 기능을 가지고 있습니다.
Billy ONeal

@ 빌리 : 몇 가지 옵션을 변경하고 다시 빌드하여 커널을 마이크로 커널로 바꿀 수 있다면 가장 자주 사용되는 바이너리 빌드가 모든 것을 커널 주소 공간에 넣더라도 모 놀리 식 이외의 것으로 보입니다.
Zan Lynx

답변:


31

개방성은 확실히 그 일부이지만, 핵심 요인은 Linus Torvald의 모든 작업이 크든 작든 모든 주요 작업이 기본 Linux 커널에 자리 잡고 있다는 주장입니다. 그가 어떤 시점에서 선을 긋고 "좋아요, 멋진 슈퍼 컴퓨터 하드웨어를 위해서는 포크가 필요합니다"라고 결정했다면 완전히 분리 된 고급형 및 소형 시스템 변형이 개발되었을 것입니다. 그 대신 사람들은 모든 것이 비교적 잘 어울리도록 열심히 노력했습니다.

그리고 한 쪽이 다른 쪽을 해칠 수있는 kludges는 일반적으로 허용되지 않습니다. 다시 말하지만 사람들이 더 어렵고 정확한 방식으로 문제를 해결하도록 강요하는 경우가 많습니다. 필요에 따라 kludge는 역사적인 각주가됩니다.

몇 년 전 인터뷰 에서 :

Q : Linux는 다목적 시스템입니다. PC, 거대한 서버, 모바일 및 기타 10 대 정도의 장치를 공급합니다. 당신의 특권적인 입장에서 리눅스가 가장 잠재력을 발휘할 수있는 분야는 무엇입니까?

A : Linux의 진정한 힘은 정확히 하나의 틈새 시장이 아니라고 생각합니다. 모두가 함께 플레이하고, 다른 사람들과 다른 회사들은 그들에게 중요한 것에 대해 완전히 다른 동기와 신념을 가지고 있습니다. 그래서 나는 어떤 특정 분야에도 관심이 없습니다.


18
그리고 작은 시스템과 거대한 시스템 정의는 항상 변화하고 있으므로 좋은 결점을 피할 수 있습니다. 멀티 코어 스마트 폰은 이제 몇 년 전에 수행 된 모든 슈퍼 컴퓨터 작업의 혜택을 누릴 수 있습니다.
Zan Lynx

4

Linux는 다음과 같은 여러 가지 유형의 하드웨어로 확장됩니다.

  • 매우 구성 가능합니다
  • 소스는 무료로 제공되며 C 컴파일러가있는 모든 CPU를 위해 빌드 될 수 있습니다.
  • 임베디드 디바이스 및 휴대폰의 프로세서는 초기 Linux 개발이 수행 된 최초의 386 시스템과 비교하여 최소한 동일한 수준 이상의 전력을 가지며 계속해서 전력을 얻습니다.
  • 네트워크, 어떤 형태의 디스크 또는 디스크와 같은 장치 및 직렬 포트만으로도 제대로 작동합니다.

글쎄, 누군가는 대상 플랫폼에 대해 최소한의 부트 스트랩 코드와 C 런타임을 작성해야합니다. 아, 그리고 가상 메모리를 지원해야합니다. 그러나 그렇지 않으면 사실 :)
Billy ONeal

1
@Billy nommu 시스템에는 uClinux, uClinux / ARM 및 MontaVista Linux 포트가 있습니다.
Tobu

@Tobu : 흠. 어떻게 될 수 있는지 모르겠습니다. 여러 프로세스에 대한 전체 "Unix Philosophy"는 유사한 fork것이 가능하며 fork가상 메모리가 아닌 시스템에서 합리적으로 효율적으로 수행 될 수 없다는 가정을 가지고 있습니다. 표시된 포트는 Linux 커널의 일부를 사용하고 일부 Linux 소프트웨어를 실행할 수 있지만 대부분이 포트에 의해 노출되는 API는 일반적인 Linux 커널과 다릅니다. (예 : 메모리 매핑 - 분명히 가상 메모리를 필요로하는)
빌리 ONeal

linuxjournal.com/article/7814 : uCLinux는 fork ()를 지원하지 않지만 vfork ()라는 블로킹 변형 인 uCLinux의 응용 프로그램은 vfork 또는 스레드를 사용하도록 다시 작성해야합니다.
LawrenceC

4

Linux Kernel은 확장 성이 뛰어납니다. 코어 커널은 비교적 작으며 필요한 작업을 수행합니다. 장치 드라이버는 선택 사항이며 소규모 시스템의 경우 커널에서 제외 될 수 있습니다. 최소 커널 요구 사항을 넘어 대부분의 기능은 선택적 기능으로 구현됩니다.

대부분의 커널 옆에 설치된 구성 파일을 살펴보십시오. 켜져있는 모든 기능과 지원되는 드라이버가 나열됩니다.

드라이버는 커널에 내장되어 있거나로드 가능한 모듈로 지원됩니다. 이를 통해 커널이 실행중인 하드웨어에 동적으로 커널을 구성 할 수 있습니다. 이것은 많은 배포판에서 사용되는 접근 방식입니다.

컴파일 도구를 사용하는 것 외에도 새 하드웨어에 맞게 커널을 수정하는 것은 비교적 간단합니다. 새 프로세서의 경우 관련 기능 만 기존 기능을 수정하여 구현하면됩니다. 새 장치에는 관련 후크가있는 새 드라이버 만 필요합니다. 새로운 파일 시스템도 마찬가지로 사소한 수정입니다.

코드베이스는 외부 포크없이 이러한 유연성을 유지하도록 잘 유지되었습니다. 조건부 컴파일은 가능한 한 최소로 유지되는 매우 유연한 커널을 구동합니다.


1

이 답변을 뒷받침하는 자세한 기술 전문 지식이 부족하지만 필자의 경험에 따르면 Linux는 자주 사용하는 다른 운영 체제 (주로 Windows)와 비교할 때 확장 성이 뛰어납니다. 아마도 아마도 Windows가 Linux뿐만 아니라 확장되지 않는 이유가 문제 일 것입니다.

그런 식으로 문제를 해결하는 것이 여전히 유용하다면, 최종 사용자가 새로운 시스템을 구입할 때 주로 운영 체제의 사본을 더 많이 판매하기 때문에 시장에서 가장 강력한 최신 하드웨어에 맞춰 기능을 추가하도록 동기를 부여하는 것이 좋습니다. . 따라서 어느 시점에서나 최신 버전의 Windows는 오래되고 성능이 떨어지는 하드웨어에서는 성능이 좋지 않습니다.

그것이 당신의 질문을 지나치게 단순화하면 용서하십시오.


남자가 커널에 대해 이야기하는 동안 OS를 말하는 것 같습니다. 글쎄, Windows 커널이 부풀어 있는지 확실하지 않으면.
tshepang

@Tshepang : 공정하게, "Linux 커널 및 / 또는 시스템"에 대한 질문입니다. Windows 7과 Windows Phone 7은 커널을 공유합니까? 내가 읽은 작은 내용은 커널이 Ubuntu Server 및 Android의 커널보다 공통 코드가 적을 수 있음을 시사합니다.
RedGrittyBrick

고맙지 만 질문은 실제로 Linux에 관한 것이지 다른 OS는 아닙니다. 많은 사람들이 거기에 있습니다 en.wikipedia.org/wiki/List_of_operating_systems은
저스틴 이디어

NT 커널은 실제로 매우 효율적이지만, 그 주변에는 수많은 층이 있습니다
LawrenceC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.