운영 체제 개발을 시작하는 데 필요한 리소스는 무엇입니까?[닫은]

StackOverflow https://stackoverflow.com/questions/43180

  •  09-06-2019
  •  | 
  •  

문제

제가 늘 원했던 것 중 하나는 나만의 운영 체제를 개발하는 것입니다(Linux나 Windows처럼 화려할 필요는 없지만 이미 해본 단순한 부트 로더보다 낫습니다).

간단한 "Hello World" OS 작성을 완료하는 데 도움이 되는 리소스/가이드를 찾는 데 어려움을 겪고 있습니다.

나는 많은 사람들이 나에게 Linux나 BSD를 보라고 권할 것이라는 것을 알고 있습니다.하지만 그런 시스템의 코드 기반은 (아마도) 너무 커서 어디서부터 시작해야 할지 모르겠습니다.

어떤 제안이 있으십니까?

업데이트:Google을 통해 이 게시물을 쉽게 접할 수 있도록 몇 가지 OS 개발 리소스를 소개합니다.

기타 리소스:

이름이 좋은 리소스를 찾았습니다. 마이크OS, "MikeOS는 OS가 어떻게 작동하는지 보여주는 학습 도구입니다.BIOS 액세스를 위해 16비트 리얼 모드를 사용하므로 복잡한 드라이버가 필요하지 않습니다."

2008년 11월 14일에 업데이트됨

다음에서 몇 가지 리소스를 찾았습니다. Freebyte의 무료 및 비자유 운영 체제 가이드 OSKit 및 ExOS 라이브러리와 같은 키트에 연결됩니다.이는 OS 개발을 시작하는 데 매우 유용해 보입니다.

2009년 2월 23일 업데이트됨

릭 도쿄 추천 나노스 이것에 질문.Nanoos는 C++로 작성된 OS입니다.

2009년 3월 9일 업데이트됨

Dinah는 야심 찬 OS 개발자를 위한 유용한 스택 오버플로 토론을 제공했습니다. 사용자 정의 운영 체제를 만드는 데 있어 장애물 OS를 개발하는 동안 발생할 수있는 함정에 대해 논의하고 OS 개발 보다 일반적인 토론입니다.

2009년 7월 9일에 업데이트됨

LB가 다음 링크를 제공했습니다. 핀토스 프로젝트, OS 개발을 배우는 학생들을 위해 설계된 교육용 OS입니다.

2009년 7월 27일 업데이트됨(여전히 강세를 보이고 있습니다!)

나는 우연히 온라인 OS 강좌 Berkley에서 23개의 강의를 제공합니다.

톰OS 포크이다 마이크OS 여기에는 약간의 메모리 관리자와 마우스 지원이 포함됩니다.MikeOS는 교육 프로젝트로 설계되었습니다.NASM 어셈블러로 작성되었습니다.

2009년 8월 4일 업데이트됨

나는 찾았다 슬라이드 및 기타 자료 위에 나열된 온라인 버클리 강의를 따라가세요.

2009년 8월 23일에 업데이트됨

모두 osdev 태그가 붙은 질문 스택오버플로우에서

운영체제/161 시뮬레이션된 하드웨어에서 실행되는 c로 작성된 학술 OS입니다.이 OS는 Nachos와 유사합니다.감사합니다 노벨로크라트!

탄구레나가 추천해요 http://en.wikipedia.org/wiki/MicroC/OS-II, 임베디드 시스템용으로 설계된 OS입니다.이있다 동반자 책 또한.

리눅스 커널 개발 by Robert Love는 Anders가 제안했습니다.이것은 "널리 호평을 받는 내부자의 Linux 커널에 대한 견해"입니다.

2009년 9월 18일 업데이트됨

Tim S님, 감사합니다.Van Haren이 알려준 내용 코스모스, 완전히 C#으로 작성된 OS입니다.

tgiphil이 우리에게 알려줍니다. MOSA(Managed Operating System Alliance) 프레임워크, "공통 중간 언어(Common Intermediate Language)를 기반으로 관리되는 운영 체제의 개발을 촉진하기 위한 일련의 도구, 사양 및 소스 코드입니다."

