본문 바로가기 메뉴 바로가기

두찡의 일상

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

두찡의 일상

검색하기 폼
  • 분류 전체보기 (132)
    • 개발 (120)
      • 알고리즘 (6)
      • 일상 (51)
      • 병렬프로그래밍 (8)
      • 도트도전기 (12)
      • 코드로 알아보는 ARM 리눅스 커널 TIL (33)
      • arm64 linux 6 분석 (10)
    • 게임근황 (8)
    • 개발 외 일상 (2)
  • 방명록

전체 글 (132)
20241005 4.4.3 버디 시스템의 페이지 할당 (p322)

Page: 가상 메모리에서 사용되는 단위. Page Frame: 물리 메모리에서 사용되는 단위. PageDescriptor : PageFrame 의 상태 정보. memmap 으로 사용 페이지 지울때 static inline void rmv_page_order(struct page *page){__ClearPageBuddy(page);set_page_private(page, 0);}static inline void __ClearPageBuddy(struct page *page){VM_BUG_ON_PAGE(!PageBuddy(page), page);atomic_set(&page->_mapcount, -1);}page 의 private 변수는 여러 용도로 쓰이지만 버디에서는 이렇게 사용 - 버디 시스템에서 p..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2024. 11. 20. 23:43
20240928 4.4 버디 시스템 (p309)

