[컴퓨터 지식] 프로세스, 스레드

김명섭·2024년 3월 29일

[Computer]

목록 보기
1/5

1. 프로그램(program)

  • 컴퓨터가 실행할 수 있는 명령어들의 집합

2. 프로세스(process)

  • 컴퓨터에서 실행 중인 프로그램.
  • 각각의 프로세스는 독립된 메모리 공간을 할당 받음
  • 명령어들과 데이터를 가짐(메모리에 저장)

3. CPU(central processing unit)

  • 명령어를 실행하는 연산 장치

4. 메인 메모리(main memory)

  • 프로세스가 CPU에서 실행되기 위해 대기하는 곳

5. IO(input/output)

  • 파일을 읽고 쓰거나
  • 네트워크의 어딘가와 데이터를 주고 받는 것
  • 입출력 장치와 데이터를 주거나 받는 것

6. 단일 프로세스 시스템

  • 한 번에 하나의 프로그램만 실행됨
  • 단점 : CPU 사용률이 좋지 않음
    프로세스가 CPU 작업을 하다가 IO 작업을 만나면, CPU 작업은 중지된다.
    이때, 그 동안 CPU는 놀고있게 되고, 이 시간을 효율적으로 사용하기 위해
    멀티 프로그래밍이라는 개념이 나온다.

7. 멀티 프로그래밍

  • 위 문제를 해결하기 위해 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행시키는 방법을 씀.
  • 한 프로세스가 CPU 작업이 끝나고 IO 작업을 하는 동안, 다른 프로세스를 CPU에서 실행됨(처리됨)
  • 단점 : CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기해야함.
    이를 해결하기 위해, 프로세스는 한 번 CPU를 사용할 때, 아주 짧은 시간(quantum)만 CPU에서 실행되도록 함.

8. 멀티태스킹

  • 단위 시간으로 나누고 빠르게(단위 시간이 짧음) 번갈아가며 프로세스를 진행하면, 동시에 프로세스가 진행되는 것과 같은 효과를 주고 이것을 멀티태스킹이라고 한다.
  • 프로세스의 응답 시간을 최소화 시키는데 목적(동시에 실행된다고 느낌)
  • 단점 : 하나의 프로세스가 동시에 여러 작업을 수행하지는 못함
  • 단점 : 프로세스의 컨텍스트 스위칭은 무거운 작업이다.
    (컨텍스트 스위칭은 CPU에서 실행되는 작업을 바꾸는 것)
  • 단점 : 프로세스끼리 데이터 공유가 까다로움
    하나의 프로세스는 독립된 메모리 공간을 할당 받으므로, 프로세스 끼리는 공유가 힘듦

9. 스레드

  • 듀얼 코어의 등장과 함께 등장
  • CPU에서 실행되는 단위(unit of execution)
  • 프로세스는 한 개 이상의 스레드를 가질 수 있다.
  • 같은 프로세스의 스레드들 끼리의 컨텍스트 스위칭이 가볍다.
    (컨텍스트 스위칭이 실행될 때, 기본적으로 현재 실행 중인 프로세스 혹은 스레드의 context의 백업이 진행된다. 그런데, 프로세스 컨텍스트 스위칭은 서로 간에 메모리가 독립적으로 할당되고 섞이지 않게 하기 위해, 캐시를 비우고(flush), TLB를 비우고, MMU설정을 변경한다. 같은 프로세스에 속한 스레드들 끼리는 동일한 메모리 영역을 공유하기 때문에 백업만 진행하면 되고 따라서 비교적 가볍다.)
  • 싱글 스레드 vs 멀티 스레드

    동일한 프로세스 내의 스레드들은 메모리 영역을 공유한다. 정확히는 heap 영역을 공유하고, 자기만의 고유한 stack 영역을 갖는다. 또한, program count(다음번에 실행돼야할 명령어가 있는 주소)도 각각 가지고 있다.
    (heap, static, code 영역은 공유, stack 영역과 레지스터를 고유로 할당하는 듯)

10. 멀티스레딩

  • 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적
  • 듀얼 코어에 각각의 스레드를 처리하면, 진정한 의미의 동시 처리이고 이를 멀티스레딩이라고 한다.
  • 여러 프로세스와 여러 스레드가 짧은 단위 시간으로 CPU 작업을 하기 때문에, 확장된 멀티태스킹이라고 볼 수 있다.

11. 멀티프로세싱

  • 두 개 이상의 프로세서나 코어를 활용하는 시스템
profile
ML Engineer

0개의 댓글