OPEN 소스

OS 개발 관련 사이트

페이지 정보

profile_image
작성자 최고관리자 작성일 12-12-27 15:37 조회 1,080 댓글 0

본문

OS 는 디스크로 부터 읽혀져 메모리로 올라 가야지만 실행이됩니다.
보통 디스크의 부트영역이라는 곳이 있는데 512KB 정도가 되는 공간이 있습니다.
OS가 올라 가기에는 너무 적은 용량이죠!

이 영역에는 보통 OS 로더라는 것이 올라갑니다.
물론 C로 작성해도 가능은 하지만 이 로더는 보통은 어셈블러로 작성을 많이 합니다.
이 로더는 단지 OS의 핵심을 메모릴로 올려 주는 단순한 역할을 하게 됩니다.

그후 OS의 핵심인 커널이 제어권을 인계받아 처리하게 됩니다.

지금 현재의 PC는 BIOS --> DISK(부트영역) -- OS(커널)
이렇게 그 제어권을 넘기게 되어 있답니다.

보다 자세한 것은 아래 사이트를 참조하시면 OS를 만드는데 아주 유용하리라 봅니다.

===============================================================================

 

OSRC(OS Resource Center)- http://www.nondot.org/sabre/os/articles
: Boot Process부터 파일포맷, 디바이스 드라이버등 OS제작에 필수적인 자
원들과 자료들이 하드웨어, 소프트웨어 카테고리로 나누어 일목요연하게 정
리된 리소스 센터입니다.

 

OS Developer site - http://www.osdev.org/
: OS제작자를 위한 디벨로퍼 사이트로 각종 포럼, 강좌, 소스코드등이 링크
된 유용한 사이트입니다.

The Triple Fault Club - http://www.execpc.com/~geezer/os/
: 보호모드 및 OS제작에 관련된 메뉴얼 및 가이드, 그리고 공개 커널소스
등이 관련된 링크가 집대성된 사이트입니다.. 대부분의 공개 운영체
제 커널 소스등은 이곳에서 모두 찾을 수 있습니다... 강추~!!

SIGOPS - http://www.acm.uiuc.edu/sigops/roll_your_own/
: 초보자들을 대상으로 OS를 제작하기 위한 단계적인 강좌와 예제들을 소개
한 포럼입니다..저는 boot strap을 작성하는 루틴에 관해서 처음 이곳에
서 배웠죠..
처음시작하시는 분들과 초보자들에게 좋은 사이트더군요..

John Fine's home page - http://www.execpc.com/~geezer/johnfine/index.htm
: OS를 제작하기 위해선 막바로 하드드라이브에 설치하는 코드를 만들
기 보다는 먼저 Floppy로 부팅할 수 있도록 부트코드를 작성하고 플로피에
서 OS이미지가 제대로 동작하는지 테스트를 하는 것이 좋습니다.
이때 꼭 필요한 것이 플로피 디스크 섹터에 자신이 원하는 바이너리 이미지
를 기록하는 툴이죠.. OS를 제작하는 사람들 대부분이 쓰는 툴이 John
Fine가 만든 partcopy라는 툴입니다.
John Fine의 홈피에 들어가시면 partcopy뿐만 아니라 보호모드, 시스템
유틸리티, nasm등 시스템 관련 자료와 툴들을 얻을 수 있을 것입니다.

 

OS제작을 위한 FAQ사이트 - http://www.mega-tokyo.com/os/os-faq.html
: 역시 처음 OS를 제작하기 위해 어떠한 사항을 고려하고 무엇을 시작해
야할지등을 FAQ형태로 설명해주는 사이트입니다.

K-OS Developer Site - http://members.tripod.lycos.co.kr/kos/main.htm
: 한 3, 4년전인가요.. 하이텔 프로그래밍 동호회에 순수 어셈블리로만 작
성된 K-OS라는 아주 작은 크기의 운영체제가 강좌와 함께 소스코드가 올
라 온적이 있었습니다.. 솔직히 워낙 작은 크기의 프로그램이라 부팅하는
것 빼고는 별반 기능이 없는 dummy수준의 OS였지만 보호모드를 이용하여
태스크 스위칭을 하는등 당시로서는 자료 구하기조차 힘든 로우 레벨 프로
그래밍의 기법등이 쓰여져 신선한 자극이 되었던 것이 생각나네요..
이 한국형(?) OS를 좀더 발전적으로 개발하고자 사람들이 모여 홈페이지
를 만들었더군요.

