최근 수정 시각 : 2024-03-17 09:18:22

COSMOSOS

운영 체제
{{{#!wiki style="word-break: keep-all; margin: -16px -11px" UNIX 파일:Linux 로고.svg Linux 파일:Windows 아이콘 2021_화이트.svg Windows
DOS DR-DOS · 파일:MS-DOS 아이콘.svg MS-DOS · 파일:FreeDOS 로고.svg FreeDOS · K-DOS
기타 RTOS · 파일:퓨시아 아이콘.svg 파일:퓨시아 아이콘 화이트.svg Fuchsia · TempleOS · ReactOS · BeOS · 하이쿠 · 파일:Mac OS 로고.svg Mac OS · 파일:attachment/OS/2/os2_logo.png OS/2 · CP/M · 모바일 운영 체제 }}}




1. 개요2. 설치 방법3. 코딩4. 특징5. 드라이버6. XSharp7. IL2CPU8. 장점9. 단점10. 정말 운영체제를 만들고 싶다면

1. 개요

파일:cosmosos.png

C#으로 운영체제를 만들수 있게 해주는 키트이다. IDE는 최신버전 기준 Visual Studio 2022를 사용한다.

2. 설치 방법

https://www.gocosmos.org/download/에서 확인 할수 있다. 유저 킷과 데브 킷으로 나뉘는데 데브 킷이 좀 더 많은 기능을 지원한다.[1] 기본적으로 .NET Core 6.0 및 .NET 프레임워크 4.0가 필요하다. 유저 킷은 일반적인 프로그램 개발자용인데에 비해 데브킷은 좀 더 섬세한 개발자에게 권장된다.

3. 코딩

프로젝트를 만들면 Kernel.cs라는 파일이 생기고 기본적인 코드가 입력되어 있다. 위에 초록색 삼각형 버튼을 누르면 빌드가 시작된다.[2] 기본적으로는 CLI 기반이다. 그 외는 깃허브[3], 디스코드[4], 유튜브 등에서 다양한 강좌들이 있다.

코딩시 유의할 점은 Plug이다. 자세한 내용은 IL2CPU 참고.

4. 특징

파일시스템은 FAT32를 사용하며, 사용하기 전에 초기화[5]를 해줘야 한다. 그리고 C#으로
코딩을 하면 IL2CPU[6]를 통해 어셈블리어로 바뀐다. [7]

CGS라는 코스모스 그래픽 인터페이스도 있다.
CAI 코스모스 사운드 인터페이스도 있고 (AC97, 사운드블레스터16 호환기기만),
기본적인 DNS/IPv4 인터페이스도 있다. [8]

디버깅이 가능한데, 디버그용 메시지를 보내거나,
충돌 알림, 커널 패닉 알림,
심지어는 코드 실행 중간에 멈추는 것까지 가능하다.[9]

5. 드라이버

기본 드라이버로는
그래픽 드라이버 (VBE 드라이버[10], VGA 드라이버[11])
ATA 드라이버
VFS 드라이버 (CD/DVD 파일시스템[12], FAT32/16/12 파일시스템[13])
USB1 드라이버[14]
PS2 드라이버 등등이 있고
CosmosOS를 사용하는 개발자가 더 만들수 있다.

6. XSharp

파일:상세 내용 아이콘.svg   자세한 내용은 XSharp 문서
번 문단을
부분을
참고하십시오.
XSharp은 CosmosOS에서 만들고 사용하는 어셈블러이다.
XSharp은 C#처럼 다루기 쉽다.

7. IL2CPU

파일:상세 내용 아이콘.svg   자세한 내용은 IL2CPU 문서
번 문단을
부분을
참고하십시오.
IL2CPU는 C#/VB.NET 코드를 XSharp으로 바꿔주는 툴이다.
CosmosOS에서 만들고 사용한다.

8. 장점

코딩하기 쉽다. C#[15]을 기본 언어로 사용하여 기존 C나 어셈블리로 코딩하는것보다 훨씬 쉬우며 GUI나 네트워크 드라이버도 지원하기 때문에 웬만한건 다 만들수 있다. 심지어는 멀티테스킹도 지원하는 라이브러리가 있다. SATA도 라이브러리가 있고, 무려 유니코드도 전용 라이브러리가 있다.

9. 단점

실제 하드웨어에서 구동하는데 한계가 있다. 또한 많은 버그를 일으킬수 있다.

특히 VFS, 파일 시스템 같은 경우 옛날 기기 (IDE 하드디스크)만 지원해 SATA로 실행은 힘든데 나머지 USB/NVME/SSD는 안된다로 보면 된다.[16]

C#으로 코딩을 하다 보니 저수준 코딩이 어렵다. Plugs로 대충 할수는 있지만 세세하게는 못한다. 따라서 바이너리 프로그램 실행을 만드는것도 어렵다.[17][18][19]

10. 정말 운영체제를 만들고 싶다면

사실 이 킷은 운영체제 개발을 진지하게 고민하고 공부하고 싶다면 쓰지 않아도 된다.
제한이 너무 많고, 실제로 운영 체제 이론 (Paging, GDT 등등)을 배우기도 힘들기 때문이다.
따라서 정말로 OS를 제대로 만들고 싶다면 어셈블리어랑 C에 대한 지식을 완전히 쌓은다음
책 등을 통해서 개발을 해야 한다.
[1] 유저킷은 안정적이고 데브킷이 업데이트를 많이 한다. 깃에서 다운받아 빌드하는 형식이다. [2] VMWare Player를 지원한다. 다만 VirtualBox를 사용해도 초반에는 별로 상관 없다. [3] 자세히는 https://cosmosos.github.io이다. [4] 기존 Gitter.im을 사용하였다. [5] 윈도우 등 다른 운영체제에서 포맷한것은 작동하지 않고, CosmosOS에서 직접 초기화해서 사용해야 하는데 초기화시 절반의 확률로 디스크가 손상된다... [6] C#을 어셈블리어로 바꿔주는 프로그램. 코스모스를 만든 곳에서 만들었다. [7] Plugs라는 기능을 사용하는데, 이 기능은 시스템 라이브러리를 어셈블리어로 바꿔준다. 하지만 Plugs는 어셈블리어로 바꾸는 코드가 필요하기에 몇몇 기능이 지원되지 않는다. [8] 현재 CosmosHTTP를 사용해 Http 연결을 할수 있다. 브라우저 엔진은 만들거나 디스코드에서 다운로드해야한다. [9] 디버깅 기능은 VMWare를 사용하고 디버깅 옵션이 켜져있어야 가능하다. [10] VBE 3.0 지원하지 않음. [11] 몇몇개의 해상도 지원하지 않음. [12] ISO9660 [13] 실질적으로는 FAT32만 지원된다. [14] 거의 Cosmos 출시했을때 부터 같이 있었는데 현재는 비활성화 되있다. [15] X#도 지원한다. X#은 쓰기 쉬운 어셈블리 (하이레벨 어셈블러)이다. [16] 특정 라이브러리를 사용하여 사용까진 가능하다. [17] 어렵긴 하지만 elf파일을 구동하는 구현이 있긴 있다. [18] IL2CPU 설정을 조금 건들이면 C, C++ 코드도 사용가능하다. [19] 사실 이건 X#을 사용하면 해결되는 문제다. 자세한 내용은 XSharp에서.