2016-10-12 4 views
3

베어 본 OS에서 데이터를 내보내는 가장 간단한 방법은 무엇입니까?베어 본에서 데이터를 내보내는 가장 간단한 방법 OS

학생들은 가능한 한 정확하게 여러 코드 세그먼트를 시간대에 따라 계산하도록 요구하는 컴퓨터 아키텍처 코스에 대한 과제를 개발 중입니다. 제 생각은 OSDev 위키 (http://wiki.osdev.org/Bare_Bones)의 "Bare Bones"/ "Hello World"튜토리얼에 시간을 맞추어 코드를 삽입하는 것입니다.이 튜토리얼은 최소한의 OS 커널에서 테스트중인 코드를 효과적으로 실행합니다.

이 기술은 잘 작동합니다. 그러나 현재, 유일한 출력 옵션은 VGA 텍스트 모드입니다. 학생들이 데이터를 분석/그래프로 표시 할 수 있도록 실험 결과를 저장하고 싶습니다.

현재 "미니 OS"를 USB 플래시 드라이브에 설치하고 플래시 드라이브에서 부팅하고 있습니다. 필자의 원래 아이디어는 BIOS를 사용하여 실험 데이터를 USB 드라이브에 다시 저장하는 것이 었습니다. 그러나 보호 모드에서 BIOS 루틴을 호출하는 것이 중요합니다 (예 : 실제 또는 V86 모드로 전환해야 함).

내가해야할 일은 원시 이진 데이터를 다른 컴퓨터에서 읽을 수있는 곳으로 덤프하는 것입니다. 필자는 파일 시스템이나 그런 멋진 것을 필요로하지 않습니다. USB 플래시 드라이브 (또는 다른 외부 장치)에 액세스하는 비교적 간단한 방법이 있습니까, 아니면 완전한 USB 드라이버 또는 네트워크 드라이버 스택을 찾고/쓸 필요가 있습니까? 아니면 더 간단한 해결책이 있습니까?

이 게시물 (Real mode BIOS routine and Protected Mode)에는 PwnOS; 코드에 대한 링크가 끊어졌습니다.

+1

x86 기반이기 때문에 실제 하드웨어 타이밍은 전원 관리 (터보 포함) 때문에 실제로 어렵습니다. RDTSC (순서 재 지정을 방지하는 직렬화 명령 사용)를 사용하여 참조주기를 계산하거나 하드웨어 성능 카운터를 사용하여 실제 코어 클럭주기를 계산할 수 있습니다. IIRC에서 [x86 태그 위키] (http://stackoverflow.com/tags/x86/info)에 대한 링크가 있습니다. 하이퍼 스레딩 및 터보가 비활성화 된 일반 OS에서 좋은 결과를 얻을 수 있으며 CPU 선호도가 동일 코어에 프로세스를 유지하도록 설정됩니다. 타이머 인터럽트는 여전히 중요한 요소 일 수 있습니다. –

+0

perf- 카운터를 사용하여 사용자 공간 주기만 계산하려면 http://stackoverflow.com/questions/39864416/perf-overcounting-simple-cpu-bound-loop-mysterious-kernel-work도 참조하십시오. –

답변

2

USB 드라이버는 매우 어렵습니다. 그러나 네트워크 드라이버에 대해 언급 했으므로 직렬 포트를 살펴볼 수 있습니다. USB보다 프로그램하기가 훨씬 쉽습니다.

osdev wiki에는이 주제에 대한 충분한 정보가 있어야합니다.

+0

그건 데이터를 듣고있는 직렬 케이블의 다른 쪽 끝에 제 2 기계가 있다는 의미일까요? 맞습니까? – Zack

+0

예, 다른 컴퓨터가 필요합니다. – glauxosdever

+0

에메이터 내부에서 베어 본 OS를 실행할 수 있다는 것을 잊어 버렸습니다. 이렇게하면 호스트 OS의 베어 본 OS에서 직렬 출력을 읽을 수 있습니다. – glauxosdever

관련 문제