Publivate (215) 썸네일형 리스트형 09. Virtual Memory (2/2) 1. 캐싱 기법: 한정된 빠른 공간(캐시)에 요청된 데이터를 저장해 두었다가 다음 요청을 직접 서비스하는 방식캐쉬 운영의 시간 제약: 캐시를 사용하기 위해 탐색할 때, O(logN)보다 많이 안 걸려야 함 (web caching 이나 Buffer caching)-> Paging에서는 OS가 Page Fault가 날 때만 관여하므로 쓰지 못 함 Clock Algorithm: LRU의 근사 알고리즘으로 Paging에서 사용 NRU(Not Recently Used): 최근에 사용하지 않은 것을 쫓아냄reference bit가 1인 경우 0으로 바꾸고, 0으로 바꾸면 쫓아냄 Allocation Problem: 각 Process에 얼마만큼의 Page Frame을 할당할 것인가Allocation Scheme- Eq.. 09. Virtual Memory (1/2) 전적으로 운영체제가 관리함 Demand Paging: 요청이 왔을 때, page를 메모리에 올림(Paging 기법을 쓴다고 가정 -> 실제로 대부분 그렇다) Invalid: 물리적 메모리에 없는 것 (Backing store에 존재) 또는 사용하지 않는 것 (주소공간에는 넉넉하게 지원해주기 때문) Page Fault: 요청한 것이 메모리에 없는 경우-> Invalid page에 접근하면 MMU가 trap을 발생시킴-> Kernel mode로 된 뒤, Page fault handler가 invoke됨 Page Frame이 없는 경우: 사용하는 Page Frame 중 쫓아낸 뒤 차지하는 것-> 쫓아낸 Page가 다시 사용되지 않을 수록 성능이 좋으므로 잘 결정해야 한다. Min (OPT): 가장 먼 미래에 .. 08. Memory Management (4/4) Segmentationlimit: segmentation의 길이base: segmentation의 위치장점: 의미단위이기 때문에 공유나 보안에 있어서 paging보다 효과적이다.단점: Segementation은 중간중간 hole이 생기게 되는 문제가 있음 일반적으로 Paging이 table을 위한 메모리 낭비가 더 심함 Segmentation with pagingSegment-table entry가 segment의 base address를 가지고 있는 것이 아닌 segment를 구성하는 page table의 base address를 가지고 있음 Segmention으로 의미 단위로 쪼갠 뒤, 물리적 메모리에 올라갈 때는 Page 단위로 올라감 주소 변환(메모리 접근)에서의 운영체제의 역할은 없음 -> 하드.. 08. Memory Management (3/4) Multilevel paging4-level 메모리 접근 시간이 100ns, TLB 접근 시간이 20ns 이고TLB hit ratio가 98%이면 0.98 * 120 + 0.02 * 520 = 128 page table에서 valid는 실제로 사용하는 테이블, Invalid는 실제로 사용하지 않는 테이블 page table의 각 entry마다 아래의 bit를 둔다.Protection bit: page에 대한 접근 권환(read/write/read-only)Valid-invalid bitvalid: 해당 주소의 frame에 그 프로세스를 구성하는 유효한 내용이 있음 (접근 허용)invalid: 해당 주소의 frame에 유효한 내용이 없음 (접근 불허) Inverted Page Table-> Page Tab.. 08. Memory Management (2/4) 논리적 메모리가 page table에 의해 물리적 메모리 어디에 위치하는 지를 매핑함논리적 메모리 만큼 페이지 테이블이 있음 Page Table을 이용하면 메모리를 2번 이용하게 되므로 더 빠르게 하기 위한 하드웨어를 도입함이를 TLB라고 한다. TLB는 일부분의 페이지의 논리 주소의 P와 변환된 주소 F를 갖고 있다.TLB는 전체 서치를 해야하므로 병렬 서치가 가능하게 한다.Cache hit하면 바로 적용, miss 나면 table에서 찾음 page table은 배열처럼 p를 가지고 index로 넣어주면 주소를 구할 수 있음 (한 번에 되긴 함) Two-Level Page Table: page table을 두 개 만들어서 함 (메모리를 절약하기 위해) [python] 반복문 index 수정하기 C++의 for문은for(int i = 0; i 08. Memory Management (1/4) 1. Memory: 주소를 가지는 공간가. Logical address(=virtual address)1) 프로세스마다 독릭적으로 가지는 주소 공간2) 각 프로세스마다 0번지부터 시작3) CPU가 보는 주소는 Logical address 나. Physical address1) 메모리에 실제 올라가는 위치*주소 바인딩: 주소를 결정하는 것 2. 주소 바인딩가. Compile time binding: 컴파일 시점에 정해진 논리적 공간에 같은 곳에 물리적 메모리가 결정하는 것-> 요즘은 사용되지 않음 (여러 프로그램이 동시에 실행될 수 없어서)-> absolute code(절대 코드) 나. Load time binding: 실행 할 때 메모리를 결정-> relocatable code(재배치 가능 코드) 다. .. 07 Deadlocks (2/2) 데드락의 처리 방법1. Deadlock Prevention2. Dealock Avoidance: 각 프로세스의 최악의 경우를 고려해 최악의 요구사항이 이용가능한 자료보다 많으면 있어도 주지 않는다. (Banker's Algorithm) 3. Deadlock Detection and Recovery1) Detection: Avoidance 처럼 그래프나 테이블을 이용해 Detection 한다.2) Recovery: Deadlock이 발견되면 시행가) Process termination: Deadlock에 관련된 모든 프로세스를 죽인다.나) Resource Preemption: Deadlock 관련된 프로세스의 자원을 하나씩 뺏는다.-> 똑같은 패턴이 계속 일어날 수 있어서 다른 방식으로 할당함 (+ Sta.. 이전 1 ··· 10 11 12 13 14 15 16 ··· 27 다음