태그 : linux 요약보기전체보기목록닫기
- [리눅스커널] 워크큐: get_work_pool() 함수 분석 (0)2019.02.09
- [리눅스커널] 워크큐: insert_work() 함수 분석 (0)2019.02.09
- [리눅스커널] 워크큐: struct work_struct 구조체 (0)2019.02.09
- [리눅스커널] 워크큐: 7가지 워크큐에 대한 소개 (0)2019.02.09
- [리눅스커널] 워크큐: alloc_workqueue() 함수 분석 (0)2019.02.09
- [리눅스커널][스케줄링] 유저 프로세스 실행 중 인터럽트 발생으로 선점 스케줄링(0)2019.02.09
- [리눅스커널][스케줄링] 선점 스케줄링 진입점은 어디인가?(0)2019.02.09
- [리눅스커널] 프로세스: current_thread_info() 매크로 함수 분석(0)2019.02.08
- [리눅스커널] 프로세스: 프로세스 컨택스트 정보는 어떻게 저장할까? (0)2019.02.07
- [라즈베리파이] 스케줄링: 프로세스 상태 변화 관리 (6)2019.02.06
- 7. 워크큐(Workqueue)
- 2019/02/09 20:27
get_work_pool() 함수 분석을 시작하겠습니다.[https://elixir.bootlin.com/linux/v4.14.43/source/kernel/workqueue.c#L709]1 static struct worker_pool *get_work_pool(struct work_struct *work)2 {3 unsigned long data =...
- 7. 워크큐(Workqueue)
- 2019/02/09 20:26
insert_work() 함수 분석이번에는 insert_work() 함수를 분석하겠습니다.1 static void insert_work(struct pool_workqueue *pwq, struct work_struct *work,2 struct list_head *head, unsigned int extra_flags)3 {4 struct work...
- 7. 워크큐(Workqueue)
- 2019/02/09 20:24
워크를 표현하는 자료구조는 struct work_struct 구조체이며 선언부는 다음과 같습니다.[https://github.com/raspberrypi/linux/blob/rpi-4.19.y/include/linux/workqueue.h]1 struct work_struct {2 atomic_long_t data;3 struct list_head en...
- 7. 워크큐(Workqueue)
- 2019/02/09 16:56
workqueue_init_early() 함수는 리눅스 커널에서 지원하는 7가지 워크큐를 생성합니다.workqueue_init_early() 함수를 분석하면서 워크큐 종류에 대해 알아보겠습니다. [https://github.com/raspberrypi/linux/blob/rpi-4.19.y/kernel/workqueue.c]1 int __ini...
- 7. 워크큐(Workqueue)
- 2019/02/09 16:55
워크큐를 생성하려면 alloc_workqueue() 함수를 호출해야 합니다. alloc_workqueue() 함수 구현부를 보면 __alloc_workqueue_key() 함수로 치환됨을 알 수 있습니다.#define alloc_workqueue(fmt, flags, max_active, args...) \ __alloc_workqueue_key((f...
- 10. 프로세스 스케줄링
- 2019/02/09 15:40
선점 스케줄링 실행 진입점 중 하나가 인터럽트를 핸들링 후 입니다. 이번 소절에서 유저 프로세스가 실행하던 도중 인터럽트가 발생했을 때 어떤 방식으로 선점 스케줄링(Preemption)이 시작하는지 살펴보겠습니다.다음 블록 다이어그램을 같이 봅시다. 위 블록 다이어그램은 유저 레벨 프로세스가 실행 도중 선점 스케줄링되는 흐름도입니다.유...
- 10. 프로세스 스케줄링
- 2019/02/09 12:25
여기서 중요한 질문을 던질 수 있습니다. 과연 "선점은 언제 일어날까?"란 의문입니다.선점 스케줄링은 언제든 발생할 수 있습니다.소스 코드를 보면서 선점 스케줄링이 언제 발생할 수 있는지 생각해 봅시다.[https://elixir.bootlin.com/linux/v4.14.70/source/fs/configfs/file.c]1 static ssize_t...
- 4. 프로세스(Process) 관리
- 2019/02/08 00:02
current_thread_info() 매크로 함수는 프로세스가 실행 중일 때 thread_info 구조체가 있는 스택의 최상단 주소를 계산해 반환합니다. current_thread_info() 매크로 함수의 구현부를 분석하기에 앞서 매크로 함수를 어느 코드에서 쓰는지 알아봅시다.* 유튜브 강의 동영상도 있으니 같이 들으시면 좋습니다. ...
- 4. 프로세스(Process) 관리
- 2019/02/07 23:59
thread_info 구조체의 필드 중 preempt_count는 프로세스 컨텍스트 정보를 저장합니다. 이번 절에서는 preempt_count 필드를 중심으로 컨텍스트 정보가 바뀌는 과정을 살펴보겠습니다.다음은 preempt_count 필드가 바뀌면서 컨텍스트 정보가 바뀌는 상황입니다. 인터럽트 컨텍스트 실행 시작 및 종료 설정 Soft IRQ 컨텍...
- 10. 프로세스 스케줄링
- 2019/02/06 10:48
프로세스 상태 변화프로세스 상태 변화에 대해 알아보겠습니다. 프로세스 상태를 아는 것 보다 프로세스 상태가 변경될 때 세부 동작을 이해하는 것이 더 중요합니다. [1] 실행 대기 -> CPU실행 중프로세스가 생성된 다음 바로 TASK_RUNNING(실행 대기) 상태로 바뀌면서 자신을 런큐에 Enqueue 합니다. 스케줄러...
최근 덧글