티스토리 뷰

프로세스

- 수행 중인 프로그램

- 보조기억 장치에 단순히 저장되어 있는 프로그램은 프로세스가 아님

- 데이터를 기본으로 정상적인 실행을 위해 필요한 환경을 시스템으로부터 부여받은 능동적인 존재

 

스레드

- 프로세스 안에서 실행되는 여러 흐름 단위

- 큰 틀 : 프로세스 / 세분된 작은 일 : 스레드

- 프로세스마다 최소 1대의 스레드 소유 (메인 스레드 포함)

- 프로세스는 각각 별도의 공간을 할당 -> 독립적

 

 

Code 

- 코드 자체를 구성하는 메모리 영역(프로그램 명령)

Data 

- 전역변수, 정적변수, 배열 등 : 초기화 된 데이터는 data 영역에 저장 / 초기화되지 않은 데이터는 bss 영역에 저장

Heap

- 동적 할당 시 사용 (new(), malloc() 등)

Stack

- 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)

 

단일 스레드 프로세스

스레드는 Stack만 따로 할당받고 나머지 영역은 서로 공유

하나의 프로세스 생성 -> 하나의 스레드 같이 생성

프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는데, 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용

 

스레드의 장점

- 스위칭에 소요되는 시간과 비용이 프로세스 단위로 이루어질 때보다 빠르고 저렴

- 한 프로세스 내의 스레드 간 통신은 메모리와 파일을 공유하기 때문에 커널의 개입이 필요 없음

 


멀티프로세스

- 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업 수행

- 장점 : 안정성 (메모리 침범 문제를 OS 차원에서 해결)

- 단점 : 각각 독립된 메모리 영역을 갖고 있어 작업량 맣을수록 오버헤드 발생, Context Switching으로 인한 성능 저하

 

Context Switching

- 프로세스의 상태 정보를 저장하고 복원하는 일련의 과정

- 동작 중인 프로세스가 대기하면서 해당 프로세스의 상태를 보관하고 대기하고 있던 다음 순번의 프로세스가 동작하면서 이전에 보관했던 프로세스 상태를 복구하는 과정

- 프로세스는 각 독립된 메모리 영역을 할당받아 사용하므로, 캐시 메모리 초기화와 같은 무거운 작업이 진행되었을 때 오버헤드가 발생할 문제가 존재

 

멀티 스레드 

- 하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것

- 스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해줌

다중 스레드 프로세스

장점 : 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소 전역 변수와 정적 변수에 대한 자료 공유 가능

단점 : 안전성 문제, 하나의 스레드가 데이터 공간 망가뜨리면 모든 스레드 작동 불능 상태 (공유 데이터 갖기 때문)

- 멀티스레드의 안전성에 대한 단점은 Critical Section 기법을 통해 대비

- Critical Section : 하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려 할 때 발생하는 문제를 해결하기 위한 동기화 과정

'❄️ Sookmyung > 📱 OS? Oh Yes!' 카테고리의 다른 글

[OS? Oh Yes!] Chapter 08. 가상 메모리  (0) 2022.06.03
Comments