운영체제

운체 궁금했던거

cheesecrust1008 2023. 3. 26. 14:15

일반적으로 프로세스의 페이지 테이블 정보는 커널 스택에 직접 저장되지는 않습니다. 커널 스택은 각 프로세스마다 독립적으로 할당되는 것이 아니라, 커널 전체에서 공유되는 메모리 공간이기 때문입니다.

 

 

kernel 스택에 프로세스 switching 시에 저장되는 정보는 뭐야?
 

프로세스 스위칭 시에는 커널 스택(kernel stack)에도 일부 정보가 저장됩니다. 이 정보는 주로 인터럽트나 예외 처리 시에 필요한 정보들입니다.

보통 커널 스택에 저장되는 정보에는 다음과 같은 것들이 있습니다.

  1. 인터럽트 또는 예외 처리 시에 저장되는 레지스터 값: 인터럽트나 예외가 발생하면 커널 모드로 전환되고, 해당 인터럽트 또는 예외를 처리하는 인터럽트 핸들러(interrupt handler)가 실행됩니다. 이때 현재 실행 중인 프로세스의 레지스터 값은 커널 스택에 저장되고, 인터럽트 핸들러에서 필요한 레지스터 값은 커널 스택에서 불러와 사용됩니다.
  2. 태스크 스위칭 시에 저장되는 레지스터 값: 프로세스 스위칭 시에는 현재 실행 중인 프로세스의 레지스터 값이 PCB에 저장됩니다. 다음 실행될 프로세스의 레지스터 값은 PCB에서 불러와 사용됩니다. 하지만 일부 레지스터는 커널 스택에 저장되어 있는 경우도 있습니다. 예를 들어, x86 아키텍처에서는 태스크 스위칭 시에 EFLAGS와 ESP 레지스터 값이 커널 스택에 저장됩니다.
  3. 커널 모드에서 실행되는 시스템 호출의 인자 값: 프로세스가 시스템 호출을 수행할 때, 커널 모드에서 실행됩니다. 이때 시스템 호출의 인자 값은 커널 스택에 저장됩니다.
  4. 인터럽트나 예외 처리 시에 사용되는 임시 데이터: 인터럽트나 예외 처리 시에는 다양한 임시 데이터가 필요합니다. 이 임시 데이터는 보통 커널 스택에 저장됩니다.
  5. 시스템 호출 반환 값: 시스템 호출이 완료되면, 해당 호출의 반환 값은 보통 EAX 레지스터에 저장됩니다. 이때 EAX 레지스터 값은 커널 스택에 저장됩니다.

위와 같은 정보들이 커널 스택에 저장되며, 필요할 때마다 해당 정보를 불러와 사용합니다.

 

 

page table의 경우 page table이 pcb에 저장되지 않고, 그 위치가 pcb에 저장된다.

 

그러면 프로세스가 switching 될때에 이전 프로세스의 테이블 위치를 pcb 저장하는 거야?

 

, 맞습니다. 프로세스가 스위칭될 , 현재 실행 중인 프로세스의 상태 정보를 저장하는 프로세스 제어 블록 (Process Control Block, PCB) 이전 프로세스의 페이지 테이블 정보를 저장합니다.

 

PCB 프로세스마다 별도로 할당되는 메모리 공간으로, 프로세스의 상태 정보를 저장하는 사용됩니다. PCB 저장되는 정보는 프로세스의 식별자, 레지스터 , 메모리 할당 정보, 실행 우선순위 등이 있습니다. PCB 페이지 테이블 정보를 저장함으로써, 스위칭된 이후에 다시 이전 프로세스가 실행될 이전 페이지 테이블 정보를 참조할 있게 됩니다.

 

따라서, PCB 스위칭된 이전 프로세스의 페이지 테이블 정보를 저장하고, 정보를 활용하여 이전 프로세스가 실행될 페이지 테이블을 다시 복구합니다. 이렇게 함으로써, 이전 프로세스가 실행 중인 상태에서 멈춘 지점에서부터 다시 실행될 있게 됩니다.

'운영체제' 카테고리의 다른 글

운영체제 segmentation, free space  (0) 2023.03.15
운영체제 adress translation  (0) 2023.03.12
운영체제 address space  (0) 2023.03.12
운영체제 scheduling proportional share  (0) 2023.03.12
운영체제 MLFQ  (0) 2023.03.11