목록Computer Science/Operating system (34)
ecsimsw
Disk scheduling - 어떤 알고리즘으로 헤드를 움직여야 가장 효율적인 방식으로 디스크 큐의 request를 처리할 수 있을지에 대한 고민. FCFS (first come, first served) - 먼저 온 것부터 처리하면 간편하고, 공정하지만 다음 요청을 무시한 체 헤드를 왔다 갔다 움직여 비효율적이다. SSTF (shortest seek time first) - 현재 헤드의 위치에서 가장 가까운 위치의 요청부터 처리한다. - 큐에 요청이 계속 들어오고, 한 쪽으로 헤드가 편향되면서 starvation이 발생한다. SCAN - 헤드를 디스크 전체를 스캔하는 방식으로 큐의 작업을 처리해간다. - SCAN, C_SCAN, Look Scan, C_look Scan 방식이 있다. 1. SCAN :..
Disk Sector, Disk Cluster, Disk Block - Sector : 자체적으로 주소를 갖고 있는 스토리지 단위이다. 하드디스크의 섹터 크기는 보통 512byte이고, 소프트웨어적으로 접근할 수 있는 가장 작은 단위가 된다. - Cluster : Sector의 집합으로, 파일을 할당할 수 있는 항당 단위이다. 파일이 할당 될 수 있는 가장 작은 디스크 공간이다. - Block : 운영체제가 디스크를 접근하는 기본 단위이다. 즉 1개 이상의 섹터를 갖는다. 블록 단위의 크기가 커지면 한번에 참조하는 양이 많아지므로 속도는 빨라지지만, 낭비되는 메모리가 많아 메모리 활용에서는 떨어진 성능을 보인다. Allocate and Free - Disk에 파일을 할당하고, 해제하는 방식을 결정한다. ..
Thrashing - CPU utilization 과 degree of mulit-programming은 비례할 것지만 실제로는 그렇지 않다. multi-programming 정도가 커지면서 page in-out 빈도가 늘어나고, 비교적 많이 느린 메모리와 보조 메모리를 사용하는 시간동안 cpu의 활용이 줄어들기 때문이다. 이런 페이지 결함이나 그로 인한 과도한 페이징 작업을 thrashing 이라고 한다. - thrashing은 페이지 수에 크게 의존하고, thrashing만을 생각한다면 global 보다는 local replacement가, 더 나아가 한 프로세스 당 페이지 수를 적절하게 할당하는 것이 좋다. Techniques to handle - thrashing을 예방하기 위해 적절한 수를 할당..
Page replacement - 메모리가 가득차면, 기존의 적재된 페이지를 선별하여 backing store에 page out 시키고, 그 빈공간으로 새로운 페이지를 적재한다. - page out 시키는 페이지의 정보 변경 여부를 확인하여 변경되지 않았으면 backing store에 저장하지 않아도 된다. 이를 위해 page table에 dirty bit를 추가하여 페이지 정보 변경 여부를 표시한다. Victim page - page replacement에 의해 page out 되는 페이지를 victim page 라고 한다. victim page를 선택하는 최우선의 조건은 데이터가 변경되지 않은, 즉 dirty bit가 0인 페이지를 선택하는 것이 backing store에 저장을 불필요로 하기 때문에..
Effective Access Time - p를 page fault가 일어날 확률이라고 할 때 effective access time은 아래와 같다. - page fault가 일어났을 경우, 하드디스크를 탐색하는 시간이 cpu의 연산이나 main memory 접근 시간보다 훨씬 크게되므로 Tp가 전체 Te에 미치는 영향이 크다. 즉 Page fault 발생 시 디스크를 읽는 시간을 최소화 하는 것은 효율에 많은 영향을 끼친다. Locality of reference - 지역성은 CPU가 참조하는 영역이 이전에 참조했을 코드 또는 현재 구간에 가까운 구간을 참조할 확율이 높다는 의미이다. 시간 지역성은 한번 읽었던 코드가 반복될 확률이 높음을 의미하고, 공간 지역성은 현재 참조 구간의 주변의 구간을 다음에..
virual memory - 메모리를 효율적으로 관리하기 위해 이전의 paging 방식과 segmentation 방식을 설명할 때는 프로세스 전체가 메모리내에 적재해야하는다는 것을 전재로 하여 공부하였다. virtual memory는 프로세스의 일부분만 올려 메모리의 물리적 한계를 극복할 수 있도록 한다. - 각 프로세스가 차지하는 공간이 줄어 더 많은 프로세스를 메모리에 올려둘 수 있다. 프로세스를 메모리에 적재하거나 swap하는데 걸리는 시간이 줄어든다. 메모리 크기 제약으로부터 자유로워진다. Demanding paging - 프로세스를 메모리에 적재할 때, 전체 부분을 다 올리지 않고, 필요한 페이지만 우선 적재하고, 나머지는 backing strore에 저장해둔다. cpu가 논리 주소를 페이지 테..
Segmentation : 프로세스를 일정한 크기로 자르는 paging과 달리 논리적으로 잘라서 메모리에 적재한다. 즉 적재되는 세그먼트 크기가 다 다르다. Segmenation address translation - Cpu의 논리 주소를 s/d로 나눠 s는 segment table 인덱스를 나타내고, table에서 맵핑한 값에 더해 물리 주소를 얻는다. 이 부분까지는 페이징과 같으나 세그먼트는 단위의 고정된 크기가 없기 때문에, 다른 영역을 침범하지 못하도록, 또는 그 세그먼트 영역을 구분하도록, 세그먼트 테이블에 Limit 값이 추가된다. - 위 예시에서 논리주소가 s: 2, d: 100이라면, 테이블에서 인덱스 2에 해당하는 베이스 값 (4300)에 d(100)을 더하여 4400이라는 물리주소를 갖..
Paging - MMU에서 register에 logical address와 physical address의 차이를 저장하여, 메인 메모리에 적재되는 위치와 상관없이 logical한 address를 얻을 수 있었던 것처럼, 메모리 영역을 일정 크기로 잘게 나누고, 레지스터를 더 두어 그 차이를 저장하여 프로세스를 쪼개어 적재하는 방식이다. 이렇게 쪼개어 적재하는 것으로 외부 단편화를 해결한다. - 프로세스, 논리 주소를 자르는 단위를 페이지, 메모리를 자르는 단위를 프레임이라고 한다. 페이지 테이블을 두어, 논리 주소가 실제 메모리 안에서는 어느 프레임에 위치하고 있는지를 확인한다. Paging Address Translation - CPU의 논리 주소는 페이지 테이블을 읽고, 페이지 테이블에서 얻은 프레..