1,000줄로 운영체제 < OS > 구현하기

알림
|
X

페이지 정보

작성자 wind 211.♡.99.61
작성일 2025.01.10 09:18
1,989 조회
18 추천

본문





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 doprintfdebugging 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'vegcc 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 개발 세계로 뛰어 들어 봅시다!

행복한 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 해킹을 기원함!

책의 목차

  1. Intro
  2. Getting Started
  3. RISC-V 101
  4. Overview
  5. Boot
  6. Hello World!
  7. C Standard Library
  8. Kernel Panic
  9. Exception
  10. Memory Allocation
  11. Process
  12. Page Table
  13. Application
  14. User Mode
  15. System Call
  16. Disk I/O
  17. File System
  18. 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



댓글 21 / 1 페이지

BLUEnLIVE님의 댓글

작성자 BLUEnLIVE (211.♡.234.109)
작성일 09:24
1000 라인에 OS를 다 갈아넣었다면 한 행 한 행에 숨겨진 내용들이 많을 건데.....
상상만 해도 버겁습니다.... ㄷㄷㄷㄷ

wind님의 댓글의 댓글

대댓글 작성자 wind (211.♡.99.61)
작성일 09:28
@BLUEnLIVE님에게 답글 오~ humble 한 말씀은....      우 워  얼리 ( 원리 )를 알아가면...  어렵지만은 ???      ... 뭐... 구! 라  제~ 거기  만 할까요... 이미 머리속에 다 ~~ 아~ 있으신거 아닐까요?

밴플러님의 댓글의 댓글

대댓글 작성자 밴플러 (119.♡.246.61)
작성일 10:12
@wind님에게 답글 구라... 제...거기... 디스.. 한 wind...님....

wind님의 댓글의 댓글

대댓글 작성자 wind (211.♡.99.61)
작성일 12:24
@밴플러님에게 답글 식사 하고  봤더니...쿨럭....  아이고 ...   
저는 아무것도 모르고... 누구를 디스하거나 , 무엇이라  말할 수 있는게 없는 존재라....
서명 에도 있듯이... 바보 , 초보... 나그네..일 뿐입니다  ( 스쳐가는 바람 처럼~ )

좋은 하루 보내세요 ^^

밴플러님의 댓글의 댓글

대댓글 작성자 밴플러 (119.♡.246.61)
작성일 14:51
@wind님에게 답글 웃자고 한 소리에요 ㅋㅋㅋ
좋은 하루 보내세용~

왁스천사님의 댓글

작성자 왁스천사 (125.♡.210.135)
작성일 09:27
대략 15년 정도 전이었었는데,
라이선스 문제 등 여러가지 이유로 자체 RTOS 를 만들어 쓰게 되었던 기억이 나네요.
당시 uC-OS 등으로 어느 정도 뭘 해야 하는지 정도는 알아서 다행히 잘 완료되어
그 때 만든 제품들이 아직도 돌아가고 있는걸 보면 좀 흐뭇하기도 합니다.

이게 진짜 코어의 느낌이라 엄청 뿌듯한 성취감주고 재미있는데.. 요즘에는 이런거 하시는 분들이 많이 줄었네요.
(면접 볼 때 비슷한 주제 - 완전 bootstrap 부터 시작하는 경우에 대한 개발 방법 - 를 질문으로 할 일이 있었는데
너무 생소한지 Python 으로 RTOS 를 하시겠다는 분도 있었습.. 아.. 아닙니다..)

wind님의 댓글의 댓글

대댓글 작성자 wind (211.♡.99.61)
작성일 09:31
@왁스천사님에게 답글 멋진 프로젝트 하셨네요 ,
....
uC/OS-II  [  MicroC/OS  라고  읽죠잉...  ]  유명하고...  널리 쓰이죠...  인증도 잘 받았고... 
요즘.... Silicon Labs    에서 인수 한것 같더라는.... 
 https://www.silabs.com/developer-tools/micrium


부트 코드, 부트로더 ... 부트 스트랩...
전  ...아무 것도..몰라서yo....

Gunung님의 댓글

작성자 no_profile Gunung (118.♡.30.55)
작성일 09:30
언젠가 재밌게 읽어보겠습니다.
유익한 정보 감사합니다.

wind님의 댓글의 댓글

대댓글 작성자 wind (211.♡.99.61)
작성일 09:32
@Gunung님에게 답글 취미로... 재미로 읽어 ... 보실  ... 능력자들  부럽고.... 감사합니다 ^^

귀엽고깜찍한요정님의 댓글

작성자 no_profile 귀엽고깜찍한요정 (222.♡.184.65)
작성일 09:33
가장 중요 사항인 둠 돌아가는가가 가장 궁금하지 말입니다....

wind님의 댓글의 댓글

대댓글 작성자 wind (211.♡.99.61)
작성일 09:34
@귀엽고깜찍한요정님에게 답글 요즘...둠 안 돌아가서는.... 카 멕... 님께서... 때치 하십니다..  고맙습니다...

춘자성님의 댓글

작성자 춘자성 (106.♡.65.210)
작성일 09:33
라인수만 1000이고 한 라인에 몇글자인지는....

wind님의 댓글의 댓글

대댓글 작성자 wind (211.♡.99.61)
작성일 09:34
@춘자성님에게 답글 상징적인 의미로...  웃었습니다... !!

CaTo님의 댓글의 댓글

대댓글 작성자 CaTo (223.♡.51.215)
작성일 09:38
@춘자성님에게 답글 ㅋㅋㅋㅋ ; 넣고도 계속 한줄. 아님 함수에 함수에 인셉션

다모앙최고미남님의 댓글

작성자 다모앙최고미남 (118.♡.12.134)
작성일 09:34
한줄에 몇글짜까지 들어가는 걸까요. 개행 문자가 없다면 한 줄로 봐야하나요?

wind님의 댓글의 댓글

대댓글 작성자 wind (211.♡.99.61)
작성일 09:35
@다모앙최고미남님에게 답글 https://github.com/nuta/operating-system-in-1000-lines
보면 알 수 있을듯 합니다...    라인수 체크 프로그램 돌려 봐야 할까요???

다모앙최고미남님의 댓글의 댓글

대댓글 작성자 다모앙최고미남 (118.♡.12.134)
작성일 09:39
@wind님에게 답글 아 저는 개행이 기준이면 1000줄로도 생각보다 많은걸 짤수 있겠다 싶어서 적은겁니다 ㅎㄹ

지금그대로의모습으로님의 댓글

작성자 지금그대로의모습으로 (218.♡.69.145)
작성일 09:37
1990년대 코볼로 사내 전자결재시스템 만들어본 생각이 나네요!

Imsomad님의 댓글

작성자 Imsomad (218.♡.93.116)
작성일 09:46
시간나면 해 볼게요 ㄷㄷㄷ

규링님의 댓글

작성자 규링 (49.♡.153.151)
작성일 09:57
재밌겠네요. 대학원때 겨우겨우 돌아가게 만든 코드 공개 안한 os가 있었는데 그것보다 더 잘만들었겠죠.
그거랑 비교해보는 것도 재밌겠네요. 지금도 그 코드 제 git 서버에 있을텐데...

YOROCHIC님의 댓글

작성자 no_profile YOROCHIC (116.♡.127.17)
작성일 10:51
감사합니다!
홈으로 전체메뉴 마이메뉴 새글/새댓글
전체 검색