프로세스(process)
- 단순히 실행 중인 프로그램(program)
- 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것
- 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성
스레드(thread)
- 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다.
- 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다.
- 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.
- 하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다.
- 프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며
실행 상태가 변할때마다 쓰레드 문맥교환(context switching)을 수행 - 각 쓰레드별로 자신만의 스택과 레지스터를 가진다.
프로세서 레지스터( or 레지스터 )
- 컴퓨터의 프로세서 내에서 자료를 보관하는 아주 빠른 기억 장소
- 일반적으로 현재 계산을 수행중인 값을 저장하는 데 사용
- 대부분의 현대 프로세서는 메인 메모리에서 레지스터로 데이터를 옮겨와 데이터를 처리한 후 그 내용을 다시 레지스터에서 메인 메모리로 저장하는 로드-스토어 설계를 사용
- 레지스터는 메모리 계층의 최상위에 위치, 가장 빠른 속도로 접근 가능한 메모리
- 최신 프로세서에서 레지스터는 대개 레지스터 파일로 구현되지만, 과거에는 플립플롭, 마그네틱 코어, 박막 필름 메모리 등으로 구현
가시 레지스터 : 사용자가 운영체제와 애플리케이션을 통해 정보를 변경 할 수 있는 레지스터
불가시 레지스터 :사용자가 정보를 변경 할 수 없고 오직 내부에서만 다루는 레지스터
사용자 가시 레지스터
종류 | 설명 |
데이터 레지스터(Data Register, DR) | 함수 연산에 필요한 데이터를 저장하여 산술, 논리 연산에 사용 |
주소 레지스터(Address Register, AR) | 주소를 계산하는데 필요한 주소의 일부분을 저장. 기준 주소 레지스터 : 프로그램을 실행할 때 사용하는 기준 주소 값을 저장. 관련된 정보들을 연속된 저장 공간으로 지정한다. 인덱스 레지스터 : 유효 주소를 계산하는데 필요한 주소 정보 저장 스택 포인터 레지스터 : 메모리에 프로세서 스택을 구현하여 현재 스택 위치를 사용하는데 이용 |
사용자 불가시 레지스터
종류 | 설명 |
프로그램 카운터(PC) | 다음 실행할 코드 위치를 저장하는 레지스터이다. |
명령어 레지스터(IR) | 현재 실행하는 명령어를 보관하는 레지스터이다. |
누산기(AC) | 데이터를 일시적으로 저장하는 레지스터이다. |
메모리 주소 레지스터(MAR) | 유효 번지를 상대적으로 계산할 때 사용한다. |
메모리 버퍼 레지스터(MBR) | 주기억 장치에서 연산에 필요한 자료를 호출하여 저장한다. |
Memory
- 최상위에는 속도가 가장 빠른 레지스터가 있고 이는 CPU에 장착
- 프로그램을 실행하거나 데이터를 참조하기 위해서 모든 것이 메인 메모리에 있어야 함. 이때 불필요한 프로그램이지만 저장되어야 할 것들은 보조 기억장치에 저장되고 당장 실행되어야 할 것들을 메인 메모리로 옮김
- 현실적으로 모든 것을 다 레지스터로 하기에는 가격이 너무 비싸니 서로 다른 메모리를 적재적소에 이용하여 시스템 성능 향상을 시켜야함. 이때 메인 메모리와 프로세서의 속도 차이를 보완하기 위해 캐시라는 것이 존재
- 위의 메인 메모리는 프로세서에서 현재 실행중인 프로그램의 데이터를 저장하거나 프로세서에서 처리한 결과를 저장하는데 이용한다.
(참조) 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 |