# 1,000줄로 운영체제 구현하기

> Clean Markdown view of GeekNews topic #18639. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18639](https://news.hada.io/topic?id=18639)
- GeekNews Markdown: [https://news.hada.io/topic/18639.md](https://news.hada.io/topic/18639.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-01-09T09:59:19+09:00
- Updated: 2025-01-09T09:59:19+09:00
- Original source: [operating-system-in-1000-lines.vercel.app](https://operating-system-in-1000-lines.vercel.app/en)
- Points: 126
- Comments: 14

## Summary

이 책은 작은 운영체제를 단계별로 구축하는 방법을 설명하며, 기본적인 컨텍스트 전환, 페이징, 사용자 모드, 명령줄 셸, 디스크 장치 드라이버, 파일 읽기/쓰기 작업을 1,000줄의 C 언어 코드로 구현할 수 있음을 보여줍니다. 운영체제 개발에서 가장 어려운 부분은 디버깅이며, 다양한 디버깅 기술과 스킬을 배워야 하지만, 성공했을 때 큰 만족감을 얻을 수 있습니다. GitHub에서 구현 예제를 다운로드할 수 있으며, C 언어와 UNIX 유사 환경에 익숙한 독자에게 적합합니다.

## Topic Body

- 이 책은 작은 운영체제를 처음부터 단계별로 구축하는 방법을 설명함  
- 운영체제(OS)나 커널 개발이라는 말에 겁먹을 수 있지만, OS의 기본 기능(특히 커널)은 놀랍도록 간단함  
- Linux도 처음에는 8,413줄의 코드로 시작했으며, 오늘날의 Linux 커널은 매우 크지만, 취미 프로젝트처럼 작은 코드베이스로 시작했음  
  
### 시작하기  
- 기본적인 컨텍스트 전환, 페이징, 사용자 모드, 명령줄 셸, 디스크 장치 드라이버, 파일 읽기/쓰기 작업을 C 언어로 구현할 것임  
- 이 모든 것이 1,000줄의 코드로 가능함  
- OS를 직접 만드는 데 있어 가장 어려운 부분은 디버깅임  
- printf 디버깅을 구현하기 전까지는 사용할 수 없으며, 애플리케이션 개발에서는 필요 없었던 다양한 디버깅 기술과 스킬을 배워야 함  
- 특히 "처음부터" 시작할 때 부팅 과정과 페이징 같은 어려운 부분을 만나게 됨  
- 하지만 걱정하지 말 것! OS 디버깅 방법도 배울 것임  
- 디버깅이 어려울수록 성공했을 때의 만족감이 큼  
- OS 개발의 흥미로운 세계로 뛰어들어 보자!  
  
### 기타 정보  
- 구현 예제는 GitHub에서 다운로드 가능함.  
- 이 책은 CC BY 4.0 라이선스 하에 제공되며, 구현 예제와 소스 코드는 MIT 라이선스 하에 있음  
- C 언어와 UNIX 유사 환경에 익숙해야 하며, `gcc hello.c && ./a.out`를 실행할 수 있다면 준비 완료임  
- 이 책은 원래 일본어로 작성된 "마이크로커널의 설계 및 구현" 책의 부록으로 작성되었음  
- 즐거운 OS 해킹을 기원함!  
  
### 책의 목차   
0. Intro  
1. Getting Started  
2. RISC-V 101  
3. Overview  
4. Boot  
5. Hello World!  
6. C Standard Library  
7. Kernel Panic  
8. Exception  
9. Memory Allocation  
10. Process  
11. Page Table  
12. Application  
13. User Mode  
14. System Call  
15. Disk I/O  
16. File System  
17. Outro

## Comments



### Comment 33468

- Author: princox
- Created: 2025-01-15T14:11:18+09:00
- Points: 1

항상 운영체제라는 것이 책으로만 접하던 것인데, 실제 코드로 볼 수 있어서 좋네요.  
  
좋은 자료 공유 감사드립니다.

### Comment 33337

- Author: yuhyun
- Created: 2025-01-13T10:31:25+09:00
- Points: 1

좋은자료 감사합니다!!!!!!!!

### Comment 33250

- Author: reagea0
- Created: 2025-01-10T16:20:32+09:00
- Points: 1

- 이 책은 원래 일본어로 작성된 "마이크로커널의 설계 및 구현" 책의 부록으로 작성되었음  
  
이 말이 너무 부럽네요. 일본은 전문서적들이 참 많이 잘 나오는 것 같아요. 인구 수의 문제겠죠?

### Comment 33278

- Author: gurugio
- Created: 2025-01-11T16:47:01+09:00
- Points: 2
- Parent comment: 33250
- Depth: 1

번역되는 책들을 보면 기술적으로 아주 깊은데까지 이야기하는 책은 없는것 같습니다만 단지 다양한 분야의 책이 나오는것 같긴 합니다. 아무래도 시장이 더 크니까 그런거같아요.

### Comment 33221

- Author: romakus
- Created: 2025-01-10T10:16:27+09:00
- Points: 1

좋은 자료 감사합니다.

### Comment 33185

- Author: skrevolve
- Created: 2025-01-09T15:36:48+09:00
- Points: 1

한번 만들어보시거나 이해되는 수준까지오면   
나중에 리눅스 시스템이 어떻게돌아가는지 보여서 리눅스 다룰때 유용 해집니다

### Comment 33181

- Author: gurugio
- Created: 2025-01-09T14:28:02+09:00
- Points: 3

2000년대 초반까지는 이렇게 개개인이 작은 커널을 만들어보는게 유행이기도해서 저도 해봤었고 덕분에 리눅스 커널 개발을 몇년 할 수 있었지요. 국내에도 운영체제 만드는 책들이 많이 나왔었으니까 잘 찾아보시면 더 자세하게 설명하는 책들을 구하실 수 있습니다.  
관련 분야 이직할게 아니라 그냥 재미로만 한다면 나쁘지 않겠지만, 저라면 요즘에는 AI나 k8s관련 스터디를 추천하겠습니다. 아직도 가끔 KLDP같은데 커널 개발자가 되고싶다는 글이 올라오는데 댓글을 보면 전부 외국나가라는 말뿐이에요.

### Comment 33231

- Author: bbulbum
- Created: 2025-01-10T10:59:33+09:00
- Points: 1
- Parent comment: 33181
- Depth: 1

국내엔 커널레벨에 투자하는 회사가 없어서 그런것이겠지요..?ㅎㅎ

### Comment 33277

- Author: gurugio
- Created: 2025-01-11T16:45:35+09:00
- Points: 1
- Parent comment: 33231
- Depth: 2

필요가 없어서 안하는 건지, 못하는 건지는 잘 모르겠습니다만 없긴 없습니다.

### Comment 33174

- Author: coma333
- Created: 2025-01-09T13:17:01+09:00
- Points: 1

좋은 자료 감사드립니다.

### Comment 33173

- Author: tsboard
- Created: 2025-01-09T11:45:04+09:00
- Points: 1

이런 도서들이야말로 무협지에서 말하는 무공 비급 같은 거겠죠? ㅎㅎ

### Comment 33167

- Author: bbulbum
- Created: 2025-01-09T10:37:08+09:00
- Points: 1

너무 흥미롭네요. 언젠가 한번 시스템프로그래밍 공부를 해보고싶었는데 처음 접근으로 OS 동작에 대해 프로그래밍 적으로 이해할 수 있겠다는 기대가 되는군요!

### Comment 33160

- Author: neo
- Created: 2025-01-09T09:59:19+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42631873) 
- 저자는 주말에 운영체제를 직접 만들어볼 수 있도록 책을 썼으며, C가 아닌 Rust나 Zig 같은 좋아하는 프로그래밍 언어를 사용할 수 있음
  - UNIX와 비슷하지 않게 필수적인 부분만 남겼으며, Linux나 Windows와의 차이를 생각하는 것도 재미있음
  - 운영체제를 설계하는 것은 자신만의 세계를 만드는 것과 같음
  - 일부 문단은 기계 번역된 느낌이 있을 수 있으며, 시간이 있다면 PR을 보내달라고 요청함
  - 콘텐츠는 Markdown으로 작성됨

- "hobby" 운영체제 프로그래밍 경험을 바탕으로 GDB 디버깅 설정을 가능한 빨리 추가하는 것이 좋음
  - QEMU에는 내장된 GDB 서버가 있으며, 대상 아키텍처(riscv)의 GDB 클라이언트를 네트워크를 통해 QEMU GDB 서버에 연결해야 함

- RISC-V를 위한 작은 운영체제를 만드는 것이 멋지다고 생각함
  - 개인적으로 Nim으로 x86-64용 커널을 작성했으며, JetBrains 플러그인을 개발 중임

- Rust 애호가들에게 phil-opp의 가이드는 재미있는 연습이 될 수 있음
  - 처음 시도했을 때는 5% 정도만 이해했지만, 2-3년 후 다시 시도하여 주제를 하나씩 검토함

- RISC-V에 대해 공부를 시작했으며, 읽고 있는 책에서 제공하는 에뮬레이터가 QEMU보다 간단하고 이상한 라이선스를 가지고 있음
  - 학술 프로젝트처럼 보이며, 실제로 사용되는지 궁금함

- xv6-riscv와 비교하는 것이 흥미로울 것 같음
  - xv6 책의 HTML 버전을 제공함

- 저수준의 논의가 항상 흥미로움
  - "RISC-V 101 페이지"에서 작은 오타를 발견했으며, "ISA" 대신 "CPU"로 잘못 표기됨

- 운영체제를 만드는 데 있어 가장 까다로운 부분은 디버깅임
  - 나이가 들수록 복잡한 전문 지식이 필요하지 않은 문제는 반복적인 시도를 통해 해결할 수 있다고 생각함

- 두 프로젝트가 언급됨
  - nuta/microkernel-book
  - mit-pdos/xv6-riscv

- 좋은 자료이며, 주말에 읽기 위해 저장해 둠

### Comment 33426

- Author: mhcoma
- Created: 2025-01-14T18:09:11+09:00
- Points: 1
- Parent comment: 33160
- Depth: 1

Nim으로 커널을...  
재밌겠군요.
