- 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 : 프로세스 종료
'cs' 카테고리의 다른 글
[CS] 중앙처리장치(CPU)의 작동원리에 대해서 설명하세요 (0) | 2022.08.22 |
---|---|
[네트워크] HTTP 요청과 응답 메세지 이해하기 (0) | 2022.05.10 |
[CS] HTTP와 TCP/IP의 개념 및 차이점(feat. method, URL/URI) (0) | 2022.05.02 |
[CS] 32bit 버전, 64bit 버전, ARM 버전 개념 및 차이점 파악(feat. ISA) (0) | 2022.04.22 |
부동소수점이 발생하는 이유? (0) | 2022.03.22 |