2009년 9월 24일 업데이트

Steve는 Visual Studio를 사용하여 Windows 개발을 위한 몇 가지 리소스를 찾았습니다. 확인해 보세요. VS 2005를 사용한 BrokenThorn의 가이드 설정 또는 OSDev의 VS 섹션.

2012년 9월 5일 업데이트됨

kerneltrap.org는 더 이상 사용할 수 없습니다.리눅스 커널 v0.01은 다음에서 구할 수 있습니다. kernel.org

2012년 12월 21일 업데이트됨기본 OS 개발 지도 시간 한 학기 프로젝트로 기획되었습니다.기본 구성 요소로 OS를 구축하는 과정을 안내합니다.초보자에게 아주 좋은 시작입니다.관련된 종이.고마워요 스루잔!

2013년 11월 15일 업데이트됨

간단한 운영 체제를 처음부터 작성하기.제임스 무어에게 감사드립니다!

업데이트 날짜: 2013년 12월 8일

컴퓨터 운영체제를 만드는 방법 고마워요 ddtoni!

2014년 3월 18일 업데이트됨

ToAruOS는 GUI를 포함하여 대부분 처음부터 새로 구축된 OS입니다.

2016년 9월 12일 업데이트됨

나만의 장난감 운영 체제 작성

2016년 12월 10일에 업데이트됨

간단한 운영 체제 작성 - 처음부터 (@Tyler C 감사합니다)

도움이 되었습니까?

해결책

이후 링크가 많이 있네요 간략한 개요 X86 플랫폼용 OS 작성과 관련된 내용입니다.

가장 유망해 보이는 링크(www.nondot.org/sabre/os/articles)는 더 이상 사용할 수 없으므로 Archive.org 버전 그것을 읽으려고.

결국 부트로더는 커널의 기계어 코드를 가져와서 메모리에 저장하고 점프합니다.원하는 기계어 코드를 커널에 넣을 수 있지만 대부분의 C 프로그램은 OS를 기대하므로 컴파일러에 OS가 모두 포함되지 않거나 부트로더가 OS 중 일부를 생성해야 한다고 알려야 합니다.

그런 다음 커널은 모든 무거운 작업을 수행하며 이것이 여러분이 원하는 예제 커널일 것이라고 생각합니다.그러나 "Hello world"라고 말하는 커널을 갖는 것과 명령 해석기를 로드하고, 디스크 서비스를 제공하고, 프로그램을 로드 및 관리하는 커널을 갖는 것 사이에는 갈 길이 멀다.

ACM의 오래된 문헌에 액세스하려면 ACM 구독을 고려해 보세요. 80년대 후반과 90년대 초반의 초기 컴퓨팅 잡지에는 ACM을 사용하는 방법에 대한 기사가 많이 있습니다. 대체 OS 만들기.이 시대에 절판된 책도 있을 것 같습니다.해당 잡지의 색인을 검색하고(해당 사이트에서 사용 가능 - 잡지 이름 옆에 있는 "색인" 클릭) 사본을 가진 사람들에게 물어보면 동일한 정보를 무료로 얻을 수 있습니다.

마지막으로, 나는 유즈넷이 죽었다는 것을 알고 있습니다(인터넷 파멸의 예언자들이 그렇게 말함). 하지만 그 시대의 험난한 노련한 전문가들이 여전히 그곳에 살고 있다는 것을 알게 될 것입니다.Google 그룹을 검색해 보세요(dejanews의 이전 저장소가 있음). 10년 또는 1.5년 전에는 지금 묻는 것과 동일한 질문을 하는 사람들이 많이 있을 것으로 예상됩니다.Linus Torvalds가 원래 Linux를 개발할 때 도움을 요청하는 많은 질문을 접할 수도 있습니다.검색해도 아무 것도 나오지 않으면 적절한 뉴스 그룹에 문의하세요(아마도 comp.arch로 시작하지만 이름에 OS가 있는 뉴스 그룹을 검색하세요).

다른 팁

미닉스 훨씬 작으며 학습 목적으로 설계되었습니다. 그에 어울리는 책 그것도 좋은 것입니다.

