CS/OS

[OS] 프로세스/컨텍스트 스위칭/IPC

ryureeru 2022. 9. 29. 17:48

<정리할 것>

 

1. 프로세스 구조
2. 컨텍스트 스위칭
3. IPC

 

 

 

 

 


 

 

 

 

 

프로세스 구조

 

  • text : 코드
  • data : 변수/초기화된 데이터
  • stack : 임시 데이터(함수 호출, 로컬 변수 등)
  • heap : 코드에서 동적으로 만들어지는 데이터

 

 

 

 

 

 

 


 

 

 

 

 

컨텍스트 스위칭 (Context Switching)

 

  • CPU에 실행할 프로세스를 교체하는 기술
  • PC, SP만 바꿔주면, 프로세스 저장상태를 기반으로 실행 가능

 

 

1. 실행 중지할 프로세스의 PCB에 현재 CPU의 PC(다음 실행해야 하는 코드의 주소 값을 가지고 있는 곳)와 SP(Stack의 데이터 위치를 가리키는 곳) 레지스터 값을 저장한다

 

2. 다음 실행할 프로세스의 PCB 정보(PC, SP)를 메인메모리에서 읽어온다

 

3. 읽어온 다음 실행할 프로세스의 기존 PC와 SP 값을 CPU의 해당 레지스터에 없데이트한다

 

4. 다음 실행할 프로세스를 CPU에서 실행한다

 

 

 

 

 


 

 

 

 

 

 

IPC(InterProcess Communication)

 

  • 여러 프로세스 동시 실행을 통한 성능 개선, 복잡한 프로그램을 위해 프로세스 간 통신 필요 !
  • 프로세스는 다른 프로세스의 공간을 접근할 수 없기에 프로세스 간 통신 방법이 필요 (프로세스는 기본적으로 다른 프로세스의 사용자 영역 공간을 직접 접근할 수 없음)
  • 대부분의 IPC 기법은 커널 공간을 활용함 (커널 공간은 공유하기 때무네)

 

 

1. Shared Memory

 

  • 공유 메모리는 커널 영역에 메모리 공간을 만들고 활용하는 방식

 

 

2. Pipe

 

  • 부모의 프로세스가 생성된 자식 프로세스에게 단방향으로 데이터를 전달하는 방법
  • pipe로 먼저 생성 후 fork로 자식 프로세스 생성

 

 

3. Signal

 

  • 시그널은 다른 프로세스에 어떤 이벤트가 발생되었는지 알려주는 기법

 

 

4. Semaphore

 

  • 세마포어는 프로세스 사이의 동기를 맞추는 기능을 제공
  • ex) 공유 메모리에 여러 프로세스가 동시에 쓰기를 시도한다면 데이터가 손상되는 현상이 발생한다. 따라서 여러 프로세스 사이의 공유 영역에 대한 접근 및 동작 순서를 지정해야 한다.

 

 

5. 이외의 IPC 기법 ... file 사용, Message Queue, Socket 등