프로그램이란?

  • 어떤 문제를 해결하기 위해 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문 집합체

 

프로세스의 메모리 공간에 대해 설명

  • code, data, stack, heap 영역으로 나누어 집니다.
  • code 영역은 실행할 프로그램의 코드가 저장됩니다. CPU는 code에서 명령어를 가져와 처리하게 됩니다.
  • stack 영역은 함수의 수행을 마치고 복귀할 주소 및 데이터를 가지고 있는 영역입니다. 즉, 잠시 사용되고 사라지는 데이터 영역입니다.
  • heap 영역은 프로그램 실행 중에 동적으로 할당되는 영역입니다.
  • data 영역은 프로그램이 사용하는 데이터 공간이고 전역변수로 static 변수가 있습니다.

스레드란?

  • 프로세스의 자원을 이용하는 최소 실행 단위

프로세스와 스레드가 어떤 차이인지 예시를 들어 설명

  • 식당을 예로 들 수 있을 것 같습니다.
    • 중식당(프로세스)과 일식당(프로세스)
    • 각 식당에서 일하는 요리사(스레드)들은 해당 식당에서의 자원을 사용할 수 있습니다.
    • 하지만 서로의 식당에서의 자원은 공유를 할 수 없습니다.
  • 프로세스는 자원을 공유하지 못하지만, 스레드는 공유할 수 있습니다.

 

스레드의 메모리 공간(스택, 데이터, 코드)에 대해 설명

한 프로세스 내에서 여러 스레드가 생성될 수 있습니다. 이때 데이터, 코드, 힙 영역에 대해서는 각 스레드간 공유가 가능합니다.

하지만 스택만큼은 독립적으로 사용을 하게 됩니다.

프로세스 제어블록(PCB)에 대해 설명

프로세스를 제어하기 위해 정보를 담아 놓는 공간입니다.

이는 Context Switching 을 위해서 존재합니다.

 

프로세스가 생성되면 메모리에 PCB 가 생성되고 종료 시 삭제됩니다.

 

PCB에는 어떤 정보가 담겨있을까요?

  1. Process ID -> 프로세스 ID
  2. Process State -> state 들의 상태를 저장
  3. Program Counter -> 다음 Instruction 의 주소를 저장
  4. Resister -> Accumulator, CPU Register, General Register 등
  5. CPU Scheduling Information -> 우선 순위, 최종 실행시간, CPU 점유시간 등
  6. Memory Information -> 해당 프로세스 주소공간
  7. Process Information
  8. Device IO Status
  9. Pointer
  10. Open File List

 

스레드 제어블록(TCB)에 대해 설명

PCB 와 비슷하게 스레드에 대한 정보를 담고 있는 자료구조 입니다.

TCB 는 PCB 안에 존재합니다.

스레드가 생성되면 같이 생성되고 소멸될 시 삭제됩니다.

 

멀티 프로세스에 대해서 설명

하나의 프로그램이 여러 프로세스를 실행하는 기술입니다.

구조는 하나의 부모 프로세스에 여러 자식 프로세스를 가지는 구조입니다.

자식 프로세스는 부모 프로세스의 고유 아이디(PID)를 알고 있어서 통신이 가능합니다.

 

멀티 쓰레딩에 대해서 설명

하나의 프로세스 안에 여러 스레드가 실행되는 기술입니다.

하나의 프로그램에서 여러 동작을 처리하는게 가능해집니다.

 

fork() 명령어에 대해 설명

새로운 프로세스는 fork() 라는 시스템 콜로 생성

생성된 프로세스는 원래 프로세스의 주소 공간의 복사본으로 구성됩니다. -> 부모 자식 프로세스 간 통신할 수 있게하는 기법

부모와 자식 프로세스간 다른점이 하나 있는데 복귀 코드가 서로 다르다.

 

프로세스끼리 협력하는 방법에 대해서 설명

공유 메모리와 메시지 전달 두 가지 모델이 있습니다.

공유 메모리

  • 협력 프로세스들에 의해 공유되는 메모리 영역이 구축됩니다.
  • 구축된 영역에 데이터를 읽고 씀으로 정보를 교환할 수 있습니다.

메시지 전달

  • 협력 프로세스들 사이에 교환되는 메시지를 통하여 이루어집니다.
  • 충돌을 회피할 필요가 없기 때문에 적은 양의 데이터를 교환하는데 유용합니다.

둘의 차이점은

공유 메모리 모델이 더 빠릅니다. 이유는 메모리 영역을 구축할 때만 시스템 콜이 필요하기 때문입니다.

구축이 되면 모든 접근은 일반 메모리 접근으로 취급되기 때문에 커널 도움이 필요 없습니다.

메시지 전달 모델은 적은 양의 데이터를 교환할 때 유용합니다.

복사했습니다!