업데이트:Minix 3는 조금 다른 목표인 것 같지만, 미닉스 2 (물론 첫 번째 버전도) 교육 목적으로 사용되었습니다.

실시간 멀티태스킹 운영체제를 처음부터 작성한 사람으로서...

키보드 디바운스 루틴, 키보드 드라이버, 디스크 드라이버, 비디오 드라이버, 파일 시스템, 그리고 마지막으로 부트로더 - 그리고 아무것도 할 필요 없이 처음으로 실행하는 것뿐입니다!

...하드웨어에 익숙해지는 것이 얼마나 중요한지는 아무리 강조해도 지나치지 않습니다!다른 사람이 이미 마련한 기본 시스템을 선택하는 대신 모든 것을 직접 수행하고 싶다면 특히 그렇습니다.예를 들어 Intel에 연락하여 귀하의 CPU 유형에 맞는 CPU 카드를 요청하십시오!이렇게 하면 "핀아웃", 인터럽트, opcode 등 이름을 지정할 수 있습니다!

하드웨어가 모든 것을 가능하게 한다는 것을 기억하십시오.하드웨어를 연구하세요.당신은 그것을 후회하지 않을 것입니다.

.

마이크로 컨트롤러 OS를 작성합니다.x86 기반 마이크로컨트롤러를 추천합니다.최신 OS는 단지 거대한.먼저 기본 사항을 알아보세요.

자신만의 OS 개발에 관한 모든 정보를 얻을 수 있는 한 곳이 있었으면 좋겠습니다.그것에 가장 가까운 것은 OS 개발 위키 그리고 포럼.설정, 개발 및 장치 하드웨어 정보에 관한 많은 좋은 정보를 제공합니다.

또한 다음 위치에 몇 가지 훌륭한 튜토리얼이 있습니다. 본파이드, 저는 다음의 시작 튜토리얼을 사용했습니다. 밀기울, 그리고 지금은 그의 전화를 바탕으로 더 최근의 것을 보고 있습니다. 나만의 장난감 UNIX 클론 OS 만들기.

두 번째로 확인해보겠습니다:"운영체제 :설계 및 구현"

Windows에서 개발하고 싶다면 Jolson의 블로그 게시물을 확인하세요..

편집하다:Visual Studio를 사용하여 Windows에서 개발하려면 다음을 확인하세요. BrokenThorn의 가이드 또는 OSDev의 위키.

훌륭한 자료는 MIT 과정 6.828의 자료입니다:운영 체제 공학.

XV6 - x86용 ANSI C로 작성된 간단한 Unix 계열 교육 OShttp://pdos.csail.mit.edu/6.828/2012/xv6.html

XV6 소스 - 줄 번호가 포함된 인쇄된 소책자http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf

XV6 책 - OS 디자인의 주요 아이디어를 설명합니다.http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

재료는 콤팩트합니다.원본 92페이지, 해설 96페이지입니다.

미닉스 책보다 더 맘에 들어요!진짜 보석이에요!

당신도 한번 살펴보고 싶을 수도 있습니다 샤프OS 이것은 그들이 C#으로 작성하고 있는 운영 체제입니다.

책에는 운영 체제 기본 사항에 대한 유용한 리소스가 있습니다.처음부터 새로운 OS를 만들려는 요청이 많지 않기 때문에 인터넷에서 취미생활에 관한 정보를 많이 찾을 수 없습니다.

나는 Tanenbaum이 쓴 표준 교과서인 "Modern Operating Systems"를 추천합니다.Calingaert의 "운영 체제 요소"도 유용할 수 있습니다. 이는 디자이너의 관점에서 OS가 무엇인지 대략적으로 설명하는 책의 간단한 개요입니다.

실시간 시스템에 관심이 있다면(적어도 실시간 OS의 차이점과 이유를 이해해야 함) Labrosse의 "MicroC/OS-II"도 추천합니다.

편집하다:

"더 기술적"이라는 것이 무엇을 의미하는지 구체적으로 말씀해 주실 수 있나요?이 책에서는 의사 코드 구현에 대한 세부 정보를 제공하지만 특정 기계/언어에 대한 예제 OS 또는 코드 조각을 찾고 계십니까?

