본문 바로가기

기술/Linux

(17)
리눅스 커널 심층 분석 개정 3판 : 14장. Block 입출력 계층 Linux Kernel Development Third Edition : Chapter 14. The Block IO Layer 리눅스 커널 심층 분석 개정 3판 : 14장. Block 입출력 계층 Linux Kernel Development Third Edition : Chapter 14. The Block IO Layer 리눅스 커널 심층분석 이 책은 리눅스 커널의 핵심을 간결하면서도 심도있게 다루고 있다. 일반적인 운영체제에 대한 이해를 넘어, 여타 유닉스 시스템과 다른 리눅스만의 특징적인 부분에 대한 설계, 구현, 인터페이 book.naver.com Notion에서 보기 Linux Kernel Development The Block I/O Layer => 이번 챕터에서 커널이 어떻게 블록 디바이스와 블록 디바이스 요청을 관리하는지에 대해 배움 ( = block I/O layer) Anatomy of a Block Devic..
리눅스 커널 심층 분석 개정 3판 : 13장. 가상 파일시스템 Linux Kernel Development Third Edition : Chapter 13. The virtual filesystem 리눅스 커널 심층 분석 개정 3판 : 13장. 가상 파일시스템 Linux Kernel Development Third Edition : Chapter 13. The virtual filesystem 리눅스 커널 심층분석 이 책은 리눅스 커널의 핵심을 간결하면서도 심도있게 다루고 있다. 일반적인 운영체제에 대한 이해를 넘어, 여타 유닉스 시스템과 다른 리눅스만의 특징적인 부분에 대한 설계, 구현, 인터페이 book.naver.com Notion에서 보기 virtual filesystem = virtual switch = VFS 유저 스페이스 프로그램에 제공되는 파일시스템 인터페이스 커널의 서브시스템 VFS는 파일시스템이 공존하고 상호운용될 수 있도록 지원한다. 프로그램이 다른 파일 시스템, 다른 미디어에 ..
리눅스 커널 심층 분석 개정 3판 : 12장. 메모리 관리 Linux Kernel Development Third Edition : Chapter 12. Memory management 리눅스 커널 심층 분석 개정 3판 : 12장. 메모리 관리 Linux Kernel Development Third Edition : Chapter 12. Memory management 리눅스 커널 심층분석 이 책은 리눅스 커널의 핵심을 간결하면서도 심도있게 다루고 있다. 일반적인 운영체제에 대한 이해를 넘어, 여타 유닉스 시스템과 다른 리눅스만의 특징적인 부분에 대한 설계, 구현, 인터페이 book.naver.com Notion에서 보기 1. Page page: 가상 메모리 관점에서 메모리 관리의 기본/최소 단위 커널은 struct page 구조체로 모든 물리적 페이지를 표현한다 struct page{ unsigned long flags; /* 페이지 상태 저장 */ atomic_t_count; /* ..
리눅스 커널 심층 분석 개정 3판 Linux Kernel Development Third Edition) Chapter 3. 프로세스 관리 Process Management 정리 리눅스 커널 심층 분석 개정 3판 : 3장. 프로세스 관리 Linux Kernel Development Third Edition : Chapter 3. Process management 리눅스 커널 심층분석 이 책은 리눅스 커널의 핵심을 간결하면서도 심도있게 다루고 있다. 일반적인 운영체제에 대한 이해를 넘어, 여타 유닉스 시스템과 다른 리눅스만의 특징적인 부분에 대한 설계, 구현, 인터페이 book.naver.com Notion에서 보기 Process (=task) : 실행 중인 프로그램 사용 중인 파일, 대기중인 시그널, 커널 내부 데이터, 프로세서 상태, 실행 중인 스레드 등 모든 자원 포함 리눅스에서 fork()로 프로세스 생성 : 존재하는 프로세스를 duplicate / 부모 프로세스를 호출 -..
리눅스 Linux) Migration Types of page (page type) Migration Types of page (=page type) 메모리를 연속적인 페이지 (페이지 블록) 단위로 나눔 첫 3bit로 각 페이지 블록의 migration type 표현 페이지 블록마다 4bit 비트맵으로 migration 속성 표현 같은 속성의 페이지를 가능한 그룹화하여 연속된 메모리의 단편화 억제 free_area[order].free_list[migration type] 메모리가 migration type 별로 1개 이상의 페이지 블록을 확보하지 못하는 시스템은 모든 페이지를 unmovable로 구성한다. MIGRATE_UNMOVABLE 메모리 내에서 위치가 변경 X, migration X ⇒ 커널에서 할당한 페이지, 슬랩, IO 버퍼, 커널 스택, 페이지 테이블 등 MIGRATE_M..
리눅스 Linux) Linux's Transparent Huge Page (THP) Linux's Transparent Huge Page (THP) 연속적인 메모리(page)가 사용가능해지면 page fault 발생 시 huge page 를 할당한다. 연속적인 메모리 사용이 불가능하면 base page를 huge page로 promotion 한다. 연속적이지 않을 경우 memory compaction을 수행하기도 한다. fragmentation이 심한 경우 백그라운드에서 promotion을 수행한다. (khugepaged) 이때 가장 먼저 온 프로세스부터 프로세스 내의 모든 huge page promotion을 한다. (First Come First Service) CPU는 virtual address로 메모리 request를 한다. MMU (Memory Management Unit)는..
리눅스 Linux) Linux kernel physical memory allocator : 버디 (Buddy) 메모리 할당자의 개념, 메모리 할당 및 해제 프로세스, 구조 Linux kernel physical memory allocator : 버디 (Buddy) 메모리 할당자 Introduction 리눅스 커널은 phyical memory를 page 단위(보통 4KB)로 관리한다. 사이즈가 고정된 page 단위의 메모리 할당 및 해제는 메모리 fragmentation을 유발한다. fragmentation 문제를 줄이기 위해 Linux에서는 Buddy 메모리 할당 및 해제 알고리즘을 사용한다. Buddy buddy란 연속적인 page (block) 단위로 메모리 관리가 가능하다. 즉, 연속적인 page 관리를 위한 메모리 할당/해제 알고리즘 buddy: 물리적 메모리 상에서 해당 page에 인접한 page들을 의미한다. struct free_area free_list : ..
리눅스Linux) cgroups 개념, 특징, 기능, 계층 구조, 실습 예시 Notion에서 보기 cgroups란? control groups 프로세스들의 자원 사용을 제한하고 격리시키는 리눅스 커널 모듈 하나 또는 복수의 장치를 묶어서 하나의 그룹을 만들 수 있으며 개별 그룹은 시스템에서 설정한 값만큼 하드웨어를 사용할 수 있다. ** 설정한 값 ex) 어떤 그룹이 CPU를 더 많이 차지할 것인가? 어떤 그룹이 얼만큼의 메모리를 사용할 수 있는가? 각 그룹에 네트워크 우선순위를 어떻게 줄 것인가? 시스템의 프로세스들은 장치별로 특정한 cgroup에 속하여 프로세스가 사용하는 하드웨어 자원의 총량에 제한을 받는다. 시스템에 설치된 cgroup 목록 확인하기 /sys/fs/cgroup/ $ ls /sys/fs/cgroup 프로세스별 cgroup 정보 확인하기 $ ls /proc//..