OS를 만들려고합니다. 나는 그것이 수반하는 일의 양을 알고 있으며,이 주제에 전념 한 대부분의 사이트의 초급 부분이 가정하기 때문에, 어떤 종류의 농담으로 접근하지는 않습니다. 나는 위키와 웹 사이트가 모두 정보가 다르기 때문에 어떤 언어를 알아야하는지 궁금합니다. 일부는 C 또는 C++라고 말하면서, 일부는 C, 파스칼 등의 조합을 말했습니다. 확실한 것은 어셈블리가 필요하다는 것입니다. 필요로하는 언어는 무엇입니까?OS를 구축하는 데 필요한 언어
답변
권한 수준을 전환하거나 페이지 테이블을 설치할 때와 같이 CPU 관련 기능을 처리 할 때는 실제로 어셈블리가 필요합니다.
나머지는 포인터를 조작 할 수있는 합리적으로 낮은 수준의 언어로 작성 될 수 있습니다. 예를 들어 C 자체로 충분합니다. Linux는 C로 작성되었으며, 작은 어셈블리 (C++이 아님)가 있습니다. 나는 파스칼이 C보다 조금 덜 편리 할지라도 트릭을 할 것이라고 생각한다.
나는 그것이 단지 기본 설정의 문제라고 생각한다. 분명히 어셈블리가 필요하지만, 그 이상으로 네이티브 코드로 컴파일되는 저급 언어가 필요합니다. C가 아마도 이것에 가장 적합 할 것이지만, 코드 구조를 어떻게 만드 느냐에 따라 C++가 도움이 될 수도 있습니다. 파스칼에 관해서는 기술적으로 가능하다고 확신하지만, 파스칼은 꽤 오랫동안 공통적으로 사용되지 않았기 때문에 귀하의 옵션이 심각하게 제한적이라는 것을 알게 될 것입니다 (파스칼로 태그 된 SO는 420 개, C는 50,000 개 이상) .
충분히 낮은 수준의 바이너리로 컴파일하는 언어를 사용할 수 있습니다. 자바와 다른 인터프리터 언어는 나와 있지만, 디자이너의 선택입니다. ...
실제로 전체적으로 어셈블리가 빠르다는 사실은 빠르다. 대부분의 시스템에서는 반드시 필요하지만, UEFI을 개발하면 직선 어셈블리를 제거 할 수 있으며 대신 약간의 인라인 어셈블리를 수행하면 정상적으로 작동합니다. 또한 자신 만의 부트 로더를 작성하지 않는다면 어셈블리를 훨씬 적게 차지할 수 있습니다.
그 외에도 C 나 다른 저급 언어가 필요합니다. 특히 그것은 포인터를 조작합니다. C++이 가능하지만 언어 기능으로 인해 상세한 작업, 즉 예외가 필요할 수 있습니다. 자세한 내용은 here을 참조하십시오. 이 유형의 질문에 대한 훌륭한 자료는 osdev.org입니다. 이 link은 제 생각에 가장 좋은 답변을 제공합니다.
- 1. Android OS를 구축하는 데 걸리는 시간은 얼마입니까
- 2. 모바일 OS를 구축하는 것이 왜 그렇게 어려운가요?
- 3. 라이브 비디오 채팅 사이트를 구축하는 데 필요한 기술?
- 4. 내 장치에 SNMP 지원을 구축하는 데 필요한 리소스는 무엇입니까?
- 5. 소프트웨어 DAW를 구축하는 데 필요한 개발자 역할 또는 제목은 무엇입니까?
- 6. 처음부터 새로운 전자 상거래 웹 (클라우드) 기반 시스템을 구축하는 데 필요한 조언이 필요합니다.
- 7. 어떤 CMS/프레임 워크/... 간단한 웹 페이지를 구축하는 데 사용
- 8. RESTful 서비스를 테스트하는 데 필요한 것은 무엇입니까?
- 9. P4API가있는 P4Python을 구축하는 데 어려움이 있습니다
- 10. 트리 계층 구조를 구축하는 데 사용
- 11. VS2008에서 SQL2005까지 데이터베이스를 구축하는 데 문제가 발생했습니다.
- 12. WordPress에서 인트라넷을 구축하는 데 사용해야하는 플러그인은 무엇입니까?
- 13. 디렉토리를 구축하는 데 적합한 소프트웨어는 무엇입니까?
- 14. 확장 가능한 웹 사이트를 구축하는 데 적합한 기술은 무엇입니까?
- 15. play.exceptions.JavaExecutionException :로드하는 데 필요한 ID는로드하는 데 필요합니다.
- 16. 비즈니스 인텔리전스 : Java BB 애플리케이션을 구축하는 데 가장 많이 필요한 API는 무엇입니까?
- 17. PHP 및 MySQL에서 로그인 메커니즘을 구축하는 데 필요한 주요 정보 및 조언
- 18. 브라우저/게임을 제작하는 데 필요한 PHP/Javascript?
- 19. EJB를 배우는 데 필요한 리소스
- 20. mediastore를 조작하는 데 필요한 조언
- 21. 프로세스가 완료되는 데 필요한 시간이
- 22. 데이터베이스에 액세스하는 데 필요한 자습서
- 23. 이것을 해결하는 데 필요한 알고리즘
- 24. 다중 언어 Drupal 6 사이트를 구축하는 가장 좋은 방법은 무엇입니까?
- 25. 다단계 주문 양식을 코딩하는 데 이상적인 언어
- 26. 다트를 자바 스크립트로 컴파일하는 데 필요한 제한은 무엇입니까?
- 27. XP 및 Win7 용으로 어떤 OS를 사용해야합니까?
- 28. Objective-C 지원을 .NET 공용 언어 런타임에 추가하는 데 필요한 것은 무엇입니까?
- 29. 얻기 언어
- 30. CentOS 5에서 OpenCV 2.0을 구축하는 데 문제가 있습니까?
삶의 모든 것이 더 잘 알수록 더 낫다. :) 나는 어셈블리와 C가 충분하다고 생각하지만 여기에 멘토가 대답하기를 바라며, 바라건대 진지한 방식으로 – 0x90