티스토리 뷰

CS

[OS] 프로세스와 스레드

dev-Jun 2022. 2. 7. 00:12

프로세스란?

프로그램은 파일이 저장장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말합니다. 

프로세스의 정의는 실행 중인(메모리에 올라가 있는) 프로그램을 말합니다.

 

프로세스의 중요한 개념은 두 가지가 있습니다.

- 운영체제로부터 자원을 할당받은 작업의 단위(스케줄링의 단위)입니다. (Execution Unit)

- 프로세스끼리 서로 침범하지 못합니다. (Protection Domain)

 

 

프로세스의 구조

프로세스 구조

Text Section

- 명령어(소스 코드)들이 저장되는 영역

 

Data Section

- 전역 변수나 static 변수의 할당을 위한 영역

 

Heap Section

- 동적으로 생성되는 데이터가 저장되는 영역

 

Stack Section

- 함수 호출, 지역 변수가 저장되는 영역

 

 

프로세스의 상태

New

- 막 프로세스가 생성된 상태

 

Running

- 프로세스의 명령어를 CPU에 로드해서 실행 중인 상태

 

Waiting

- 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태

-  I/O event의 종료나 signal을 기다리고 있는 상태

 

Ready

- CPU를 할당받을 준비가 된 상태

 

Terminated

- 실행이 종료된 상태

 

프로세스의 상태 변화 과정

프로세스 상태의 전환

커널 내에 Ready Queue, Waiting Queue, Running Queue를 두고 프로세스들을 상태에 따라 관리합니다.

 

1. New에서 새로 만들어지고 로더에서 준비가 완료되면 Ready 상태로 Ready Queue에 들어가 있습니다. (New -> Ready)

 

2. 들어갈 차례가 되면 Running Queue로 들어가서 실행이 됩니다.(Running)

 

3. I/O event를 기다려야 하는 상황이 왔다고 하면 Waiting 상태가 되서 Waiting Queue에 들어가 있고

event가 끝나면 다시 Ready 상태가 되서 ReadyQueue에 있습니다. (Running -> Waiting, Waiting -> Ready)

 

4. 반복하다가 실행 종료가 되면 Terminated 상태가 됩니다. (Running -> Terminated)

 

스레드란?

프로세스가 실행중인 프로그램이라면 

스레드는 프로세스 내의 하나의 실행 흐름입니다.

 

스레드의 핵심 개념은

프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 (CPU 점유의 단위)입니다. (Execution Unit)

- 스레드들은 같은 메모리 영역을 사용 (Stack 제외)하므로, 스레드간 Switch 비용이 적습니다. (Protection Domain 적용 안 됨)

 

스레드의 사용 이유

- 점점 프로그램이 복잡해지면서 한 번에 하나의 일만을 처리하기 어려워졌습니다.

- 프로세스에서 할 작업을 여러 개로 나눈 후에 각각을 스레드 화한다면, 병렬적으로 일을 수행할 수 있어서

CPU 사용률이 증가, 처리량이 늘어나게 됩니다.

 

스레드 동작에 필요한 정보

- Thread ID : 스레드를 식별할 수 있는 Thread ID

- Program Counter : 현재 실행중인 명령어의 주소가 저장됨

- Register Set : CPU의 레지스터 값

- Stack

 

스레드의 구조

- 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유합니다.

- 따라서 프로세스와 다르게 각 스레드는 서로의 정보에 접근할 수 있습니다. (Stack 제외)

 

 

References

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

 

프로세스와 스레드의 차이

프로세스와 스레드의 차이는 프로세스와 스레드, 그리고 프로그램이 작동하는 방식에 대해서 잘 이해하고 있는지 확인하기 위해 기술면접에서 단골 질문 사항으로 나온다.

velog.io

Operating System Concepts 공룡책

'CS' 카테고리의 다른 글

[OS] CPU 스케줄링  (0) 2022.02.24
[OS] 멀티 프로세스 vs 멀티 스레드  (0) 2022.02.21
[OS] PCB(Process Control Block)와 문맥 교환(Context Switching)  (0) 2022.02.17
[OS] 병렬처리  (0) 2022.02.14
[OS] 컴퓨터 성능 향상 기술  (0) 2022.02.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함