일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- application layer
- 프로그래머스
- m:n
- 오블완
- DTO
- 리눅스
- 티스토리챌린지
- compgen
- 알고리즘
- BindingResult
- @SubscribeMapping
- 기본키 전략
- 쿠키
- API
- 컴파일 타임 상수
- 파이썬
- 런타임 상수
- @Autowired
- Git
- JDBC
- JPA
- 쉘 스크립트
- spring
- 은행원알고리즘
- allocationSize
- 무한정 대기
- intelij spring config
- 편향된 지수
- 커밋 되돌리기
- 백준
- Today
- Total
둘셋 개발!
[운영체제] 스레드 (뜻, 구조) 본문
스레드란?
프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위
(= 프로세스 내에서 실제 작업을 실행하는 주체)
프로세스가 메모리로 로드하여 실행되는 프로그램이였다면,
스레드는 프로세스 내의 여러 작업들을 쪼개놓은 단위라고 생각하면 된다.
요즘은 cpu에 여러 코어가 있기 때문에 하나의 프로세스를 실행할 때 여러 코어에 스레드 단위로 작업 처리를 맡기면 효율을 높일 수 있다.
이렇게 프로세스를 스레드 단위로 쪼개고 스레드 단위로 cpu를 할당하는 것을 멀티스레딩 이라고 한다.
스레드 구조
(프로세스 구조를 모른다면 -----> https://lightson2323.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EB%9C%BB-%EA%B5%AC%EC%A1%B0-%EC%83%81%ED%83%9C)
프로세스에서 쪼개진게 스레드라면 스레드는 어떤 구조일까??
(이미지 출처: 27살 아저씨의 코딩일상 https://thsd-stjd.tistory.com/149)
프로세스의 코드영역, 데이터 영역, 힙 영역은 스레드끼리 공유하고 각 쓰레드는 각각 스택영역을 사용한다.
🤔이렇게 멀티스레드를 사용하면 뭐가 좋은 것일까?
1. 응답성 향상된다.
다른 스레드가 입출력으로 작업을 진행하지 않더라도 다른 스레드가 작업을 계속하고 있어 사용자 작업 요구에 빠르게 응답이 가능하다.
2. 자원의 효율성 향상 된다.
여러 작업을 하기 위해 프로세스를 복사해서 여러 프로세스를 사용하는 멀티 태스킹의 경우에는 코드 영역, 데이터 영역, 힙 영역을 복사해야하기 때문에 메모리 낭비된다.
하지만 멀티 스레드는 코드영역, 데이터 영역은 굳이 복사하지 않고 공유하지 때문에 자원의 낭비를 막을 수 있다.
3. 다중 Cpu 지원한다.
cpu가 여러개 있거나, cpu안에 코어가 여러 개 존재할 때, 멀티 스레드를 사용하면 효율적으로 프로세스를 작동시킬 수 있다.
ref
'운영체제' 카테고리의 다른 글
[운영체제] 임계구역(Critical section) 문제 해결 (조건, 방법) (0) | 2023.08.16 |
---|---|
[운영체제] 스케줄링 알고리즘 (0) | 2023.08.11 |
[운영체제] 프로세스 (뜻, 구조, 상태) (0) | 2023.08.07 |
[운영체제] 메모리의 필요성(+폰노이만 구조), 종류, 부팅 (0) | 2023.08.04 |
[운영체제] CPU란, CPU의 구조 (+레지스터 종류) (0) | 2023.08.03 |