inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

운영체제 공룡책 강의

11. 프로세스 동기화: Chapter 6. Synchronization Tools (Part 1)

non-preemptive kernel 설명에 대해 질문드립니다.

360

김효준

작성한 질문수 1

0

안녕하세요, 좋은 강의 올려주셔서 감사합니다.
 
44분 즈음에서 non-preemptive kernel을 설명하시면서
 
"count++; 를 해서 1을 다 증가시킬 때까지 context switch가 안 일어난다"고 말씀해주셨는데요,
 
교안에서 non-preemptive kernel에 대해 써져 있는 것은 "a kernel-mode prcoess will run until it exits kernel mode"라고 적혀있잖아요?
 
 
저는 kernel-mode process는 O/S(또는 kernel)을 의미하고 user-mode process는 사용자가 작성한 프로그램을 의미한다고 이해하고 있습니다.
 
memory 상에 user address space와 kernel address space가 분리되어 있고, 당연히 user process는 코드, 데이터, 스택, 힙 모두 user address space 상에 존재할 것입니다.
 
여기서 "count++;"라는 코드는 유저가 작성한 코드이므로 user address space 상에 존재할 것이고, 마찬가지로 "count"라는 전역 변수 역시 user address space 상에 존재할 것이라 생각합니다.
 
 

(여기부터 질문입니다.)

(1) 그런데 교안에 적혀 있는 "a kernel-mode process"라는 것은, 제가 이해한 바에 따르면 O/S를 의미하는데, "count++;"라는 코드가 kernel data에 영향을 끼칠 수 있나요?
 
(2) 또다른 질문을 드리면, 혹시 user process들이 kernel data를 공유하는 경우가 있나요? 예를 들어, "count"가 kernel의 전역 변수여서 user process가 이에 대해 access하면 user-mode에서 kernel-mode로 전환되어 요청을 처리하게 되는 건가요?
 
만약 그런 경우가 있다면, 반대로 user process가 user data를 공유하는 경우도 존재하는지 궁금합니다.

운영체제 동시성

답변 1

1

주니온

non-preemptive 라는 것은 커널이 실행 중인 프로세스가

스스로 CPU를 내려놓기 이전에 강제로 CPU를 빼앗을 수 없다는 뜻입니다.

 

즉, kernel mode 냐, user mode 냐, 라는 것은 부차적인 문제이고,

스스로는 CPU를 내려 놓지 않기 때문에, count++의 세부적인 세 가지 동작을

마무리 하지 않은 상태에서 CPU를 내려 놓지 않으므로 (context switch가 안 일어나므로)

count++ 에 race condition이 발생하지 않는다, 라고 이해하시면 좋을 것 같습니다.

 

퀴즈 7번의 답에 대한 질문입니다.

0

554

1

이해하고 있는것이 맞는건지 궁금합니다 ㅠㅠ

0

821

1

타우시간

0

553

1

퀴즈1 1번 질문합니다 !

1

611

1

Page는 Text Data이외에 다른 메모리도 포함하나요?

1

373

0

IPC shared memory 코드

0

520

1

[간단한 질문 ]banker's algorithm 을 linux 에서 실제로 프로세스 관리할때 쓰이나요?

0

402

0

user mode i/o 관련 질문

0

283

1

shared memory 관련해서 질문 드립니다.

0

521

1

교수님 fork()함수에 대해 질문이 있습니다.

0

896

2

process 와 thread

0

375

1

교수님 Docker 로 실습해도 괜찮을까요?

1

867

1

Mac OS에서 Docker 이용하여 Ubuntu 20.04 환경설정 방법 공유

22

3330

2

moniter, condition variable, synchronized에 대해서 궁금한점이 있습니다..

0

675

1

왜 무료인지 이해를 못 하겠네요..

3

433

1

7.1 Classic Problems of Synchronization 질문이 있습니다

0

307

1

공룡책 8판과 10판중

0

611

1

6.3 peterson's solution 질문이 있습니다

0

222

1

08-01 연습문제 8번 질문있습니다!

0

280

0

06. 프로세스간 통신의 실제: Chapter 3. Processes (Part 4) 에 그림 3.16 3.17 실습 오류

0

263

1

안녕하세요 교수님 실습 해봤는데 LINE J가 실행이 됩니다

1

356

1

2강 실습을 위한 개발환경 구축(Windows 10 + WSL 2 + Visual Studio Code)에서 출력오류

0

344

1

아래 질문 관련하여 다시 문의드립니다

0

199

1

Thread & Concurrency (Part 2) 질문드립니다

0

186

1