임베디드 리눅스 커널
This presentation is the property of its rightful owner.
Sponsored Links
1 / 25

임베디드 리눅스 커널 PowerPoint PPT Presentation


  • 135 Views
  • Uploaded on
  • Presentation posted in: General

임베디드 리눅스 커널. 2006 년 1 학기. 임베디드 리눅스 커널 내부 구조. Linux v2.4.18 을 기준으로 다음과 같은 사항을 설명 프로세스와 스레드 시스템 호출 , 문맥 교환 , 인터럽트 처리 프로세서 스케줄링 메모리 관리 인터럽트 처리 파일 시스템 리눅스의 부팅 과정 시그널 처리 커널 동기화 커널 디버깅. 메모리 관리. 리눅스 운영체제의 메모리 관리

Download Presentation

임베디드 리눅스 커널

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


6322373

임베디드 리눅스 커널

2006년 1학기


6322373

임베디드 리눅스 커널 내부 구조

  • Linux v2.4.18을 기준으로 다음과 같은 사항을 설명

    • 프로세스와 스레드

    • 시스템 호출, 문맥 교환, 인터럽트 처리

    • 프로세서 스케줄링

    • 메모리 관리

    • 인터럽트 처리

    • 파일 시스템

    • 리눅스의 부팅 과정

    • 시그널 처리

    • 커널 동기화

    • 커널 디버깅

Konkuk University Software Research Center


6322373

메모리 관리

  • 리눅스 운영체제의 메모리 관리

    • CPU에 MMU(Memory Management Unit)가 있는 경우 기본적으로 페이징(paging)을 기반으로 한 가상 메모리 시스템(Virtual Memory System)을 지원

    • 가상 메모리 시스템

      • 페이지(page) 단위의 할당 및 맵핑을 위한 페이징과

      • 실제 메모리보다 큰 공간 제공을 위한 스왑핑(swapping)으로 구성

Konkuk University Software Research Center


6322373

  • 명령어 수행 시마다 계산되는 CPU에 의해 산출되는 가상 주소는 MMU H/W가 커널이 각 프로세스 마다 준비하는 페이지 테이블 (page table)을 바탕으로 실제 물리 메모리 주소로 변환한다

  • 물론 프로세스가 커널 모드 실행일 때에는 커널 영역을 위한 페이지 테이블을 사용하게 된다

  • 프로세스나 커널이 요구하는 동적 페이지 할당을 위해 사용 가능한(free) 페이지들의 풀을 유지

    • 커널의 물리적 free page 풀은 buddy area와 slab cache라는 공간 구조에

    • 사용자 프로세스를 위한 가상 공간의 할당 영역은 힙(heap) 공간에 유지

  • 커널이 일단 부팅되면 초기 단계에 가상 메모리 시스템이 활성화되어 커널 자신도 가상 메모리 시스템 하에서 실행되는 것이 보통이다

Konkuk University Software Research Center


6322373

프로세스와 커널의 가상 주소 공간과 물리적 주소 공간

  • 가상 메모리 시스템 하에서

    • 사용자는 실제 메모리의 레이아웃에 관계없이 연속된 프로세스의 가상 주소 공간을 사용하고 접근하게 된다

      • 예를 들면 정수 변수 ix의 주소인 &ix를 프린트해 보면 이는 가상 주소 공간에서의 값이며 실제 프로세스의 물리적 메모리 레이아웃에 따른 변화가 없음을 알 수 있다

    • 프로세스는 CPU에 의한 실행 중에 사용자 모드 실행과 시스템 콜 수행에 따른 커널 모드 실행을 반복하므로

      • 가상 메모리의 주소 공간은 실행 프로세스의 영역과 커널의 영역으로 구성되어야 한다

    • 실제 물리적 메모리에는 여러 프로세스들 각각 다른 곳에 배치되지만, 가상 주소 공간에서 사용자 프로세스는 모두 동일한 주소의 영역을 사용하고, 커널을 이들이 공유함에 주의하기 바란다

Konkuk University Software Research Center


32 bit

32 bit 주소인 경우 프로세스 가상 공간의 구성

그림의 두 개의 프로세스는 같은 가상 공간을 사용하지만 실제 물리적 공간은 다른 곳으로 맵핑된다

