R&D 556

ARM register

In this chapter, we can learn ARM's basic operation with registers. On the ARM processor there are 17 registers always available in any mode and 18 registers in a privileged mode. Each mode has a set of extra registers called banked registers. When mode is changed banked registers are swapped in 예를 들어, User mode일 때 r0~r15 까지는 범용 레지스터로 사용할 수 있다. 하지만 r13, r14, r15는 특별하게 취급되기도 한다. 따라서 일반적으로 r13~r15..

R&D/OS 2013.06.27

부트로드 만들기 예제

부트로드 예제 만들기 가상화가 보편화 되면서 부트로더, 커널 등을 개발하고 테스트하는 것이 쉬워 졌다. 부트로더는 16bit 로 동작하며, 0x7c00 주소의 instruction을 실행한다. 왜 0x7c00 일까요?컴퓨터가 켜지고 BIOS가 실행되면, BIOS는 디스크가 "bootable" 한지를 체크하게 된다.이 때 boot sector(디스크의 첫번째 sector?)의 511 bytes, 512 bytes를 읽게 된다해당 위치에 0x55, 0xAA (Magic code)가 있으면 부트로드로 간주하고, 해당 sector를 메모리 공간 0x0000:0x7c00(segment 0, address 0x7c00)로 로드한다. 다음 코드는 아무런 동작도 하지 않은 부트로드이다. 예제코드(bootloader.a..

R&D/OS 2013.05.06

리눅스 부팅 프로세스

1.1 리눅스 x86 부팅 과정 시스템에 전원이 들어와서 새롭게 시작되는 것을 부팅(booting)이라고 하며, 이 과정을 부트스트랩(bootstrap)이라고 한다. 이는 운영체제의 최소부분을 주 메모리 공간에 로드하여 프로세서(CPU)가 이를 실행할 수 있도록 하는 것을 의미한다. 이러한 부트스트랩 코드는 어셈블러로 작성되어 있으며, (1)커널 자료구조 초기화, (2)스택/레지스터 초기화를 하고 C코드(start_kernel)함수가 실행할 수 있도록 만들어 준다. 커널 부팅 과정은 크게 3가지로 1단계: BIOS 동작, 2단계:부트로드 실행, 3단계:리눅스커널 부팅 로 이루어져 있다. o 1단계: BIOS 동작 1. 컴퓨터 하드웨어에 대한 테스트를 수행한다(POST) 2. 하드웨어 장치를 초기화한다. ..

R&D/OS 2013.05.06

CentOS 6.3 에서 Xen Build

o CentOS 6.3에서 Xen Hypervisor 빌드 CentOS 6.3 x86_64 버전을 minimal 로 설치함 ¡ Xen 소스 기반 빌드 빌드 툴 설치 #(CentOS5)용 yum groupinstall "Development Libraries" -> CentOS6에서는 "Additional Development"로 변경 yum groupinstall "Additional Development" yum groupinstall "Development Tools" yum install transfig wget tar less texi2html libaio-devel dev86 glibc-devel e2fsprogs-devel gitk mkinitrd iasl xz-devel bzip2-devel..

R&D/Hypervisor 2013.04.09

[Xen Interface Manual] 1.1 Virtual Architecture

1. Xen Interface Manual 1.1 Virtual Architecture o CPU state 모든 privileged state 는 Xen에 의해서 처리된다. 따라서 Guest OS는 CR3[1] 나 EFLAGS 에 대한 direct access가 제한된다. 이를 해결하기 위해선 Guest OS는 Hypercall을 통해서 필요한 작업들을 수행할 수 있다. ToDO: CPU ring 값과 의미 o Exception Guest OS는 Exception(Trap)을 처리하기 위해서 virtual IDT[2]를 가지고 있다. Domain는 자신의 Trap handler table을 set_trap_table Hypercall을 이용해서 Hypervisor에게 전달한다. o Interrupts ..

R&D/Hypervisor 2013.03.29
728x90
반응형