본문 바로가기

cs

[CS] 프로세스(process)란?

- Reference

- https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4

 

프로세스 - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

- https://goodgid.github.io/What-is-Thread/

 

쓰레드(Thread)란 무엇인가?

Index

goodgid.github.io

- https://blockdmask.tistory.com/22

 

[운영체제] 프로세스란? (스케줄링, 메모리구조, 상태변화)

1. 프로세스(process)란? 프로세스(process)란 실행중에 있는 프로그램(Program)을 의미한다. 스케줄링의 대상이 되는 작업(task)과 같은 의미로 쓰인다. 프로세스 내부에는 최소 하나의 스레드(thread)를

blockdmask.tistory.com

# 프로세스(process)란 무엇인가?

실행중에 있는 프로그램을 의미함.

$ 특징

- 종종 스케쥴링의 대상이 되는 작업(task)이라는 용어와 같은 의므로 쓰인다.

- 여러개의 프로세서를 사용하는 것을 멀티 프로세싱이라고 하며

- 같은 시간에 여러개의 프로그램을 띄우는 시분할 방식을 멀티태스킹이라고 한다. 

- 프로세스 내부에는 최소 하나의 스레드(thread)를 가지고 있는데, 실제로는 스레드(thread)단위로 스케줄링 한다.

# 스레드? 이건 뭔말..?

- 하드디스크에 있는 프로그램을 실행하면, 실행을 위해 메모리 할당이 이루어 지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다.

 

여기서 잠깐!!!, 스레드(thread)란 ?

스레드란 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다.

( 그러니깐 지금 티스토리 크롬창을 열어 티스토리 블로그를 사용하고있는데 여기서 크롬의 스레드는 글을 작성하는 나를 의미하는 뜻 같음)

$ 특징

- 하나의 프로세스는 여러개의 쓰레드로 구성이 가능하다.

- 하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다.

- 프로세스와 같이 실행, 준비, 대기 등의 시행 상태를 가지며 실행 상태가 변할때마다 쓰레드 문맥교환(context switching)을 수행한다.

- 각 쓰레드별 자신만의 스택(Stack)과(레지스터)를 가진다.

- 한순간에는 하나의 쓰레드만 실행 가능

스레드에 더 자세한 내용은 아래내용에서 알아보자(나중)

 


이어서 프로세스의 메모리 구조를 알아보자

 

# 프로세스의 메모리구조 ( 프로세스 하나당 하나씩 존재한다. )

 

 

Code영역 - 프로그램을 실행시키는 실행파일 내의 명령어들이 올라간다. ( 소스코드를 말함 )

Data 영역 - 전역변수, static 변수의 할당

Heap영역 - 동적할당을 위한 메모리 영역

Stack영역 - 지역변수, 함수 호출시 전달되는 인자를 위한 메모리영역

 

# 프로세스 스케쥴링 (Process Scheduling)

 

CPU는 하나이기때문에 고속으로 여러프로세스를 일정한 기준으로 순서를 정해 실행한다.

- 스케쥴링 : CPU 할당 순서 및 방법을 결정하는 일

- 일정한 기준 : scheduling algorithm을 통해서

 

# 프로세스 상태변화

- 프로세스의 상태에는 ready, blocked, running 상태가 있다.

 

- new -> ready : new 상태에서 프로세스가 생성되게 되면 OS커널에 존재하는 Ready Queue에 올라가게된다.

 

- ready -> running : Ready Queue에 있는 프로세스들을 OS가 위에서 말한 프로세스 스케줄링 알고리즘에 의해서 Running 상태로 가야할 프로세스를 CPU로 할당하게 된다. 그러면 프로세스가 Running 상태가 된다.

 

- running -> ready : 현재 running 상태에 있는 프로세스 A보다 Ready Queue에서 대기하고 있는 프로세스 B가 우선순위가 높으면, preemptive schedule(선점형)인 경우 프로세스 A는 Ready 상태로 오게되고 프로세스 B가 running 상태로 가서 CPU를 할당 받게된다.

 

- running -> blocked : 현재 running 상태에 있는 프로세스 A에서 입출력 이벤트가 발생했을때 프로세스 A가 blocked 상태로 가게도니다.

 

- blocked -> ready : 입출력이벤트가 종료된 프로세스는 다시 Ready상태로 오게된다.

 

- running -> terminate : 프로세스 종료