2012-02-24 2 views
0

OS를 만들려고합니다. 나는 그것이 수반하는 일의 양을 알고 있으며,이 주제에 전념 한 대부분의 사이트의 초급 부분이 가정하기 때문에, 어떤 종류의 농담으로 접근하지는 않습니다. 나는 위키와 웹 사이트가 모두 정보가 다르기 때문에 어떤 언어를 알아야하는지 궁금합니다. 일부는 C 또는 C++라고 말하면서, 일부는 C, 파스칼 등의 조합을 말했습니다. 확실한 것은 어셈블리가 필요하다는 것입니다. 필요로하는 언어는 무엇입니까?OS를 구축하는 데 필요한 언어

+0

삶의 모든 것이 더 잘 알수록 더 낫다. :) 나는 어셈블리와 C가 충분하다고 생각하지만 여기에 멘토가 대답하기를 바라며, 바라건대 진지한 방식으로 – 0x90

답변

2

권한 수준을 전환하거나 페이지 테이블을 설치할 때와 같이 CPU 관련 기능을 처리 할 때는 실제로 어셈블리가 필요합니다.

나머지는 포인터를 조작 할 수있는 합리적으로 낮은 수준의 언어로 작성 될 수 있습니다. 예를 들어 C 자체로 충분합니다. Linux는 C로 작성되었으며, 작은 어셈블리 (C++이 아님)가 있습니다. 나는 파스칼이 C보다 조금 덜 편리 할지라도 트릭을 할 것이라고 생각한다.

1

나는 그것이 단지 기본 설정의 문제라고 생각한다. 분명히 어셈블리가 필요하지만, 그 이상으로 네이티브 코드로 컴파일되는 저급 언어가 필요합니다. C가 아마도 이것에 가장 적합 할 것이지만, 코드 구조를 어떻게 만드 느냐에 따라 C++가 도움이 될 수도 있습니다. 파스칼에 관해서는 기술적으로 가능하다고 확신하지만, 파스칼은 꽤 오랫동안 공통적으로 사용되지 않았기 때문에 귀하의 옵션이 심각하게 제한적이라는 것을 알게 될 것입니다 (파스칼로 태그 된 SO는 420 개, C는 50,000 개 이상) .

1

충분히 낮은 수준의 바이너리로 컴파일하는 언어를 사용할 수 있습니다. 자바와 다른 인터프리터 언어는 나와 있지만, 디자이너의 선택입니다. ...

2

실제로 전체적으로 어셈블리가 빠르다는 사실은 빠르다. 대부분의 시스템에서는 반드시 필요하지만, UEFI을 개발하면 직선 어셈블리를 제거 할 수 있으며 대신 약간의 인라인 어셈블리를 수행하면 정상적으로 작동합니다. 또한 자신 만의 부트 로더를 작성하지 않는다면 어셈블리를 훨씬 적게 차지할 수 있습니다.

그 외에도 C 나 다른 저급 언어가 필요합니다. 특히 그것은 포인터를 조작합니다. C++이 가능하지만 언어 기능으로 인해 상세한 작업, 즉 예외가 필요할 수 있습니다. 자세한 내용은 here을 참조하십시오. 이 유형의 질문에 대한 훌륭한 자료는 osdev.org입니다. 이 link은 제 생각에 가장 좋은 답변을 제공합니다.

관련 문제