문제

저는 컴퓨터 과학 공학 학생이며 2-3 년 동안 .NET 프레임 워크를 프로그래밍 해 왔지만 Linux를 사용하지 않았습니다. 마지막 해 프로젝트에서 Linux 배포판이 좋을 것이라고 생각했습니다.

나는이 미친 아이디어가 나에게 일어 났을 때 그것을 구현하는 몇 가지 방법을 생각하고 있었다.

Linux 커널에서 .NET 프레임 워크를 먼저 구현하고이를 사용하여 나머지를 빌드 할 수 있습니까?

이것은 가장 이상한 질문 일 수 있지만 내가 옳다면 나에게 방법을 알려주세요. 질문 질문과 틀렸다면 나를 교정합니다.

도움이 되었습니까?

해결책

.NET 프레임 워크의 기능은 너무 풍부하여 LIBC로 시작하는 실질적인 사용자 공간 도우미가없는 Bare Linux 커널 위에 모든 것을 빌드하기에는 이해하기에는 너무 풍부합니다. 단일 학생의 박사 학위 논문을 위해 불가능하지는 않지만 너무 야심 찬 IMHO (박사 학위보다 낮은 학위를 목표로하는 경우).

보다 단핵증 .NET의 Windows 독립적 인 구현 및 모든 것이 의존하고 있으며, 자신의 모노의 포크에서 자신의 논문 내에서 사용자 공간의 종속성을 줄일 수있는 방법을 생각합니다. 물론 논문 고문이 귀하를 지원하기 위해 가입 할 것이라고 가정하면).

다른 팁

질문의 첫 번째 부분에 대해서는 체크 아웃 할 수 있습니다. 모노 프로젝트 C#에서 .NET을 구현 한 것입니다.

두 번째 부분에 관해서는 왜 .NET에서 Linux Kernal을 구현하고 싶은지 모르겠습니다. 그것은 그 일에 접근하는 약간의 거꾸로 된 것 같습니다.

C#에서 운영 체제 구현에 관심이 있으시면 체크 아웃 특이 C#에서 개발 된 연구 운영 체제입니다.

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

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

커널에서 관리 코드를 실행하려는 이점이 정확히 어떤 이점이 부여할지 모르겠습니다. 커널에서 관리되는 코드를 실행하는 것은 커널 메모리 할당의 많은 부분에서 신중하게 수행해야하므로 충분히 제어 할 수 없을 것입니다. 또한, 커널 스택은 기본적으로 너무 작을 것입니다. 힙 메모리 할당을 전혀 수행해서는 안되는 커널에는 일부 컨텍스트가 있습니다.

커널을 수정하려고 시도하고 Mono-Framework를 사용하고 사용자 공간에서 관리되는 코드 만 실행할 수 있습니다.

Visual Studio .NET + Grasshopper의 조합을 사용하여이를 수행 할 수 있습니다. 자세한 내용은이 Linke를 확인하십시오.http://dev.mainsoft.com/default.aspx?tabid=45

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

사용자 공간에서 커널 공간으로 전환하는 데 비용이 발생함에 따라 커널 공간에서 전체 애플리케이션을 실행하지 않는 한 실제로 성능이 악화됩니다.

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

Linux 커널을 실행하는 것은 C 런타임 라이브러리이므로 모노 라이브러리 및 기타 종속성을 추가하면 작동 할 수 있다고 생각합니다 (적어도 C#에서).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top