운영체제를 빌드하기 시작하고 커널에 대해 선택할 프로그래밍 언어를 알지 못합니다. 내가 좋아하는 언어는 Java
이지만 모든 주요 운영체제 (Windows, Linux, Mac OS)는 C
에 프로그래밍되어 있으며 Java에는 가상 시스템이 필요하다는 것을 알고 있습니다. OS가 C-based
OS보다 Java-based
OS보다 프로그램하기가 훨씬 어려울까요? 각 언어의 장단점은 무엇입니까?Java 또는 C 언어로 프로그래밍 된 OS (커널)
답변
http://wiki.osdev.org은 매우 유용한 사이트입니다. 툴체인을 만드는 방법, 사용할 수있는 언어 옵션 및 훌륭한 예제 코드가 있습니다.
이반
Java 기반 OS보다 C 기반 OS보다 프로그래밍이 훨씬 어려울까요?
Java에서 인터럽트를 처리하기 위해 하드웨어 수준 프로그래밍을 작성 하시겠습니까?
+1 - 메모리 관리를하지 않는 언어로 메모리 관리자를 작성하는 것은 아이러니합니다. –
* 분명히, * VM은 [특별한] 지시를 할 것입니다 ;-) VM에 의해 VM이 실행되지 않는 한, ... –
@pst : 그것은 거북이입니다. –
운영체제를 작성하기 전에 프로그래밍 언어를 배우는 것이 나을 것입니다. 그 후에는 어떤 언어로 커널을 작성할 수 있는지 또는 작성할 수 없는지 깨닫게됩니다.
Java와 같은 프로그래밍 언어는 OS를 작성하는 데 필요한 저수준 루틴을 제공하지 않습니다. c 또는 C++로 OS를 구현할 수 있습니다. 부트 스트랩 코드 (어셈블러 읽기) 과과 같은 프로그래밍 언어를 마스터하지 않는 한, 아마도 더 쉬운 작업을 재고하는 것이 좋습니다.
그러나 은 다른 OS에서 프로그램으로 실행하여 OS를 에뮬레이션 할 수 있습니다.이 경우 다른 언어로 실험 해 볼 수 있습니다.
Java를 기계어로 컴파일하는 컴파일러에 액세스 할 수 없다면 Java에서 OS 커널을 프로그래밍 할 수 없습니다. Java에는 바이트 코드를 해석하고 커널에 의존하는 원시 명령어를 실행하는 가상 시스템이 필요합니다. Java로는 할 수없는 일을하는 OS를 프로그래밍하려면 하드웨어와 직접 상호 작용할 수 있어야합니다. 귀하의 유일한 선택은 실제로 C가 어셈블리와 혼합 된 것입니다.
gcj가 ... 그 일에 대해 많이 알지는 못하지만 지난 번에 내가 확인한 것은 약간의 문제가 있었음을 확인했습니다. – Spudd86
JVM이 OS와 같은 기능을 엄청 많이 제공하며, 자바로 작성 될 수 없다 - 그래서 어느 쪽이든, 당신은 코드의 엄청 많이 쓰고 끝낼거야 C (또는 가상 머신을 필요로하지 않는 코드를 생성 할 수있는 것).
Weeeeeelll Java에서 JVM을 작성할 수 있습니다 ... JVM을 실행해야하므로 쓸모가 없습니다. . 또는 자바를 기계어 코드로 컴파일 할 수 있지만 실행 빈도가 많은 쓰레기 (가비지 컬렉션이 큰 것임)가 필요하며 자바는 코드없이 작동하는 코드를 작성하기가 정말 어렵다. 해야 할 것. – Spudd86
거기에 이미 여러 Java 기반 OS가있는 것 같습니다. 필자는 OS 프로그래밍에 대해 많이 알지 못하지만, Erlangen 대학의 Java 기반 OS 인 JX에 관한 광범위한 문헌 (독일어로 많이 쓰지만)이 많습니다. http://www4.informatik.uni-erlangen.de/Projects/JX/publications.html
어쩌면 거기에있을 수 있습니다. 도움이 될만한 것이 있습니다.
C 기반 OS를 작성하는 것이 가장 쉬운 방법이 될 수 있습니다.
- 1. Java 가상 머신이 Java 언어로 프로그래밍 되었습니까?
- 2. 내가 C++ 프로그래밍 언어로 읽을
- 3. 다른 언어로 된 Java 알파벳
- 4. 커널 프로그래밍
- 5. 어떤 프로그래밍 언어로 프로젝트를 전환해야합니까?
- 6. 초보자를위한 리눅스 커널 프로그래밍
- 7. 모듈러스가 프로그래밍 언어로 정의 된 이유
- 8. 동적 언어로 보안 프로그래밍
- 9. Java 또는 C#과 같은 언어로 통합 알고리즘을 구현하려면 어떻게해야합니까?
- 10. Java는 컴파일 된 언어 또는 해석 된 프로그래밍 언어입니까?
- 11. gnu make가 OS 언어로 설치되었습니다.
- 12. NT 커널 프로그래밍
- 13. Android OS 커널 관련 검색어
- 14. iPad (iphone os) 커널 확장
- 15. 여러 프로그래밍 언어로 NetBeans 사용
- 16. 여러 언어로 된 ActiveMQ 게시자 및 구독자 (C++ Java)
- 17. Mac OS X 프로그래밍 도입부
- 18. Java 바이트 코드를 다른 표현 및 프로그래밍 언어로 번역
- 19. PHP를 데스크탑 프로그래밍 언어로 사용
- 20. 동적 언어로 된 인터페이스?
- 21. 그림에서 프로그래밍 방식으로 애니메이션 비디오를 만드는 방법 (Java 또는 C)
- 22. 커널 API 또는 커널 API 사용
- 23. 다른 언어로 전환해야하는 프로그래밍 언어에 충분할 때?
- 24. 이미지 처리를위한 Java 또는 C
- 25. C# 언어로 된 webform 닫는 방법?
- 26. 새로운 프로그래밍 언어로 xunit 구현하기
- 27. 다른 프로그래밍 언어로 오버로드가 발생했습니다
- 28. 연결/암묵적 프로그래밍 언어로 결합 자의 역할
- 29. 어떤 프로그래밍 언어로 작성된 Googlebot 또는 기타 효율적인 웹 크롤러입니까?
- 30. 로봇 용 C++ 또는 java
Java와 같은 VM 기반 언어가 OS 구축을 위해 왜 작동하지 않는지 모르는 경우에는 너무 멀어 질 것이라고 생각하지 않습니다. – paulbailey
Freebasic을 사용하는 옵션이 있지만 그 방법은 평범한 구식 ASM/C보다 어렵습니다. 아주 작은 ASM 부분이 필요하며 C/Pascal/FreeBasic에서 대부분의 나머지 부분을 코딩 할 수 있습니다. – friedkiwi
Java로 작성하면 원시 하드웨어에서 실행할 수 없으므로 기계 시뮬레이터를 작성해야합니다. –