-아담

다른 질문에서 나온 것입니다.나는 언급하고 싶다 핀토스...Nachos와 함께 했던 OS 과정이 기억났는데 Pintos는 x86에서 실행할 수 있는 것과 같은 종류인 것 같습니다.

나는 Robert Love의 Linux Kernel Development가 매우 흥미롭다고 생각했습니다.Linux 커널의 다양한 하위 시스템이 어떻게 매우 실제적인 방식으로 작동하는지 알려줍니다.소스를 사용할 수 있으므로 Linux는 해킹할 수 있는 주요 후보입니다.

이 토론에 포함시킬 만한 다른 스택 오버플로 페이지는 다음과 같습니다.

사용자 정의 운영 체제를 만드는 데 있어 장애물
x86 아키텍처용 운영 체제 개발

Minix에서 해킹을 시작해 보세요.Linux보다 훨씬 작으며(분명히) 교육 목적을 염두에 두고 설계되었습니다(적어도 일부는).하지만 Minix 3는 아닙니다. 완전히 다른 이야기입니다.

이미 대답했지만, 제가 대학에서 운영 체제를 수강했을 때 초기 Linux 커널로 시작하여 단순한 최신 기능(기본 파일 시스템, 가상 메모리, 멀티태스킹, 뮤텍스)을 추가했습니다.좋은 재미.보호 모드와 페이지 테이블을 사용한 머킹에 대한 정말 말도 안되는 저수준 어셈블리 작업 중 일부를 건너뛰는 동시에 여전히 일부 배짱을 배웠습니다.

http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2

제가 학부에서 운영 체제 과정을 수강하면서 여러 가지 하위 시스템을 구축하게 되었습니다. 운영체제/161, 더 높은 수준의 서비스를 구현할 때 다양한 디자인 공간 결정을 자유롭게 탐색할 수 있도록 하면서 일부 기본 사항을 제공하는 간단한 BSD와 유사한 커널입니다.

당신은보고 싶을 수도 있습니다 리눅스부터 처음부터.

LFS (Linux)는 스 처음부터 소스 코드에서 전적으로 사용자 정의 Linux 시스템을 구축하기위한 단계별 지침을 제공하는 프로젝트입니다.

간단하고 기본적인 OS 개발 지도 시간 한 학기 프로젝트로 기획되었습니다.기본 구성 요소로 OS를 구축하는 과정을 안내합니다.초보자에게 아주 좋은 시작입니다.관련 논문은 여기.

이 저장소를 포함하고 싶습니다. 컴퓨터 운영 체제를 만드는 방법 새미 페세 지음.진행중인 작업입니다.매우 흥미로운.

연구할 합리적으로 간단한 OS 중 하나는 µC/OS입니다.책에는 소스가 적힌 플로피가 들어 있습니다.

http://en.wikipedia.org/wiki/MicroC/OS-II

MOSA(Managed Operating System Alliance) 프로젝트를 확인하세요. www.mosa-project.org.그들은 C#으로 AOT/JIT 컴파일러와 완전 관리형 운영 체제를 설계하고 있습니다.일부 개발자는 비활성 SharpOS 프로젝트 출신입니다.

나는 가지고 놀았다 코스모스, "CIL 준수 언어로 완전히 구현 된 운영 체제 프로젝트"입니다. 그것은 C#로 작성되었으므로 바로 내 골목에있었습니다.나처럼 운영 체제를 구축해 본 적이 없는 사람에게는 실제로 "Hello World" 운영 체제를 즉시 실행할 수 있다는 것이 꽤 멋진 일이었습니다.

이 사이트를 확인하세요: http://osix.net/modules/article/?id=359

위에서 언급했듯이, OSDev 위키 (지금까지) OS 개발을 위한 최고의 소스입니다.독일어를 사용하는 분들에게는 lowlevel.eu 위키도 훌륭합니다.비교적 알려지지 않은 것 인시타투스 OS, 작은 사용자 공간 앱 세트가 포함된 간단한 커널입니다.OS 개발의 복잡한 주제를 다루기 위해 사용하는 것이 좋습니다.