memblock 이랑 vmemmap 을 까먹었다 memblock ->부팅 초기에 사용, vmemmap -> 가상 메모리 맵 이제 page 별로 어떤 zone 이랑 노드에 들어가는지 알기 때문에, 이 페이지에 정보를 설정해줌 __init_single_page 노드, 존, 참조카운트, 테이블 매핑 카운트, 마지막 접근 cpu pid 등을 기록 update_defer_init  - 저주소인경우에는 지연시킬 수없음  - if (zone_end  spanned count 가 movable 포함안시키니깐.  - 섹션에 대해서 처리 - (pfn & (PAGES_PER_SECTION - 1)) == 0) { 버디 시스템 - order 는 2의 배수, 페이지는 2^(order - 1) 개씩 관리 - 자주 사용되는 페이지..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2024. 11. 16. 15:32
20240921 4.3.3 vmemmap 을 사용하는 sparse 메모리 모델 (p277)

node_spanned_pages -> 노드 전체 페이지 수 node_present_pages -> 노드에 실제 페이지수 zone_spanned_pages_in_node -> 노드의 존에 전체 페이지수 zone_absent_pages_in_node -> 노드의 홀(빈) 페이지 리눅스의 워터마크 = 어떤 제한값 정도인가? migratetype 존 안의 페이지를 타입별로 관리 mmzone.henum {MIGRATE_UNMOVABLE,MIGRATE_MOVABLE,MIGRATE_RECLAIMABLE,MIGRATE_PCPTYPES, /* the number of types on the pcp lists */MIGRATE_HIGHATOMIC = MIGRATE_PCPTYPES,#ifdef CONFIG_CMA/* * ..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2024. 11. 16. 15:30
20240907 4.2.2 메모리 맵 (p249) & 4.3 존 (p.254)

vmap 은 주로 비연속적(non-contiguous)인 물리 페이지들을 연속적인 가상 주소 공간으로 매핑. 그러나 각 물리 페이지에 tlb 는 하나씩 mem_map 으로는 원래 두번 테이블을 타야했는데, vmemmap 으로 64비트에서는 조금더 빠르게 하는 것 같다 https://elixir.bootlin.com/linux/v4.9/source/include/asm-generic/memory_model.h#L53 sparse.c:sparse_init -> sparse_early_mem_map_alloc (each_section) -> sparse_init_one_sectionsparse_early_mem_map_alloc -> sparse_mem_map_populate -> if (vmemmap_pop..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2024. 11. 16. 15:27
20240831 - sparse init (p269)

sparse init  P.269 pageblock_order가 큰 경우, 같은 타입의 페이지를 더 큰 블록 단위로 한꺼번에 할당하고, 이들을 물리 메모리에서 연속적인 공간에 몰아두려는 의도입니다. 이렇게 함으로써 여러 가지 이점이 있습니다.  // 각 SECTION 수마다 만드네.size = sizeof(unsigned long *) * NR_MEM_SECTIONS;usemap_map = memblock_virt_alloc(size, 0);// section->section_mem_map 은 속성을 플래그로 가지고 있다.#define SECTION_MARKED_PRESENT (1ULsection_mem_map & SECTION_MARKED_PRESENTsection->section_mem_map & S..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2024. 11. 16. 15:09
20240817 페이징과 매핑 (p200) & memblock(p221)

3.4 I/O 메모리 매핑 paging init 이 되기전에 io mapping 이 되야 하는 경우? ACPI 테이블, EFI 테이블, 일부 디바이스 에 접근해서 설정 정보를 가져와야 하는 경우 early ioremap : early IO 매핑하기 IO mapping 전 먼저 처리 위해 fixmap 영역을 사용하는 early io mapping -> FIX_PAGE_IO early memremap: early 메모리 매핑하기 IO 가 아닌 normal 메모리인데, fixmap 영역을 사용 -> FIX_PAGE_NORMAL 4.1 early 메모리 할당자: memblock 커널의 메모리 할당 - memblock: 메인 메모리 할당자가 초기화 되기 전 사용 - 페이지 할당자 : 페이지 단위 할당 - 메모리 ..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2024. 11. 16. 15:03
20240627 - ARMv8아키텍처 (p34)

tcr : translation control registert0sz : tfanslation table 0 size1:1 매핑 위해서 가상 메모리에서 쓰는 비트수 조정 ttbr 의 asid 와 페이지- https://developer.arm.com/documentation/ddi0406/cb/System-Level-Architecture/System-Control-Registers-in-a-VMSA-implementation/VMSA-System-control-registers-descriptions--in-register-order/TTBR0--Translation-Table-Base-Register-0--VMSA?lang=en extern pgd_t swapper_pg_dir[PTRS_PER_PGD..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2024. 11. 9. 16:59
20240622 - AArch64 익셉션 핸들링

하이퍼바이저하드웨어에서 시스템의 운영 체제와 리소스를 분리해 VM에 할당하여 가상 머신을 생성하고 구동하는 소프트웨어EL2, EL3 는 하드웨어에서 지원하며 각 Cpu 를 사용하는 곳에서 옵션으로 키고 끌수있음프로세서 상태 레지스터, 범용 레지스터, 특수목적 레지스터, ABI 레지스터가 따로 존재SCR_EL3 (Secure configuration register) 어떤 익셉션이 레벨 3으로 갈지 정의 (16p)adr & adrl assemblyadr -> pc 기준으로 +- 1MB 범위 내, adrl 더 넓게 (4kb 단위로 +-4gb adrp + 4kb offset).align는 정렬할 바이트 단위를 나타냅니다. 예를 들어, .align 12는 2^12 바이트(즉, 4096 바이트)의 배수로 정렬합니..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2024. 11. 9. 15:48
코드로 알아보는 ARM 리눅스 커널 TIL 카테고리 추가

리눅스 스터디를 하면서 그날 그날 배운 내용들을 정리해보기 위한 카테고리를 추가했습니다.

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2024. 11. 9. 15:28
크로스코드 도전과제 공략 - 우리는 VR핏이라고 부릅니다

고슴도치 멈추는 버그https://www.youtube.com/watch?v=HBhc8C-zmoE

게임근황 2024. 7. 7. 02:47
이전 1 2 3 4 5 6 7 8 ··· 14 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
  • 링크드인
  • 깃허브
TAG
  • 면접
  • set value
  • Golang
  • 우리는 vr핏이라고 부릅니다
  • boost
  • 클래스 맴버 변수 출력하기
  • vrpit
  • vr핏
  • red underline
  • print shared_ptr class member variable
  • 카카오
  • Reciprocal n-body Collision Avoidance
  • C++
  • chrome-extension
  • Obstacle Avoidance
  • ad skip
  • 봄날에 스케치
  • it's called a vrpit
  • 코어 남기기
  • mysql
  • 잘못된 빨간줄
  • RVO
  • 에러 위치 찾기
  • Quest2
  • shared_from_this
  • Visual Studio
  • cockroach db
  • hole-punching
  • SuffixArray
  • 영상 픽셀화 하기
more
«   2025/09   »
일 월 화 수 목 금 토
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바