Bellona2 Community - http://www.freechal.com/bellona2
: OS제작에 관해서는 거의 전무이다시피한 국내출판시장에 처음으로 32비
트 보호모드를 이용한 OS제작에 관한 책이 나왔더랬습니다. 바로 "OS제작
의 정석"이라는 책이지요..
공룡서적이라 불리는 Silberschatz의 "Operating System Concepts"가 이
론서로서는 독보적인 서적이라면 Tananbaum의 "Operating Systems:
Design and Implementation"은 실제 구현을 설명한 책으로서는 최고
의 책이라고 생각합니다.
물런 그런 세계 최고의 양서들과는 비교할 수 없지만, 그나마 우리나라에
OS제작에 관한 서적이 나오기 시작했다는 것은 매우 고무적인 현상이죠.
아쉬운 것은 구현기법을 설명하곤 있지만, 저자가 bellona2 커널은 비공
개로 해놔서 이미지 파일은 구할 수 있으되 소스를 볼 수 없다는게 아쉬
운 점이군요.. --;;;

그외 XINU, MMURL등 자체로 훌륭한 OS커널이 공개된 사이트와 포럼들이 무지 무지~~ 많지만, 위의 OS리소스 센터와 OS제작자 사이트에 가면 Link에 연결되어 있기때문에 따로 여기서 소개하진 않겠습니다..
comp.os.minix나 comp.os.linux등의 뉴스 그룹에 가셔도 좋은 정보를 얻으실 수 있을것입니다.

아참~.. 아래에 미처 쓰지 못했는데 OS를 제작하다보면 하드웨어 제어 코드나 파일 시스템을 다루는 루틴등은 공개된 코드들을 참고하는 것이 훨 수월할 때가 있습니다.
이때 "http://sourceforge.net/"나 "http://www.gnu.org/software/software.html" 와 같은 공개 소프트웨어의 소스 코드와 패키지등을 모아놓은 사이트에서 참고하면 도움이 많이되죠..
그리고 OS제작에 필수적인 파일포맷에 관해서는 http://www.wotsit.org/에 거의 모든 파일포맷에 관한 자료가 정리되어 있습니다.
아마 여기계신 대부분의 님들이 이미 알고 계시겠지만, 그리고 참고하시라 말씀드립니당~..


OS제작에 관한 링크를 계속 해서 올릴테니 참고하세요.

Linux의 커널에 관한 정보가 많이 있습니다.
http://www.kernelkorea.org/

Lilo의 부팅 과정에 관한 설명이 Assembly와 함께 자세하게 설명되어 있습니다.
http://user.chollian.net/~lase/

OS 제작 사이트 입니다.
http://www.poweratomic.de/
http://www.menuetos.org/

_____________________________________________
www.asmlove.co.kr 에서 퍼왔습니다.

댓글목록

등록된 댓글이 없습니다.

