2011-02-08 3 views
2

운영체제를 빌드하기 시작하고 커널에 대해 선택할 프로그래밍 언어를 알지 못합니다. 내가 좋아하는 언어는 Java이지만 모든 주요 운영체제 (Windows, Linux, Mac OS)는 C에 프로그래밍되어 있으며 Java에는 가상 시스템이 필요하다는 것을 알고 있습니다. OS가 C-based OS보다 Java-based OS보다 프로그램하기가 훨씬 어려울까요? 각 언어의 장단점은 무엇입니까?Java 또는 C 언어로 프로그래밍 된 OS (커널)

+16

Java와 같은 VM 기반 언어가 OS 구축을 위해 왜 작동하지 않는지 모르는 경우에는 너무 멀어 질 것이라고 생각하지 않습니다. – paulbailey

+1

Freebasic을 사용하는 옵션이 있지만 그 방법은 평범한 구식 ASM/C보다 어렵습니다. 아주 작은 ASM 부분이 필요하며 C/Pascal/FreeBasic에서 대부분의 나머지 부분을 코딩 할 수 있습니다. – friedkiwi

+1

Java로 작성하면 원시 하드웨어에서 실행할 수 없으므로 기계 시뮬레이터를 작성해야합니다. –

답변

8

http://wiki.osdev.org은 매우 유용한 사이트입니다. 툴체인을 만드는 방법, 사용할 수있는 언어 옵션 및 훌륭한 예제 코드가 있습니다.

이반

3

Java 기반 OS보다 C 기반 OS보다 프로그래밍이 훨씬 어려울까요?

Java에서 인터럽트를 처리하기 위해 하드웨어 수준 프로그래밍을 작성 하시겠습니까?

+8

+1 - 메모리 관리를하지 않는 언어로 메모리 관리자를 작성하는 것은 아이러니합니다. –

+4

* 분명히, * VM은 [특별한] 지시를 할 것입니다 ;-) VM에 의해 VM이 실행되지 않는 한, ... –

+4

@pst : 그것은 거북이입니다. –

6

운영체제를 작성하기 전에 프로그래밍 언어를 배우는 것이 나을 것입니다. 그 후에는 어떤 언어로 커널을 작성할 수 있는지 또는 작성할 수 없는지 깨닫게됩니다.

Java와 같은 프로그래밍 언어는 OS를 작성하는 데 필요한 저수준 루틴을 제공하지 않습니다. c 또는 C++로 OS를 구현할 수 있습니다. 부트 스트랩 코드 (어셈블러 읽기) 과 같은 프로그래밍 언어를 마스터하지 않는 한, 아마도 더 쉬운 작업을 재고하는 것이 좋습니다.

그러나 은 다른 OS에서 프로그램으로 실행하여 OS를 에뮬레이션 할 수 있습니다.이 경우 다른 언어로 실험 해 볼 수 있습니다.

1

Java를 기계어로 컴파일하는 컴파일러에 액세스 할 수 없다면 Java에서 OS 커널을 프로그래밍 할 수 없습니다. Java에는 바이트 코드를 해석하고 커널에 의존하는 원시 명령어를 실행하는 가상 시스템이 필요합니다. Java로는 할 수없는 일을하는 OS를 프로그래밍하려면 하드웨어와 직접 상호 작용할 수 있어야합니다. 귀하의 유일한 선택은 실제로 C가 어셈블리와 혼합 된 것입니다.

+1

gcj가 ... 그 일에 대해 많이 알지는 못하지만 지난 번에 내가 확인한 것은 약간의 문제가 있었음을 확인했습니다. – Spudd86

0

JVM이 OS와 같은 기능을 엄청 많이 제공하며, 자바로 작성 될 수 없다 - 그래서 어느 쪽이든, 당신은 코드의 엄청 많이 쓰고 끝낼거야 C (또는 가상 머신을 필요로하지 않는 코드를 생성 할 수있는 것).

+1

Weeeeeelll Java에서 JVM을 작성할 수 있습니다 ... JVM을 실행해야하므로 쓸모가 없습니다. . 또는 자바를 기계어 코드로 컴파일 할 수 있지만 실행 빈도가 많은 쓰레기 (가비지 컬렉션이 큰 것임)가 필요하며 자바는 코드없이 작동하는 코드를 작성하기가 정말 어렵다. 해야 할 것. – Spudd86

3

거기에 이미 여러 Java 기반 OS가있는 것 같습니다. 필자는 OS 프로그래밍에 대해 많이 알지 못하지만, Erlangen 대학의 Java 기반 OS 인 JX에 관한 광범위한 문헌 (독일어로 많이 쓰지만)이 많습니다. http://www4.informatik.uni-erlangen.de/Projects/JX/publications.html
어쩌면 거기에있을 수 있습니다. 도움이 될만한 것이 있습니다.

C 기반 OS를 작성하는 것이 가장 쉬운 방법이 될 수 있습니다.

관련 문제