Operating system
- system hardware를 관리하고, 응용 프로그램을 동작시키기 위해 hardware resource를 할당하는 역할
사용자가 프로그램을 실행할 때, 운영체제를 통해 hardware와 소통.
- CPU, 메모리, 보조 기억 장치, 네트워크 등의 자원들을 잘 관리하여 응용 소프트웨어들에게
제공해주는 역할을 하는 소프트웨어
프로세스 생애주기
- 프로세스란?
프로그램의 인스턴스로 운영 체제에서 가장 기본적인 실행 단위이다.
각 프로세스는 메모리를 차지하고, 일정 상태 주기를 기다린다.
- new (처음 프로그램을 실행하기 위해 OS에게 요청하면 프로세스를 new상태로 생성)
- ready (실행 가능한 상태가 되면 ready 상태)
- running (ready상태의 프로세스는 스케쥴러에 의해 running 상태가 되어 실행)
- waiting (I/O 혹은 이벤트 대기에 의해 waiting 상태가 되거나 인터럽트에 의해 ready상태가 됨)
- terminated (실행 중이던 프로그램이 종료되면 terminated 상태가 됨. OS에 의해 자원이 회수)
스케쥴링(Scheduling)
- 현대 OS의 기본적인 기능으로 멀티프로그래밍이 있다.
싱글 코어 프로세서일 경우 동시에 여러 프로그램을 실행할 수 없기 때문에 실제로 시분할을 통해
각 시간 분할마다 다른 프로그램을 실행 하는 것으로 동시에 여러 프로그램을 실행하고 있는 것 같은 효과를 준다.
"프로세스가 생성되어 실행될때 필요한 자원을 해당 프로세스에 할당하는 작업"
장기 스케쥴러
- 새로 프로세스를 실행하는 것과 같이 덜 주기적이어도 되는 작업에 적용됨
단기 스케쥴러
- 실행 중이었던 프로세스를 멈추고 다른 프로세스를 실행하려는 것과 같이 매우 짧은 주기로 실행되는 스케쥴러
어떤 프로세스가 진행되다가 다른 프로세스가 실행되어야 할 때 문맥 전환(Context switching)이 일어난다.
일반적으로 운영체제에서 문맥교환이 자주 발생하기 때문에 가능한 효율적으로 구현해야 하며,
쓰레드(Thread)를 이용하여 문맥교환을 효율적으로 처리할 수 있습니다.
스케쥴링 방법
선점형(preemtive)
- 우선순위가 높은 프로세스를 빠르게 처리할 수 있다.
- 어떤 프로세스가 자원을 사용하고 있을 때 우선순위가 더 높은 프로세스가 올 경우 자원을 강탈한다.
- 빠른 응답 시간을 요구하는 시스템에서 사용한다.
- 단점 : 오버헤드가 크다.
- RR(Round Robbin)
시분할 시스템에서 사용된다.
FCFS와 비슷하지만 제한 시간이 지난 후 다음 프로세스에게 자원을 할당해준다.
할당되는 시간이 클경우 FCFS와 비슷해진다. - SRTF(Shortest Remaining Time)
SJF 스케줄링을 비선점에서 선점 형태로 수정한 스케줄링 알고리즘이다.
진행중인 프로세스가 있어도 Sleep 시키고 최단 잔여시간 프로세스에 우선권 부여 - 선점 우선순위
- 다단계 큐 스케쥴링
- 다단계 피드백 큐 스케쥴링
- RM 스케쥴링
- EDF 스케쥴링
비선점형(non-preemtive)
- 이미 할당된 자원을 다른 프로세스가 강탈 할 수 없다.
- 응답시간의 예측이 편하며, 일괄처리 방식에 적합하다.
- 단점 : 덜 중요한 작업이 자원을 할당 받으면 중요한 작업이 와도 먼저 처리 될 수 없다.
- FCFS(First Come First Service, 선입선출)
자료구조의 Queue와 같은 구조의 알고리즘이다. - SJF(Shortest Job First, 단기작업우선)
준비상태 큐에 있는 프로세스들 중에 실행 시간이 가장 작은 프로세스에게 자원을 할당
가장 적은 평균대기시간을 가짐
실행시간이 긴 프로세스의 경우 실행시간이 짧은 프로세스에게 우선순위가 자꾸 밀려 무한 대기 상태가 발생할 수 있다. - HRRN(Hightest Response-Ratio Next)
SJF의 단점을 보안하기 위해서 등장
우선순위 계산식을 이용하여 자원할당(숫자가 높을수록 우선순위가 높음)
우선순위 = (대기시간 + 실행시간) / 실행시간
'Operating System' 카테고리의 다른 글
Process VS Thread (0) | 2024.04.01 |
---|---|
운영 체제 (0) | 2019.05.03 |
데드락 (0) | 2019.04.17 |
동기화(Synchronization) (0) | 2019.04.17 |
쓰레드(Threads) (0) | 2019.04.17 |