목록분류 전체보기 (277)
ecsimsw
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가 참조하는 영역이 이전에 참조했을 코드 또는 현재 구간에 가까운 구간을 참조할 확율이 높다는 의미이다. 시간 지역성은 한번 읽었던 코드가 반복될 확률이 높음을 의미하고, 공간 지역성은 현재 참조 구간의 주변의 구간을 다음에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cvtCUG/btqzmkMuqYI/xQ1hz9WW2luU2SBf3WjUS1/img.png)
virual memory - 메모리를 효율적으로 관리하기 위해 이전의 paging 방식과 segmentation 방식을 설명할 때는 프로세스 전체가 메모리내에 적재해야하는다는 것을 전재로 하여 공부하였다. virtual memory는 프로세스의 일부분만 올려 메모리의 물리적 한계를 극복할 수 있도록 한다. - 각 프로세스가 차지하는 공간이 줄어 더 많은 프로세스를 메모리에 올려둘 수 있다. 프로세스를 메모리에 적재하거나 swap하는데 걸리는 시간이 줄어든다. 메모리 크기 제약으로부터 자유로워진다. Demanding paging - 프로세스를 메모리에 적재할 때, 전체 부분을 다 올리지 않고, 필요한 페이지만 우선 적재하고, 나머지는 backing strore에 저장해둔다. cpu가 논리 주소를 페이지 테..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bCJGpw/btqzprwEsHq/xuV5YcVBPpbcb7FV7ICRsk/img.png)
Segmentation : 프로세스를 일정한 크기로 자르는 paging과 달리 논리적으로 잘라서 메모리에 적재한다. 즉 적재되는 세그먼트 크기가 다 다르다. Segmenation address translation - Cpu의 논리 주소를 s/d로 나눠 s는 segment table 인덱스를 나타내고, table에서 맵핑한 값에 더해 물리 주소를 얻는다. 이 부분까지는 페이징과 같으나 세그먼트는 단위의 고정된 크기가 없기 때문에, 다른 영역을 침범하지 못하도록, 또는 그 세그먼트 영역을 구분하도록, 세그먼트 테이블에 Limit 값이 추가된다. - 위 예시에서 논리주소가 s: 2, d: 100이라면, 테이블에서 인덱스 2에 해당하는 베이스 값 (4300)에 d(100)을 더하여 4400이라는 물리주소를 갖..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bWS3w4/btqy5TAdEXY/yU1MkZlwujIwR7oIl2BHM0/img.png)
Paging - MMU에서 register에 logical address와 physical address의 차이를 저장하여, 메인 메모리에 적재되는 위치와 상관없이 logical한 address를 얻을 수 있었던 것처럼, 메모리 영역을 일정 크기로 잘게 나누고, 레지스터를 더 두어 그 차이를 저장하여 프로세스를 쪼개어 적재하는 방식이다. 이렇게 쪼개어 적재하는 것으로 외부 단편화를 해결한다. - 프로세스, 논리 주소를 자르는 단위를 페이지, 메모리를 자르는 단위를 프레임이라고 한다. 페이지 테이블을 두어, 논리 주소가 실제 메모리 안에서는 어느 프레임에 위치하고 있는지를 확인한다. Paging Address Translation - CPU의 논리 주소는 페이지 테이블을 읽고, 페이지 테이블에서 얻은 프레..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/n8uHd/btqy1JMDPED/fAQZS5KhVL6KKFkQj5Pm50/img.png)
Contiguous Memory Allocation - 하나의 프로세스는 연속된 메모리 영역을 갖는다. 이런 연속 메모리 할당이 반복되면 메모리안의 프로세스 사이에 간격 (hole)이 발생할 것이고, 이 hole의 불연속 생성이 지속되면 홀 영역을 합치면 충분한 크기의 프로세스가 영역이 떨어져 로딩이 불가능한 상황이 발생하게 된다. 이를 external fragmentation, 외부 단편화라고 한다. Memory Allocation Method - first fit : 순차적으로 빈공간을 찾아서 바로 할당한다. - best fit : 사이즈가 가장 유사한 공간을 찾아서 할당한다. - worst fit : 사이즈가 가장 먼 공간을 찾아 할당한다. > 속도 측면에선 first fit, 이용율 측면에서는 b..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bgOWnR/btqyY3baZ0h/hNsmZSYOxlwMpfGFhtL4mk/img.png)
Link / Load MMU ( Memory management unit ) - 메모리 영역 보호 : 다른 프로세스 영역으로 침범할 수 없도록 보호한다. - Address translation : register에 cpu에서의 주소 (logical address)와 실제 적재된 메모리 위치 (physical address)의 차이를 따로 저장하여, 프로세스가 가변적인 위치로 메모리에 저장되어도, CPU는 상관없이 기존 논리 주소를 사용할 수 있도록 한다. Prevent memory waste - Dynamic load : 프로그램을 메모리에 load할 때, 동적으로 필수적인 부분만 먼저 올리고, 부가적인 부분은 대상에서 제외하는 것이다. 프로그램 내의 모든 데이터, 모든 class가 다 사용되는 것은 아..