목록OS/Project (5)
y0u_bat
[OS-6] OS 이미지 로딩 플로피 디스크 읽는 방법 섹터 = 1, 헤드 = 0, 트랙 = 0 섹터를 1에서 18까지 증가시키면서 읽음 섹터 18번까지 다 읽었으면 0번 헤드를 다 읽었으면 헤드 1증가 헤드 = 1, 섹터 = 1로 변경 섹터 1에서 18번까지 증가하면서 읽음 섹터 18번까지 다 읽으면 0번과 1번 헤드를 모두 읽었으므로, 트랙 1 증가 2번에서 5번과정을 79번 트랙까지 반복 최종 부트로더 소스코드 [ORG 0x00] [BITS 16] SECTION .text jmp 0x07C0:START total_sector_count: dw 1024 START: mov ax,0x07C0 mov ds,ax mov ax,0xB800 mov es,ax mov ax,0x0000 mov ss,ax mov ..
OS-4 운영모드와 메모리 관리 기법 x86와 x86-64 프로세스에서 지원하는 메모리 관리 기법은 크게 2가지이다. 세그먼테이션(Segmentation) 페이징(Paging) 둘다 모두 메모리를 나누는 것이고 차이점은 세그먼테이션은 원하는크기로 짤라 쓰는 방식이고, 페이징 같은경우에는 정해진 크기로 짤라져 있는 조각을 모아 원하는 크기로 관리하는 방식이다. 세그먼테이션은 세그먼트의 시작주소 or 디스크립터라고 불리는 자료구조의 위치를 설정 해야된다. 페이징은 CR3 레지스터에 페이지 디렉터리라 불리는 자료구조의 물리주소를 설정해야지 사용 가능하다. 리얼 모드의 메모리 관리 방식 최대 1MB까지 주소공간을 사용하며, 세그먼테이션만 지원한다. 세그먼트 크기는 64k로 고정이며, 세그먼트 시작 주소는 코드나..
OS-3 레지스터 레지스터 종류 AX,BX,CX,DX,SI,DI,SP,BP,R8~R15 - 범용 레지스터 CS,DS,ES,FS,GS - 세그먼트 레지스터 CR0,CR1,CR2,CR3,CR4 - 컨트롤 레지스터 범용 레지스터 역할 AX - 산술 연산을 수행할때 누산기로 사용 BX - 데이터의 어드레스를 지정할때 데이터 포인터로 사용 CX - 루프문 or 문자열 카운터로 사용 DX - I/O 어드레스를 지정할때 사용, 산술연산을 수행할때 보조 레지스터로 사용 SI - 문자열에 관련된 작업을 수행할때 원본 문자열의 인덱스로 사용 DI - 문자열에 관련된 작업을 수행할때 목적지 문자열의 인덱스로 사용 SP - 스택의 포인터로 사용 BP - 스택의 데이터에 접근할때 데이터의 포인터로 사용 R8~R15 - x86-..
OS-2 운영모드 운영모드 5가지 운영모드가 존재한다. 운영모드의 종류 리얼모드 - 프로세스 초기상태(전원/리셋)이고 16비트로 동작하며 8086프로세스와 호환 되는 모드이며 최대 1m의 주소공간을 지원한다 보호모드 - 32비트 모드로 동작하며 세그먼트,페이징,멀티태스킹 등의 기능 제공되고 4GB의 주소공간을 지원한다 IA-32e모드 - 32비트 호환모드와 64비트 모드의 두가지 서브모드로 구성되며, 16EB의 주소공간을 지원한다. 시스템 관리 모드 - 전원 관리나 하드웨어 제어 같은 특수 기능을 제공한다. 가상 8086 모드 - 보호모드 내부에서 가상의 환경을 설정하여 리얼 모드처럼 동작한다. 운영모드의 전환 전원/리셋 -> 프로세스는 리얼모드 진입 리얼모드 -> 보호모드 (cr0의 PE비트를 1로 설..
Mac OSX에서 환경구축 명령어 라인 개발자 도구 설치 Cross-compiler를 build하기 위해 Native Compiler가 필요하다. OSX 10.8 Mountain Lion부터는 추가 설치가 필요하다. $xcode-select --install Cross-compiler Build $export TARGET=x86_64-pc-linux $export PREFIX=/opt/cross (설치경로) Home Directory의 .bash_profile or .bashrc 파일을 편집하여, Cross-compiler directory를 PATH 환경변수에 추가한다. GNU Binutils Bulid OS X의 Mach-O형식을 지원하지 않기 때문에 Port를 이용해 설치하는 경우 as ld 등 명..