1,000줄로 운영체제 < OS > 구현하기
페이지 정보
본문
Operating System in 1,000 Lines
Hey there! In this book, we're going to build a small operating system from scratch, step by step.
You might get intimidated when you hear OS or kernel development, the basic functions of an OS (especially the kernel) are surprisingly simple. Even Linux, which is often cited as a huge open-source software, was only 8,413 lines in version 0.01. Today's Linux kernel is overwhelmingly large, but it started with a tiny codebase, just like your hobby project.
We'll implement basic context switching, paging, user mode, a command-line shell, a disk device driver, and file read/write operations in C. Sounds like a lot, however, it's only 1,000 lines of code!
One thing you should remember is, it's not as easy as it sounds. The tricky part of creating your own OS is debugging. You can't doprintf
debugging until you implement it. You'll need to learn different debugging techniques and skills you've never needed in application development. Especially when starting "from scratch", you'll encounter challenging parts like boot process and paging. But don't worry! We'll also learn "how to debug an OS" too!
The tougher the debugging, the more satisfying it is when it works. Let's dive into exciting world of OS development!
- You can download the implementation examples fromGitHub.
- This book is available under theCC BY 4.0 license. The implementation examples and source code in the text are under theMIT license.
- The prerequisites are familiarity with C language and with UNIX-like environment. If you've
gcc hello.c && ./a.out
, you're good to go! - This book was originally written as an appendix of my bookDesign and Implementation of Microkernels(written in Japanese).
Happy OS hacking!
1,000 라인의 운영 체제
이봐! 이 책에서는 작은 운영 체제를 처음부터 단계적으로 구축 할 것입니다.
OS 또는 커널 개발을들을 때 협박 당할 수 있습니다. OS의 기본 기능 (특히 커널)은 놀랍도록 간단합니다. 거대한 오픈 소스 소프트웨어로 종종 인용되는 Linux조차도 버전 0.01에서 8,413 줄에 불과했습니다. 오늘날의 Linux 커널은 압도적으로 크지 만 취미 프로젝트와 마찬가지로 작은 코드베이스로 시작했습니다.
C에서 기본 컨텍스트 전환, 페이징, 사용자 모드, 명령 줄 쉘, 디스크 장치 드라이버 및 파일 읽기 / 쓰기 작업을 구현합니다. 많이 들리지만 1,000 줄의 코드 일뿐입니다!
기억해야 할 한 가지는 들리는 것만 큼 쉽지 않다는 것입니다. 나만의 OS를 만드는 까다로운 부분은 디버깅입니다. 당신은 할 수 없습니다printf
구현할 때까지 디버깅합니다. 응용 프로그램 개발에 필요하지 않은 다양한 디버깅 기술과 기술을 배워야합니다. 특히 "처음부터"시작할 때 부팅 프로세스 및 페이징과 같은 어려운 부분이 발생합니다. 그러나 걱정하지 마십시오! 또한 "OS 디버그 방법"도 배우게됩니다!
디버깅이 강할수록 작동 할 때 더 만족합니다. 흥미로운 OS 개발 세계로 뛰어 들어 봅시다!
- 구현 예제를 다운로드 할 수 있습니다깃허.
- 이 책은CC BY 4.0 라이센스. 텍스트의 구현 예제 및 소스 코드는MIT 라이센스.
- 전제 조건은 C 언어 및 UNIX와 유사한 환경에 익숙합니다. 당신이 있다면
gcc hello.c && ./a.out
잘가요! - 이 책은 원래 내 책의 부록으로 작성되었습니다마이크로 커널의 설계 및 구현(일본어로 작성).
행복한 OS 해킹!
https://operating-system-in-1000-lines.vercel.app/en/
goo gle 님 번역 이 십니다...
- 이 책은 작은 운영체제를 처음부터 단계별로 구축하는 방법을 설명함
- 운영체제(OS)나 커널 개발이라는 말에 겁먹을 수 있지만, OS의 기본 기능(특히 커널)은 놀랍도록 간단함
- 이 책은 작은 운영체제를 처음부터 단계별로 구축하는 방법을 설명함
- 운영체제(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 해킹을 기원함!
책의 목차
- Intro
- Getting Started
- RISC-V 101
- Overview
- Boot
- Hello World!
- C Standard Library
- Kernel Panic
- Exception
- Memory Allocation
- Process
- Page Table
- Application
- User Mode
- System Call
- Disk I/O
- File System
- Outro
RISC-V 추천... OS , RTOS ... 리 눅 스 포팅... 쿨 . 럭...
감사합니다 ...
참고 및 출처 :
https://operating-system-in-1000-lines.vercel.app/en/
https://news.hada.io/topic?id=18639
https://github.com/nuta/operating-system-in-1000-lines
더 보기 ...
[출간] "64비트 멀티코어 OS 원리와 구조" 가 드디어 출간되었습니다 ^^
https://kkamagui.tistory.com/745
https://kkamagui.tistory.com/746
https://kkamagui.tistory.com/748
kkamagui(까마귀, 한승훈)
옛날에 개발했던 OS에 스크린샷 입니다.
https://kkamagui.tistory.com/251
안드로이드 OS를 PC에서 실행시켜보자(Android-x86 Project)
https://kkamagui.tistory.com/800
wind님의 댓글의 댓글
wind님의 댓글의 댓글
저는 아무것도 모르고... 누구를 디스하거나 , 무엇이라 말할 수 있는게 없는 존재라....
서명 에도 있듯이... 바보 , 초보... 나그네..일 뿐입니다 ( 스쳐가는 바람 처럼~ )
좋은 하루 보내세요 ^^
왁스천사님의 댓글
라이선스 문제 등 여러가지 이유로 자체 RTOS 를 만들어 쓰게 되었던 기억이 나네요.
당시 uC-OS 등으로 어느 정도 뭘 해야 하는지 정도는 알아서 다행히 잘 완료되어
그 때 만든 제품들이 아직도 돌아가고 있는걸 보면 좀 흐뭇하기도 합니다.
이게 진짜 코어의 느낌이라 엄청 뿌듯한 성취감주고 재미있는데.. 요즘에는 이런거 하시는 분들이 많이 줄었네요.
(면접 볼 때 비슷한 주제 - 완전 bootstrap 부터 시작하는 경우에 대한 개발 방법 - 를 질문으로 할 일이 있었는데
너무 생소한지 Python 으로 RTOS 를 하시겠다는 분도 있었습.. 아.. 아닙니다..)
wind님의 댓글의 댓글
....
uC/OS-II [ MicroC/OS 라고 읽죠잉... ] 유명하고... 널리 쓰이죠... 인증도 잘 받았고...
요즘.... Silicon Labs 에서 인수 한것 같더라는....
https://www.silabs.com/developer-tools/micrium
부트 코드, 부트로더 ... 부트 스트랩...
전 ...아무 것도..몰라서yo....
wind님의 댓글의 댓글
wind님의 댓글의 댓글
wind님의 댓글의 댓글
보면 알 수 있을듯 합니다... 라인수 체크 프로그램 돌려 봐야 할까요???
다모앙최고미남님의 댓글의 댓글
규링님의 댓글
그거랑 비교해보는 것도 재밌겠네요. 지금도 그 코드 제 git 서버에 있을텐데...
BLUEnLIVE님의 댓글
상상만 해도 버겁습니다.... ㄷㄷㄷㄷ