티스토리 뷰

컴퓨터 공학

프로세스 와 쓰레드

삼전동해커 2020. 10. 4. 21:53

출처 :https://velog.io/@chowisely/Operating-Systems-Process-Thread

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

https://jwprogramming.tistory.com/15



프로세스와 스레드의 차이점을 먼저 말해보자면


프로세스 : 운영체제로부터 자원을 할당받은 작업의 단위.

스레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.

프로세스

먼저 프로그램이란 단어는 프로세스와 다른의미를 가진다. 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 의미.
프로세스란 실행 중인 프로그램을 의미하고, 스택(=임시 데이터), 포인터, 데이터(=전역변수), 힙 등으로 이루어져 있다.
보편적으로는 실행 중인 프로그램으로 사용한다.
그럼 프로세서는 하드웨어적인 측면에서 프로그램을 수행하는 유닛이라고 정의한다.

IPC(InterProcess Communication)
프로세스들은 정보를 공유하거나 하나의 작업을 같이 처리하는 등의 이유로 서로 통신한다.

1.공유 메모리 : 프로세스 간에 통신할 공유 메모리를 생성해 커널이 관여할 필요가 없다. 하지만 공유되는 데이터에 동시에 접근할 경우 동기화에 문제 발생.
2.메세지 패싱 : 프로세스가 메세지를 전달하거나 받을 때 시스템 콜을 부르고, 커널이 메세지 전달을 관리하므로 동기화에는 문제가 없지만, 시스템 콜을 사용하기 때문에 인터럽트가 발생한다.

스레드

스레드란 프로세스 내에서 실행되는 여러 흐름의 단위이다.

하나의 프로세스 내의 자원을 이용해 여러개의 코드를 실행하는 방법이다.

멀티 스레드는 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것.
멀티 스레드 방식으로 서로 공유하는 부분이 발생하니 메모리 공간과 자원 소모를 줄일 수 있다.
또한 스레드끼리 문맥 교환 시 캐시 메모리르 비울 필요가 없고 스택 영역만 변경하면 되기 때문에 문맥 교환으로 인한 오버헤드가 줄어든다.

프로세스의 상태


New : 프로세스가 생성되는 단계 -> 프로그램을 실행시켰을 때의 첫번째 상태.
Ready : 프로세스가 프로세서에 할당되기를 기다리는 상태.
Running : 프로세스가 실행중인 상태.

waiting : 프로세스가 어떤 사건을 기다리고 있는 상태.

Terminate : 프로세스의 실행이 종료된 상태.



Dispatch란 ready단계에서 running단계로 넘어가는 상태이다. 프로세스를 CPU에 할당한다.

Timeout(=Interrupt)은 CPU에 할당된 프로세스가 제한된 사용시간을 넘겨 다시 ready상태로 되돌아가는 상태이다.

Wait은 CPU가 인터럽트나 다른 이벤트에 의해 프로세스가 잠시 중단되어 wait상태에 들어감.


위와 같이 상태가 전이되는 것을 문맥 교환(context switching)이라 한다.


'컴퓨터 공학' 카테고리의 다른 글

메모리 계층 구조  (0) 2020.10.04
CPU 스케쥴링 알고리즘  (0) 2020.10.04
I/O 방식  (0) 2020.10.04
인터럽트 & 시스템 콜  (0) 2020.10.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함