CS

[면접을 위한 CS 전공지식 노트] 3.3. 프로세스와 스레드(2)

yes_truly 2024. 3. 18. 17:22
728x90

 


 

🔑 PCB(Process Control Block)

  • 운영체제에서 프로세스에 대한 메타 데이터를 저장한 데이터
  • 프로세스가 생성되면 운영체제는 해당 PCB 생성
  • 프로세스의 메타 데이터가 PCB에 저장되어 관리됨
    • 메타 데이터
      데이터에 관한 구조화된 데이터를 설명하는 작은 데이터, 대량의 정보 중 찾고 있는 정보를 효율적으로 찾아내 이용하기 위해 일정 규칙에 따라 콘텐츠에 부여되는 데이터프로세스의 중요 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리됨
  • 프로세스의 중요 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리됨

 

🔑 PCB의 구조

  • 프로세스 스케줄링 상태 : 준비, 일시 중단 등 프로세스가 CPU에 대한 소유권을 얻은 이후의 상태
  • 프로세스 ID : 해당 프로세스의 자식 프로세스 ID + 프로세스 ID
  • 프로세스 권한 : 컴퓨터 자원 또는 I/O 디바이스에 대한 권한 정보
  • 프로그램 카운터 : 프로세스에서 실행해야 할 다음 명령어의 주소에 대한 포인터
  • CPU 레지스터 : 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보
  • CPU 스케줄링 정보 : CPU 스케줄러에 의해 중단된 시간 등에 대한 정보
  • 계정 정보 : 프로세스 실행에 사용된 CPU 사용량, 실행한 유저의 정보
  • I/O 상태 정보 : 프로세스에 할당된 I/O 디바이스 목록

 

🔑 컨텍스트 스위칭(context switching)

  • PCB를 교환하는 과정
  • 컴퓨터에서 어떠한 시점에서 실행되고 있는 프로세스는 단 한개이고, 많은 프로세스가 동시에 구동되는 것처럼 보이는 이유는 다른 프로세스와 컨텍스트 스위칭이 아주 빠르게 실행되기 때문

 

  • 프로세스 A를 실행하다 멈추고 → A의 PCB 저장 → B의 PCB를 로드해 실행 → B의 PCB 저장 → A의 PCB를 로드하는 과정을 거침
  • 유휴 시간 발생
  • 비용 발생
    • 컨텍스트 스위칭이 일어날 때 프로세스가 갖고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생겨 캐시 클리어 과정을 겪음
    • 캐시미스라는 비용이 발생하게 됨
  • 스레드에서의 컨텍스트 스위칭
    스택을 제외한 모든 메모리를 공유해 스레드 컨텍스트 스위칭의 경우 비용이 더 적고 시간도 더 적게 걸림

 


 

🔑 멀티 프로세싱

  • 여러 개의 프로세스를 통해 동시에 두 가지 일을 수행할 수 있는 것
  • 하나 이상의 일을 병렬로 처리할 수 있음
  • 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생되더라도 다른 프로세스를 이용해 처리 가능하기 때문에 신뢰성이 높음

 

🔑 웹브라우저 → 멀티 프로세싱 구조를 가짐

  • 브라우저 프로세스 : 주소 표시줄, 북마크 막대, 뒤로가기 버큰 등 담당 + 네트워크 요청이나 파일 접근같은 권한 담당
  • 렌더러 프로세스 : 웹 사이트가 보이는 부분의 모든 것 제어
  • 플러그인 프로세스 : 웹사이트에서 사용하는 플러그인 제어
  • GPU 프로세스 : GPU를 이용해 화면을 그리는 부분 제어

 

🔑 IPC(Inter Process Communication)

  • 멀티 프로세스는 IPC가 가능함.
  • 프로세스끼리 데이터를 주고받는 공유 데이터를 관리하는 메커니즘
  • 공유 메모리(shared memory)
    • 여러 프로세스에 동일한 메모리 블록에 대한접근 권한이 부여되어 프로세스가 서로 통신할 수 있도록 공유 메모리 생성
    • 공유 메모리를 통해 여러 프로세스가 하나의 메모리 공유 가능
    • 메모리 자체를 공유해 불필요한 데이터 복사의 오버 헤드가 발생하지 않아 가장 빠르고, 같은 메모리 영역을 여러 프로세스가 공유해 동기화가 필요함
  • 파일
    • 디스크에 저장된 데이터 또는 파일 서버에서 제공한 데이터. 이를 기반으로 프로세스간 통신을 함
  • 소켓
    • 동일한 컴퓨터의 다른 프로세스나 네트워크의 다른 컴퓨터로 네트워크 인터페이스를 통해 전송하는 데이터
    • TCP, UDP가 있음
  • 익명 파이프(unamed pipe)
    • 프로세스 간 FIFO 방식으로 읽히는 임시공간인 파이프를 기반으로 데이터 주고 받음
    • 단방향 방식의 읽기 전용, 쓰기 전용 파이프를 만들어 작동하는 방식
    • 부모 - 자식 프로세스 간에만 사용 가능함

 

  • 명명된 파이프(named pipe)
    • 파이프 서버와 하나 이상의 파이프 클라이언트 간 통신을 위한 명명된 단방향 또는 양방향 파이프
    • 클라이언트 - 서버 통신을 위한 별도의 파이프 제공
      • 클라이언트/서버 용 파이프 구분해서 작동
    • 여러 파이프 동시 사용 가능
    • 컴퓨터 프로세스 간, 다른 네트워크 상 컴퓨터 간 통신 가능함

 

  • 메시지 큐
    • 메시지를 큐 데이터 구조 형태로 관리
    • 커널에서 전역적으로 관리하고 사용 방법이 비교적으로 매우 직관적이고 간단함
    • 다른 코드 수정없이 몇 줄의 코드를 추가시켜 간단히 메시지 큐에 접근 가능함
    • 공유 메모리로 IPC 구현 시 쓰기, 읽기 빈도가 높으면 동기화 기능으로 인해 기능 구현이 복잡해지는데, 이 때 메시지 큐를 대안으로 사용할 수 있음

 


 

🔑 스레드와 멀티 프로세싱

  • 스레드
    • 프로세스의 실행 가능한 가장 작은 단위
    • 프로세스는 여러 스레드를 가질 수 있음
    • 코드, 데이터, 힙은 스레드끼리 서로 공유하고 그 외 영역은 각각 생성함
  • 멀티 스레딩
    • 프로세스 내 작업을 여러 스레드로 처리하는 기법
    • 장점 : 스레드끼리 자원을 공유해 효율성이 높고 동시성에서 장점을 가짐
      • 동시성 : 서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보여주는 것
    • 단점 : 한 스레드에 문제가 생기면 다른 스레드로 영향을 미침 → 스레드로 이루어져 있는 프로세스에 영향을 미침

728x90