프로세스가
생성
되는 상태
프로세스가 생성되면
Ready
상태가 아니라New
상태이다.프로세스가 만들어지면
메모리도 할당
해야하고
프로세스의 정보를 담고 있는 PCB
와,
사용할 스택 메모리
를할당하고 초기화
해줘야한다.이 작업을 하는 상태이다.
실행할 준비가된 프로세스가 CPU를 할당받기 위해
대기
하고 있는 상태프로세스는 CPU 사용 권한을 받기 위해
Ready Queue
에 있다.
프로세스가
CPU에 할당받고 명령어를 실행
하는 상태
프로세스가 특정 이벤트(예: I/O 작업의 완료)또는 할당된 프로세스가 끝나기를
기다리는
상태
이 상태에서 프로세스는 CPU를 할당받을 수 없습니다.
프로세스가 실행을 완료하거나 시스템에 의해
종료
되는 상태프로세스의 출력을 반환한 후
프로세스가 사용하던메모리와 자원을 운영체제에게 반환
하는 상태
New
상태에서Ready
상태로 자연스럽게 넘어가는 것이 아니라
운영체제가 허락(Admit
)할 때 넘어갈 수 있다.
이러한 이유는
메모리 자원 문제
와CPU 문제
가 있다.
메모리 공간이 한정적
이기 때문에올릴 수 있는 프로세스도 한정적
이다.CPU 는
Time Sharing
을 통해 동시에 진행하는 것처럼 보이게한다.
하지만프로그램이 많아지면 각 프로세스의 대기시간이 길어지고
버벅이는 것처럼 보이는 문제
가 발생할 수도 있다.
Time sharing
여러 사용자가 하나의 컴퓨터 시스템을 공유하도록 설계된 컴퓨터 작업 방식
CPU 스케줄링과 멀티태스킹을 활용하여 각 사용자에게 컴퓨터 사용 시간을 분배한다.
Time Slice
특정 프로세스가
CPU를 연속적으로 사용
할 수 있는 시간
Time Slice
가 끝나면ready
상태로 간다.너무 길게 설정하면 프로그램이 끊기는 것처럼 보이고
너무 길게 짧게 설명하면 Context Switching 총 시간이 늘어나서
프로세스가 종료되는데 까지 오래걸린다.
Dispatcher
가 대기하고 있는 프로세스 중CPU 스케줄링
을 통해
적잘한프로세스
를Running
상태로 만든다.
Dispatcher
운영체제의 일부로,
CPU 스케줄링
에 의해 선택된 프로세스에 CPU를할당
하는 역할.
이를 통해 여러 프로세스가 CPU를 공유하고 동시에 실행될 수 있습니다.
프로그램이 종료하게 되면
Terminated
상태로 만든다.
CPU 는
Time Sharing
을 통해 프로세스들을 실행시키므로
실행 시간이 길면 Time Out
이 걸려Ready
상태로 돌아가게된다.
프로그램 실행 중
입출력 요청
이 발생하거나
OS에 어떤 작업을 요청
하면Waiting(또는 Blocked)
상태가 된다.
폴링 시스템의 경우
wait
로 가지 않는다.
폴링 시스템
CPU 가 직접 입출력 장치에서 데이터를 가져오거나 내보내는 방식
하나의 장치(혹은 프로그램)이 충돌 회피 또는 동기화 처리 등을 목적으로
다른 장치(혹은 프로그램)의 상태를주기적으로 검사
하는 것주기적으로 확인하기 때문에 성능이 떨어진다.
기다리던 이벤트가 끝나면 바로
Running
상태가 되는 것이 아닌Ready
상태가 된다.
이후 CPU 에 할당되는 프로세스도CPU 스케줄링
에 의해 결정된다.
ready 상태는 CPU를 기다리는 프로세스들의 대기열이다.
이 대기열에서 운영 체제는 적절한 스케줄링 알고리즘에 따라 CPU를 할당할 후보를 선택합니다.
이는 CPU 자원을 공정하게 사용하고, 모든 프로세스에 대한 공정한 실행 기회를 제공합니다.
따라서 blocking 상태에서 바로 running 상태로 이동하는 것보다,
ready 상태를 경유하여 스케줄링을 수행하는 것이 효율적입니다.