[CS] OS

OS

참고: https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4

프로세스와 스레드

프로그램

파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태

프로세스

img

스레드

프로세스 메모리 구조

img

Code(text) 영역
Data 영역
Stack 영역
Heap 영역
> Code + Data + Stack: 컴파일 시 크기를 계산하여 메모리 영역 결정

멀티태스킹, 멀티 스레드

멀티태스킹

하나의 운영 체제 안에서 여러 프로세스가 실행되는 것

여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행

멀티스레드

하나의 프로세스가 여러 작업을 여러 스레드를 사용하여 동시에 처리하는 것

자바 싱크로나이즈, Stream

동시성(Concurrency)과 병렬성(Parallelism)

https://beststar-1.tistory.com/24?category=976609

동시성

싱글 코어에서 멀티스레드를 동작시키기 위한 방식

멀티 태스킹을 위해 여러 개의 스레드가 번갈아가면서 실행되는 성질

병렬성

멀티 코어에서 멀티 스레드를 동작시키는 방식

한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질

▶ Context Switching(문맥 교환)이 일어남

멀티스레드 환경에서 경쟁상태 회피

경쟁상태

뮤텍스

공유된 자원의 데이터를 여러 스레드가 접근한 것을 막는 것

세마포어

공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것

뮤텍스와 세마포어 차이점

데드락

둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황

발생 조건
해결법

가상 메모리