검색결과 리스트
Programming/OS Development에 해당되는 글 22건
- 2009.03.08 Real Mode, Protected Mode
- 2009.03.08 1. 부트스트랩
글
Real Mode, Protected Mode
그리고 일괄 처리 밖에 할 수가 없다. 모든 커널은 컴퓨터에 전원이 들어온 후 리얼 모드에서 여러가지 하드웨어적인 세팅을 마친 후 Protected Mode로 CPU를 전환한다. 어떤 계열이든 처음에는 Real Mode시에 CPU는 하드웨어 적으로 8086 처럼 동작을 한다. 따라서 OS 첫 부분은 8086과 동일 하게 코딩해야 한다.
Protected Mode 는 Windows, Linux가 CPU에서 동작되고 있는 모드이다.
이 모드는 분할 처리가 가능하다. 그리고 Protected Mode에는 유저모드 와 커널 모드 두 가지가 있다. 커널모드 와 유저모드 를 왔다갔다 하면서 빠르게 실행을 하기 때문에 사용자는 동시에 진행되는 것
처럼 느껴진다. 커널 모드의 영역은 유저 모드 프로그램에서는 정해진 루트 외에는 접근이 불가능하다.
커널 루틴은 자원의 낭비와 메모리의 낭비를 최소화 한다.
'Programming > OS Development' 카테고리의 다른 글
naked 함수 (0) | 2009.05.11 |
---|---|
Stack Frame (0) | 2009.05.11 |
NASM - 1 (0) | 2009.03.11 |
Segmant and Offset (0) | 2009.03.08 |
1. 부트스트랩 (0) | 2009.03.08 |
글
1. 부트스트랩
1. NASM 다운로드 : Netwide Assembler 컴파일러
http://sourceforge.net/projects/nasm 에 가서 download 메뉴를 누른다.
package 아래부분에 win32 binaries 를 다운 받아서 압축을 푼다.
2. NASM 환경변수 추가
"내컴퓨터" 마우스 오른쪽 버튼 눌러서 "속성" 메뉴 선택
"시스템 등록 정보"에서 "고급"탭 클릭
"환경 변수" 버튼 클릭 후 PATH선택하여 편집을 누르고 NASM의 압축이 풀린 경로명을 적어준다. ex) ~~~;c:\nasm
3. 부트 이미지 만들기
책에 있는 소스를 치고, 부트 이미지 만들 소스가 있는 위치로 폴더를 이동해서 ex) c:\OS 컴파일을 한다.
nasm -f bin -o boot.bin boot.txt 와 같이 컴파일을 하여 오류가 없을 경우 실행 파일이 만들어지게 된다.
설명 : -f bin 옵션 -> 제작할 실행 파일이 exe나 com등의 일반 dos실행 파일이 아닌 바이너리 실행파일 이라는 것을 어셈블러에게 알려준다.
exe나 com은 도스에서 램에 로드하고 실행하는 등 운영을 편하기 하기 위해 기계어로 된 실행파일의 머리부분에 헤더를 놓아 정보를 기록해 놓거나 하는 조작을 해놓은 것이다. 우리는 커널을 제작할 것이므로 그런 형식을 사용 안한다.
-o boot.bin 옵션은 실행 파일의 이름을 정해준다.
boot.txt 직접 작성한 소스 파일이름
4. USB 에 쓰기
http://www.chrysocome.net/dd 에 가서 리눅스에서 usb부트 디스크를 만들때 쓰는 dd 명령을 Windows 환경에서도 쓸 수 있게 해주는 프로그램을 다운 받는다. 압축을 풀고 거기 있는 dd.exe와 Disiko.dll 파일을 C:\Windows 로 옮긴다.
그리고 나서 "시작-실행" 에서 cmd를 입력하고, 명령 프롬프트에서 dd --list를 입력한다.
그러면 해당 드라이버를 보면 디바이스 명칭을 볼수 있다.
그럼 이제 USB디바이스에 dd명령을 이용하여 부트이미지를 usb로 옮긴다.
dd if=c:\OS\boot.bin of=\\.\g: 를 입력하면 c:\OS 폴더의 boot.bin 파일이 g:로 복사가 된다.
5. VMware로 실행하기
먼저 OS 개발 환경을 위해 VMWare를 설치한다. 그리고 거기에 OS없는 VM을 만들어서 마지막 부분에서 Customize Hardware 를 선택한다.
그리고 New CD/DVD메뉴 와 NetworkAdapter메뉴에 Connect at power on 에 체크를 해제한다.
Floppy 메뉴를 선택하여 Coonect at power on 에 체크를 한다. 그리고 두번째 Connection 에서 Use floppy image file 을 선택하고
Browse를 선택해서 컴파일한 boot.bin을 선택하여 확인을 한다. 이제 설정한 VM을 수행하면 부팅이 될것이다.
기계어 코드 EA0F00C007 은 바이트 수가 0xEA, 0x0F, 0x00, 0xC0, 0x07 로 5바이트 영역을 차지힌다.
E = 1111, A = 1010 8bit 이므로 1Byte
http://www.haiku-os.org/community/forum/how_to_install_haiku_to_usb_flash_drive_from_windows
http://shounen.ru/soft/flashnul/
'Programming > OS Development' 카테고리의 다른 글
naked 함수 (0) | 2009.05.11 |
---|---|
Stack Frame (0) | 2009.05.11 |
NASM - 1 (0) | 2009.03.11 |
Segmant and Offset (0) | 2009.03.08 |
Real Mode, Protected Mode (0) | 2009.03.08 |