R&D/OS 163

[x86] PIC 구조

PIC은 Uniprocessor 에서 CPU로 Interrupt를 전달하기 위한 intel 8259 chip 이다. Master 와 Slave 구조로 되어 있으며, Master가 CPU와 연결되어 있다. 하나의 8259 chip에는 8개의 input line 을 가지고 있고, 1개는 slave chip과 연결되어 있다. 따라서 총 15개의 interrupt line을 받을 수 있다. Multi-processor에서는 PIC을 사용할 수 없기 때문에 Advanced PIC (APIC)이 나왔고, 이는 CPU chip 내장되어 있는 Local APIC과 motherboard에 붙어 있는 I/O APIC으로 발전하였다. --> 다음 시간에는 PIC에서 발생하는 IRQ가 IDT(Interrupt Descript..

R&D/OS 2013.11.21

Page table & address translation

Linux 의 메모리 관리를 이해하기 위해서는 2단계 address translation에 대해서 이해해야 한다.1단계 전환(GDT/LDT) : Logical Address --> Linear Address2단계 전환(Page Table): Linear Address --> Physical Address 다음으로 구분을 해야 하는 것이 virtual address 와 Linear address의 관계이다. Process 별로 page table을 관리함 Context switching이 일어나면, mm_struct->pgd 의 값이 CR3로 로드되어, cpu는 virtual address를 physical address로 MMU를 이용해서 변환할 수 있다.또한 CR3에 새로운 값이 로드되면, x86에서는..

R&D/OS 2013.11.15

GDT vs .LDT

ㅇ GDT 란GDT(global descriptor table)란 Real Mode 에서 Protected Mode 로 변화되면서 추가된 테이블로써 해당 세그먼트의 베이스 주소와 세그먼트 제한 길이 등의 정보가 들어있다. 제한 길이가 들어있기 때문에 보호기능이 제공되며, 베이스 주소를 제공하기 때문에 16bit에서 24-31bit까지의 베이스 주소를 확장시킬수 있다. 그럼으로써 1b에서 4g까지 자유롭게 설정이 가능하게 된다. 또한 이 테이블에 권한설정까지 적어 넣을 수 있기 때문에 메모리에 대한 권한까지 부여할 수 있게 된다. ㅇ GDT vs LDT - GDT(Global Descriptor Table) : 커널모드에서 사용하는 테이블 / 커널모드용 하나 생성 / 전체내용 - LDT(Local desc..

R&D/OS 2013.11.08

device tree

ARM 리눅스에서 x86과 같은 bios 역할을 해 주는 것이 device tree 이다.device tree(DT) = open firmware(OF) = flattened device tree(FDT) 로 불리기도 한다. ㅇ 동작bootloader는 kernel을 시작시키기 전에 dtb 를 memory 영역으로 copy 한 후 kernel을 시작한다. ㅇ dts 표기법- / (root) 로 시작하며, tree 구조를 가지고 있다.- node 는 하위에 child node를 가질 수 있다.- property는 key = value; 구조로 기술한다. . string property 는 "a string" 처럼 따옴표로 기술한다. . cells 는 32 bit unsigned integers로 angle..

R&D/OS 2013.08.14

리눅스 커널 분석

아래 자료는 다 인터넷에서 검색한 자료 입니다. (From 단국대) X86 리눅스 부팅 과정 http://kerneldox.com/kdox-linux/dir_d9ee12b4e6cfa276a6617f3302007efc.html 리눅스 커널 분석(시각화)http://www.makelinux.net/kernel_map/ 커널 소스http://lxr.free-electrons.com/ http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Embedded/Documents/LinuxKernelStudyForSystemenginer/index.html ARM 리눅스 부팅https://github.com/ygpark/Documentation/wiki/Booting-ARM-L..

R&D/OS 2013.08.07