인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

0__th님의 프로필 이미지

작성한 질문수

운영체제 공룡책 강의

04. 프로세스의 생성: Chapter 3. Processes (Part 2)

컨텍스트 스위칭과 PCB

작성

·

51

0

안녕하세요! 먼저 좋은 강의를 제공해주셔서 너무 감사합니다. 다름이 아니라 강의를 듣다가 궁금한점이 들어서 글을 남기게 되었습니다.

 

운영체제

운영체제는 프로세스를 관리하며, 컨텍스트 스위칭 시 프로세스마다 할당된 PCB 자료구조를 확인하여 CPU의 레지스터에 상태(Context)를 설정한다는 것으로 이해하였습니다!

 

컨텍스트 스위칭

그렇다면, 프로세스 A, 프로세스 B가 메모리에 로드되어 있는 상태에서 프로세스 A가 실행되다가 할당된 CPU Time 을 다 소비하게 된다면 CPU Interrupt 가 발생되어, A의 PCB에 현재까지의 context를 저장하게 될 것이라고 추측하고 있습니다.

그렇다면, 프로세스 A에서 프로세스 B로 컨텍스트 스위칭이 되는 것이 아니라 프로세스 A에서 운영체제로 컨텍스트 스위칭이 되고, 운영체제가 프로세스 A의 PCB 작업을 처리한 후에 프로세스 B로 다시 컨텍스트 스위칭이 되는 것이 맞을까요??

 

추가로, 운영체제 또한 자료구조이며 PCB 자료구조는 동적으로 생성 및 삭제가 되는 것으로 생각이 되는데 운영체제 역시 하나의 프로세스로 간주하여 운영체제의 동적 메모리 영역인 힙 영역에 PCB가 생성 및 제거 되는 것일까요??

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 0__th님께서 이해하신 내용에 대해 조금 더 설명드리겠습니다.

컨텍스트 스위칭(문맥 교환)

  • 프로세스 A에서 프로세스 B로 컨텍스트 스위칭이 이루어질 때, 운영체제가 중간에서 역할을 담당하는 것은 맞습니다. 운영체제는 인터럽트를 통해 현재 실행 중인 프로세스 A의 상태를 PCB에 저장하고, 다음 실행할 프로세스 B의 PCB에서 상태를 불러와서 CPU의 레지스터에 설치합니다.
  • 즉, 컨텍스트 스위칭은 프로세스 간 직접적으로 이루어지는 것이 아니라, 운영체제가 중간에서 관리하여 수행한다는 점에서 이해하신 부분이 정확합니다.

PCB(프로세스 제어 블록)의 관리

  • PCB는 각 프로세스의 정보(프로세스 ID, 상태, CPU 레지스터 정보 등)를 담고 있으며, 운영체제 커널 영역에서 관리됩니다. 프로세스마다 모든 PCB 정보가 동적으로 생성되지 않고, 운영체제의 정의에 따라 커널 데이터 구조의 일부로 관리됩니다.
  • 운영체제를 하나의 프로세스로 간주할 수 있지만, 일반적으로 PCB는 운영체제를 통해 관리되는 커널 구조에 속합니다. 이는 운영체제와 유저 프로세스 사이의 메모리 구조가 다른 이유에서 비롯됩니다.

아래 링크들은 PCB와 컨텍스트 스위칭에 대해 더욱 자세히 설명하고 있으니 참고하시기 바랍니다:

  1. PCB는 어디에 store되고 어디서 load되는건가요?
    • 이 질문에서 PCB의 저장 매커니즘과 운영체제에서의 관리 방법을 확인할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0__th님의 프로필 이미지
0__th
질문자

아! 그렇다면, 메모리 구조(코드, 데이터, 힙, 스택)은 결국 유저 영역 프로세스의 메모리 구조였던 것이고 커널 영역에서는 이와 다른 메모리 구조를 취하고 여기에 PCB가 저장된다는 것으로 이해하면 될까요??

0__th님의 프로필 이미지

작성한 질문수

질문하기