---
title: "코넬대가 공개한 정확히 2,000줄짜리 교육용 운영체제"
published: 2026-05-12T22:13:05.000Z
canonical: https://jeff.news/article/2585
---
# 코넬대가 공개한 정확히 2,000줄짜리 교육용 운영체제

코넬대 기반 프로젝트인 egos-2000은 학생이 교육용 운영체제 전체 코드를 직접 읽을 수 있게 만드는 걸 목표로 한다. C, 헤더, 어셈블리, make 파일을 합쳐 정확히 2,000줄이며, QEMU와 RISC-V 보드에서 동작하고 9개 코스 프로젝트가 붙어 있다. 운영체제 수업에서 ‘작지만 전체 구조가 보이는 코드베이스’가 필요했던 사람에게 꽤 반가운 자료다.

- 코넬대 쪽에서 교육용 운영체제 egos-2000을 공개함. 핵심 컨셉은 아주 명확함
  - ‘학생이 교육용 OS의 모든 코드를 직접 읽을 수 있어야 한다’는 게 프로젝트 비전임
  - 그래서 전체 코드가 정확히 2,000줄로 맞춰져 있음. 이름 그대로임

- 줄 수 구성이 꽤 흥미로움
  - C 파일 30개가 1,592줄로 대부분을 차지함
  - C/C++ 헤더 9개가 258줄, 어셈블리 3개가 92줄, make 파일 1개가 58줄임
  - blank 545줄, comment 820줄을 제외한 실제 code 합계가 정확히 2,000줄로 계산됨

> [!IMPORTANT]
> 교육용 OS에서 ‘작다’는 건 그냥 미니멀하다는 뜻이 아님. 학생이 커널부터 셸까지 전체 경로를 머릿속에 넣을 수 있느냐가 포인트임.

- egos-2000은 QEMU와 RISC-V 보드에서 모두 돌아감
  - QEMU로는 실제 보드 없이 노트북에서 실습할 수 있음
  - RISC-V 보드 지원 덕분에 운영체제가 추상 개념이 아니라 실제 하드웨어 위에서 어떻게 움직이는지도 볼 수 있음

- 구조는 earth, grass, application 3계층으로 나뉨
  - earth 계층은 하드웨어별 추상화를 담당함
  - 여기엔 tty와 disk 장치 인터페이스, timer와 memory management 인터페이스가 포함됨
  - grass 계층은 하드웨어와 무관한 추상화를 담당하고, process control block과 system call interface를 다룸
  - application 계층은 file system, shell, user commands를 구현함

- 이 3계층 인터페이스는 egos.h의 struct earth와 struct grass 정의에 드러남
  - 교육용 프로젝트에서 이건 꽤 중요함. 학생이 ‘어디까지가 하드웨어 의존 코드고, 어디부터가 OS 공통 로직인지’를 코드 구조로 바로 볼 수 있기 때문임
  - 운영체제 수업에서 제일 헷갈리는 부분 중 하나가 추상화 경계인데, 이 프로젝트는 그 경계를 이름부터 노골적으로 드러냄

- EGOS 책에는 egos-2000 기반 코스 프로젝트 9개가 포함돼 있음
  - 단순히 GitHub에 작은 OS 코드만 던져둔 게 아니라, 수업에서 단계적으로 확장하거나 분석할 수 있게 구성된 자료에 가까움
  - Northeastern CS4973/6640과 Cornell CS4411/5411에서 사용된 이력이 언급됨

- 포팅 사례도 꽤 다양함
  - mriscv라는 SystemVerilog 기반 단순 프로세서로 포팅됐음
  - Allwinner D1과 Sipeed Lichee RV64 Nezha compute module로도 포팅됨
  - 심지어 DOOM 비디오 게임을 egos-2000에서 돌린 사례까지 있음. 교육용 OS 치고는 꽤 귀여운 데모임

- 운영체제 공부하는 개발자에겐 꽤 괜찮은 입구가 될 수 있음
  - Linux 커널은 너무 크고, 추상 강의만 보면 감이 안 오고, xv6도 처음엔 버거운 사람에게 ‘전체를 읽는 경험’을 줄 수 있음
  - 2,000줄 안에 하드웨어 추상화, 프로세스, 시스템 콜, 파일 시스템, 셸이 들어간다는 건 OS의 큰 그림을 잡는 데 도움이 됨

---

## 기술 맥락

- egos-2000의 선택은 기능을 많이 넣는 게 아니라, 전체를 읽을 수 있는 크기로 줄이는 쪽이에요. 운영체제는 커널, 메모리, 프로세스, 파일 시스템이 서로 얽혀 있어서 일부만 보면 감이 잘 안 오거든요. 그래서 2,000줄 제한은 단순한 숫자놀이가 아니라 학습 설계에 가까워요.

- QEMU와 RISC-V를 같이 지원하는 것도 실용적인 선택이에요. QEMU는 수업 환경을 맞추기 쉽고, RISC-V 보드는 실제 하드웨어 감각을 줄 수 있어요. 같은 OS를 에뮬레이터와 보드에서 모두 돌리면 추상화 계층이 왜 필요한지 자연스럽게 보이죠.

- earth, grass, application 계층은 OS 수업에서 중요한 경계선을 보여줘요. 하드웨어별 처리는 earth에 두고, 프로세스와 시스템 콜 같은 공통 로직은 grass에 두고, 파일 시스템과 셸은 application에 올리는 식이에요. 학생 입장에선 변경 범위가 어디인지 추적하기 쉬워져요.

- 이 프로젝트가 흥미로운 이유는 ‘작지만 OS처럼 생긴’ 균형 때문이에요. 너무 작은 예제는 실제 운영체제 감각이 없고, 너무 큰 코드는 읽다 지치는데, egos-2000은 수업 프로젝트 9개를 붙일 만큼의 구조를 유지하면서도 전체 코드를 훑을 수 있게 만든 쪽이에요.

## 핵심 포인트

- egos-2000은 정확히 2,000줄 코드로 구성된 교육용 운영체제
- QEMU와 RISC-V 보드에서 동작하며, EGOS 책은 이 OS를 바탕으로 9개 코스 프로젝트를 제공
- earth, grass, application 3계층 구조로 하드웨어 추상화부터 파일 시스템과 셸까지 다룸
- C 코드 1,592줄, 헤더 258줄, 어셈블리 92줄, make 58줄로 구성
- Northeastern과 Cornell 수업에서 사용됐고, DOOM 실행 사례까지 있음

## 인사이트

운영체제 학습 자료는 보통 너무 장난감 같거나, 반대로 xv6처럼 읽을 건 많은데 초심자에겐 부담스러운 경우가 많음. egos-2000은 ‘전부 읽을 수 있는 크기’라는 목표를 숫자로 박아둔 게 매력이다.
