Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Vue.js
- 자바
- 크래프톤정글
- 4기
- 스택
- 코드트리
- defee
- 모션비트
- Flutter
- JavaScript
- 사이드프로젝트
- CSS
- 오블완
- 알고리즘
- 리액트
- 티스토리챌린지
- corou
- pintos
- TiL
- 핀토스
- 크래프톤 정글
- 소켓
- 큐
- 백준
- userprog
- HTML
- Java
- 나만무
- 자바스크립트
- 시스템콜
Archives
- Today
- Total
미새문지
크래프톤 정글 week04, day29 - 프로세스, 쓰레드 본문
728x90
프로세스(Process)
- 운영체제에서 실행 중인 프로그램의 인스턴스
- 프로세스는 각각 독립된 메모리 영역을 가지고 있고, 다른 프로세스와 격리되어 있다.
- 이 메모리 공간은 일반적으로 코드 섹션, 데이터 섹션, 스택 섹션 세 가지로 구분되어 있으며 힙 영역이라는 동적 메모리 할당 영역도 존재한다.
- 코드 섹션
- 프로세스가 실행할 프로그램 코드를 저장한다. 이 영역은 읽기 전용이며, 프로세스가 실행되는 동안 변경되지 않는다.
- 데이터 섹션
- 프로세스의 전역 변수와 정적 변수를 저장한다. 이 영역은 프로세스가 실행되는 동안 값이 변경될 수 있다
- 스택 섹션
- 함수 호출과 관련된 정보(지역변수, 반환주소 등)를 저장한다. 함수 호출이 발생할 때마다 스택 프레임이 생성되고, 함수 호출이 완료되면 스택 프레임이 제거된다.
- 코드 섹션
- 이 메모리 공간은 일반적으로 코드 섹션, 데이터 섹션, 스택 섹션 세 가지로 구분되어 있으며 힙 영역이라는 동적 메모리 할당 영역도 존재한다.
- 각 프로세스는 프로그램 카운터(PC), 프로세스 상태, CPU 레지스터 값 등의 프로세스 메타데이터도 포함한다.
- 프로세스는 CPU 시간을 공유하며, 운영체제의 스케줄러에 의해 제어된다.
쓰레드(Thread)
- 프로세스 내에서 독립적으로 동작하며, 각각 자신만의 레지스터 세트와 스택을 가진다.
- 그러나 프로세스의 코드, 데이터 섹션 등의 자원은 다른 쓰레드와 공유한다.
- 프로세스가 독립된 실행 환경을 제공하는 반면, 쓰레드는 프로세스의 자원을 공유하면서 병렬처리를 가능하게 한다.
- 이로 인해 쓰레드는 프로세스보다 생성과 제거, 컨텍스트 스위칭이 빠르며 쓰레드 간의 통신도 더 효율적이다.
- 이런 특징들 때문에 멀티쓰레드 프로그래밍은 고성능의 컴퓨팅을 가능하게 한다.
- 멀티쓰레드 프로그래밍
- 여러 쓰레드를 동시에 실행하여 프로그램의 효율성과 성능을 향상시킨다
- 장점
- 향상된 성능 : 멀티코어 또는 다중 CPU 시스템에서는 여러 쓰레드가 동시에 다른 코어에서 실행될 수 있기 때문에 프로세스의 실행 시간을 크게 줄일 수 있다.
- 자원 공유 : 같은 프로세스 내의 쓰레드들은 메모리와 같은 자원을 공유할 수 있기 때문에 쓰레드 간의 통신이 더욱 쉽고 빠르게 이루어진다.
- 응답성 향상 : 만약 하나의 쓰레드가 블록(blocked) 상태에 빠지거나 계산에 많은 시간이 소요된다 하더라도, 다른 쓰레드들은 계속해서 작업을 수행할 수 있다.
- 단점
- 동기화 문제 : 여러 쓰레드가 동시에 같은 자원에 접근하려고 할 때 발생하며 뮤텍스(Mutex), 세마포어(semaphore)같은 동기화 기법을 사용해야 한다.
- 데드락(Deadlock) : 두 개 이상의 쓰레드가 서로 끝나기를 기다리며 진행을 멈추는 상황. 이는 시스템 자원을 효율적으로 사용하지 못하게 되며 프로그램의 실행을 완전히 멈추게 할 수 있다.
- 오버헤드 : 쓰레드를 생성하고, 제거하고, 스위칭하는 것은 자원과 시간을 소모하는데, 쓰레드가 너무 많으면 오버헤드가 발생해 프로그램의 전체 성능을 저하시킬 수 있다.
외에는 AVL트리와 RB트리인데 아직 코드도 다 못짰고 개념도 정리중이라 오늘 TIL은 쓸 게 별로 없는 것 같다.
학습 시간 : 10 ~ 26시
728x90
'크래프톤 정글 > TIL' 카테고리의 다른 글
크래프톤 정글 week05, day31 - rb트리 구현 코드 (1) | 2024.02.21 |
---|---|
크래프톤 정글 week04, day30 - rb트리 구현 중 (1) | 2024.02.21 |
크래프톤 정글 week04, day28 - 배열과 포인터의 관계, 균형 이진 탐색 트리 (1) | 2024.02.20 |
크래프톤 정글 week04, day27 - RB트리 개념 (1) | 2024.02.20 |
크래프톤 정글 week04, day26 - 동적 메모리 할당, CBV, CBR (1) | 2024.02.20 |