운영체제 - 5강 핵심

컴공거북이·2024년 5월 17일

운영체제

목록 보기
5/9

1. shared memory통신방법과 message passing통신방법을 비교, 설명하시오.

1)message passing:

프로세스 간에 메세지를 전달하여 데이터를 교환하는 방식이다.
동기화 : 공유되는 메모리가 없기 때문에 동기화 필요없음
데이터양: 적은 데이터 간단하게 처리가능
커널간섭: 커널 간섭이 높아서 오버헤드 큼
분산 시스템인 경우 편리

2)shared memory

여러 프로세스가 동일한 메모리 공간을 공유하여 데이터를 교환하는 방식
동기화: user가 동기화해주어야함
데이터양: 많은 양을 보낼 수 있음
커널 간섭: 커널 간섭적음
캐시의 일관성을 유지해야함

2. preemptive와 nonpreemptive scheduling 방식을 비교,설명하시오

비선점 스케줄링(nonpreemptive): 프로세스가 자발적으로 cpu를 양도하는 것
ex)시스템콜, i/o 요청장치
선점 스케줄링(preemptive): CPU를 강제적으로 다른 프로세스에 할당, 프로세스의 우선순위 허용
낮은 우선순위를 가진 프로세스보다 높은 우선순위를 가진 프로세스가 CPU를 선점하는 방식
ex)할당된 cpu시간이 끝나면 다른 프로세스에 할당

1)실행 상태에서 대기상태로 전환될 때
i/o인터럽트 nonpreemtive
2) 실행 상태에서 준비상태로 전환될때
자기한테 할당된 시간이 끝났을 때 preemtive
3)대기 상태에서 준비로 전혼될때
i/0가 끝나고 지금실행중인 프로세스가 끝나면 강제적으로 일어남 preemtive
4)종료
nonpreemtive

차이:
preemptive 스케줄링은 우선순위가 높은 프로세스가 실행 중인 동안 다른 프로세스가 그 실행을 중단할 수 있지만, nonpreemptive 스케줄링은 한 번 시작된 프로세스가 CPU를 해제할 때까지 실행된다.

3.FCFS, SJF, SRTF(Shortest-Remaining-Time-First), Priority, RR, Multilevel Queue, Multilevel Feedback Queue scheduling 방식을 각각 설명

first-come-first-served(FCFS) 스케줄링(nonpreemtive)

프로세스가 도착한 순서대로 진행하는 스케줄링
호위효과 발생: 긴 프로세스에 의해 기다리는 시간이 길어짐

Shortest-job-first(SJF) 스케줄링(nonpreemtive)(우선순위 스케줄링의 일종)

최소 평균 대기시간을 제공하는 가장 수행 시간이 짧은 job부터 수행하는 스케줄링
(어떤 게 수행시간이 짧은 지 알기 어려움)
(preemtive)한 SJF 스케줄링
수행시간이 짧은 job이 나타나면 CPU를 그 job에게 양도하는 스케줄링

<Priority 스케줄링>(우선순위 스케줄링)

(nonpreemtive) 우선순위가 높은 순대로 수행
(preemtive) 우선순위가 높은 job이 나타나면 cpu를 그 job에게 양도
문제 :(starvation)기아 - 낮은 우선순위가 실행되지 않을 수 있음
해결 :aging(노화)- 시간이 지날수록 프로세스의 우선순위를 높여주는 방법

<RR(roundrobin)>

일정 시간동안 순서대로 cpu를 할당하는 스케줄러(time slice, time 퀀텀)
일정 시간이 지나고 다시 실행이 덜 끝났으면 ready 큐의 끝으로 감
q가 너무 길어지면: 총 대기시간이 길어진다(FIFO)
q가 너무 짧으면:오버헤드 발생(문맥교환시간보다 길어야함)
SJT에 비해 총 처리시간이 길지만 응답시간이 짧음

<multilevel 큐 스케줄링>

각각의 프로세스를 특성에 맞게 서로 다른 ready큐에 지정하는 것(큐끼리의 이동 불가)

foreground에서는 상호작용(interactive)을 해야하는 프로세스를 rr스케줄링을 통해처리한다.
(응답시간이 빠르고 cpu벌스가 짧은)
background에서는 일괄처리(batch)를 해야하는 프로세스를 fcfs스케줄링을 통해 처리한다.
(총처리량이 많고 긴 시간을 필요로 하는)

큐를 스케줄링 하는 법
1)fixed priority scheduling (고정된 우선순위 스케줄링)
foreground에 서비스를 먼저 실행하고 background의 서비스를 실행한다.
2)time slice
각 큐에 time을 적절한 비율로 할당해야한다.(foreground 80%, background 20%)

<multilevel feedback 큐>

멀티레벨 피드백 큐는 멀티레벨 큐랑 동일하나 프로세스가 하나의 큐에서 다른 큐로 이동 가능하다는 점이 다르다. (aging을 통해 이동가능)

다중 피드백 큐스케줄러는 다음과 같은 매개변수로 정의됩니다:
1)큐의 개수 정하기
2)큐마다의 스케줄링 알고리즘 지정
3) 프로세스를 업그레이드 시킬 때 사용하는 방식
4) 프로세스를 다운그레이드 시킬 때 사용하는 방식
5)프로세스가 들어오면 어떤 큐에 넣을 지 지정

profile
잘못된 정보가 있을 경우 언제든 댓글로 남겨주세요 :) 감사합니다!!

0개의 댓글