backend
  • README
  • DOCS
    • Java Docs
    • Servlet Docs
    • JSP Docs
    • DB & SQL Docs
    • Spring Boot Docs
    • Spring Security Docs
    • AWS Docs
  • 설치하기
    • Intellij 설정
  • 자바
    • 01 Java란?
    • 02 자바 시작하기
    • 03 자료형과 연산자
    • 04 제어문
    • 05 메소드
    • 06 클래스 기초
      • Static 보충자료
      • 패키지 보충자료
    • 07 객체지향 프로그래밍
    • 08 클래스 더 알아보기
      • 열거형 ENUM 보충자료
    • 09 클래스와 자료형
      • 다형성 보충자료
      • 제네릭 보충자료
    • 10 컬렉션 프레임워크
      • 컬렉션 프레임워크 보충자료
    • 11 람다식과 함수형 프로그래밍
      • 람다식 보충자료
    • 12 오류 대비하기
      • 오류 보충자료
    • 13 멀티태스킹
      • 멀티태스킹 보충자료
    • 교재보충
      • java.lang
  • 스프링
    • 서블릿, JSP
      • 05 Servlet(서블릿)
        • 서블릿 보충자료
        • 서블릿 추가코드
        • XML, YAML, JSON
      • 06 JSP(자바 서버 페이지)
        • JSP 보충자료
      • 07 JSTL(JSP 스탠다드 태그 라이브러리)
        • JSTL 보충자료
      • 08 Cookie(쿠키), Session(세션)
      • 09 서블릿,필터,리스너
        • 서블릿,필터,리스너 보충자료
      • 11 도서관리 프로젝트 실습
    • Spring Boot
      • 01 스프링 등장 배경, 객체지향
        • 스프링 등장 배경, 객체지향 보충자료
      • 02 IOC(제어의 역전), DI(의존성 주입)
        • IOC 보충자료
        • DI 보충자료
      • 03 스프링 구조
        • 스프링 구조 보충설명
      • 04 테스트코드 실습
      • 05 스프링 빈 설정
        • 스프링 빈 설정 보충자료
      • 06 싱글톤
        • 싱글톤 보충 자료
      • 07 스프링 빈 자동설정
        • 스프링 빈 자동설정 보충자료
      • 08 빈 생명주기
        • 빈 생명주기 보충자료
      • 09 빈 스코프
        • 빈 스코프 보충자료
      • 10 스프링 MVC
        • 스프링 MVC 보충자료
        • 데이터베이스 연동에 필요한 부분
      • 11 Validation(검증)
        • Validation(검증) 보충자료
      • 12 Bean Validation(빈검증)
        • Bean Validation(빈검증) 보충자료
      • 13 예외처리
        • 예외처리 보충자료
      • 14 타입변환
      • 15 JDBC(Java Database Connectivity)
      • 16 커넥션풀
      • 17 트랜잭션
        • 트랜잭션 보충자료
      • 18 JDBC 템플릿 활용
      • 19 MyBatis
      • 20 JPA(Java Persistence API)
      • 22 게시판 프로젝트 실습
    • Spring Security
      • 보안(Security)
      • Spring Security
      • 2. Spring Security 알아보기
        • 보안 위협 실제 사례와 방어 전략
      • 3. Spring Security 기본 동작 흐름
      • 4. Spring Security로 인증 권한 추가하기
        • Spring Security의 인증 및 인가
      • 5. Spring Security에서 세션 관리하기
        • 세션(Session)과 쿠키(Cookie) 비교, 토큰(Token)과의 관계
        • 해싱 및 해싱알고리즘
        • base64
      • 6. Spring Security 악용 보호
        • SameSite
      • 7. Spring Security로 인가 권한 추가하기
      • 8. Bcrypt(비크립트) 암호화
      • OAuth2 적용하기
  • 네트워크
    • HTTP
    • OSI 7계층
  • DB&SQL
    • 01 Database(데이터베이스)와 SQL 개요
    • 02 관계형 모델
    • 03 집합
    • 04 JOIN 연산
    • 05 MySQL
      • 세이브포인트
      • DBeaver, Mysql 오토커밋 설정 관련
    • 06 SQL 기초
      • 예시데이터 쿼리문
    • 07 SQL 실습
      • 실습 스키마
    • 08 Join 활용
      • 실습스키마
    • 09 SQL 활용
      • 실습스키마
    • 10 정규화
      • 실습 스키마
    • 데이터타입
    • 예시 프로젝트 스키마 구성
  • AWS
    • SSL 연결하기
    • 보충설명
Powered by GitBook
On this page
  • 멀티스레드와 멀티프로세스
  • 1. 프로그램 실행이란?
  • 2. 멀티태스킹
  • 3. 멀티프로세싱
  • 4. 프로세스
  • 5. 스레드
  • 6. 멀티태스킹 vs 멀티프로세싱
  • 7. 스케줄링
  • 8. 프로세스 vs 스레드
  • 9. 컨텍스트 스위칭
  • 10. 웹 애플리케이션 서버와 스레드
  • 다이어그램: 프로세스와 스레드
  • 정리
  1. 자바
  2. 13 멀티태스킹

멀티태스킹 보충자료

멀티스레드와 멀티프로세스


1. 프로그램 실행이란?

  • 프로그램은 실행되기 전에는 단순한 파일에 불과합니다.

  • 운영체제가 프로그램 파일을 메모리에 로드하면서 프로세스가 생성됩니다.

  • 프로세스 내의 코드가 한 줄씩 실행되며, 이를 스레드라고 합니다.


