본문 바로가기
2.1 CS/OS

[OS] Process , Context Swiching, IPC

by Dohi._. 2024. 8. 10.
728x90

프로세스(process)

  • 실행 중인 프로그램을 의미
    • 응용프로그램은 여러 프로세스로 구성가능
  • 스케줄링의 대상이 되는 작업(task),job이라는 용어와 혼용한다.
  • 프로세스 종류
    • 포그라운드 프로세스 : 사용자가 보는 곳에서 실행되는 프로세스
    • 백그라운드 프로세스 : 사용자가 보지 못하는 뒤에서 실행되는 프로세스
      • 직접 상호작용하는 백그라운드 프로세스와 상호작용하지 않는 백그라운드 프로세스로 나눠짐
      • 상호작용하지 않는 백그라운드 프로세스는 윈도우에서는 서비스 유닉스 체계 OS에서는 데몬(daemon)이라고도 부른다.
  •  멀티 프로세싱
    • 여러 개의 프로세서를 사용하는 것

프로세스 구조

  • 동적 할당 영역 : 실시간으로 크기가 변할 수 있는 영역
    • 스택(Stack) : 임시 데이터(함수 호출,로컬 변수)
    • 힙(Heap) : 코드에서 동적으로 만들어지는 데이터로 직접 프로그래머가 직접 할당할 수 있는 저장공간, 동적메모리라고도함
      • Java에서는 가비지컬렉션으로 메모리를 관리를 도와주는데 불필요한 객체가 차지하는 힙 공간을 삭제를 통해 힙공간 확보를 하게된다
      • 가비지 컬렉션이 없고 메모리관리를 하지 않았을때는 힙 공간이 부족하게 되는데 그럼 객체생성이 불가능하게 되며 객체 생성이 되지 않는 객체지향 프로그램은 동작을 하지 않게 된다
  • 정적 할당 영역 : 크기가 고정된 영역
    • 데이터(data) : 변수/초기화 된 데이터 (예시:전역변수)
    • 코드(Code) :Text라고도 하며 코드가 저장되어있는 영역이며 쓰기가 금지되어있습니다(읽기 전용 공간)

Process Control Block(PCB)

프로세스들은 실행을 위해 한정된 CPU자원을 사용해야 합니다. 차례대로 프로세스들은 한정된 시간에 CPU를 이용하는데
자신의 차례와 정해진 시간만큼 이용하고 시간이 끝날경우 인터럽트(타이머 인터럽트)가 발생하여 다음 차례가 올 때까지 기다리게 됩니다.

OS는 이를 관리하기 위해 PCB(프로세스 제어블록)을 이용하게 됩니다.

PCB는 프로세스에 관한 정보를 저장하는 자료구조로써 해당 프로세스를 식별하기 위해 필요한 정보들이 저장이 됩니다.

메모리의 커널영역과 사용자 영역중 커널영역에 프로세스 생성 시에 생성이 되며 종료시에 삭제가 됩니다.

  • 담긴 정보
    • PID (프로세스ID)
    • 상태
    • 레지스터 값 (PC,SP등)
    • CPU 스케줄링 정보, 메모리 관리 정보, 파일 .. 등등

요약

PCB  : 프로세스가 실행중인 상태를 구조화하여 저장

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

  • CPU에 실행할 프로세스를 교체하는 기술
    process A -> B 로 변경이 되는 과정에서 중간 정보를 기록해 놔서 다음에 또 차례가 돌아 왔을 때 이전까지 실행했던 내용에 이어 다시 실행할 수 있게 된다.

여기서 말하는 중간정보 즉, 하나의 프로세스 재수행을 위해 기록한 정보를 문맥이라하고
PCB로 복구하여 새로운 프로세스를 실행 하는 것을 컨텍스트 스위칭이라고 한다.

  • process A 진행→ A문맥저장 → 다음 실행할 프로세스의 PCB를 가져오기 → Process B 진행
  • 여기서 A문맥저장 → 다음 실행할 프로세스의 PCB를 가져오기가 컨텍스트 스위칭인 것이다

 

이과정에서 관련된 레지스터 PC, SP가 있다.

  • Program Counter (PC)
    • 메모리에서 실행할 다음 명령어의 주소를 저장하는 레지스터
  • Stack Pointer (SP)
    • 스택의 마지막 프로그램 요청 주소를 저장하는 레지스터

레지스터와 함께 컨텍스트 스위칭 세부동작을 보면 다음과 같다

1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트후 메인메모리에 저장 (회색부분)

2. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB정보(PC,SP)를 CPU의 레지스터에 넣고 실행 (빨간부분)

프로세스간 커뮤니케이션 (IPC :  InterProcess communication)

프로세스는  다른 프로세스의 공간에 접근할 수 없다. (독립적)

그럼 여러 프로세스를 만들어서 동시 실행(멀티프로세스)을 하는 경우가 많은데(성능향상)

이때 프로세스간 상태 확인 및 데이터 송수신이 필요하다

 

IPC: 프로세스 간 통신방법 /  프로세스간 통신

 

프로세스간 서로 독립이 되어 있어 다른 프로세스에 대해 영향을 받지 않는 다는 장점이 있지만 통신이 어렵다는 문제가 있다

사실 프로세스간 접근이 불가능하게 보이지만 커널 영역에서는 공유가 가능한 영역이있다 이를 이용하여 

커널 영역에서 IPC라는 내부 프로세스간 통신을 제공하게된다

즉, 프로세스는 커널 제공하는 IPC를 이용해서 프로세스간 통신을 할 수 있게 된다.

 

IPC 기법들 (file 이후로 Kernel 이용)

  • file 이용
  • Message Queue
  • Shared Memory
  • Pipe
  • Signal
  • Semaphore
  • Socket

다 각자 공간을 두고 공유를 하는 방법이고

예를들어 Shared Memory(공유 메모리)도 

커널영역(커널공간/kernel space)에 메모리 공간을 만들고 변수처럼 쓰는 식으로 공간을 두고 공유를 하는 방식이다.

 

IPC를 요약을하면

프로세스간 독립으로 인한 프로세스 통신필요

프로세사간 통신을 위한 IPC 기법 존재

IPC는 커널 영역을 활용하는 것 (커널 영역은 공유하기 때문)

728x90

'2.1 CS > OS' 카테고리의 다른 글

[OS] 사용자 모드와 커널 모드  (0) 2024.08.09
[OS] Operating System  (0) 2024.08.09

댓글