All'alba vincerò

At dawn, I will win!

CS

프로그램과 프로세스 & 멀티 프로그래밍과 멀티 프로세싱

나디아 Nadia 2025. 4. 24. 14:06

 

프로그램과 프로세스

1. 프로그램 (Program)

: 저장장치(하드 디스크 등)에 저장된 명령어들의 모음

  • 특징
    • .exe 확장자 파일 (windows 운영체제에서)
    • 단순히 저장된 상태 → 메모리에 올라가지 않음
    • CPU, 메모리 자원을 아직 사용하지 않음  수동적 존재
      https://www.crocus.co.kr/1369

 

 

 

2. 프로세스 (Process)

: 프로그램이 메모리에 올라가서 실행되고 있는 상태

  • 특징
    • 메모리, CPU 같은 자원 사용, 필요에 따라 입출력도 함 ⇒ 능동적 존재
  • 구조
    • code 영역: 자신을 실행하는 코드 저장(실행할 명령어)
    • data 영역: 전역 변수, static(정적) 변수 저장
    • heap 영역: 프로그래머가 런타임 시 동적으로 메모리를 할당할 수 있는 메모리 공간
    • stack 영역: 지역 변수(int vat = 1;), 함수 호출 시 필요한 정보(매개변수, 돌아갈 주소) 저장
    https://hackmd.io/@KangMoo/Bk5Z1c_en

 


멀티 프로그래밍과 멀티 프로세싱

 

1. 유니 프로그래밍 (Uniprogramming)

: 메모리에 하나의 프로세스만 올려놓고 처리하는 방식

    • 동작 방식
      • CPU는 프로세스를 실행하다가 I/O 작업을 만나면 I/O 작업이 완료될 때까지 기다림
        → I/O 작업이 완료되면 이어서 처리함
    • 단점
      • 프로세스가 I/O 작업을 하는 동안 CPU는 쉬게 됨
      • 하나의 프로세스를 다 끝내야 다른 프로세스를 실행 가능함
        → 비효율적

 

 

 

2. 멀티 프로그래밍 (Multiprogramming)

: 메모리에 여러 개의 프로세스를 올려놓고 번갈아가며 처리하는 방식

  • 동작 방식
    • CPU가 프로세스를 실행하다가 I/O 작업을 만나면, 해당 프로세스에서 발생한 I/O 작업을 기다리면서 다른 프로세스를 실행함
    • 각각의 프로세스들을 짧게 짧게 나눠 실행하면서 동시에 실행되는 것처럼 보이게 함 (→ 멀티 태스킹)
  • 장점
    • CPU가 쉬는 시간이 줄어듦 → 효율적

 

 

 

3. 멀티 프로세싱 (Multiprocessing)

: 여러 개의 CPU를 사용하는 방식

  • 동작 방식
    • 각 CPU가 동시에 다른 프로세스를 실행
    • 병렬 처리 가능
  • 조건
    • CPU가 2개 이상일 때만 가능
    • 멀티 프로그래밍보다 더 강력한 처리 성능 제공

 


 

Q.  I/O 작업 중 CPU가 쉬는 이유는?
A.  CPU는 빠르고, I/O 장치는 느리기 때문

  • CPU:  ↔ I/O 장치(하드디스크, 키보드 등): 느린 우체국
  • 만약 CPU가 파일을 읽어달라고 하드디스크에 요청하면, 하드디스크는 천천히 작업을 진행함
    → CPU는 기다리는 동안 멍 때림
  • 이때, 운영체제가 CPU에게 다른 작업을 주거나(=멀티 프로그래밍) 멍 때리게 둠(= 유니 프로그래밍)