복습 과정 스레드
프로세스는 실행 중인 프로그램입니다 하나의 프로세스에 스토리지 공간 포함 스토리지 내에서 프로세스를 유지하는 데 필요한 데이터
루틴은 프로그램의 순서대로 명령을 집행하는 부분이다 CPU 코어를 사용하는 최소 단위 프로세스에 하나 이상의 스레드
CPU 실행 프로세스 처리된 메모리 데이터에 대해 연산 OS에서는 CPU가 스토리지만 볼 수 있습니다! 프로세스 전용 메모리 영역 사용 스레드는 공유된 메모리 영역을 사용참고 자료
[Java] 다중 스레드 처리 다중 스레드의 의미는 독립적으로 이동할 수 있고 같은 과정 중의 메모리 공간을 공유할 수 있다
SMT는
동시 실행 명령 수 Intel에서 하이퍼연결
하나의 코어에 여러 개의 CPU가 있음(CPU는 일반적으로 하나의 코어)CPU 구조
에 아델레스 버스, 데이터 버스, CPU 버스가 탑재
CPU에 회로 가득 차서 회로 중 회로 수에 따라 성능이 변경됨 모든 계산에는 회로(정수 연산, 부동점 연산 등)가 있다 CPU 내 코드에 따라 한 번에 사용할 수 있는 회로 수 결정
CPU의 회로가 모두 사용되지 않음
자연스럽고 재미없다. 각각 제어 장치 + 계산 장치이고 CPU의 제어 장치는 하나이기 때문이다.
여기, 위조적으로 한 핵에 두 개의 통제부를 가지게 한다 주의: 설명도! 한 제어부에서 여러 개의 연산기를 사용하고 다른 제어부에서 빈 연산기를 사용한다 이렇게 되면 물리적으로 하나의 핵심이라도 논리적으로 두 개로 보인다.SMT라고 합니다.
단순한 2배 이상의 성능
4개의 코어 8 스레드에서도 4개의 코어에 비해 성능이 빠르지만 8개의 코어에 비해 느린 등 간단한 비율이 없음 초지우기 하향 스위치 1코어 2스레드의 경우 2스레드에서 CPU를 사용할 수 있으므로 최적 스레드 추가 구축 등 수신자=코어 측 용량이 초과되면 처리 속도가 느려지지 않음
단일 스레드/다중 스레드
한 과정에서 여러 개의 라인을 사용하는지 여부는 응용 방법
단식홍은 가지를 나누지 않는 처리로 CPU 핵을 많이 탑재해도 의미가 없다
다중 루틴은 한 프로세스에서 여러 개의 처리를 병행할 수 있다
주의 다중 스레드 중 특정한 과정에 속하는 스레드 공유 메모리 구역
배타 제어 필요루틴 데이터는 부모 프로세스의 메모리 영역에 유지됩니다
스레드 전환에 사용되는 가상 주소 공간의 전환이 일어나지 않습니다(TLB 플래시가 필요하지 않음)참고 자료
[Java] 멀티스레드 처리 - 배타 제어 처리 중에 다른 스레드가 중단되면 결과가 올바르게 반영되지 않습니다
synchronized 블록을 통해 배타 제어
컨텍스트 스위치
SMT: 한 순간에 동시에 실행되는 명령 수
다중 작업: 단시간 병행 실행 프로그램 수 멀티태스킹을 통한 어플리케이션의 동시 이동을 상세히 전환할 수 있음
CPU의 컨텍스트는 프로세스와 연관되어 있으며 프로세스에서 마지막으로 수행된 상태로 저장됩니다.
다음 차례가 되면 해당 상하문 정보를 바탕으로 계속 처리
컨텍스트 스위치: 멀티태스킹을 수행할 때의 프로세스 전환예: 중단 처리 중 일정 간격으로 타이머가 중단되었을 때(Thread0~2 사용) Thread0에서 0번째 처리가 끝난 단계에서 타이머를 사용하여 처리를 중단 CPU가 인터럽트로 인해 처리를 중지하고 인터럽트 프로그램의 쓰기를 건너뛰는 경우
종료 후 CPU는 컨텍스트 스위치를 켜서 처리를 다음 Thread1로 옮기고 처리Thread1이 끝난 후 상하문 스위치를 통해Thread2로 순서대로 반복하지 않음 CPU는 한 번에 하나만 처리할 수 있지만 여러 처리를 수행할 수 있는 것처럼 보입니다.
MMU(Memory Management Unit)는
각 프로세스를 위한 전용 물리적 스토리지 영역을 확보하고 해당 물리적 영역에 액세스할 가상 주소를 준비합니다. 스토리지에서 데이터를 읽고 쓸 때 하나의 스토리지 주소를 지정합니다.
충돌을 피하기 위해 다른 과정에 사용되지 않은 주소를 찾아야 한다 프로세서 내 MMU에서 스토리지 관리 작업 처리 지정 가상 주소에서 메모리 접근, MMU 가상 주소에서 물리 주소로 해결TLB 플래시
프로세스를 전환하려면 가상 주소/물리적 주소 매핑을 전환해야 합니다.
MMU 주소 확인 결과 캐시 전환 프로세스를 통해 MMU 캐시를 제거해야 합니다(TLB 플래시). 성능에 큰 영향을 미침