모비츠 Common Lisp로 작성되고 "on the metal"에서 실행되는 Lisp 환경입니다.불행하게도 다음의 일부 링크는 모비츠 메인페이지 액세스를 거부할 수 있지만 소스 코드를 다운로드하고 컴파일하는 방법에 대한 지침은 다음에서 찾을 수 있습니다. 트랙 페이지.또한 준비된 이미지는 다음 아카이브에서 찾을 수 있습니다. 이 페이지.

IMHO 이것은 매우 흥미롭습니다. 리스프 머신 현재 사용 가능한 하드웨어에 대한 개념입니다.상업적으로 실패했지만 이것이 그 아이디어가 나쁘다는 것을 증명하지는 않습니다.

유닉스 혐오자 핸드북 유닉스와 그 파생물의 개념을 심각하게 질책하는 재미있는 책이다.많은 섹션에서 Lisp 시스템 개념이 얼마나 더 나은지에 대해 논쟁합니다.

"라는 논문이 있습니다.간단한 운영 체제를 처음부터 작성하기".부트로더 작성, x86-32 보호 모드 진입, C로 기본 커널 작성을 다룹니다.하나하나 자세히 설명해주셔서 좋은 것 같습니다.

그만큼 x86 JS 시뮬레이터 그리고 ARM 시뮬레이터 또한 다양한 하드웨어가 어떻게 작동하는지 이해하고 즐겨 사용하는 브라우저를 종료하지 않고도 테스트를 수행하는 데 매우 유용할 수 있습니다.

프로그래머를 위한 흥미로운 질문입니다.Windows 또는 Mac과 같은 OS를 구축하는 데는 오랜 시간이 걸리겠지만 간단한 OS를 구축하려면 최선을 다할 수 있습니다.

  1. 어셈블리 언어, C 및 C++에 집중해야 합니다.당신은 이러한 언어에 대한 전문가가 되어야 합니다.
  2. 먼저 OS 작동 방식에 대한 좋은 책을 읽은 다음[Google it]에서 모든 정보를 읽으세요. 위키 OS
  3. YouTube에서 "어셈블리 언어로 자신만의 OS를 만드는 방법"을 검색하여 동영상을 시청하세요. 예.동영상
  4. Linux OS 소스 코드를 다운로드하여 직접 컴파일하고 코드를 직접 수정해 보세요.
  5. 이제 당신은 숙련된 OS 편집자입니다. 다운로드 미닉스 그리고 QNX 그들과 함께 개발을 시작하고 여기에서 그들의 문서를 받아보세요 미닉스 문서 그리고 QNX 문서

이제 OS 생성에 대한 석사 학위를 취득했습니다(완전히 조금 더 갈 필요는 없음). 이제 이 지식을 친구들에게 배포하고 그들의 도움을 받아 Mac, Linux 또는 Windows만큼 강력한 OS를 생성해 보십시오.

기본 운영 체제를 만들었다면 GUI를 만들거나 라이브러리를 포팅하는 데 리소스가 많지 않기 때문에 실제로 계속하기가 어렵습니다.하지만 내 생각에는 ToAruOS 많은 도움이 될 것입니다!

해당 OS 표면 아래의 코드는 정말 간단합니다!그러나 동시에 그는 카이로, 파이썬, (아직은 아니지만 곧) sdl과 같은 것을 포팅하고 공유 메모리를 만들었으며 자신만의 위젯 툴킷도 만들었습니다.모두 C로 작성되었습니다.

또 다른 흥미로운 OS는 혈통 OS.JamesM(뒤에 있는 사람)이 만든 것입니다. jamesM의 커널 튜토리얼.ToaruOS보다 더 많은 기능을 가지고 있지만 크기도 더 크고 혼란스럽습니다.

하지만 어쨌든 이 2개의 OS는 특히 ToAruOS에 많은 도움이 될 것입니다.

기본 운영 체제 작업을 시작했을 때 다음과 같은 기본 가이드가 필요했습니다. 기본 운영체제를 위한 디딤돌.머리가 풀리지 않도록 도와줬어요.

아무것도 없는 상태에서 만들고 싶다면(순수 어셈블리 코드)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top