그 외에도 프로세스를 위한 가상 주소 공간은 memory mapped file, shared memory, shared library 공간 등 여러 형태가 있다

Konkuk University Software Research Center


6322373

프로세스의 공간에 대한 설명

Konkuk University Software Research Center


Paging

페이징(Paging) 하에서의 가상 주소의 물리 주소 맵핑

  • CPU에 따라 가상 주소의 실질 주소 맵핑은 세그멘테이션(segmentation)과 페이징(paging)을 혼용하거나 페이징만을 사용함

Konkuk University Software Research Center


6322373

  • 페이지 테이블(page table)

    • 가상공간의 페이지는 물리적 메모리에 페이지 단위로 분산 배치되므로 반드시 가상 주소의 실질 주소로의 맵핑이 필요하다. 이를 위한 커널 자료 구조가 프로세스 마다 주어지는 페이지 테이블(page table)이다

    • pte(page table entry)

      • 페이지 테이블 의 각 페이지 마다의 자료를 pte(page table entry)라 하며,

      • pte는 해당 페이지의 메모리 적재 여부(valid bit), 실질 메모리 주소(frame 주소) 등을 가진다

    • 예) CPU가 생성하는 가상 주소를 32bit라 가정하고 페이지 의 크기를 4KB라 하면

      • 하위 12 bit는 페이지 내부에서의 오프셋(offset)이 되고

      • 그 상위 부분은 페이지의 번호(가상 주소 공간에서의 순번)가 된다

      • MMU는 가상 주소의 상위 20bit 페이지 번호를 현재 실행 중인(running) 페이지 테이블의 실질 메모리의 프레임(frame) 주소로 변환한다

      • 이 과정에서 오프셋은 불변이다

Konkuk University Software Research Center


6322373

  • 맵핑 과정에서 MMU가 페이지 테이블을 이용하려면 맵핑의 기준이 되는 페이지 테이블 자체의 주소는 가상 주소가 아닌 실질 주소를 알아야 한다

    • 그러나 CPU 들이 주소 공간이 커짐에 따라, 모든 프로세스들의 페이지 테이블들은 그 자체로도 크기가 커져 커널이 페이지 테이블들을 물리적 공간에 동적으로 직접 할당하는 것에는 어려움이 발생하게 되었다

    • 이에 따라 페이지 테이블을 가상 공간에 할당하기 위하여 2단계 또는 3단계 페이지 테이블 맵핑이 등장하였다

    • 2 단계 맵핑

      • 각 페이지 테이블 페이지의 물리적 주소를 가지는 page directory table이(물리적 공간에 배치) 사용

    • 3 단계 맵핑

      • 64 bit 주소 기계의 경우에 사용

      • page global directory table, page middle directory table, page table을 사용

Konkuk University Software Research Center


2 32 bit

2 단계 페이지 테이블 맵핑 (32 bit 주소 체계)

Konkuk University Software Research Center


3 64 bit

3 단계 페이지 테이블 맵핑 (64 bit 주소 체계)

Konkuk University Software Research Center


6322373

i386 경우의 가상 주소 공간과 실질 주소 공간의 맵핑

  • 커널과 하나의 프로세스로 구성된 가상 주소 공간은 타겟 시스템의 메모리 레이아웃에 따라 각각 다른 모양으로 적재(맵핑) 된다

3GB의 주소에서 시작한 커널 가상 공간은 부팅 시에 실제 메모리의 첫 부분 2MB에 연속적으로 배치됨을 알 수 있다

그 이외의 실제 메모리 공간은 사용자 프로세스의 의 공간, 커널의 free page 공간(연속 할당), 커널의 vmalloc을 위한 할당 공간(불연속 할당) 및 커널 스택(stack) 등으로 맵핑 됨을 보여 주고 있다

Konkuk University Software Research Center


6322373

리눅스 커널의 가상 메모리 관리 구조

  • 리눅스 커널의 가상 메모리 관리 시스템

    • 커널의 구성 요소 중에서도 프로세스 로딩, 파일 시스템 및 맵핑 등과 관련되어 가장 복잡한 구조를 가진다

  • 가상 메모리 관리 시스템은 그 역할 별로 다음과 같이 구분할 수 있다

    • 가상 공간 관리

    • 물리적 공간 관리 및 demand paging, swapping 관리

    • 맵핑 (hat: HW address translation layer) 관리