2. 멀티태스킹

(1) 정의

  • 여러 작업을 동시에 처리하는 것처럼 보이게 하는 운영체제의 기능.

  • CPU는 초당 수십억 번 이상의 연산을 수행하며, 실행 시간을 분할하여 여러 작업을 처리(시분할 기법).

(2) 스케줄링

  • 운영체제의 스케줄링:

    • 여러 작업 중 어떤 작업을 실행할지 결정.

    • 작업을 스케줄링 큐에서 하나씩 꺼내어 실행.

    • 작업 중단 시 스케줄링 큐로 다시 이동.

시분할 스케줄링 다이어그램

[작업 1] 0.01초 실행 → [작업 2] 0.01초 실행 → [작업 3] 0.01초 실행 ...

3. 멀티프로세싱

(1) 정의

  • 하나의 CPU가 아닌 여러 개의 CPU가 작업을 동시에 처리.

  • 물리적 단위로, 각각의 CPU가 서로 다른 프로그램을 실행 가능.

(2) 특징

  • 동시에 더 많은 작업을 처리할 수 있음.

  • 각 CPU는 독립적으로 동작.


4. 프로세스

(1) 정의

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

  • 각각의 프로세스는 독립적인 메모리 공간을 가지며, 서로 간섭할 수 없음.

(2) 프로세스의 메모리 구조

+----------------+
| 코드 섹션      | 프로그램 코드 저장
+----------------+
| 데이터 섹션    | 전역 변수, 정적 변수 저장
+----------------+
| 힙             | 동적 메모리 할당
+----------------+
| 스택           | 지역 변수, 반환 주소 저장 (스레드에 포함)
+----------------+

5. 스레드

(1) 정의

  • 프로세스 내에서 실행되는 작업 단위.

  • 프로세스는 하나 이상의 스레드를 포함.

  • 여러 스레드는 동일한 메모리 공간을 공유.

(2) 왜 멀티스레드가 필요한가?

  • 하나의 프로그램 안에서 동시에 여러 작업을 처리하기 위해 필요.


6. 멀티태스킹 vs 멀티프로세싱

특징

멀티태스킹

멀티프로세싱

정의

하나의 CPU가 작업 시간을 분할하여 여러 작업 처리

두 개 이상의 CPU를 활용하여 여러 작업 처리

작동 방식

논리적(시분할 기법)

물리적(독립적인 CPU 사용)

효율성

CPU가 많지 않아도 다중 작업 가능

CPU가 많을수록 더 많은 작업 처리 가능


7. 스케줄링

(1) 단일 스레드 스케줄링

  • 스케줄링 큐에서 하나씩 작업을 꺼내 처리하고, 다시 큐에 넣어 순서를 기다림.

[스레드 1] → 실행 → [스레드 2] → 실행 → [스레드 3] ...

(2) 멀티코어 스케줄링

  • CPU가 여러 개일 경우, 각각의 CPU가 독립적으로 스레드를 처리.

[CPU 1]: [스레드 1] → [스레드 4] ...
[CPU 2]: [스레드 2] → [스레드 5] ...
[CPU 3]: [스레드 3] → [스레드 6] ...

8. 프로세스 vs 스레드

특징

프로세스

스레드

정의

실행 중인 프로그램

프로세스 내에서 실행되는 작은 작업 단위

메모리 공간

독립적인 메모리 공간

동일한 메모리 공간 공유

간섭 여부

서로 간섭하지 않음

간섭 가능, 동기화 필요


9. 컨텍스트 스위칭

(1) 정의

  • CPU가 현재 작업(문맥)을 저장하고, 다음 작업으로 전환하는 과정.

  • 비용 발생:

    • 스위칭 과정에서 작업 상태를 저장하고 복원해야 하기 때문에 오버헤드 발생.

(2) 단일 스레드의 장점

  • 컨텍스트 스위칭이 없으므로 더 효율적일 수 있음.


10. 웹 애플리케이션 서버와 스레드

(1) 스레드와 사용자 요청

  • 하나의 사용자 요청을 처리하는 데 1개의 스레드 사용.

  • 일반적으로 I/O 작업(네트워크 응답 대기 등)이 많아 CPU가 대기하는 시간이 발생.

(2) CPU와 스레드 개수

  • CPU 코어 수보다 더 많은 스레드를 사용하여 다른 작업을 병렬 처리.

  • 주의:

    • 너무 많은 스레드는 컨텍스트 스위칭 비용을 증가시켜 성능 저하.


다이어그램: 프로세스와 스레드

+---------------------+
| 프로세스            |
| +-----------------+ |
| | 스레드 1        | |
| | 스레드 2        | |
| | 스레드 3        | |
| +-----------------+ |
+---------------------+

정리

  1. 멀티태스킹:

    • 하나의 CPU가 시간을 분할하여 여러 작업을 처리.

  2. 멀티프로세싱:

    • 여러 CPU를 사용하여 여러 작업을 처리.

  3. 프로세스:

    • 실행 중인 프로그램, 독립적인 메모리 공간.

  4. 스레드:

    • 프로세스 내에서 실행되는 작업 단위.

  5. 컨텍스트 스위칭:

    • 작업 간 전환에 따른 오버헤드 발생.

  6. 웹 애플리케이션 서버:

    • I/O 중심 작업에서 CPU 코어 수보다 더 많은 스레드를 사용하여 효율성을 높임.

Previous13 멀티태스킹Next교재보충

Last updated 5 months ago