5-process-관리
5.2 프로세스 상태
실행
준비
봉쇄
실행
프로세스가 CPU 를 보유하고 기계어 명령을 실행하고 있는 상태
시스템 내에 CPU 는 1 개임. 여러 프로세스가 동시에 실행되더라도 실제 실행 상태에 있는 프로세스는 1 개
준비
프로세스가 CPU 만 보유하면 당장 명령 실행 가능하지만, CPU 를 할당 받지 못한 상태
봉쇄
프로세스에게 CPU 를 주어도 명령 실행 불가능 상태.
컨텍스트 스위치
실행시킬 프로세스 변경하기 위해 원래 수행중이던 프로세스의 문맥을 저장하고
새로운 프로세스의 문맥을 세팅하는 과정
...
5.5 프로세스를 스케줄링하기 위한 큐
프로세스를 스케줄링할
작업큐
시스템 내의 모든 프록세스 관리
준비큐
CPU 를 할당받고 실행되기 위해 기다리는 프로세스 집합
장치큐
봉쇄상태에 있는 프로세스
5.6 스케줄러
어떤 프로세스에게 자원을 할당할지 결정하는 OS 커널 모듈
장기 스케줄러(작업 스케줄러)
어떤 프로세스를 준비큐에 삽입할지 결정
CPU 만 얻으면 당장 실행될 얘들이라, 프로세스가 메모리를 보유해야 하므로 장기 스케줄러는 프로세스에게 메모리 할당하는 문제에 관여
처음 프로세스 생성시 시작->준비 상태로 변하는데 장기 스케줄러는 시작 상태의 프로세스들 중 어떤 프로세스를 준비 큐에 삽입할지 결정
현대의 시분할 시스템에서는 사용 ㄴㄴ.
과거 자원이 빈약했던 시절에 적응 야의 메모리를 효율적으로 할당해주는 역할이 필요했음
단기 스케줄러
CPU 스케줄러
준비 상태의 프로세스 중 어떤 프로세스를 다음 번에 실행상태로 만들 것인지 결정
*예컨대, 시분할 시스템에서는 타이머 인터럽트 발생시 단기 스케줄러 호출
중기 스케줄러(현대 시분할 system OS에서 사용)
너무 많은 프로세스에게 메모리를 할당해 시스템 성능 저하.
프로세스당 보유하고 있는 메모리량이 극도로 적어지면 CPU 수행에 필요한 프로세스의 주소 공간조차도 메모리에 올리기 어려움
이렇게 되면 디스크입출력이 수시로 발생하여 시스템의 성능이 심각하게 저하됨
그래서 메모리에 올라온 프로세스 중 일부를 swap out 시킴
이를 해결하기 위해 메모리에 적재된 프로세스의 수를 동적 조절
swap out 대상 0순위: 봉쇄상태 프로세스
당장 CPU를 획득할 가능성이 없기 때문에 메모리 보유 의미가 없기 때문
봉쇄 상태인 프로세스 스왑아웃 후에도 메모리가 모자란 경우
스케줄러는 타이머 인터럽트가 발생하여 준비큐로 이동하는 프로세스를 추가적으로 스왑아웃
중기 스케줄러 등장으로 프로세스 상태 추가됨: 중지상태
중지 준비
준비상태에 있던 프로세스가 스왑아웃될 경우
중지 봉쇄
봉쇄상태에 있던 프로세스가 스왑아웃될 경우
봉쇄되었던 조건 만족시 준비 상태로 이동
Last updated
Was this helpful?