2009-10-22 5 views
1

저는 컴퓨터 과학 공학 학생이며 .NET Framework에서 2 ~ 3 년간 프로그래밍했지만 Linux는 사용하지 않았습니다. 나는 내 마지막 해의 프로젝트에서 리눅스 배포판이 좋을 것이라고 생각했다.리눅스 배포판은 .NET Framework를 기반으로 구축되었습니다.

우리가 리눅스 커널에 먼저 .NET 프레임 워크를 구현하고 그것을 사용하는 나머지를 구축 할 수 있습니다 :이 미친 생각이 나에게 발생했을 때

나는 그것을 구현하는 몇 가지 방법을 생각했다?

는 이상한 질문이 될하지만 질문을에 맞다면 저에게 방법을 제공하고 오전 잘못된 경우에 저를 수정하시기 바랍니다 수 있습니다.

답변

6

.NET 프레임 워크의 기능은 너무 풍부하여 libc로 시작하는 실질적인 사용자 공간 도우미없이 맨손의 리눅스 커널 위에 모든 기능을 구현할 수 없습니다. 불가능하지는 않지만 너무 야심적 인 IMHO는 한 학생의 박사 학위 논문 (그리고 박사 학위보다 낮은 학위를 목표로한다면 훨씬 더 그렇습니다).

.NET의 Windows 독립적 구현에 대해서는 mono을 참조하십시오. 모든 내용은 사용자의 의존성을 줄이거 나 줄일 수있는 방법을 생각해보십시오. 자신의 모노 오브 포크 (논문 고문이 당신을 지원하기 위해 가입 할 것이라는 가정하에).

+0

모노는 Windows보다 더 많은 운영 체제 용입니다 (답변이 명확하지 않은 경우를 대비해서). –

-1

Linux 커널을 실행하는 것이 c 런타임 라이브러리이므로 모노 라이브러리 및 기타 종속성을 추가하면 적어도 C#으로 작동하도록 할 수 있습니다.

3

질문의 첫 번째 부분은 mono project인데, 이는 C#에서 .net의 구현입니다.

두 번째 부분에 대해서는 왜 Linux Kernal을 .net으로 구현할 것인지 잘 모르겠다. 그것은 물건에 접근하는 약간의 뒤의 길과 같게 보인다. 당신은 C#에서 개발 한 연구 운영 체제입니다 Singularity을 확인 C#에서 운영 체제를 실행에 관심이 있다면

+0

동의합니다. 정답 (IMO)은 .NET에서 * a * 커널을 구현할 수 있지만 C에 크게 의존하는 Linux 커널을 구현할 수 없다는 것입니다. –

0

당신은 그가 모노 프레임 워크를 사용에만 실행되는 커널을 수정을 시도 할 수 있습니다 사용자 공간의 관리 코드.

1

CLR (일명 .NET 프레임 워크)은 Linux에서 Mono로 적어도 한 번 이상 구현되었습니다.

사실, Mono를 제공하는 Linux 배포를 만들거나 일부 시작 스크립트/데몬에 .NET을 사용할 수 있습니다. 괜찮을거야. 누군가 이미이 작업을 수행했을 것입니다.

커널에서 관리 코드를 실행하려고 할 때 이점이 무엇인지 정확히 알 수는 없습니다. 커널에서 관리 코드를 실행하는 것은 매우 어려울 것입니다. 왜냐하면 커널 메모리 할당의 많은 부분을주의 깊게 수행해야하기 때문에 제어가 충분하지 않기 때문입니다. 더욱이, 커널 스택은 아마도 디폴트로 너무 작을 것이다. 힙 메모리 할당이 전혀 이루어져서는 안되는 커널에 약간의 컨텍스트가있다.

0

.NET Framework에는 문자열이나 컬렉션과 같은 많은 유틸리티 클래스가 포함되어 있습니다.

사용자 공간에서 커널 공간으로 전환하는 데 비용이 따르기 때문에 전체 응용 프로그램을 커널 공간에서 실행하지 않으면 실제로 성능이 저하됩니다.

목록에 무엇인가를 추가하거나 문자열의 길이를 확인할 때마다 syscall을하고 싶지 않습니다.

관련 문제