Konkuk University Software Research Center


6322373

가상 공간 관리

  • 프로세스의 가상 공간 내의 영역을 관리한다

    • 즉, text, data, stack, heap 등의 기본 영역에 관한 가상 공간에서의 위치, 크기, 속성, 관련된 파일 등에 관한 정보를 종합 관리한다

    • 관련 된 주요 커널 자료 구조는 mm_struct와 vm_area_struct로

  • mm_struct는 전체 프로세스 영역에 대한 자료를

  • vm_area_struct는 텍스트(text), 데이터(data), 힙(heap), 스택(stack) 등과 같은 각 영역에 대한 자료를 저장한다

Konkuk University Software Research Center


Mm struct

프로세스의 가상 공간 관리 구조체 mm_struct

Konkuk University Software Research Center


Vm area struct

프로세스의 가상 공간 영역별 관리 구조체 vm_area_struct

Konkuk University Software Research Center


6322373

물리적 공간 관리

  • 리눅스 커널은 프로세스 페이지의 배치, 요구 페이징(demand paging), 스왑핑(swapping) 등을 위해, 실질 메모리의 각 프레임(frame)에 대한 자료를 struct page에 저장 관리한다

  • struct page

    • stuct page는 공간의 사용 여부, 스왑핑 시의 LRU(Least Recently Used) 적용을 위한 최근 사용 여부, 관련된 process/file page 정보, free area 관리 정보 등을 포함한다

Konkuk University Software Research Center


Frame page

페이지(frame) 관리를 위한 자료 구조체 page

Konkuk University Software Research Center


6322373

리눅스 커널의 가상 메모리 및 물리적 메모리 관리 체계

Konkuk University Software Research Center


6322373

커널의 동적 메모리 할당

  • 커널은 사용자 프로세스 영역 및 관련 자료 구조(task_struct, page table 등)들을 위해 커널 내부에서 사용을 위한 공간 할당을 동적으로 수행한다

  • 커널 내부에서의 사용을 위한 공간 할당은 DMA 등 입출력을 위한 공간 할당, 각 종 buffer나 SW적 cache를 위한 할당 등으로 구성된다

  • 커널의 동적 메모리 할당 방식

    • 원하는 크기 만큼의 공간을 물리적으로 연속된 공간에 할당하는 방식과

    • 커널 가상 공간에 할당하는 불연속 공간 할당으로 구성된다

Konkuk University Software Research Center


6322373

커널 내부의 연속 공간 할당

  • 연속 공간 할당을 사용하는 경우

    • 물리적으로 연속되어야 효율성이 증가하는 경우나(hw cache 배려), DMA 입출력 공간과 같은 연속성을 필요로 하는 경우에 사용된다

  • 연속적 공간 할당에 사용되는 커널 내부 함수

    • get_free_pages, kmalloc, kfree, kmem_cache_alloc 등이 있다

  • 커널은 이러한 함수들을 통한 물리적 메모리 연속할당을 위해 두 개의 free page 관리 시스템을 관리하는데, 이들은 Buddy system과 Slab cache system이다

Konkuk University Software Research Center


6322373

연속 공간의 동적 할당을 위한 내부 함수와 캐시 시스템의 관계

Konkuk University Software Research Center


6322373

커널 내부의 불연속 공간 할당

  • 각 프로세스의 pte, pmd나 프로세스 관련 자료 구조들을 커널 내부에서 할당할 때에는 커널의 가상 공간에서 연속적인 공간을 할당한다

    • 단 이 공간은 가상 공간에서 연속적이므로 실제 메모리에서는 불연속 공간이 될 수 있다

  • 관련 내부 함수들

    • vmalloc, vfree, vmalloc_area_pages 등이 있다

  • 커널 가상 주소 공간의 VMALLOC_START에서 시작하는 여유 공간에서 각기 할당된 가상 공간은 vm_struct 구조에 의해 관리된다

struct vm_struct {

unsigned long flags;

void * addr; // virtual address

unsigned long size; // 실제 크기 + 4096

struct vm_struct *next;

};

struct vm_struct *vmlist;// vm_struct list of used virtual areas(sorted by addr.),,,,

Konkuk University Software Research Center


6322373

커널 내부의 불연속 공간 할당

Konkuk University Software Research Center


  • Login