디스크에 대한 접근시간(access time)은 

  • 탐색시간(seek time) :  헤더가 실린더에 도착하기까지 걸리는 시간
  • 회전지연시간(rotational latency) : 섹터가 헤더에 도착하기까지 걸리는 시간
  • 전송시간(transfer time) : 섹터가 헤더에 도착 후 실제로 데이터가 읽고 쓰는데 걸리는 시간
  • 기타 등등

에 의하여 결정된다.

이 중에서 회전지연시간과 전송시간은 통제하기 힘든 부분이므로

 

운영체제는 탐색시간을 줄이기 위해 헤드의 움직임을 최소화 하는 스케줄링 작업을 함

 

1) FCFS(First Come First Service) 스케줄링

디스크에 먼저 들어온 요청을 먼저 처리 하는 방식 -> 비 효율적

( 이유 ) 입출력 요청이 디스크의 한쪽 끝을 처리한 후 반대쪽 끝을 처리해야 하는 경우 발생 -> 탐색시간이 비효율적으로 증가

 

2)SSTF(Shortest Seek Time First) 스케줄링

현재 위치로부터 가장 가까운 위치에 있는 요청을 먼저 처리

 

(+) 헤드의 이동거리 감소 -> 효율성 증가

(-) 기아현상(starvation)발생

--> 헤드의 이동거리 측면에서 가장 우수한 알고리즘은 아님

 

3)SCAN 알고리즘

헤드가 원판의 안쪽 끝과 바깥쪽 끝을 오가며 그 경로에 존재하는 모든 요청을 처리

버스가 일정한 경로를 따라 정류장을 도는 것과 유사한 방식

 

지그재그 방식 

 

(+) 효율성과 형편성을 만족시키는 알고리즘

(+) 한쪽 끝에서 다른쪽 끝으로 한번 이동으로 현재 큐에 있는 모든 요청 처리 가능

(+) 이동 거리측면에서 효율적

(+) 기아현상 발생 방지

(-) 공평성을 만족 시키지 못하는 알고리즘 - 실린더 위치의 기다리는 시간

 

4) C-SCAN(Circular-SCAN) 알고리즘

SCAN과 같은 방식으로 요청을 처리하는 알고리즘이지만 움직이는 방향이  다름

한쪽끝에서 다른쪽 끝으로 이동 후 다시 한쪽 끝에서 이동 시작

 

(+) 균일한 탐색시간 : 탐색시간의 편차가 줄어듬

(-) SCAN 보다 이동거리 증가

 

5) LOOK 과 C-LOOK 알고리즘

SCAN, C-SCAN 과 헤드의 이동방식이 유사한 알고리즘

이동방향: LOOK ( = SCAN), C-LOOK(= C-SCAN)

차이점:  가는 방향에 대기 중인 요청이 없으면 이동방향을 바꾼다는 점

 

--> 디스크 입/출력이 많은 시스템에서 언급한 기법들 중 가장 효율적인 방식

 

 

 

 

 

.../routers/posts.js:65
allPosts.sort(sortDateDescending);
TypeError: allPosts.sort is not a function

이유가 뭐지?? allPosts가 array가 아닌가?? -> console 로 출력 해보자

 

<시도>

const allPosts = Post.findAll();
console.log(allPosts);
console.log(Array.isArray(allPosts);

 

<결과>

// console.log(allPosts)의 출력 결과
Promise {
  <pending>,
  [Symbol(async_id_symbol)]: 1230,
  [Symbol(trigger_async_id_symbol)]: 1222
}

// console.log(Array.isArray(allPosts))의 출력 결과
false

TypeError: allPosts.sort is not a function

 

>>  첫번째 출력은 뭔지 모르겠으나, Array 형식이 아니라고 하여 형식을 변환 후 출력

const allPosts = Post.findAll();
const allPostsArray = Array.from(allPosts)

console.log(allPostsArray);  // 출력 : []
console.log(Array.isArray(allPostsArray));// 출력: true

 

<< 코드는 정상적으로 작동하는데 받아오는 값이 없다>>

  1. Sequelize 에서 findAll 조사 : https://sequelize.org/api/v6/class/src/model.js~model#static-method-findAll.

..... 문제는 단순했다...   await 를 쓰지 않은 상태에서  array 형태로 변형 시켜서 allPosts 에 아무런 값이 담기지 않았다.

//const allPosts = Post.findAll(); 
const allPosts = await Post.findAll();
 

+ Recent posts