본문 바로가기

TEAM STUDY/한 권으로 읽는 컴퓨터 구조와 프로그래밍

인스턴스 / 프로세스 / 쓰레드 ??? 🙄

728x90
반응형

인스턴스

 

  • 일반적으로 실행 중인 임의의 프로세스, 클래스의 현재 생성된 오브젝트를 가르킨다.
  • 객체 ( 오브젝트 ) 의 인스턴스는 데이터베이스나 SGA, 백그라운드 프로세스 프로세스 등 광범위한 컴퓨터 시스템 자원의 접근에 할당된 물리 메모리의 일부를 가르킨다.
  • 응용 프로그램 (application) 을 메모리에 띄운 것
    • 예를 들어서 메모장을 바탕화면에 띄웠을 때 그것은 하나의 인터턴스인 것이다. 그런데 바탕화면에 메모장을 여러 개 띄울 수 있다. 그 때 인스턴스는 여러 개가 되는 것이다. 
  • 객체 지향 프로그래밍(OOP)에서 인스턴스(instance)는 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다. 여기서 클래스는 속성과 행위로 구성된 일종의 설계도이다.
  • OOP에서 객체는 클래스와 인스턴스를 포함한 개념이다.
  • 이해하기 쉽게 일반적인 단어로 설명하자면, 계산 문제를 '입력과 출력이 명확히 기술된 것'으로 수학적으로 정의할 때, 계산 문제의 입력이 될 수 있는 것은 무한히 많이 존재하고 그것들 하나하나를 해당 계산 문제의 인스턴스라고 부른다.

 

프로세스

 

  • 현재 실행 중인 프로그램
  • 상기의 여러 인스턴스들 가운데서 초점 (focus)이 있는 것을 프로세스라고 한다. 
  • 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태.

 

멀티 태스킹

  • 멀티태스킹이란 OS를 통해 CPU가 작업하는데 필요한 자원(시간)을 프로세스 또는 스레드간에 나누는 행위.
  • 이를 통해 여러 응용 프로그램을 동시에 열고 작업 할 수 있다는 장점이 있다.
  • 음악을 들으면서, 웹서핑을 하고, 메신저의 메시지를 확인할 수 있는 이유는 모두 멀티태스킹 덕분이다.

 

멀티 쓰레드

 

  • 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 
  • 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.

 

멀티 쓰레딩

 

  • 멀티스레딩(multithreading) 컴퓨터는 여러 개의 스레드를 효과적으로 실행할 수 있는 하드웨어 지원을 갖추고 있다. 
  • 이는 스레드가 모두 같은 주소 공간에서 동작하여 하나의 CPU 캐시 공유 집합과 하나의 변환 색인 버퍼 (TLB)만 있는 멀티프로세서 시스템 (멀티 코어 시스템)과는 구별한다. 
  • 그러므로 멀티스레딩은 프로그램 안에서 병렬 처리의 이점을 맛볼 수 있지만 멀티프로세싱 시스템은 여러 개의 프로그램들을 병렬로 처리할 수 있다. 
  • 멀티프로세싱 시스템이 여러 개의 완전한 처리 장치들을 포함하는 반면 멀티스레딩은 스레드 수준뿐 아니라 명령어 수준의 병렬 처리에까지 신경을 쓰면서 하나의 코어에 대한 이용성을 증가하는 것에 초점을 두고 있다.

참고 사이트 1

참고 사이트 2

참고 사이트 3


글이 도움이 되었다면 좋아요 / 구독 부탁 드립니다 ❤


 

728x90
반응형