3P by GN⁺ | ★ favorite | 댓글 1개
  • Xv6는 운영체제 구조를 배우기 위해 만든 단순한 Unix 유사 교육용 OS이며, MIT 학부 과목 6.1810에서 사용됨
  • 2006년 여름 개발된 뒤 6.1810 수업을 위해 RISC-V로 포팅되어 현대 교육 환경에 맞춰짐
  • 소스와 문서는 xv6-riscv, xv6-riscv-book Git 저장소로 제공되어 직접 빌드하고 읽어볼 수 있음
  • 설계와 학습 맥락은 Unix V6와 John Lions의 Commentary on UNIX' 6th Edition에 뿌리를 둠
  • 원본 Unix V6 코드까지 함께 읽으려면 Lions 해설, V6 소스, PDP11/40 Processor Handbook 같은 참고 자료가 도움이 됨

Xv6와 6.1810

  • Xv6는 단순한 Unix 유사 교육용 운영 체제임
  • 2006년 여름에 개발됐으며, MIT 학부 과목 6.1810을 위해 RISC-V로 포팅됨

소스와 학습 자료

Unix V6 원본을 읽기 위한 참고 문헌

  • The PDP11/40 Processor Handbook은 원본 Unix V6 코드를 이해하는 데 유용한 자료임
    • 스캔 이미지 기반 PDF는 텍스트 검색이 되지 않음
    • 명령어 이름으로 색인된 웹 버전도 제공됨

피드백 요청

  • Xv6 사용 경험, 수업 도입 경험, 도입을 쉽게 만들기 위한 개선점, 잘 작동한 점과 그렇지 않은 점에 대한 피드백을 받고 있음
    • 연락처는 61810-staff@lists.csail.mit.edu

댓글과 토론

