Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

0112
737
82110


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

1 2 3 4 5

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

컨택스트 스위칭 관련 자료 구조 알아보기이전 소절에서 컨택스트는 프로세스가 실행 중인 그 자체라고 소개했습니다. 프로세스 실행 그 자체는 레지스터 세트 표현할 수 있습니다. 어떤 프로세스가 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)을 시도합니다.이번 소절에서 커널 모드에서 인터럽트가 발생했을때 선점 스케줄링 세부 동작을 살펴봅니다.다음 블록 다이어...

[리눅스커널][스케줄링] 유저 프로세스 실행 중 인터럽트 발생으로 선점 스케줄링

선점 스케줄링 실행 진입점 중 하나가 인터럽트를 핸들링 후 입니다. 이번 소절에서 유저 프로세스가 실행하던 도중 인터럽트가 발생했을 때 어떤 방식으로 선점 스케줄링(Preemption)이 시작하는지 살펴보겠습니다.다음 블록 다이어그램을 같이 봅시다. 위 블록 다이어그램은 유저 레벨 프로세스가 실행 도중 선점 스케줄링되는 흐름도입니다.유...

[리눅스커널][스케줄링] 선점 스케줄링 발생 시점을 아는 것은 왜 중요할까?

리눅스 시스템 개발자로 문제 해결 능력을 키우기 위해선 선점 스케줄링 발생 시점을 아는 것이 중요합니다.리눅스 디바이스를 개발하다 보면 다양한 버그를 만납니다. 수 많은 버그 중 선점 스케줄링으로 시스템이 오동작하는 상황을 겪을 수 있습니다. 예를 들어 커널 패닉 발생하는 가장 큰 원인 중 하나가 선점 스케줄링 때문입니다.리눅스 커널 커뮤니티에서 배포하...

[리눅스커널][스케줄링] 선점 스케줄링(Preemptive Scheduling)이란 무엇일까?

선점 스케줄링이란 CPU에서 실행 중인 프로세스를 비우고 새로운 프로세스를 CPU에서 실행시키는 방식입니다.선점 스케줄링에 대한 이해를 돕기 위해 야구에서 투수 교체를 하는 과정을 예를 들겠습니다.마운드에 A란 투수가 있다고 가정합시다. A란 투수는 열심히 공을 던지고 있습니다. 감독은 투수가 마운드에서 제대로 공을 던지고 있는지 계속 관찰합니다. 제구...

4.10 프로세스 디스크립터 접근 매크로 함수

리눅스 커널 코드를 읽으면 다음 매크로를 자주 볼 수 있습니다.+ current_thread_info()+ current위 매크로를 활용해서 프로세스 태스크 디스크립터와 struct thread_info 구조체 필드 정보를 읽어 프로세스를 제어합니다. 4.10.1 current_thread_info()이전 절에서 프로세스 스택 최상단 주소에 s...

[리눅스커널] 스케줄링: 우선순위(nice)란

nice는 유저 공간에서 설정한 프로세스 실행 우선 순위를 뜻합니다. 정수형인 nice 범위는 -20~19인데 이 값은 커널 공간에서 100~139 사이 값으로 변환되어 관리합니다.이해를 돕기 위해 다음 그림을 함께 봅시다. 유저 공간에서 설정한 nice 값의 범위는 -20~19인데 커널 공간에서 100~139 사이 우선 순위로 변환됩니다. 커...
1 2 3 4 5