아틴
Atin
아틴
전체 방문자
오늘
어제
  • 분류 전체보기 (460)
    • Devlopment (246)
      • 정리 글 (20)
      • MicroServices (0)
      • Reactive, Concurrenc.. (12)
      • Java (44)
      • Spring (20)
      • C,C++,Ruby,Python (52)
      • Mobile (39)
      • Web (35)
      • Tip & Info (14)
      • Unit Test (7)
    • Infra (44)
      • OS (21)
      • RDBMS (13)
      • NoSQL&Cache (5)
      • AWS (4)
    • Computer Science (11)
    • Etc (156)

블로그 메뉴

  • Home
  • Guestbook

공지사항

인기 글

태그

  • 여행
  • 전라도
  • Dungeons & Dragons
  • 정읍
  • javascript
  • Python
  • 아이폰
  • mysql
  • Java
  • Ruby on Rails
  • jsp
  • Android
  • CSS
  • 자바
  • TRPG
  • 안드로이드
  • 던젼 앤 드래곤즈
  • Linux
  • C
  • 해킨토시

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아틴

Atin

Computer Science

프로세스와 스레드(Process vs Thread)

2017. 9. 29. 18:46
반응형


프로세스 (Process)

  • 개념 : 리눅스 등의 멀티 프로세싱 운영체제에서 실행 중인 프로그램에 대한 인스턴스
  • 자원 : 
    • 자신만의 고유 공간과 자원을 할당받아 사용
    • 코드, 데이터, 스택, 힙 영역을 고유하게 가짐

스레드 (Thread)

  • 개념 : 한 프로세스 내에서 동작되는 여러 실행의 흐름
  • 자원 : 
    • 다른 스레드와 공간과 자원을 공유하여 사용
    • 코드, 데이터, 힙 영역을 공유

  • 장점
    • 시스템의 throughput이 향상

    • 프로세스 간 통신 방법에 비해 스레드 간의 통신 방법이 훨씬 간단하다.

      • 전역 변수를 이용하여 규현

    • 프로그램의 응답 시간이 단축

    • 시스템의 자원 소모가 줄어듬

  • 단점

    • 미묘한 시간 차나 잘못된 변수를 공유함으로써 오류가 발생할 수 있음

    • 프로그램 디버깅이 어려움

    • 단일 프로세서 시스템에서는 효과를 기대하기 어려움


컨텐스트 스위칭 (Context Switching)

  • A프로세스가 CPU를 사용 중인 상태에서 B프로세스가 CPU를 사용하기 위해, A프로세스의 상태를 보관하고 B프로세스의 상태를 적재하는 작업
  • Ready 상태인 B 프로세스가 존재하고, Running 상태인 A 프로세스가 존재하는데 인터럽트 요청에 의해 서로 상태가 전이되는 상황
  • CPU 내의 레지스터들(Register Set)에는 현재 실행중인 프로세스의 관련 데이터들이 들어가는데, B 프로세스가 Ready 상태가 되면 현재 레지스터에 저장된 A 프로세스의 데이터들을 메모리 공간에 저장해두고, B 프로세스의 레지스터 값을 메모리에서 CPU로 적재
  • 컨텍스트 스위칭이 일어나는 동안 CPU는 아무런 일을 하지 못하며, 컨텍스트 스위칭은 CPU에 많은 부하를 가져다 줌 (멀티 프로세스 운영체제의 단점)
  • 컨텍스트 스위칭의 시간은 레지스터의 수나 메모리의 속도 등에 좌우됨


스레드가 프로세스보다 빠른 이유

context-switching에는 느리고 시간이 걸리는데 동작중인 스레드가 전환될 때, 스레드는 프로세스와 마찬가지로 컨텍스트 스위칭을 수행한다.

그러나 스레드의 컨텍스트 정보는 프로세스보다 작기 때문에 스레드의 컨텍스트 스위칭은 프로세스의 컨텍스트 스위칭보다 빠르다.



Reference

[1] Process vs Thread (https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html)

[2] Context swithing (https://ko.wikipedia.org/wiki/%EB%AC%B8%EB%A7%A5_%EA%B5%90%ED%99%98)



반응형
저작자표시 비영리 변경금지 (새창열림)

'Computer Science' 카테고리의 다른 글

JVM 메모리 구조 (JVM Memory structure)  (0) 2017.09.30
DB 트랜잭션 (Transaction)의 ACID 속성과 분산시스템 BASE 속성  (0) 2017.09.30
OOP(객체 지향 프로그래밍) 5원칙 및 특성  (0) 2017.09.30
Java 자료구조 비교  (0) 2017.09.30
TCP vs UDP  (0) 2017.09.30
TCP 3 Way-Handshake & 4 Way-Handshake  (0) 2017.09.30
OSI 7 계층 (OSI 7 Layer)  (0) 2017.09.29
64비트와 32비트의 차이  (0) 2017.09.29
퀵 정렬, 퀵 소트(Quick Sort)  (0) 2017.09.21
계수정렬, 카운팅 소트(Counting Sort)  (0) 2017.09.21
    'Computer Science' 카테고리의 다른 글
    • TCP 3 Way-Handshake & 4 Way-Handshake
    • OSI 7 계층 (OSI 7 Layer)
    • 64비트와 32비트의 차이
    • 퀵 정렬, 퀵 소트(Quick Sort)
    아틴
    아틴

    티스토리툴바