게시물 검색
전체 49건 1 페이지
  • IEChooser-Edge 브라우저의 IE Mode에서 발생할 수 있는 문제와 해결방법
    IE Mode에서 사이트 디버깅IE Mode에서 디버깅은 F12 IEChooser를 통해서 가능합니다. F12 IE Chooser는 본래 IE 기반 오피스 애드온 디버깅 프로그램이었습니다. Windows 10과 11 부터는 기본적으로 윈도우에 추가되며 IE Mode 웹사이트를 디버깅하는데 사용할 수 있습니다.실행하려면 키보드의 [Windows + R]을 눌러주세요.실행 환경에 따라 다음과 같이 입력 후 [확인] 버튼을 클릭합니다.64비트 환경 : C:\Windows\SysWOW64\F12\IEChooser.exe32비트 환경 : C:\Windows\System32\F12\IEChooser.exe디버깅할 사이트를 선택하시면 디버깅이 시작됩니다.…
    작성자최고관리자 시간 01-06 조회 826
  • a태그 주소 추출 javascript 정규식
    (http(s)?:\/\/)([a-z0-9\w]+\.*)+[a-z0-9]{2,4}(\.[^(\n|\t|\s,)]+)+) /(((http(s)?:\/\/)\S+(\.[^(\n|\t|\s,)]+)+)|((http(s)?:\/\/)?(([a-zA-z\-_]+[0-9]*)|([0-9]*[a-zA-z\-_]+)){2,}(\.[^(\n|\t|\s,)]+)+))+   (href=)('|\")?([^<>\s'\"]*)('|\"|\s|)   (a target="_blank" href=)('|\")?([^<>\s'\"]*)('|\"|\s|)…
    작성자최고관리자 시간 04-09 조회 2701
  • code QnA
    개발언어, db 관련 질문 답변형식으로 설명함…
    작성자최고관리자 시간 06-19 조회 2437
  • 새로운 비트코인(알트코인) 제작을 위한 완벽가이드
    아직 가이드 대로 직접 만들어보진 않아서 완벽한 가이드인지는 모르겠지만비트코인 관련 공부하다가 번역기 반, 어설픈 의역 반으로 올려봅니다원제 : Complete Guide on How to Create a New Alt Coin출처 : https://bitcointalk.org/index.php?topic=225690.0저기 밖에 수많은 쓰레기 코인이 널려있어서 나는 새로운 알트코인 만드는 법을 가르쳐주기위해 이 코스를 만들기로 결정했다.그것은 아주 쉽고, 나같은 경우에는 보통 2시간 내에 만들 수 있다.C++프로그래밍에 대한 기본적인 지식이 필요하다. 전문가일 필요는 없지만, 기본적인 컴파일링 에러와 이를 수정하는 방법은 이해해야 한다.다음 단계를 따라서 새 알트코인을 만들어본다 :준비단계 :라이트코인의 전체 소스코드를 다운로드 한다.github에서 찾을 수 있다.구글에서 검색하면 찾을 수 있다.만약에 윈도우를 사용한다면, 이 스레드의 단계를 따른다 :https://bitcointalk.org/index.php?topic=149479.0환경 및 라이브러리를 설정하고 라이트코인을 컴파일 한다.컴파일 할 때(그리고 실행할 때) 성공하면, 환경 설정이 잘 된 것이다.코인설계 :이제 코딩을 하기전에 환경을 설정했으므로, 코인을 설계해야 한다.이는 간단한 수학계산이지만, 코딩의 매개변수가 필요하다.기본적으로 원하는 것을 결정해야 한다.코인의 이름.우리의 예제에서 Abc coin이라고 부르자.또한, 기호를 경정하고, 우리는 이것을 "ABC"라고 부른다.블록타임.블록 간의 평균 목표시간이다. 보통 15초에서 2분 사이로 설정한다.원하는 경우 비트코인과 같이 10분을 할 수도 있지만 너무 길다.difficulty retarget time이것은 심각한 instamine 문제를 일으킬 수 있기 때문에 중요하다.보통 1시간에서 1일 사이다.(diff retarget time)/(block time)은 블록의 수를 알려준다.이것은 고려해야 할 중요한 매개변수다.블록 당 초기 코인보통 2 ~ 100으로 설정된다. 원하는 것을 설정하면 된다.또한 블록 수를 기준으로 블록 당 코인을 만들 수 도 있고 무작위로 (JKC/LKY 등) 코인을 만들 수도 있다.블록 당 코인이 반으로 줄어드는 기간보통 6개월에서 3년이다. 원하는 것을 설정하면 된다.포트(2개)연결 포트와 RPC 포트가 필요하다.공통 앱에서 사용되지 않는 것을 선택한다.구글에서 특정포트 사용에 대해서 검색할 수 있다.초기 난이도 등 조정할 수 있는 몇가지 다른 것들이 있지만, 일반적으로 나는 이것들을 신경쓰고싶지 않다.이제 이러한 매개변수가 정의되면, 한가지 중요한 점은 1달, 1년 등에서 생성된 블록/코인 수를 계산하고 총 동전이 생성된다는 것이다.이것은 코인의 전반적인 작동방식을 알려주고 위의 매개변수를 다시 조정할 수 있다.코드변경 부분 :시작하기 전에 Litecoin의 전체 디렉토리를 Abccoin으로 복사한다.그런 다음 Abccoin에서 코드를 수정한다.코드를 변경하려면 다음 단계를 따른다 :#1. Abccoin / src dir에서 "litecoin"을 검색하고 대부분을 "abccoin"으로 변경한다.대소 문자를 구별하여 교체해야 할 수도 있다.모두를 대체 할 필요는 없지만 대부분을 교체해야 한다.smallchange 코드를 참조하려면 먼저 필요한 변경 사항을 https://github.com/bfroemel/smallchange/commit/947a0fafd8d033f6f0960c4ff0748f76a3d58326 에 문의한다.참고 : smallchange 1 차 커밋에는 아래에서 개략적으로 설명 할 많은 변경 사항이 포함되어 있지 않지만 변경해야 할 사항에 대한 좋은 참조이다.#2. Abccoin / src dir에서 "LTC"에 대한 검색을 수행하고 "ABC"로 변경한다.#3. 포트를 변경한다 : 동전 디자인에서 정의한 포트를 사용하고 다음 파일을 변경한다 :연결 포트 : protocol.h 및 init.cpprpc 포트 : bitcoinrpc.cpp 및 init.cpp#4. main.cpp에서 매개 변수를 변경한다.블록 값 (GetBlockValue ()에서)블록 시간 (GetBlockValue () 직후)diff retarget time (GetBlockValue () 직후)instmine을 피하기 위해 diff retarget 스케일을 조정한다 (GetNextWorkRequired ()에서).마지막 항목은 Luckycoin 코드를 참조한다. 그러면 어떻게 수행되는지 볼 수 있다.블록 내의 임의의 코인 값에 대해서는 JKC 및 Luckycoin 코드의 GetBlockValue () 함수를 참조한다.#5. 코인 디자인에 따라 main.h의 값을 조정한다 :max coin countdPriority#6. transactionrecord.h에 ​​트랜잭션 확인 수를 변경한다 (3 확인 트랜잭션 등을 원할 경우).또한 main.h / cpp에서 채굴 된 블록의 성숙 시간에 영향을주는 COINBASE_MATURITY를 변경한다.#7. 제네시스 블록을 만든다. 어떤 사람들은 거기에 머물러 있지만 정말 쉽다.내부에서 LoadBlockIndex () 함수를 찾는다 :최근 뉴스 단계로의 역설 (pszTimestamp).최신 유닉스 시간을 얻고 (google을 사용하여) block.nTime을 입력한다.nNonce를 설정한다 (실제로는 중요하지 않음).당신은 그것을 사용하고 싶다면 testnet에 대해서도 time / nonce를 변경할 수 있다.완료되면 저장한다.이제 제네시스 블록은 해쉬 체크와 머클 루트 체크와 일치하지 않을 것이다.처음으로 컴파일 된 코드 (데몬 또는 qt)를 실행하면 "assertion failed"라고 표시된다. 프로그램을 종료하고 config.dir (AppData / Roaming 아래)으로 이동하여 debug.log를 열고 "block.GetHash () ="다음에 해시를 가져 와서 main.cpp, hashGenesisBlock의 beginnig에 복사하여 붙여 넣는다. 또한 같은 로그 파일에서 Merkle 루트를 가져 와서 LoadBlockIndex ()에서 다음 코드의 ... 위치에 붙여 넣는다.Quote###############################################assert(block.hashMerkleRoot == uint256("0x..."));###############################################코드를 재 컴파일하고 제네시스 블록을 만들었다!그런데, "txNew.vout [0] .nValue ="를 정의한 블록 당 코인으로 변경하는 것을 잊으면 안된다. 50으로 남겨 두지 않아도 된다. 블록 당 코인과 일관성을 유지한다. (그전에 해시 및 m- root를 조절한다. 그렇지 않으면 다시 변경된다).또한 알림 / 체크 포인트 키를 변경해야한다. 이것은 동전 유형 및 버전에 따라 다르며 main.cpp, main.h, alert.cpp 및 checkpoint.cpp에서 찾을 수 있다.#8. base58.h에 올바른 주소 시작 문자를 설정한다. 원하는 letter을 찾으려면 시행 착오를 원할 수 있다. letter 위치를 정확히 계산할 수 없다.-> List of address prefixes : https://en.bitcoin.it/wiki/List_of_address_prefixessendcoinsentry.cpp에서 해당하는 "starts with"로 변경한다.signverifymessagedialog.cpp의 예를 변경한다.#9. 체크 포인트 : 처음 체크 포인트 검사를 사용하지 않으려는 경우 그렇지 않으면 멈추게된다.여러 가지 방법으로 사용 중지 할 수 있다. 나의 방법은 :open checkpoints.cpp함수가 3 개 있고, normal retrn을 주석 처리하고, 다음과 같이 true, 0 또는 null 중 하나를 반환한다.다음과 같이 :Quote###############################################bool CheckBlock(int nHeight, const uint256& hash){if (fTestNet) return true; // Testnet has no checkpoints MapCheckpoints::const_iterator i = mapCheckpoints.find(nHeight);
    if (i == mapCheckpoints.end()) return true;
    // return hash == i->second;
    return true;
    }

    int GetTotalBlocksEstimate()
    {
    if (fTestNet) return 0;

    // return mapCheckpoints.rbegin()->first;
    return 0;
    }

    CBlockIndex* GetLastCheckpoint(const std::map<uint256, CBlockIndex*>& mapBlockIndex)
    {
    if (fTestNet) return NULL;

    BOOST_REVERSE_FOREACH(const MapCheckpoints::value_type& i, mapCheckpoints)
    {
    const uint256& hash = i.second;
    std::map<uint256, CBlockIndex*>::const_iterator t = mapBlockIndex.find(hash);
    if (t != mapBlockIndex.end())
    // return t->second;
    return NULL;
    }
    return NULL;
    }
    ###############################################이제는 사용할 수 없다. 모든 것이 작동하면 50 개의 블록을 사전 예약하고 일부 해시를 추출하여 검사 점에 넣고 이러한 기능을 다시 활성화 할 수 있다.그게 끝이다. 끝까지 컴파일 할 필요가 없다. 컴파일 오류가 많이 발생할 수 있다.아, 아이콘 :#10. 코인에 대한 멋진 이미지를 찾은 다음 256x256 아이콘 / 이미지를 만든다. src / qt / res / icons에서 대체 할 5 개의 이미지가 있고 src / qt / res / images에서 1을 대체 (스플래시) 할 수 있다.#11. 또한 Qt / 양식의 파일을 편집한다. 이 파일들은 도움 등을위한 파일이며, 멋지게 보이게하고, litecoin 것보다 코인 이름을 표시한다.#12. 이제 편집을 위해 :qt : abccoin에서 .pro 파일을 수정하고에서 make 프로세스를 수행한다.https://bitcointalk.org/index.php?topic=149479.0데몬 : 시스템의 makefile 중 하나를 업데이트한다. 나의 경우에는 mingw32 쉘을 사용한다.이제 끝이다, 짜잔, 당신은 이제 당신의 알트코인을 가지고있다!…
    작성자최고관리자 시간 01-13 조회 5495
  • 부트스트랩 : 폼
    bootstrap : Page 1-5 Forms 부트스트랩 1-5번째 폼부트스트랩은 웹디자인을 쉽게하기 위해 미리 몇가지의 CSS의 클래스 선택자와 정의된 스타일시트, 자바스크립트 플러그인을 모은 강력한 프론트엔드 프레임워크입니다. <부트스트랩 소개와 다운로드 중 참조...>출처: http://the3.tistory.com/53 [The v3] …
    작성자최고관리자 시간 11-29 조회 2941
  • WebRTC 실험 및 데모
     확장 가능한 오디오 / 비디오 브로드 캐스트데모출처확장 가능한 화면 방송데모출처확장형 비디오 브로드 캐스트데모출처확장 가능한 파일 공유데모출처확장형 스크린 + 오디오 방송데모출처 …
    작성자최고관리자 시간 11-08 조회 2953
  • 마우스오버 회색이미지 컬러이미지로
    마우스오버 회색이미지 컬러이미지로  CSS 스타일과 jQuery 플러그인을 나타내는 그레이 스케일 이미지. …
    작성자최고관리자 시간 05-26 조회 1417
  • 그누보드5푸시앱 Free 1.1
    http://www.gnuapp.com/bbs/board.php?bo_table=download&wr_id=7 …
    작성자최고관리자 시간 05-23 조회 1831
  • XE 푸시 앱
    https://xepushapp.com/index.php?mid=board_SbEm14 …
    작성자최고관리자 시간 05-23 조회 1340
  • 실시간 채팅 소스
    http://tutorialzine.com/2014/03/nodejs-private-webchat/ …
    작성자최고관리자 시간 03-18 조회 1372
  • 반응형 디자인 템플릿
    반응형 디자인 템플릿  https://html5up.net/ …
    작성자최고관리자 시간 02-13 조회 1376
  • 부트 스트랩
    디자인 css 툴   검색하면 무료 디자인 테마도 많다.  http://getbootstrap.com/2.3.2/   …
    작성자최고관리자 시간 12-16 조회 1258
  • Open API 개방목록 - 문화재청
    종류 OPEN API URL  문화재검색 목록 http://www.cha.go.kr/cha/SearchKindOpenapiList.do 문화재검색 상세 http://www.cha.go.kr/cha/SearchKindOpenapiDt.do 문화재 이미지검색 http://www.cha.go.kr/cha/SearchImageOpenapi.do 문화재 동영상검색 http://www.cha.go.kr/cha/SearchVideoOpenapi.do 문화재 나레이션검색 http://www.cha.go.kr/cha/SearchVoiceOpenapi.do 사이버 문화재 탐방 동영상검색 http://www.cha.go.kr/cha/openapi/selectCyberVideoList.do 문화재 종목별 서비스 http://openapi.cha.go.kr/openapi/soap/crlts/KndCrltsService?wsdl 문화재 시대별 서비스 http://openapi.cha.go.kr/openapi/soap/crlts/KndCrltsService?wsdl 문화재 지역별 서비스 http://openapi.cha.go.kr/openapi/soap/crlts/KndCrltsService?wsdl 문화재 통계 서비스 http://openapi.cha.go.kr/openapi/soap/crlts/KndCrltsService?wsdl 문화재 위치정보 http://www.gis-heritage.go.kr/openapi/xmlService/spca.do…
    작성자최고관리자 시간 12-14 조회 2003
  • 그누보드 사용방법
    http://itnanum.com…
    작성자최고관리자 시간 08-10 조회 1757
  • 정규식 찾기
    문자열 문자에 정규식 찾기

     

    http://regexr.com/한글[가-힣]한글 문장 .*[가-힣]+.*한글제외하고 전부 [^\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F]+var REG_alpha = /^[A-Za-z]*$/ ;       //영어 알파벳. var REG_alphanumeric = /^[A-Za-z0-9]*$/ ;  //영어 알파벳과 숫자.  var REG_alphanumeric_underbar_hyphen =  /^[_A-Za-z0-9+]*$/ ;  //영어 알파벳과 숫자, 밑줄, 하이픈.[출처] [정규식] 영어만, 영어+숫자만, 영어+숫자+'-'+'_' |작성자 차카게 …
    작성자최고관리자 시간 07-26 조회 1705

회원로그인

Copyright © 2001-2016 ITNANUM. All Rights Reserved..