[CS] 운영체제(2)

Soo·2023년 3월 16일
0
post-thumbnail

Process & Thread


1. Process

💡 Process란?

  • 실행 중인 프로그램(program in execution)을 뜻합니다.
  • 즉, 실행파일 형태로 존재하던 program이 memory에 적재되어 CPU에 의해 실행(연산)되는 것을 process라고 합니다.

Memory에 적재

  • memory는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치
  • program이 CPU에서 실행되려면 해당 내용이 memory에 적재된 상태여야만 합니다.
  • 프로세스에 할당되는 memory 공간은 Code, Data, Stack, Heap 4개의 영역으로 이루어져 있으며, 각 process마다 독립적으로 할당을 받습니다.

  • Code 영역: 실행한 프로그램의 코드가 저장되는 메모리 영역
  • Data 영역:프로그램의 전역변수와 static변수가 저장되는 메모리 영역
  • Heap 영역: 프로그래머가 직접 공간을 할당/해제하는 메모리 영역
  • Stack 영역: 함수 호출 시 생성되는 지역변수와 매개변수가 저장되는 임시 메모리 영역

2. Multi process (⭐️⭐️⭐️⭐️)

💡 Multi process란?

  • 2개 이상의 process가 동시에 실행되는 것을 의미합니다.
  • '동시에' 라는 말은 동시성(concurrency)/ 병렬성(parallelism) 두 가지를 의미
    • 동시성(concurrency): CPU core가 1개일 때, 여러 process를 짧은 시간동안 번갈아 가면서 연산을 하게 되는 시분할 시스템(time sharing system)으로 실행되는 것
    • 병렬성(parallelism): CPU core가 여러 개일 때, 각각의 core가 각각의 process를 연산함으로써 process가 동시에 실행되는 것

3. Multi process vs multi thread 비교설명 (⭐️⭐️)

  • multi thread는 multi process 보다 적은 메모리 공간을 차지하고 Context Switching이 빠릅니다.
  • multi process는 multi thread보다 많은 메모리 공간과 CPU 시간을 차지합니다.
  • multi thread는 동기화 문제와 하나의 thread 장애로 전체 thread가 종료될 위험이 있습니다.
  • multi process는 하나의 process가 죽더라도 다른 process에 영향을 주지 않아 안정성이 높습니다.

4. multi process 환경에서 process간의 데이터를 어떻게 주고 받을까? (⭐️⭐️)

  • 원칙적으로 process는 독립적인 주소 공간을 갖기 때문에, 다른 process의 주소 공간을 참조할 수 없습니다. 하지만 경우에 따라 운영체제는 process간의 자원 접근을 위한 매커니즘인 프로세스 간 통신 (IPC, Inter Process Communication)을 제공합니다.

  • 프로세스간 통신(IPC) 방법으로는 파이프, 파일, 소켓, 공유메모리 등을 이용한 방법들이 있습니다.

5. Multi process/thread 환경에서 동기화 문제를 어떻게 해결하나?

우선 동기화 문제를 해결하기 위해 mutex, semaphore 기법 등을 사용할 수 있습니다.

1) Mutex: 1개의 thread만이 공유 자원에 접근할 수 있도록 하여, 경쟁 상황 (race condition)을 방지하는 기법

  • 공유 자원을 점유하는 thread가 lock을 걸면, 다른 thread는 unlock 상태가 될 때까지 해당 자원에 접근할 수 없습니다.

2) Semaphore: S개의 thread만이 공유 자원에 접근할 수 있도록 제어하는 동기화 기법

  • 정수형 변수 S(Semaphore) 값을 가용한 자원의 수로 초기화하고, 자원에 접근할 때는 S-- 연산을 수행하여 세마포 값을 감소시키고, 자원을 방출할 때는 S++ 연산을 수행하여 세마포 값을 증가시킵니다.
  • 이 때, 세마포 값이 0이 되면, '모든 자원이 사용중'임을 의미하고, 이후 자원을 사용하려는 프로세스는 세마포 값이 0보다 커질 때까지 block 됩니다.

6. 교착상태 (Deadlock)

profile
Soogineer's Devlog

0개의 댓글