- 프로그램 실행 : 코드를 순서대로 cpu 에서 연산하는 일.
- cpu 코어가 하나가 있어도, 동시에 프로그램이 실행 수 있도록 하는 방법은 ?
- cpu 코어 : 실제 연산을 처리할 수 있는 것. 하나의 cpu 안에 여러 개의 코어가 들어 있음.
멀티 태스킹
- cpu가 매우 빠르게 두 프로그램의 코드를 번갈아 수행 하면 동시에 실행하는 것처럼 느껴질 수 있음.
- 단일 cpu가 여러 작업을 동시에 수행하는 것 처럼 보이게 하는 것.
>> 시분할 기법. 운영체제 소프트웨어의 관점
스케쥴링
- 어떤 프로그램이 얼마만큼 실행할지 결정하는 것.
- cpu 를 활용할 수 있는 다양한 우선순위와 최적화 기법을 사용.
멀티 프로세싱
- 프로세서가 여러 개. cpu 코어가 두개 이상이라면 ?
- 물리적으로 동시에 2개의 프로그램을 처리할 수 있음.
>> 컴퓨터 시스템에서 두개 이상의 프로세서 (cpu 코어) 를 사용하여 여러 작업을 동시에 처리하는 기술.
>> 하드웨어 장비의 관점
프로세스
- 독립적인 메모리 공간을 가지고 있음. 실행 환경을 제공함. 컨테이너 같은 역할.
- 메모리 공간, 파일 핸들, 시스템 자원 등이 포함됨.
- 운영체제에서 별도의 작업 단위로 분리한다. 별도의 메모리 공간을 갖고 있기 때문에 서로 간섭하지 않음.
스레드 thread(실)
- 프로세스는 하나 이상의 스레드를 반드시 포함한다. 프로세스 내에서 실행되는 작업의 단위.
- 공유 메모리 : 같은 프로세스 안에 여러 스레드를 공유할 수 있음.
- 개별 스택 : 스레드는 개별적인 스택을 가지고 있음.
- 단일 스레드: 한 프로세스 내에 하나의 스레드만 존재
- 멀티 스레드: 한 프로세스 내에 여러 스레드가 존재
멀티 스레드와 동시성
멀티 스레드
- 하나의 프로그램도 그 안에서 동시에 여러 작업이 필요함
단일 코어 스케쥴링
- 운영체제는 내부에 스케쥴링 큐를 가지고 있음. 각각의 스레드는 cpu 코어의 순서를 알고 있음.
- 코드를 실행하는 것 : cpu 코어에서 실행한다는 것.
멀티 코어 스케쥴링
- 스레드들을 병렬로 실행함.
'Language > Java' 카테고리의 다른 글
[Java] 자바 메모리 구조 (1) | 2025.05.01 |
---|---|
[Java] 컨텍스트 스위칭 (1) | 2025.04.22 |
[Java] Optional (1) | 2024.07.06 |
[Java] Stream (0) | 2024.06.17 |
[Java] boolean , if문 (0) | 2024.06.08 |