Kernel(4)
-
Linux의 kmalloc과 vmalloc에 대해서
Linux에서 kernel 영역에서의 동적 memory allocation인 kmalloc과 vmalloc에 대해서 알아보도록 하자. Kernel은 physical memory를 page의 단위로 관리 한다. page의 크기는 architecture에 의해서 좌우 된다. 보통 32-bit x86 기반의 machine에서는 page의 크기가 4096 bytes 단위로 관리 된다. Physical memory 내의 각각의 page는 Linux kernel에서 다음의 구조체로 관리된다. struct page { unsigned long flags; // page status atomic_t _count; // ref. cnt. ... void *virtual; // explained later on.. }; ..
2021.12.19 -
Linux kernel Bottom half 정리 (softirq, tasklet, workqueue) - part 1
* bottom half 사용 이유 1. 다른 코드를 너무 오래 동안 중단시켜서는 안 됨 2. 처리 중인 interrupt를 비활성화 시킨 상태에서, 최악의 경우 IRQF_DISABLED가 설정되지 않은 경우, 현재 procesor의 모든 interrut를 비활성화 시킨 상태에서 실행 됨 즉, 오래 걸리면 interrupt가 무시될 수 있음 3. 휴면 상태가 될 수 없음 cf. 일반적인 bottom half는 tasklet을이용해 구현하는 것이 좋다. 1) 동적생성 가능 2) 빠른편 3) 사용이간단 (multi-processor에대한 신경을 안 써도 됨) state를 둬서 이미 실행 중인 것은 실행 안 하게 함 ISR은 interrupt 수신상태를 확인 등의 간단한 작업만 수행해야 함 그래야 interr..
2021.12.14 -
virtual address space
최대 4GB (archi. dep.) 접근 불가 영역도 존재 ex. 08048000 - 0804c000 prcess에게 접근 권한이 없는 메모리 주소 영역 유효한 주소의 이런 영역을 -> 메모리 영역이라고 함 segment fault 유효하지 않은 영역에 access 시 발생 memory section types 1) text section (RO) 2) data section (RW) 실행 파일의 초기값이 있는 전역 변수가 할당된 메모리 3) zero page (BSS) 초기값이 없는 전역 변수가 들어 있는 영역 4) process user space stack 5) C lib용 text, data, BSS sections 6) memory 할당 file 영역 7) 공유 메모리 구간 8) malloc ..
2021.12.13 -
process scheduling
Process scheduling linux에 관한 내용 지금까지는함수 명은 linux에 dependent하지만, 내용은 일반적인 내용 이었는데, 본 내용은 linux dependent한 내용이다. Linux의 scheduler -Non-Retal-Time scheduler -Real-Time Scheduler real time으로비춰지지는 않는다. Linux scheduling 1. Time sharing (SCHED_NORMAL; SCHED_OTHER) ready ---> run---> Exit TASK_RUNNING --------------> TASK_RUNNING ------> TASK 종료 task 생성 ^ ^ schedule() | | do_exit | | context_switch() | ..
2021.12.13