unix.stackexchange.com에 오신 것을 환영합니다!
귀하의 질문에 대한 쉬운 대답은 없으며, 나 보다 훨씬 나은 사람들은 일반적으로 Linux 커널 및 운영 체제의 주제에 대한 전체 책을 썼습니다.
프로젝트 범위 : 운영 체제 작성은 단순한 작업이 아닙니다! Minix와 같이 의도적으로 최소한의 OS조차도 꽤 복잡한 것입니다! Linux에 대한 아이디어를 제공하려면 지금까지 작성한 C 프로그램에 대해 생각해보십시오. 평균적인 대학 교과 과정은 최대 수천 줄의 C입니다. 저는 작년 프로젝트가 약 30–35,000 줄의 C ++ 인 것으로 생각합니다. 리눅스 커널은 약 13,000,000 라인의 C 코드입니다.
왜 모두 별도의 파일에 있습니까? 규모가 큰 프로젝트는 물류 및 실제적인 이유로 별도의 파일에 저장됩니다. 13,000,000 라인 파일을 편집기로로드하는 것을 고려하십시오! 리눅스와 같은 거대한 프로젝트를 다루기 전에, '여러 파일이 왜 필요한지'질문 자체가 대답 할 정도로 C 기술을 연마해야합니다. C 코드 를 읽을 수있을 뿐만 아니라 C 코드 를 읽을 수도 있어야 합니다. (처음보다 더 어렵다)
C는 매우 능숙해야합니다. 커널은 수천 명의 사람들에 의해 유지 관리되며, 각각의 개인 C 관용구를 이해하도록 부름받을 것입니다. 자체 문제 해결 스타일).
C fu를받은 후에는 운영 체제를 이해해야합니다. 이렇게하면 코드를 이해하는 데 도움이됩니다. 모든 리눅스가 필수적인 것은 아닙니다. 적절한 커널은 아주 작습니다! 무슨 팽창입니까?
- 다양한 장치를위한 수천 개의 하드웨어 드라이버.
- API 및 드라이버 작성을 단순화하기위한 다양한 장치 클래스에 대한 추상화 계층. 예를 들어 파일 시스템의 VFS, 입력 장치의 이벤트 계층 등이 있습니다.
- Linux를 실행하는 다양한 아키텍처를 지원하는 충격적인 조건부 컴파일 된 코드 및 파일 (모든 Linux 시스템이 Intel PC는 아니며 일부는 예상 과 매우 다릅니다). 커널은 이러한 차이점을 처리해야하며 이는 더 많은 코드를 의미합니다.
즉시 발견 할 수있는 한 가지 문제는 이러한 구성 요소를 분리하고 다시 연결하기가 쉽지 않다는 것입니다. 수많은 상호 관계가 있습니다. 간단히 말해 커널의 비트를 변경하는 것은 까다 롭습니다.
사람들이 Minix를 귀하에게 제안한 이유는 간단합니다. 전체 운영 체제이지만 Linux만큼 복잡한 시스템의 요구로 인한 부담은 없습니다. 코드는 작지만 여전히 완전한 기능을 제공합니다. 결국, 최초의 Linux 버전은 Minix에서 영감을 받았습니다.
물론, Minix는 요즘 하드웨어 지원이 적습니다. 그래서 무엇? 그것은 유익하다! 최신 컴퓨터는 매우 잘 가상화됩니다. 이를 활용하여 Minix를 실행하는 VM이 매우 가벼워 개발이 어려워 질 것입니다.
프로젝트가 운영 체제를 구축하는 것이라면 Minix를 공부하는 것보다 더 나쁠 수 있습니다. ' 앤드류 타넨 바움의 현대 운영 체제 ' 와 함께 제공되는 Minix 책을 구입하고 읽을 수도 있습니다 .
또한 목표를 설정하고 용어를 정확하게 정의해야합니다 . OS에 대한 자체 정의가 Microsoft (GUI 및 전체 소프트웨어 제품군이있는 OS) 인 경우 매우 긴 프로젝트에 참여할 수 있습니다. 1960 년대 이래로 수십만 명의 사람들이 우리를 지금 우리의 위치로 데려 왔습니다.
마지막으로, 컴퓨터 과학자의 전투 외침을 기억하십시오. ' 바퀴를 다시 발명하지 마십시오! '(우리는 학습 할 때 예외를 만들고 싶습니다. 물론 재미를 위해 :))