[운영체제] 프로세스 상태 - new ,ready, running waiting, terminated

Narcoker·2023년 6월 13일
0

운영체제

목록 보기
6/13

프로세스 상태

New

프로세스가 생성되는 상태

프로세스가 생성되면 Ready 상태가 아니라 New 상태이다.

프로세스가 만들어지면 메모리도 할당해야하고
프로세스의 정보를 담고 있는 PCB와,
사용할 스택 메모리할당하고 초기화 해줘야한다.

이 작업을 하는 상태이다.

Ready

실행할 준비가된 프로세스가 CPU를 할당받기 위해 대기하고 있는 상태

프로세스는 CPU 사용 권한을 받기 위해 Ready Queue에 있다.

Running

프로세스가 CPU에 할당받고 명령어를 실행하는 상태

Waiting(또는 Blocking)

프로세스가 특정 이벤트(예: I/O 작업의 완료)또는 할당된 프로세스가 끝나기를 기다리는 상태

이 상태에서 프로세스는 CPU를 할당받을 수 없습니다.

Terminated

프로세스가 실행을 완료하거나 시스템에 의해 종료되는 상태

프로세스의 출력을 반환한 후
프로세스가 사용하던 메모리와 자원을 운영체제에게 반환하는 상태

상태 전환

New -> Ready

New 상태에서 Ready 상태로 자연스럽게 넘어가는 것이 아니라
운영체제가 허락(Admit)할 때 넘어갈 수 있다.

이러한 이유는 메모리 자원 문제CPU 문제가 있다.

메모리 공간이 한정적이기 때문에 올릴 수 있는 프로세스도 한정적이다.

CPU 는 Time Sharing을 통해 동시에 진행하는 것처럼 보이게한다.
하지만 프로그램이 많아지면 각 프로세스의 대기시간이 길어지고
버벅이는 것처럼 보이는 문제가 발생할 수도 있다.

Time sharing

여러 사용자가 하나의 컴퓨터 시스템을 공유하도록 설계된 컴퓨터 작업 방식
CPU 스케줄링과 멀티태스킹을 활용하여 각 사용자에게 컴퓨터 사용 시간을 분배한다.

Time Slice

특정 프로세스가 CPU를 연속적으로 사용할 수 있는 시간
Time Slice가 끝나면 ready 상태로 간다.

너무 길게 설정하면 프로그램이 끊기는 것처럼 보이고
너무 길게 짧게 설명하면 Context Switching 총 시간이 늘어나서
프로세스가 종료되는데 까지 오래걸린다.

Ready -> Running

Dispatcher가 대기하고 있는 프로세스 중 CPU 스케줄링을 통해
적잘한 프로세스Running 상태로 만든다.

Dispatcher

운영체제의 일부로, CPU 스케줄링에 의해 선택된 프로세스에 CPU를 할당하는 역할.
이를 통해 여러 프로세스가 CPU를 공유하고 동시에 실행될 수 있습니다.

Running -> Terminated

프로그램이 종료하게 되면 Terminated 상태로 만든다.

Running -> Ready

CPU 는 Time Sharing 을 통해 프로세스들을 실행시키므로
실행 시간이 길면 Time Out이 걸려 Ready 상태로 돌아가게된다.

Running -> Waiting(또는 Blocked)

프로그램 실행 중 입출력 요청이 발생하거나
OS에 어떤 작업을 요청하면 Waiting(또는 Blocked) 상태가 된다.

폴링 시스템의 경우 wait로 가지 않는다.

폴링 시스템

CPU 가 직접 입출력 장치에서 데이터를 가져오거나 내보내는 방식

하나의 장치(혹은 프로그램)이 충돌 회피 또는 동기화 처리 등을 목적으로
다른 장치(혹은 프로그램)의 상태를 주기적으로 검사하는 것

주기적으로 확인하기 때문에 성능이 떨어진다.

Waiting(또는 Blocked) -> Ready

기다리던 이벤트가 끝나면 바로 Running 상태가 되는 것이 아닌 Ready 상태가 된다.
이후 CPU 에 할당되는 프로세스도 CPU 스케줄링에 의해 결정된다.

Waiting 상태에서 Running이 아니라 Ready 상태가 되는 이유 - 효율성, 공정성

ready 상태는 CPU를 기다리는 프로세스들의 대기열이다.
이 대기열에서 운영 체제는 적절한 스케줄링 알고리즘에 따라 CPU를 할당할 후보를 선택합니다.
이는 CPU 자원을 공정하게 사용하고, 모든 프로세스에 대한 공정한 실행 기회를 제공합니다.
따라서 blocking 상태에서 바로 running 상태로 이동하는 것보다,
ready 상태를 경유하여 스케줄링을 수행하는 것이 효율적입니다.

profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글