Hacker News 의견들
  • MIT에서 이 수업을 들었는데 20/10으로 추천함, 특히 시스템 배경이 없는 사람에게 좋음
    교재는 이해하기 꽤 쉽고, 실습은 이해도를 확인하기에 아주 좋음. 다만 첫 번째 시도에서는 네트워크 드라이버는 건너뛰는 편이 나을 수도 있음

    • 이 강의가 온라인으로 제공되는지 궁금함. OpenCourseWare에서는 강의 녹화를 못 찾았고, MIT 것은 아니지만 xv6 관련 YouTube 재생목록은 찾았는데 꽤 좋아 보임: https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW...
    • UCI에서 MIT 수업의 상당 부분을 가져와 훨씬 쉽게 만든 수업을 들었는데, 그래도 추천할 만함
  • MIT에서 이 OS를 쓰는 수업을 들었는데 정말 훌륭했음
    오늘도 수업 웹사이트를 둘러봤는데, 사실상 혼자서도 수강할 수 있음. 강의 노트, 실습, 각 실습별 브랜치가 있는 xv6 저장소, 직접 실행하는 방법까지 다 올라와 있어서 공개성이 놀라울 정도임
    첫 번째 실습: https://pdos.csail.mit.edu/6.1810/2023/labs/util.html
    조만간 전체 과정을 다시 직접 끝까지 해볼 생각임

  • 대학 운영체제 수업의 많은 프로젝트가 xv6 운영체제 위에 뭔가를 만드는 방식이었음
    그중 하나는 xv용 스케줄러를 만드는 프로젝트였고, 운영체제의 여러 구성 요소를 배우기에 확실히 좋은 방식이었음

  • 스페인의 한 대학에서는 Plan 9을 교육용으로 사용했거나 사용 중임

  • 제목을 처음 봤을 때는 오래된 xv 이미지 뷰어의 새 릴리스인 줄 알았음: http://www.trilon.com/xv/

  • 예전부터 Windows NT 커널을 이해하고 싶었음. 아마 초기 버전이 더 단순하니 그쪽이 좋을 듯함
    첫 버전이 VMS와 가깝다고 들었는데 사실인지 궁금함. VMS 자료가 있는지도 궁금하고, OpenVMS는 오픈소스라고 들었지만 버전이 너무 높은 것 같음

    • NT 커널 개발 과정을 잘 보려면 1996년 책 Show Stopper를 읽어보면 좋음
      Dave Cutler가 DEC 내부에서 VMS 관련 프로젝트를 포함해 여러 프로젝트를 이끈 것은 맞지만, Microsoft New Technology 커널이 VMS에서 물려받은 것은 설계와 아키텍처 차원의 정신적 유산 정도였음
      Dave는 DEC에서 팀이 밀려나기 전 이미 VMS의 대대적 개편 또는 후속작을 진행 중이었고, 그 비전 중 상당 부분이 Windows로 넘어갔지만 미니컴퓨터 쪽의 견고한 설계 패턴을 희생한 측면도 있었음
      Cutler는 MSDOS 팀을 잘못된 문제에 스파게티식 해법을 쌓는 초보 프로그래머들로 봤지만, Bill Gates가 OEM 계약으로 시장을 꽉 잡고 있었기 때문에 Bill은 NeXT에서 Steve가 만들던 것과 경쟁할 진짜 커널을 내놓게 하려고 그에게 사실상 백지수표를 줬음
      그래서 기능이나 형태 면에서 NT는 VMS와 전혀 같지 않고, 구현 면에서도 전혀 다름. VMS에는 깔끔한 C 표준 라이브러리와 컴파일러 제품군이 있었음. 다만 미니컴퓨터 쪽 사람들이 마이크로컴퓨터 세계에서 경쟁하려고 내려온 흐름이었다고 볼 수 있음
      더 자세한 분위기는 YouTube의 Dave Plummer와 Cutler 인터뷰를 보면 좋음
    • Windows Internals 책 시리즈, 예전 MSTech Journal과 DDJ 이슈, Digital 아카이브의 VMS 매뉴얼을 보면 됨
    • Windows 2000 소스 코드는 인터넷에 유출되어 있고, 더 최신 버전도 유출됐을 가능성이 큼. 실제로 교육 도구로 쓰인 적도 있음
    • 첫 NT 버전이 VMS와 가깝다는 건 아님
      VMS 자료는 아주 많고, 원래 몇 미터 분량의 문서가 딸려왔음. 지금도 판매 중이며 무료 취미용 VM 이미지도 받을 수 있음
      OpenVMS는 오픈소스가 아니고, 버전이 너무 높다는 말도 사실이 아님
      질문하기 전에 전제를 항상 확인해야 함. “A이기 때문에 B가 가능한가?”를 묻고 싶다면 먼저 A가 참인지부터 확인해야 함
    • OpenVMS가 오픈소스였나?
  • 왜 Unix v6인지 궁금함. 왜 50년 된 설계로 가르치는지 모르겠음
    운영체제의 기본인 스케줄링, 프로세스 간 통신, 주소 공간 관리를 가르치려면 마이크로커널 설계가 더 나을 것 같음

    • 오늘날 널리 쓰이는 기술의 선행 기술을 공부하는 것은 우리가 어떻게 여기까지 왔는지, 어떤 절충이 왜 이루어졌는지, 그리고 무엇을 잃었을 수도 있는지를 배우는 좋은 방법임
      나중에 새로운 기술을 접할 때 더 깊이 이해할 수 있고, 앞으로의 커리어에서도 시야를 넓혀줌
      그 역사의 일부를 놓친 입장에서는 대학에서 배웠다면 정말 좋았을 것 같음
    • 뛰기 전에 걷는 법부터 배워야 함. Xv6는 기본적이지만, 이런 개념을 처음 보는 학생들이 한 학기 안에 운영체제 기초를 익히기에 아주 좋은 입문서임
    • 많은 교수들이 Xv6를 운영체제 수업에 고르는 이유가 훌륭한 설계라서만은 아닐 것 같음
      충분히 괜찮고, 단순하며, 학생들이 다른 과목도 듣는 한 학기 안에 가르치기 쉬워서 고르는 경우가 많을 듯함. 마이크로커널 설계가 더 나을 뿐 아니라 가르치기도 더 쉽다는 뜻인지 궁금함
    • 폰 노이만 구조는 80년 됐음. 설계가 얼마나 오래됐는지가 왜 중요한지 모르겠음. 여전히 가장 관련성이 높고 널리 쓰이는 구조라면 말임
      Unix v6의 기본 추상화는 지금도 유효함
      마이크로커널과 모놀리식 커널의 핵심 차이는 사용자 공간과 커널 사이에서 주소 공간을 어떻게 공유하느냐인데, 마이크로커널 설계가 왜 더 나은지 잘 모르겠음. 널리 쓰이지 않는 설계를 왜 가르쳐야 하는지도 의문임
    • 마이크로커널은 소프트웨어 생태계에서 중요한 역할을 하지만, 우리가 접하는 대부분의 소프트웨어는 마이크로커널이 조율하지 않음
      인터넷에서 실행되는 대부분의 소프트웨어도 마이크로커널 위에서 돌아가지 않고, 인터넷에서 구할 수 있는 대부분의 소프트웨어도 마찬가지임. 그런 수업은 커널을 다루거나 직업적으로 만나는 커널을 이해하는 데 충분한 준비가 되기 어려워 보임
  • 독학하는 사람이 이걸 직접 만져보려면 어떤 방식이 좋을지 궁금함

  • Plan 9도 이해하기 꽤 단순한 코드베이스임

    • Plan 9의 설계 결정 중 일부는 존중할 만함
      프로세스별 네임스페이스, 바인드, 모든 것을 파일로 다루는 방식은 다른 Unix 계열 OS에서는 보기 힘든 우아함을 줌
  • 지난 학기 운영체제 수업에서 PintOS를 썼는데, 더 깊이 들어가는 2부 수업이 있었으면 좋겠음