집 짓는 개발블로그
[CS] 운영체제론 정리(2/2) 본문
<2024 박미진 컴퓨터일반> 을 읽고 정리한 글입니다.
Ch5. 단일 프로세스 스케줄링 🔥
01. 스케줄러의 종류
1. 작업 스케줄러(Job Scheduler) : 장기 스케줄러
(1) 디스크 공간에 제출된 프로세스들을 선택하여 주기억장치로 적재
(2) CPU 위주의 연산과, I/O 위주의 연산을 적절히 혼용하여 스케줄링
2. 프로세스 스케줄러(Process Scheduler) : 단기 스케줄러
- 실행 준비가 되어있는 프로세스 中 하나를 선택하여 CPU 할당
02. 프로세스 스케줄링 알고리즘
선점(Preemptive) 스케줄링 ↔︎ 비선점(Non-preemptive) 스케줄링 비교
(1) 선점 스케줄링
- 한 프로세스가 CPU 차지하고 있을 때 다른 프로세스가 현재 프로세스 중지시키고 CPU 뺏어와서 차지 가능
- 높은 우선순위를 가진 프로세스들이 빠른 처리를 요구하는 '대화형 시스템'에서 유용함
- (-) 인터럽트(Interrupt)와 문맥교환(Context Switching)에 따른 Overhead 발생 👎
(2) 비선점 스케줄링
- 한 프로세스가 CPU 할당받으면 CPU는 그 프로세스로부터 빠져나올 수 없음
- 응답시간 쉽게 예측 가능
- 짧은 작업이 긴 작업 기다리는 경우가 종종 발생
비선점 🙅♀️ : FCFS, SJF, HRN
선점 🫡 : RR, SRT(=SRTF=STCF), MLQ, MLFQ
▲ 비선점 - 선점 그룹핑은 빈출유형!
💥 이후 디스크 스케줄링, 페이지 교체 알고리즘과 헷갈리기 좋음. 3가지 딱딱 구분해놓기
1. FCFS(First Come First Serve) - 비선점
- fifo의 개념. 준비큐에 도착한 순서에 따라 CPU 할당받음
- 가장 간단한 기법
2. SJF(Shortest Job First) - 비선점
- 기다리고 있는 작업 중에서 수행시간이 가장 짧다고 판정된 것부터! 수행
- (수행시간 = 프로세스 실행시간. 비선점 방식이기 때문에 한 번 어떤 프로세스가 수행 시작하면 아무도 못 뺏어감 - 그래서 남아있는 시간(remaining time) 같은 개념은 없고 무조건 전체 실행시간 기준으로 판정)
- 단점(-) : 수행시간이 긴 프로세스는 계속 뒤로 밀려나는 기아(Starvation) 현상 발생
3. HRN(Highest Response ratio Next) - 비선점
- SJF의 약점(긴 작업과 짧은 작업 간의 지나친 불평등)을 보완
- 우선순위 결정식으로 우선순위 계산하고, 높은 프로세스에 프로세서 할당
HRN 우선순위 = (대기시간 + 서비스 받을 시간) / 서비스 받을 시간
~ 선점 스케줄링 유의점~
1. 평균 대기시간 계산시 : 일부라도 실행 중이었던 시간은 전부 빼고 합해야 함
2. 평균 반환시간 계산시 : 일부라도 최초로 실행된 시점이 기준
4. RR(Round Robin) - 선점
- FCFS에 의해 프로세스들이 내보내지며, 각 프로세스는 같은 크기의 CPU 시간(Time Slice)를 할당함.
- Time Slice 너무 크면 : RR가 FCFS랑 같아짐
- Time Slice 너무 작으면 : 문맥교환(Context Switching)이 많이 일어나 CPU 유휴시간 증가 ↑ 👎
5. SRT(Shortest Remaining Time) = STCF(Shortest Time-to-Complete First) - 선점
- SJF의 선점 버전
- 새로 도착한 프로세스를 포함하여, 처리 완료까지 남은 시간이 가장 짧다고(=CPU 입장에서는 처리 완료까지 가장 짧은 시간이 소요된다고) 판단되는 프로세스부터! 실행
- SJF와 마찬가지로 기아(Starvation) 상태 발생 가능성
6. MLQ(MultiLevel Queue) 다단계 큐 - 선점
- 다단계 큐 알고리즘
- 각 작업들이 서로 다른 묶음으로 분류될 수 있을 때 사용됨
- 일반적으로 작업을 전면작업(대화형, foreground task)와 후면작업(일괄처리형, background task)로 분류한다면 - 이 두 작업은 각각 요구반응시간이 다르므로, 서로 다르게 스케줄링되어야 함
- 준비상태 큐를 여러 단계 종류로 분할해둠
- 기억장치의 크기나 프로세스의 형태에 따라 어느 한 큐에 지정되고 → 이후 작업은 다른 큐로 이동 불가 XX
- 각 큐는 자신만의 독자적인 스케줄링 알고리즘 갖고있음
7. MLFQ(MultiLevel Feedback Queue) 다단계 피드백 큐 - 선점
- CPU 사용시간에 따라 입출력 위주, CPU 위주로 구분 - 특성에 따라 서로 다른 Time-Slice 부여
- 프로세스가 더 하위↓단계의 큐로 옮겨갈수록 주어진 할당시간을 크게↑ 설정
- for 입출력장치의 효과적인 이용, 입출력 위주의 작업들에 우선권을 줌
Ch6. 메모리 관리
01. 메모리 관리 정책 🔥
1. 반입(Fetch) 정책
- (when) 페이지를 메인메모리로 가져올 시기를 결정하는 정책
- 요구반입 : 실행중인 프로그램에 의해 어떤 프로그램이나 자료가 참조될 때, 그것을 주기억장치로 옮김
- 예상반입 : 현 프로그램 수행 중에 앞으로 요구될 '가능성'이 큰 자료 또는 프로그램을 예상하여, 주기억장치로 옮김
- 요구 - '실제로 참조됐을 때' 주기억장치로 ↔︎ 예상 - 지금 실행중인 프로그램이 '참조할 가능성 높은' 페이지 주기억장치로
2. 배치(Placement) 정책 ✅ Best Fit, Worst Fit 빈출 (어디다 할당할지 고르는 문제 몇번 봄)
- (where) 새로 반입된 자료나 프로그램을 주기억장치의 어디에 위치시킬 것인가를 결정하는 정책
- (1) 최초 적합(First Fit)
- 사용가능공간 리스트에서 충분히 큰(=공간 안 모자란) 첫 번째 공백분할공간에 할당
- (+) 속도 빠름↑
- (-) 공간활용률 낮↓
- (2) 최적 적합(Best Fit)
- 충분히 큰 사용가능공간 中 가장 작은 크기의 사용공간 할당
- if 리스트가 정렬되어 있지 않다면? 전체 리스트 검색해야 함
- (+) 사용가능 공간 이용률 높↑
- (-) 속도 느림↓
- (3) 최악 적합(Worst Fit)
- 가장 큰 사용공간에 할당
3. 교체(Replacement) 정책
- 새로 들어온 프로그램이 들어갈 장소를 마련하기 위해, 어떤 프로그램이나 자료를 주기억장치로부터 '제거'할 것인가를 결정하는 정책
- @ 가상기억장치에서 이용
02. 메모리 관리 기법 <- 여기서의 기법들은 전부 '주기억장치(연속할당) - 다중사용자' 카테고리.
+) 기억장치 단편화 2
1) 내부 단편화: 하나의 분할에 작업 할당 후 -> 남은 빈 공간(단편화 영역: 분할 크기 - 작업 크기)
2) 외부 단편화: 대기 중인 작업에게 분할이 너무 작아서 -> 분할 전체가 빈 공간으로 있을 때의 상태(단편화 영역: 분할 크기 전체)
주기억장치(연속할당) | 가상기억장치(불연속할당) | |||||||
단일사용자 | 다중사용자 | 다중사용자 | ||||||
상주 모니터 | 오버레이 (중첩) |
스와핑 (교체) |
고정분할 | 가변분할 | 페이징 | 세그멘테이션 | 페이징/세그멘테이션 혼용 |
|
절대적재 | 재배치적재 |
1. 고정분할 기억장치 할당
- 다중 프로그래밍ㅇ르 지원하기 위한 간단한 방법 - 메모리를 여러 개의 고정된 크기로 정적분할
- 각 분할은 하나의 프로세스 포함, 각각의 크기로 분할된 작업 큐에는 해당 크기 내의 작업들이 only 지정된 분할에서만! 실행 가능
- 1) 절대 적재
- 주기억장치가 여러 개의 고정된 분할로 나눠져 있고, 하나의 작업은 절대 컴파일러에 의해 번역되어 지정된 분할에서 실
- 한 작업이 실행 준비 되어있어도, 지정된 자신의 분할이 이미 차있다면, 다른 분할이 이용 가능하더라도 무조건! 기다려야 함
- 2) 재배치 적재
- 모든 작업을 하나의 큐에 넣어서, 어느 분할에서든지 실행 가능하도록 하는 기법
- 절대적재 기법보다 (+) 주기억장치의 낭비 줄이지만 (-) 운영체제의 부담이 커짐
2. 가변분할 기억장치 할당
- 가장 합리적인 분할의 크기 결정하여 각 작업에게 주기억장치 할당하는 기법으로, 고정된 분할의 경계 없애고 각 작업에 필요한 만큼의 기억장치 할당
- 내부 단편화 XXX절대XXX
- 외부 단편화 발생 OOOO
- 프로세스들이 메모리에서 제거되고 새로운 프로세스가 적재될 때, 사용가능 기억공간에 일부 적재되고 / 나머지 공간은 작은 조각으로 나눠짐 →이런 작은 단편화 공간들을 모아서 하나의 큰 가용공간으로 만드는 게 쓰레기수집(Garbage Collection, GC)
+) 메모리 통합(Coalesing) : 하나의 작업이 끝났을 때, 그 기억장소가 비어있는 다른 기억장소와 인접하는지를 검사 -> 하나의 공백으로 합하는 과정
+) 압축(Compaction) : 메모리 내용들을 적절히 움직여 모든 사용가능 메모리를 하나의 큰 가용공간으로 만드는 것. (-) 압축 동안 시스템은 모든 일을 멈춰야 함 / 메모리 테이블 관리, 운영해야 하므로 !오버헤드 발생!
Ch7. 가상메모리
01. 가상메모리의 개념
1. 가상 메모리
(1) 프로그래머나 사용자들이 디스크의 커다란 메모리공간을 '가상메모리'로 인식하고, 이를 이용하여 메모리의 부족함 없이 다중 프로그래밍 환경을 실현하는 기법
(2) 사용자와 논리적 주소를 물리적으로 분리하여, 사용자가 주기억장치 용량을 초과한 프로세스에 주소를 지정해서, 주기억장치를 제한 없이 사용할 수 있게 함
(3) 프로그램 전체를 동시에 실행하지 않으므로, 요구한 메모리 전체가 아닌x 일부만o 적재해도 실행 가능
(4) 중첩을 고려해 프로그래밍할 필요가 없으므로, 프로그래밍이 쉬움
(5) 프로세서의 이용률&처리율 향상
(6) 응답시간이나 반환시간은 향상 안 됨XX <- 5, 6번 헷갈리게 생겨서 시험에서 선지로 나올법한듯
2. 동적 주소 변환(DAT, Dynamic Adress Translation) 기법
(1) 가상메모리 이용하여 메모리 공간 문제를 해결하려면, 실행 중인 프로세스가 참조하는 주소 <-> 주기억장치에서 사용하는 물리적 주소를 분리해야 함
(2) 가상주소(=논리적 주소 =프로그램 주소)를 물리적 주소로 변환하는 과정이 매핑(mapping)
(3) 동적 주소 변환은 '인위적 연속성' 제공
(4) 인위적연속성이란? 가상 주소에서 연속적이라고 주기억장치에서도 연속적일 필요 없다는 의미
(5) 동적주소변환기법은 가상메모리의 어느 부분이 현재 실제 메모리 어디에 위치하는가? 를 나타내는 대응표(mapping table) 유지해야 함
3. 블록(=가상메모리의 이동단위) 사상
(1) 고정길이 블록 : 페이지(page) <-> 가변길이 블록 : 세그먼트(segment)
(2) 페이지 이용한 기법이 페이징(paging) <-> 세그먼트 이용한 기법이 세그멘테이션(segmentation)
(3) 페이지 폴트(Page Fault) = 페이지 부재 : 프로세스에서 원하는 페이지가 주기억장치 내에 존재하지 않는 경우 / 페이지 폴트 시 '페이지 교체' 로 이어짐
+) if 블록을 작게 설계하면 / 크게 설계하면
1) 블록을 작게 설계하면?
- 관리할 블록 개수 많아짐 ↑
- 블록사상표 크기 커짐 ↑
- 페이지 폴트(Page Fault, 페이지 부재) & 페이지 교체 < 가 자주 일어남
- CPU 유휴시간 길어짐
- 1개의 블록이동시간은 짧아짐 ↓
- 디스크로부터 블록이동 자주 발생
- 필요한 부분만 가져올 수 있음
2) 블록을 크게 설계하면?
- 관리할 블록 개수 적어짐 ↓
- 블록사상표 크기 작아짐 ↓
- 페이지 폴트 & 페이지 교체 < 덜 일어남
- CPU 유휴시간 덜 발생
- 1개의 블록이동시간은 길어짐 ↑
- 디스크로부터 블록이동 덜 발생
- 필요치 않은 부분도 같이 가져오게 됨
+) 페이징(Paging)
1. 페이지 시스템의 HW구조와 원리
(1) 논리적 주소 : 페이지 번호 / 변위(offset)로 구성
(2) 페이지 번호 p 이용, 페이지 테이블의 p위치에 저장된 f값(메모리 페이지 기준 주소로, 메인 메모리의 프레임 번호) 얻음
(3)
(4) 기준 주소 f에 offset(변위)를 더하면 = 메모리의 물리적 주소
(5) 페이지 테이블(=페이지 매핑 테이블) 이용해서 논리적 주소 -> 물리적 주소 변환하는 것
(6) 페이지 테이블 : 페이지 번호(페이지의 논리적 주소) + 페이지 프레임 주소(페이지번호에 대응하는 물리적 주소) 포함
(7) 페이지 테이블은 별도의 레지스터로 구성하거나 or 메인메모리에 배치하기도 함
+) 역방향 페이지 테이블(IPT, Inverted Page Table)
(1) 물리 메모리에서 논리 메모리 주소를 찾아가는 방식을 역으로 구현한 것
(2) 일반 페이지 테이블에서는 논리 주소에서 물리 주소를 매핑하지만, 역방향 페이지 테이블은 물리 주소에서 논리 주소를 찾는 방식
(3) 테이블의 크기가 가상주소공간의 크기와 무관하고, 메모리 크기에 달림
(4) 가상주소에서 추출한 가상 페이지 번호를 IPT의 모든 엔트리와 비교해야 하므로 많은 시간이 걸림 -> 문제 해결 위해 해시함수(hash function) 사용
+) 변환 색인 버퍼(TLB, Translation Lookaside Buffer)
- 페이지 테이블 中 최근에 참조된 주소 변환 정보를 @'캐시 메모리'에 저장함으로써, 주소 변환을 위한 메모리 접근을 줄이기 위해 사용
2. 페이지 공유와 보호
(1) 페이징 시스템은 시분할 환경에서 중요한 공통 코드 공유 가능
(2) 페이징 시스템에서는 프로세스를 메모리에 연속적으로 할당할 필요 없기 때문에 -> 여러 프로세스가 메모리 공유 가능
(3) 이 공유 코드는 '재진입 코드' / '순수 코드' 라고 부름, only 읽기만 가능(스스로 수정 불가능)
(4) 페이지 테이블에 '보호 비트' 추가해 페이지 보호 가능
+) 세그먼테이션(Segmentation)
1. 세그먼테이션 개요
(1) 세그먼테이션은 프로세스 관점 지원하여, 메모리를 크기가 서로 다른 '세그먼트'로 나눔
(2) 프로그램을 구성하는 서브루틴 / 프로시저 / 함수나 모듈 etc. 로 세그먼트 구성
(3) 각 세그먼트는 연관된 기능을 수행하는 하나의 모듈 프로그램으로 생각하며, 메모리의 연속된 위치에서 구성하되, 서로 인접할 필요는 없음!
(4) 프로세스에 따라 세그먼트의 크기가 다르므로, 메모리를 크기가 일정한 페이지 프레임으로 나누지 않고xx 동적 분할 방법(=가변분할 기억장치 할당, 위에 해당 내용 있음) 으로 할당함
2. 세그먼트 공유
(1) 페이징시스템 : 페이지테이블의 공유 항목을 표시해야 함 <-> 세그먼트 : 공유한다고 only선언만! 하면 됨
(2) 2개 이상인 다른 프로세스의 세그먼트테이블에 있는 항목은 if 동일한 메모리주소 지정하면? 공유 가능
+) 페이징 기법 ↔︎세그먼테이션 기법 💥
1) 페이징 기법
- 외부단편화 X
- 페이지 크게 작게 ↓ 설계해서 내부단편화 ↓ 줄일 수 있음
- 페이지 사상으로, 비용 증가 $↑, 수행속도 감소 ↓
- 페이지는 프로그램에 상응하는 논리적 의미 갖지 못함!
2) 세그먼테이션 기법
- 기억장치 할당은 최초/최적/최악 적합 기법 사용하여 해결하는 동적기억장치할당 방법 사용 → 외부단편화 O
- 세그먼트 공유와 보호 측면에서, 세그먼트 > 페이징시스템 보다 수행방법이 쉽고 명확함 ♡
02. 페이지 교체정책(Replacement Strategy)
페이지 부재(Page Fault) 발생시, OS가 들어올 페이지에 대한 공간을 만들어주기 위해, 주기억장치로부터 어떤 페이지를 제거할지 선택함
0. 최적 페이지 교체(OPT, Optimal)
- 모든 교체 알고리즘 중 페이지부재 비율 가장 낮음
- 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체 대상으로 선택
- 현실적으로 구현 어려움
1. FIFO(First In First Out)
(1) 각 페이지가 주기억장치로 들어올 때마다 그 시간을 기억하고 있다가, 페이지 교체 필요할 때 가장 먼저 주기억장치에 들어왔던 페이지와 교체
(2) Belady's 모순 : 어떤 프로세스에게 할당된 페이지프레임 수가 증가하면 페이지부재가 감소하는 게 맞는데, FIFO에서는 페이지프레임 수 증가할 때 현실적으로 페이지부재가 증가하는 경우가 있음
(문제에 그림 나오면 보통 세로줄 수가 페이지프레임임)
2. LRU(Least Recently Used) 교체 알고리즘 - stack 이용 가능(가장 최근에 참조한 페이지는 top, 교체될 페이지는 bottom에 있음)
(1) 가장 오랫동안 사용되지 않은 페이지 교체
(2) 미래의 에측을 과거의 데이터로 해결하려는 통계적 개념
(3) 메모리의 지역성 이용
(4) 각 페이지들이 참조될 때마다 그때의 시간(참조 시점)을 테이블에 기억시킴 -> (-) 막대한 오버헤드
3. LFU(Least Frequently Used) 교체 알고리즘
(1) 각 페이지마다 참조 횟수에 대한 계수기 가지며, 그 값이 가장 작은 페이지 교체
(2) 어떤 프로세스의 초기 단계에서 한 페이지가 많이 사용되고 - 이후에 많이 사용되지 않을 경우 -> 큰 계수 갖고있기 때문에, 더 이상 사용되지 않아도 메모리에 남아있음 (단점)
(3) 바로 불러온 페이지가 교체될 수도 있음
4. NUR(Not Used Recently) 교체 알고리즘
(1) 최근에 쓰이지 않은 페이지 교체(가까운 미래에도 쓰이지 않을 가능성 크기 때문)
(2) 각 페이지당 필요한 두 개의 하드웨어 비트(참조비트, 변형비트)를 갖고, 이 비트 값으로 교체할 페이지 선택함
+) 2차 기회(Second Chance) 교체 알고리즘
(1) 기본적인 알고리즘은 FIFO로, LRU와 성능 비슷하지만 과부하 적은 알고리즘
(2) 각 프레임의 사용여부 나타내는 '참조비트' 추가하여, 페이지가 메모리 내의 프레임에 처음 적재됐을 때 '1'로 설정 후, 그 페이지가 계속 참조될 때도 '1'로 설정
(3) 페이지 교체할 시기에 참조비트가 '0'인 프레임 찾기 위해 이동할 때, 참조비트가 1인 프레임을 0으로 변환시킴
(4) 그 페이지에 2차적 기회를 주고, 다음에 검사될 때까지 교체하지 않음
(5) 다음 순환 시 처음으로 0 만나면 그 프레임 교체
03. 적재 정책
1. 지역성(Locality)
(1) 실행 중인 프로세스에 나타나는 특성으로, 프로세스들은 기억장치 내의 정보를 균일하게 액세스하는 것이 아니라, 어느 한 순간에 특정부분을 집중적으로 참조함
(2) 지역성(Locality)는 캐시 메모리(Cache Memory), 연관 기억장치의 성립 이유가 되고 + Working Set을 뒷받침함
(3) 시간지역성(Temporal Locality)는 처음에 참조된 기억장소가 가까운 미래에도 게속 참조될 가능성이 높다는 의미
(Looping, Subroutine, Stack, Counting, Totaling < 에 사용되는 변수)
(4) 공간지역성(Spatial Locality)는 일단 하나의 기억장소가 참조되면 그 근처의 기억장소가 계속 참조되는 경향을 의미
(배열, 순차적 코드 실행, 프로그래머들이 관련된 변수들을 근처에 선언하는 경향)
2. 스래싱(Thrashing)
(1) 페이지 교체가 너무 자주 일어나는 경우를 말하는 것 = 어떤 프로세스가 프로그램 수행에 소요되는 시간보다 < 페이지 교체에 소요되는 시간이 더 큰 경우
(2) 다중 프로그래밍의 정도가 커지면 : 스래싱 현상이 자주 일어나고 -> 프로세서 이용률 급격히 감소(그래프 참고)
(3) 프로세서 이용률 높이고 스래싱 중단하려면 : 다중 프로그래밍 정도 낮춰야 함
(4) 스래싱 방지하려면 : 각 프로세스에 필요한 프레임 제공할 수 있어야 함
(5) 지역성 이용하여 현재 지역 크기보다 적은 페이지 프레임 할당하는 것 <- 이건 페이지 부재 발생 원인이 될 수 있음
(6) 프로세서가 요구하는 최소한의 수보다 > 페이지 프레임의 수가 적으면 적을수록 : 페이지 부재율 증가 -> 더 많은 페이지 부재 일어나고 -> 프로세서 효율 떨어짐 ↓
3. 페이지 부재 비율(PFF, Page Fault Frequency)
(1) 스래싱 예방하는 직접적인 액세스 방법으로, 페이지 환경에서 프로세스의 실행을 측정하는 기준
(2) PFF가 높다 = 프로세스에 더 많은 프레임이 필요하다 ↔︎ PFF가 낮다 = 프로세스에 프레임이 너무 많다
(3) PFF가 증가하고 & 유효 프레임이 없으면 : 어떤 프로세스를 골라서 중지해야 함
(4) 프로세스 중지하면 : PFF가 높은 프로세스들에 중단된 프로세스에 할당되었던 프레임 분배함
(5) 스래싱은 페이지 부재에서 발생하므로, PFF 조절이 필요함
if 빈 프레임 있을 때 :
- PFF가 상한값 초과하면 : 현재 프로세스에 프레임 할당
- PFF가 하한값 이하로 떨어지면 : 현재 프로세스의 프레임 제거
elif 빈 프레임 없을 때 :
- PFF가 상한값 초과하면 : 희생시킬 프로세스 선택하고 -> 그 프로세스 실행 일시 중단
- PFF가 하한값 이하로 떨어지면 : 현재 프로세스의 프레임 제거
--- 이하 내용 보충 필요 ---
Ch8. 디스크 스케줄링
01. 탐색시간(Seek Time) 최적화 기법 - 트랙을 찾는 데 걸리는 시간
1. FCFS(Fist Come First Service) 스케줄링
2. SSTF(Shortest Seek Time First) 스케줄링
3. SCAN 스케줄링(엘리베이터 알고리즘)
4. C-SCAN(Circular-SCAN) 스케줄링
+) N-Step SCAN 스케줄링
5. LOOK 스케줄링 : SCAN과 동일하나, 실제로는 SCAN처럼 헤드가 디스크의 끝과 끝까지 이동하지는 않음. LOOK은 각 방향으로 요청에 따르는 거리만큼만 이동하고, 현재 방향에서 더 이상의 요청이 없다면 헤드의 이동방향이 바뀌는 방식(가던 방향으로 제일 먼 요청까지만! 감, 굳이 요청 더 없는데 끝까지 이동 안 하는 것이 차이)
02. 회전지연시간(Rotational Delay Time) 최적화 기법 - 섹터를 찾는 데 걸리는 시간
1. 에션바흐 기법
2. SLTF 스케줄링(Sector Queueing)
(1) 여러 섹터에 대한 많은 요구들 중 가장 짧은 회전지연시간을 갖는 요청에게 먼저 서비스함
(2) 고정헤드 디스크, 자기드럼을 위한 스케줄링 기법
Ch9. 파일 관리
'기타' 카테고리의 다른 글
경험면접 준비과정 기록 (2) | 2024.11.22 |
---|---|
1차면접(실무면접) 준비 정리(~ing) (30) | 2024.11.21 |
[CS] 운영체제론 정리(1/2) (3) | 2024.10.18 |
8/29 오늘의 취준 (0) | 2024.08.28 |
m2 맥북에서 토익, 오픽 성적표 pdf파일 받는 방법 (3) | 2024.08.28 |