Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

124199
1107
135852


태그 : 프로세스 요약보기전체보기목록닫기

1 2 3 4 5

[리눅스커널] 프로세스: thread_info 구조체 - cpu 필드에 대한 상세 분석

thread_info 구조체의 cpu 필드는 프로세스가 실행 중인 CPU 번호를 저장합니다. 그러면 현재 코드가 어떤 CPU에서 구동 중인지 알려면 어떤 함수를 써야 할까요? 커널에서 제공하는 smp_processor_id() 함수를 호출하면 됩니다. smp_processor_id() 함수 분석smp_processor_id() 함수를 보면서 세...

[리눅스커널] thread_info 구조체의 preempt_count - 인터럽트 컨텍스트 실행 저장

리눅스 시스템에서 인터럽트는 언제든지 발생할 수 있습니다. 인터럽트가 발생하면 프로세스 실행을 멈추고 인터럽트에 해당하는 인터럽트 핸들러를 실행합니다. 커널에서는 인터럽트가 발생해서 인터럽트 서비스 루틴을 실행하는 동작을 인터럽트 컨텍스트라고 부릅니다.  ---참고로 인터럽트는 외부 입출력 장치에 어떤 변화가 있을 때 발생하는 전기 신...

[리눅스커널] 프로세스: 커널 스레드는 어떻게 생성할까?

이어서 커널 스레드를 생성하는 과정에서 호출되는 함수를 소개하고 세부 코드를 분석하겠습니다. 커널 스레드가 생성되는 과정은 크게 2단계로 나눌 수 있습니다.1) 1단계: kthreadd 프로세스에게 커널 스레드 생성을 요청 kthread_create() kthread_create_on_node()2) 2단계: kthreadd 프로세스가 커널 스레드를...

[리눅스커널] 프로세스: 태스크란

제가 처음 리눅스 커널 코드를 볼 때 가장 궁금했던 점은 “리눅스 커널 함수의 이름에 ‘task’가 왜 보일까?”라는 것이었습니다. 사실 태스크는 리눅스 외의 다른 운영체제에서 예전부터 많이 쓰던 용어입니다. 운영체제 이론을 다루는 책에서는 태스크라는 단어를 많이 볼 수 있습니다.태스크는 운영체제에서 어떤 의미일까요? 말 그대로 실행(Execution)...

[리눅스커널] 프로세스: 유저 프로그램 실행 흐름 추적하기

이번 챕터에서 유저 공간에서 fork() 시스템 콜 함수를 호출하면 유저 프로세스가 실행된다고 설명을 드렸습니다. 그런데 유저 프로세스를 생성하는 목적은 크게 2가지로 분류할 수 있습니다. - fork() 시스템 콜 함수를 호출해 같은 미션의 프로그램을 여러 프로세스가 나눠서 실행 - exev() 시스템 콜 함수로 아예 새로운...

[리눅스커널][스케줄링] 컨택스트 스위칭 관련 자료 구조 알아보기

컨택스트 스위칭 관련 자료 구조 알아보기이전 소절에서 컨택스트는 프로세스가 실행 중인 그 자체라고 소개했습니다. 프로세스 실행 그 자체는 레지스터 세트 표현할 수 있습니다. 어떤 프로세스가 CPU에서 실행하면 CPU 레지스터 세트에 프로세스가 실행 중인 코드와 함수 정보가 채워집니다.컨택스트 스위칭으로 CPU 레지스터 세트를 어딘가에 저장할 것입니다. ...

[리눅스커널][스케줄링] 컨택스트 스위칭이란 무엇인가

컨택스트 스위칭이란 무엇인가컨택스트 스위칭 세부 동작을 알기 위해서 context_switch() 함수를 분석할 필요가 있습니다. context_switch() 함수를 분석하기 전 컨택스트 스위칭의 개념을 소개하겠습니다. 먼저 컨택스트 스위칭이란 용어에 대해서 살펴봅시다. 컨택스트 스위치란 용어는 컨택스트 + 스위치란 단어의 합성어입니다. 컨택...

[리눅스커널][스케줄링] 선점 스케줄링 지연 함수 preempt_enable()/preempt_disable() 소개

선점 스케줄링 지연 함수 preempt_enable()/preempt_disable() 소개리눅스 커널에서 선점 스케줄링을 동작을 잠시 지연할 수 있는 함수를 지원합니다. preempt_disable(): 선점 지연 활성화preempt_enable():  선점 지연 비활성화preempt_disable() 함수 이름은 "선점"을 의미하는...

[리눅스커널][스케줄링] 유저 프로세스가 시스템 콜 처리를 마무리한 후 선점 스케줄링

유저 프로세스는 시스템 콜로 커널과 통신을 합니다. 유저 프로세스는 시스템 콜을 발생해서 시스템 콜 핸들러 함수를 호출합니다. 이후 시스템 콜 핸들러 하부 함수 실행을 마친 후 유저 공간으로 복귀하기 직전에 선점 스케줄링 실행 조건을 점검합니다.다음 다이어그램을 보면서 세부 동작에 대해 살펴보겠습니다. 위 블록 다이어그램은 유저 프로세스가 시스...

[리눅스커널][스케줄링] 커널 모드 중 인터럽트 발생으로 선점 스케줄링 실행

유저 프로세스 실행 도중 인터럽트가 발생하면 __irq_usr 이란 레이블에서 선점 스케줄링 조건을 점검합니다. 마찬가지로 커널 모드에서 어떤 코드가 실행 도중 인터럽트가 발생할 때 선점 스케줄링(Preemptive Scheduling)을 시도합니다.이번 소절에서 커널 모드에서 인터럽트가 발생했을때 선점 스케줄링 세부 동작을 살펴봅니다.다음 블록 다이어...
1 2 3 4 5