목차
- Thread Safe
- 쓰레드와 메모리구조
- 쓰레드
- 프로세스 동기화
- 프로세스 스케줄링 알고리즘
- 프로세스 상태와 스케줄러
- Inter Process Communication(프로세스간의 통신)
- 프로세스 메모리 영역
- Process (프로세스)
운영체제 - 프로세스 상태와 스케줄러
시스템이 실행하고자 하는 프로세스에 CPU를 할당하는 과정
프로세스의 상태
프로세스는
Run
,Ready
,Wait
라는 3가지 상태를 갖는다.
- Run
- CPU가 해당 프로세스를 수행하고 있는 상태
- Ready
- 다른 프로세스를 실행하기위해 잠시 멈춘상태(실행가능한 상태)
- Wait
- 실행 불가능한 상태, 디스크를 읽거나 문자를 입력하는 등의 외부 이벤트가 발생할 때까지 멈춰있는 상태이다.
- Running Process가 어떤 값을 입력 받기 전까지는 Wait 상태가 된다.
- 스케줄러가 다른 프로세스를 선택한 경우 Running 프로세스는 Ready 상태가 된다.
- 스케줄러에의해 Ready 상태의 프로세스를 선택한 경우 다시 Running 상태가 된다.
- 값을 입력받을 경우 Wait 된 프로세스는 Ready 상태가 된다.
스케줄링이란
스케줄링란 os내에서 프로세스가 CPU 위에서 실행될 수 있도록 제어해주는 프로그램
프로세스를 스케줄링하기 위한 queue에는 세가지 종류가 존재한다.
- Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합
- Ready Queue : 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
- Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합
장기 스케줄러 (Memoy 적재)
디스크에서 프로그램을 선택해 Memory(메모리) 로 적재하는 역할을 한다.
요즘은 Viratual Memory Management 의 발달로 장기 스케줄러가 의미가 없어졌다.
한정된 메모리에 많은 프로세스들이 한꺼번에 올라올 경우, 대용량 메모리(디스크)에 임시로 저장된다. 대용량 메모리에 저장된 프로세스 중에서 어떤 프로세스에 메로리를 할당하여 Ready Queue 로 보낼지 결정하는 역할을 한다.
- 메모리와 디스크 사이의 스케줄링을 담당한다.
- 프로세스에 Memory 및 각종리소스를 할당한다.
- 다중 프로그래밍 제어
단기 스케줄러 (Cpu 할당)
프로세스에 CPU 를 할당해 프로세스를 실행하기 위한 역할을 한다.
- Ready Queue에 존재하는 프로세스 중 어떤 프로세스를 run할지 결정한다.
- cpu와 메모리 사이의 스케줄링을 담당한다.
- 프로세스의 상태 : Ready -> Run -> Wait -> Ready
중기 스케줄러 (메모리 관리)
시스템 성능저하를 방지하기 위해 메모리에 적재된 프로세스의 수 를 동적으로 조절하기 위한 스케줄러
- 프로세스에게서 memory를 deallocate한다.
- 현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절한다.
- 다중 프로그래밍의 정도를 완화
- 프로세스의 상태 : Ready -> Suspended