일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정적 리소스
- @Profile
- rest api
- 외부설정
- Application Argument
- 백준
- 스프링부트
- Application Event
- HttpMessageConverters
- OAuth2
- 리소스핸들러
- 백기선
- Spring Security
- HATEOAS
- application.properties
- JsonSerializer
- Application Runner
- 리소스 서버
- cors
- 브루트포스
- @ConfigurationProperties
- WebApplication Type
- AuthenticationPrincipal
- EnableAutoConfiguration
- webjar
- 다익스트라
- 스프링 부트
- 백트래킹
- 알고리즘
- JPA
- Today
- Total
아카이브
프로세스 vs 스레드 본문
<프로그램>
- 어떤 작업을 위해 실행할 수 있는 "파일"
<프로세스>
- 메모리에 올라와 CPU를 할당받고 프로그램이 실행되고 있는 상태 (실행된 프로그램)
- OS로부터 자원을 할당받는 "작업"의 단위
- OS로부터 프로세서를 할당받고, 운영에 필요한 주소 공간과 메모리 등의 자원을 할당받는다.
- 실행 중인 프로그램에 대한 Instance를 지칭
<스레드>
- 프로세스가 할당받은 자원을 이용하는 "실행"의 단위
- 한 프로세스 내에서 동작하는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내의 스레드끼리 공유하며 실행된다.
- 기본적으로 하나의 프로세스가 생성되면, 하나의 스레드(메인 스레드)가 같이 생성된다.
- 스레드를 추가하면? 멀티 스레드
- 한 프로세스 내의 여러 스레드는 별도의 자원이 아닌 프로세스 내의 전역 변수를 통해 스레드간 통신을 한다.
- 전역 변수로 접근하는 여러 스레드가 충돌을 일으킬 수 있다.
- 동기화를 고려해야 함.
<멀티 프로세스 vs 멀티 스레드>
- 공통점 : 여러 흐름이 동시에 실행된다.
- 차이점 :
1) 멀티 프로세스 : 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지
멀티 스레드 : 프로세스 내의 메모리를 공유
2) 스레드간의 전환 속도 > 프로세스간의 전환 속도
<왜 멀티 프로세스로 할 수 있는 작업을 굳이 하나의 프로세스에서 멀티 스레드로 할까?>
- 효율적인 시스템 작업을 위해서
- 멀티 프로세스 -> 멀티 스레드로 할 경우, 시스템 콜(프로세스를 생성하여 자원을 할당하는 것)이 줄어들어 -> 자원을 효율적으로 관리할 수 있다.
- 스레드간 통신이 비용적으로 저렴하다.
- 통신? 전역 변수를 이용 -> 충돌에 대비 -> 동기화 문제를 직접 해결해야 함.
'운영체제' 카테고리의 다른 글
데드락, 교착상태 (0) | 2018.06.02 |
---|---|
Cache 정리 (0) | 2018.05.29 |
스케줄링 알고리즘 (0) | 2018.05.29 |
동시성(Concurrency)과 병렬성(Parallelism) (0) | 2018.05.29 |
문맥 교환(Context Switch) (0) | 2018.05.29 |