inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리눅스 커널의 구조와 원리: 인터럽트 [저자 직강 1부-5]

6.유저 공간-Preemption될 때 커널 코드 분석

preemption 체크 관련 질문

170

이진후

작성한 질문수 4

0

커널 코드 실행 중 인터럽트가 발생한 경우에는 thread_info 구조체의 preemption_count 값을 통해 preemptive schedule 가능 여부를 판단하고, 유저 코드 실행 중에 발생한 경우에는 flags 값을 통해 preemptive schedule 가능 여부를 판단하는 것을 이해했는데, 둘이 왜 확인 방법이 다른지 궁금합니다

linux 운영체제 arm-architecture linux-kernel interrupt irq

답변 2

0

김동현 (Austin Kim)

확인 방법이 다른 이유는 인터럽트가 유발된 후 유저 공간으로 복귀하는 프로세스와 커널 공간에서 실행되는 프로세스의 Preemption을 다른 방식으로, 유연하게 처리하기 위해서입니다.

리눅스 커널에서는 기본적으로 CFS 스케줄러에 의해 프로세스의 실행 시간이 관리되는데, 프로세스에게 일정 시간 실행될 수 있는 timeslice를 제공합니다. timeslice를 프로세스가 다 소진했을 때는 preemption될 대상이 되며, 아래와 같이 설정됩니다.

  • 유저 프로세스인 경우 flags를 TIFNEED_RESCHED 로 설정

  • 커널 공간에서 실행되는 프로세스인 경우 preempt_count를 0으로 설정

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
이진후님, 문의 주신 주제에 대해 설명드리겠습니다.

리눅스 커널에서 preemption을 체크하는 방법은 실행 문맥(context)에 따라 달라집니다. 이는 커널 코드와 사용자 코드의 실행 환경이 다르기 때문입니다.

  1. 커널 코드 실행 중: thread_info 구조체의 preemption_count 값을 확인합니다. 이는 커널에서의 작업이 인터럽트될 수 있는지를 나타내는 값입니다. 커널 모드에서는 더욱 세밀한 제어가 필요하기 때문에, 다양한 플래그를 가진 preemption_count를 사용하여 preemption을 켜거나 끌 수 있습니다. 이를 통해 보다 유연하고 세밀한 스케줄링 제어가 가능합니다.

  2. 유저 코드 실행 중: 사용자 모드에서는 보통 flags 값을 사용하여 preemption 여부를 판단합니다. 이는 일반적으로 커널과는 다른 방식으로 수행되며, 커널 모드처럼 세밀한 스케줄링 제어가 필요하지 않기 때문입니다. 사용자 모드에서는 상대적으로 간단한 방식으로 preemption을 관리합니다.

이 두 경우의 차이는 결국 실행 권한과 환경의 차이로 인해 발생하는 것입니다. 커널 모드는 특수한 환경설정이 필요하고, 사용자 모드는 그에 비해 간단한 방식으로 동작하도록 설계되어 있습니다.

추가적으로 궁금한 점이 있으시면 언제든지 질문해 주세요!

이미지 출처 및 추가 정보:
링크

ls -al /var/log/nginx

0

19

2

이번강의

0

15

2

버추얼박스 오류

0

20

1

세월이 흘러 문제가 바뀐 것 같습니다.

0

12

2

수업자료는 없나요?

0

8

1

디자인패턴 질문

0

27

2

실습환경

0

26

2

키페어 설정

0

34

2

vi 줄 정렬하신 방법에 대해 문의드립니다.

0

30

1

팩토리 패턴

0

44

2

싱글톤 패턴 구현방법

0

49

2

라이브러리 프레임워크 차이 질문

0

51

1

말이 좀 헷갈립니다 강님

0

34

2

질문답변 부탁드립니다

0

26

1

강의자료 요청

0

22

1

프로젝트 질문 드립니다!

0

41

2

추상화 질문

0

33

2

Armv7 vs Armv8 학습 방향

0

32

1

직렬화 역직렬화 질문 드립니다!

0

50

2

Trace32 function 함수 조회 Makefile 수정 부분

0

30

1

쉘에서 한글 치는방법

0

52

2

TRACE32 관련 문의 내용

0

116

2

강의안 자료는 따로 제공이 안 되나요?

0

103

2

인터럽트 처리 순서

0

204

2