Computing

Process / Thread / Registor / Memory

BeomJun.Kwon 2022. 3. 29. 10:21

 

프로세스(process)

  1. 단순히 실행 중인 프로그램(program)
  2. 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것
  3. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성


스레드(thread)

  1. 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다.
  2. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다.
  3. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.

 

  • 하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다.
  • 프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며
    실행 상태가 변할때마다 쓰레드 문맥교환(context switching)을 수행
  • 각 쓰레드별로 자신만의 스택 레지스터를 가진다.

 

 

 

프로세서 레지스터( or 레지스터 )

  1. 컴퓨터의 프로세서 내에서 자료를 보관하는 아주 빠른 기억 장소
  2. 일반적으로 현재 계산을 수행중인 값을 저장하는 데 사용
  3. 대부분의 현대 프로세서는 메인 메모리에서 레지스터로 데이터를 옮겨와 데이터를 처리한 후 그 내용을 다시 레지스터에서 메인 메모리로 저장하는 로드-스토어 설계를 사용
  4. 레지스터는 메모리 계층의 최상위에 위치, 가장 빠른 속도로 접근 가능한 메모리
  5. 최신 프로세서에서 레지스터는 대개 레지스터 파일로 구현되지만, 과거에는 플립플롭, 마그네틱 코어, 박막 필름 메모리 등으로 구현

검정색 선 : 데이터 흐름                                              빨간색 선 : 제어 흐름

 

가시 레지스터 : 사용자가 운영체제와 애플리케이션을 통해 정보를 변경 할 수 있는 레지스터

불가시 레지스터 :사용자가 정보를 변경 할 수 없고 오직 내부에서만 다루는 레지스터

 

 

사용자 가시 레지스터

종류  설명 
데이터 레지스터(Data Register, DR)  함수 연산에 필요한 데이터를 저장하여 산술, 논리 연산에 사용 
주소 레지스터(Address Register, AR)  주소를 계산하는데 필요한 주소의 일부분을 저장.

기준 주소 레지스터 : 프로그램을 실행할 때 사용하는 기준 주소 값을 저장. 관련된 정보들을 연속된 저장 공간으로 지정한다.
인덱스 레지스터 : 유효 주소를 계산하는데 필요한 주소 정보 저장
스택 포인터 레지스터 : 메모리에 프로세서 스택을 구현하여 현재 스택 위치를 사용하는데 이용

 

 

사용자 불가시 레지스터

종류 설명 
프로그램 카운터(PC)  다음 실행할 코드 위치를 저장하는 레지스터이다. 
명령어 레지스터(IR)  현재 실행하는 명령어를 보관하는 레지스터이다. 
누산기(AC)  데이터를 일시적으로 저장하는 레지스터이다. 
메모리 주소 레지스터(MAR)  유효 번지를 상대적으로 계산할 때 사용한다.
메모리 버퍼 레지스터(MBR)  주기억 장치에서 연산에 필요한 자료를 호출하여 저장한다.

 

 

 

Memory

Memory 계층구조

  1. 최상위에는 속도가 가장 빠른 레지스터가 있고 이는 CPU에 장착
  2. 프로그램을 실행하거나 데이터를 참조하기 위해서 모든 것이 메인 메모리에 있어야 함. 이때 불필요한 프로그램이지만 저장되어야 할 것들은 보조 기억장치에 저장되고 당장 실행되어야 할 것들을 메인 메모리로 옮김
  3. 현실적으로 모든 것을 다 레지스터로 하기에는 가격이 너무 비싸니 서로 다른 메모리를 적재적소에 이용하여 시스템 성능 향상을 시켜야함. 이때 메인 메모리와 프로세서의 속도 차이를 보완하기 위해 캐시라는 것이 존재
  4. 위의 메인 메모리는 프로세서에서 현재 실행중인 프로그램의 데이터를 저장하거나 프로세서에서 처리한 결과를 저장하는데 이용한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(참조) http://www.tcpschool.com/java/java_thread_concept

(참조) https://goodgid.github.io/What-is-Thread/

(참조) https://www.crocus.co.kr/1366

 

 

'Computing' 카테고리의 다른 글

ChatGPT 사용법 & 크롬 확장 프로그램  (1) 2023.03.19
Bytecode & Binary code  (0) 2022.08.09
프레임워크(Framework) 와 라이브러리(Library)의 차이  (0) 2022.07.20
B-Tree  (0) 2022.07.08
Binary-Tree  (0) 2022.07.08