안녕하세요 아임코딩입니다.
이번에는 프로세스에 대해서 알아보도록 하겠습니다.
프로세스란?
프로세스는 컴퓨터에서 실행되고 있는 프로그램을 의미합니다.
종종 스케줄링의 대상이 되는 작업이라는 용어와 거의 같은 의미로 쓰입니다.
여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하며 같은 시간에 여러 개의 프로그램을 띄우는 시분할 방식을 멀티태스킹이라고합니다. 프로세스 관리는 운영체제의 중요한 부분입니다.
프로그램이란?
프로세스가 컴퓨터에서 실행되고 있는 "프로그램"을 의미한다면,
프로그램은 과연 무엇일까요?
프로그램은 일반적으로 저장공간에 저장되어있는 코드들을 의미합니다.
코드라는 것은 컴퓨터에게 어떤 명령을 하기 위한 언어입니다.
예를 들어, 1과 2를 더해줘. 라고 컴퓨터에게 명령을 하는 것을 컴퓨터가 알아들을 수 있도록 만든 것이 코드입니다.
프로세스 상태
프로세스는 실행되는 동안 상태를 가집니다.
- 생성(create) : 프로세스가 생성되는 중입니다.
- 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있습니다.
- 준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있습니다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받습니다.
- 대기(blocked) : 프로세스가 보류상태 입니다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말합니다.
- 종료(terminated) : 프로세스의 실행이 종료된 상태입니다.
running - ready - blocked 상태를 간단하게 나타내면 위의 사진과 같습니다.
프로세스의 상태전이
컴퓨터는 하나의 프로세스만을 실행하는 것이 아니라, 여러 가지 프로세스를 실행해야하기 때문에, 한 프로세스를 계속 실행하고 있을 수는 없습니다. 따라서 하나의 프로세스는 상태가 변할 수 있습니다.
상태전이의 종류는 다음과 같습니다.
디스패치(dispatch)
프로세스가 준비상태에서 CPU에서 실행되는 것을 뜻합니다.
준비상태 -> 실해상태로 바뀌는 상태전이입니다.
ready -> running
보류(block)
실행 상태의 프로세스가 허가된 시간을 다 쓰기 전에 입출력 동작을 필요로 하는 경우 프로세스는 CPU를 스스로 반납하고 보류 상태로 넘어갑니다. 이것을 보류라고 합니다.
입출력 동작을 하면 프로세스는 입출력 동작을 마치기 전까지는 다음 코드를 실행할 수 없기 때문에, 보류 상태로 상태가 바뀌는 것이죠.
running -> blocked
깨움(wakeup)
입출력 작업 종료 등 기다리던 사건이 일어났을 때 보류 상태에서 준비 상태로 넘어가는 과정을 깨움이라고 하며 다음과 같이 표시합니다.
blocked -> ready
시간제한(timeout)
운영체제는 프로세스가 CPU를 계속 독점해서 사용하지 못하게 하기 위해서 clock interrupt를 두어서 프로세스가 일정 시간 동안만 프로세서를 점유할 수 있게 합니다.
running -> ready
참고 자료
https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4
'운영체제' 카테고리의 다른 글
[운영체제] 윈도우에서 unistd.h fork() 함수 사용하기 (0) | 2024.04.30 |
---|---|
[운영체제] 폰 노이만 구조란? (0) | 2024.04.30 |