티스토리 뷰

* 멀티태스킹

- 단일 CPU가 여러 작업을 동시에 수행하는 것처럼 보이게 하는 것

- 소프트웨어 기반으로 cpu 시간을 분할하여 각 작업에 할당

- ex) 여러 애플리케이션이 동시에 실행되는 환경

 

* 스케줄링

- cpu에 어떤 프로그램이 얼마만큼 실행될지 운영체제가 결정하는 것

- 이때 단순 시간이 아닌 우선순위와 최적화 기법을 사용한다.

 

* 멀티프로세싱

- 여러 CPU코어(프로세서)를 사용하여 동시에 여러 작업을 수행

- 하드웨어 기반으로 성능 향상

- ex) 다중 코어 프로세서를 사용하는 현대 컴퓨터 시스템

 

* 프로세스

- 운영체제 안에서 실행중인 프로그램의 인스턴스

- 각 프로세스는 독립적인 메모리 공간을 갖고 운영체제에서 별도의 작업 단위로 분리해서 관리된다.

- 프로세스가 서로의 메모리에 직접 접근할 수 없다. 따라서 특정 프로세스에 심각한 문제가 발생하면 해당 프로세스만 종료되고 다른 프로세스에 영향을 주지 않는다.

- 메모리 구성: 코드섹션, 데이터섹션, 힙, 스택

- 프로세스는 하나 이상의 스레드를 반드시 포함한다.

- 실행환경과 자원을 제공하는 컨테이너 역할

 

* 스레드

- 프로세스 내에서 실행되는 작업의 단위, 프로세스의 코드를 실행하는 흐름(Thread)

- 프로세스가 제공하는 동일한 메모리 공간을 공유

- 단순하고 생성 및 관리가 단순하고 가볍다.

- 공유 메모리와 개별 스택을 갖는다.

- CPU를 사용해서 코드를 하나하나 실행

 

* 컨텍스트 스위칭

- CPU코어는 1개인데 스레드는 2개인 경우 연산하면 중간중간 스위칭 비용 발생

- CPU 바운드 작업: 연산 능력을 많이 요구하는 작업

- *I/O 바운드 작업: 디스크, 네트워크, 파일 시스템 등과 같은 입출력 작업을 많이 요구하는 작업

=> I/O 작업이 완료될 때까지 대기 시간 많이 발생

=> CPU는 상대적으로 대기 상태에 있는 경우가 많고 스레드가 CPU를 사용하지 않음

ex) 데이터베이스 쿼리, 파일 읽기/쓰기, 네트워크 통신, 사용자 입력 처리

=> 최적화: CPU 코어 수 보다 많은 스레드를 생성하고 CPU를 최대한 사용할 수 있는 숫자까지 스레드를 생성

 

출처: 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 인프런 강의

https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B3%A0%EA%B8%89-1

 

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런

김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?

www.inflearn.com

 

 

 

'JAVA' 카테고리의 다른 글

[멀티스레드와 동시성] - 2. 스레드 생성과 실행  (0) 2024.07.25
자바 채팅 프로그램  (0) 2024.05.29
다형성2  (0) 2024.01.15
다형성1  (0) 2024.01.07
1. JDK, JRE, JVM  (0) 2023.11.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함