13.프로세스의 스케줄링

프로세스의 스케줄링

 

일반 os 와 리얼타임 os의 차이점

 

스케쥴러가 일반 os 와 리얼타임 os를 구분 짓는다.

 

스케쥴러가 타임슬라이스 기준으로 프로세스 실행을 이동시킨다.

 

리얼타임os : 타임슬라이스가 짧다. 실시간, 바로바로 응답. 응답성이 좋다.

 

일반 os : 타임슬라이스가 길다. 그래서 응답성이 느리다.

 

선점형 os : 다른 프로세스가 실행중이면 그 프로세스를 밀어내고, 실행을 하는 방식이다. (스케쥴러가 일을 훨씬 많이 한다.)

 

비선점형 os : 다른 프로세스가 실행중이면, 그 프로세스를 밀어내지 않고, 기다렸다가 실행을 하는 방식이다.

(스케줄러가 하는 선점형 os보다 하는 일이 적다.)

 

 

스케줄링 알고리즘

 

우선순위가 동일한 프로세스에는 평등원칙을 적용한다.

 

우선순위가 높은 프로세스에게 특권원칙을 적용한다.

 

우선순위 7 큐에 제일 먼저 높은 우선순위를 부여하고, 그 안에 있는 프로세스들은 라운드 로빈 형식으로 실행된다.

 

 

 

스케쥴링이 언제 작동하나?

(스케줄러도 프로세스이기 때문에 자주 사용되면 성능이 저하된다. 가급적 스케줄러를 최소한으로 스케줄러를 동작하도록 하는 철학이 있다.)

 

- 타임슬라이스가 3초면 3초마다 한번씩 프로세스가 실행된다. 타임 슬라이스 사이에서도 컨텍스트 스위칭이 발생할 수 있는가?

(운영체제에 따라 다르다.)

 

 

 

- 프로세스가 생성 및 소멸될때마다 스케쥴러가 동작하는데, 프로세스가 생성되면 신고하기 위해서. 소멸 될때는 무슨이유로 스케쥴러가 동작할까? 소멸이 됐기 때문에 그 정보를 빼야 한다. 만약 그 프로세스가 실행중이었다면, 그 프로세스 대신 다른 프로세스를 실행시키야 하기때문이다.

 

- 현재 실행중인 프로세스가 i/o연산으로 인해서 블로킹 상태에 놓일때마다 스케줄러가 동작한다. 다른 프로세스를 실행시켜야 하기 때문에 스케줄러가 동작해야 됨.

 

 

정리

 

 

절차적 함수 호출지원 CPU 모델

 

함수가 호출되고 또 그안에서 다른 함수가 호출될때마다 함수안의 지역변수들이 스택(스택프레임)에 쌓인다.

스텍프레임의 위치는 스택포인터 레지스터가 각각 하나씩 기억했다가 정해준다.

 

 

 

sp(스택포인터)레지스터

 

 

fp(프레임 포인터)는 sp 백업이다.

 

sp는 함수가 호출될때 프레임 포인터(fp)에 자신의 주소(위치)를 저장해놓는다. 다시 돌아가기 위해서.

 

반환이라는 개념은 스택포인터가 이전에 가리키고있던 위치로 옮겨놓는것이다.

 

 

 

 

fp 레지스터 문제점

 

함수가 여러번 호출되면? fp가 가지고 있던 데이터가 또 덮어 씌워지게 된다. 그래서 fp도 자신의 백업 대상을 둔다. 바로 메모리다. 

fct2 함수 호출할때 이미 fp에는 8이라는 주소값이 있는데, 8이 지워져 버린다. 그래서 메모리를 백업 공간으로 둔다. 이 메모리도 stack 이다.

 

 

fp 레지스터 해결책

 

 

 

 

 

함수 호출 인자의 전달과 PUSH&POP 명령어 디자인

 

 

1.sp가 가리키는 위치에 인자 저장

2.sp 증가