CS/컴퓨터운영체제 12

OS-0613 : Demand Paging

*Page fault 처리 #Address Translation, Revisited 가정: 32bit 시스템 - 페이지 사이즈가 1KB라면(2^10), 페이지 테이블에는 2^22(400만)개의 엔트리 존재, 각각 최소 몇바이트씩 차지 - 문제: 메인 메모리가 16MB라면, 문제가 됨 - 해결: 페이지 테이블을 가상 메모리에 저장하고, 필요한 부분을 필요할 때마다 가져옴 - 새로운 문제: 메모리 액세스 시간이 두배로 증가, 페이지 테이블이 페이징의 영향을 받음 > 페이지 테이블에서 정보 가져오는 액세스, 메모리에서 데이터 가져오는 액세스 - 해결: TLB 사용하여 페이지 테이블 엔트리를 캐시 *TLB는 하드웨어 캐시에 저장됨 #Translation Lookaside Buffer(TLB) - TLB는 pag..

OS-0606: Page Replacement(L28)

#Page replacement policy - 프레임이 필요한데 꽉 찼을 때 무엇을 쫓아내나(1프레임당 1페이지만 가짐) 1. Random - 아무거나 2. FIFO - 가장 오래된거 3. Optimal(minimal) > 가장 오랫동안 참조되지 않을(미래형) 페이지를 쫓아냄 > 미래를 예측해야 함 > 실제로 구현되지 않음 > 다른거 평가하는 용으로 사용(SJF처럼) 4.★ LRU(Least Recently Used) > 과거로 미래 예측 > 가장 오랫동안 참조되지 않은 것 쫓아냄 1. FIFO frame1 = a a d frame2 = b b a frame3 = c b * Page references = 페이지 참조되는 순번 *page fault는 가장 최초에 아무것도 없는 상태에서 1번은 무조건 일..

OS-0606: File system imporved, Disk Management(L32, 33)

#(L32)Disk Hardware - Seek time - 헤드 포지션을 잡는 시간 - Rotational delay - 헤드 밑에 원하는 섹터가 오는 시간 #Disk Access time - 일반적 수치: > 트랙 당 32~64섹터 > 1KB당 섹터 - 데이터 전송 속도는 초당 헤드 아래로 회전하는 바이트 수 > 1KB/섹터 * 32섹터/회전 * 120회전/초 = 4MB/s - 디스크 I/O 시간 = seek+rotation delay+transfer > seek = avg 5ms > rotation = avg 4ms > 1KB = 0.25ms > I/O = 9.25ms/KB, 100KB/s정도 - 반면 메모리 접근은 20MB/s(200배 빠름) #Selecting the Sector size - r..

OS-0606: File System(L29, 30, 31)

* 1File -> 하나의 inode(index node)를 가리킴 -> inode 1개당 13칸(앞 10칸은 direct disk data block을 지정 + single, double, triple indirect index) * 1 Open file -> open file table에 저장 * per process file table -> open file table -> active index table * Active file -> 어느 프로세스가 그 파일을 open 한 상태 #Disk Hardware #Data structures for Files - 각 파일은 파일 디스크립터에 의해 설명됨 -> 다음의 정보 포함(운영체제에 따라 다름) > 포함: 유형, 액세스 권한, 링크 수(해당 파일 포..

OS-0523: Paging

#Paging - Segmentaion과 비교: 1. 할당과 스왑이 더 쉬움 2. 외부 단편화(fragmentation)가 없음 - 각 프로세스는 페이지라고 불리는 여러개의 작고 고정된 크기의 파티션으로 나뉨 > 물리 메모리는 프레임이라는 많은 작고 고정된 크기의 파티션으로 나뉨 > 페이지는 세그먼트와 아무 관련 없음 > 페이지 크기 = 프레임 크기 > 일반적으로 512B ~ 16KB > 전체 프로세스는 여전히 메모리에 로드되지만, 프로세스의 페이지는 연속된 프레임 집합에 로드되지 않아도 됨 > 가상 주소는 페이지 번호와 해당 페이지의 시작부터의 오프셋으로 구성됨 #Implementing Paging - 페이지 테이블은 특정 프로세스의 모든 페이지를 추적 > 각 항목은 주 메모리(물리 메모리)에 해당하는..

OS - 0523: Segmentation

#Segmentatoin - 기본 아이디어: 프로그래머의 프로그램 관점을 사용하여 프로세스를 메모리에서 별도의 세그먼트로 분할 > 각 세그먼트는 각각 구분된 목적을 가짐: ex) 코드, 정적 데이터, 힙, 스택 > 각 함수마다 별도의 코드와 stack segment 가질 수도 있음 > 세그먼트는 서로 다른 크기일수도 > 스택과 힙은 충돌하지 않음 > 전체 프로세스는 메모리에 로드되지만, 프로세스를 구성하는 세그먼트는 연속적으로 메모리에 로드될 필요가 없음 > 세그먼트 내부의 공간은 연속적임 > 각 세그먼트에는 보호 비트가 있음 > Read-Only 세그먼트(코드) > Read-Write 세그먼트(데이터, 힙, 스택) > 프로세스가 코드와 데이터를 공유하도록 허용 #Segment Addresses - 가상..

OS 0523 - Dynamic Relocation

★사전 지식★ - 로더 메인메모리 빈자리를 찾아서 로딩(3000~ 라고 가정) 3000을 mmu에 적어두고 mmu 테이블을 로더가 채움 프로세스가 로딩되면 -> 처음 시작주소는 0번지 -> MMU를통해 0번지가 3000번지가 됨 4개 세그먼트를 physical 메모리에 연속적으로 깔면 mmu에도 연속적(contiguous) 따로 로딩한다면 mmu에도 따로 -> 둘다 문제없이 찾을 수 있음 - MMU(Memory Management Unit) most significant bit(MSB) -> 10비트 주소체계라면 앞 2비트는 세그먼트를 지정하는데 사용 -> 나머지 8비트 오프셋으로 피지컬 주소(256바이트 중 어느 바이트를 지정할 것인지) = 피지컬 주소를 버추얼 주소로 변환하는 과정 - 프로세스가 여러..

OS(0516) - Memory Management

* a.c와 b.c를 컴파일하면 -> a.o, b.o가 생성됨 -> linker가 이들을 묶어 hello.exe 로 만들어줌 > linker는 각각의 external 변수가 잘 선언되어 있는지 확인 > 각 파일에 있는 symbol table을 linker가 합쳐줌 #Classifying Information Stored in Memory - 프로그램 내 역할에 따른 분류: 1. 프로그램 명령어(변경 불가) - text area, 공유됨 2. 상수: pi, maxnum, printf/scanf에서 사용되는 문자열 등(변경 불가) 3. 변수: 로컬 변수(stack), 전역 변수, 함수 매개변수(stack), 동적 할당된 저장소(malloc or new)(heap) -> 변경 가능, 초기화 돼있을수도 아닐수도..

OS(0516) - Deadlock 처리 방법

#Deadlock Avoidance - Motivation - Example to motivate a D.A. algorithm 1. state p - 아무 프로세스도 돌지 않음 2. state q - 스케줄러가 A를 실행 3. state r - 스케줄러가 B를 실행 4. state s - 스케줄러가 A를 실행하고, A가 프린터를 요청, 받음 5. state t - 스케줄러가 B를 실행하고, B가 plotter를 요청, 받음 - 음영처리된 영역을 보면 > \\\는 양쪽 프로세스가 프린터를 동시에 사용 -> 그러나 mutual exclusion에 의해 허용되지 않음 > ///는 비슷하지만, 플로터 - "unsafe" > OS가 이 박스에 들어가면, 데드락 걸림 -> 음영 영역(illegal mutual e..

OS-Deadlock0509

*복습 - 스케줄러 중 가장 부작용이 적은 것은 FIFO(퍼포먼스 무시, 적은 부작용만 고려) - CPU 자체가 리소스가 아닌 time quantum이 리소스 #Deadlock - 데드락은 두 개 이상의 프로세스가 각각 다른 프로세스 세트 내에서만 생성될 수 있는 이벤트를 기다리는 상황에서 발생하는 현상. 그러나 해당 이벤트는 결코 발생하지 않을 것이기 때문에 발생한 상태를 말함 - 데드락은 운영체제 설계자들이 직면하는 어려운 문제 중 하나 > 데드락을 해결하기 위한 다양한 접근 방법을 살펴보면, 해당 접근 방법이 문제를 얼마나 잘 해결하는지와 성능 또는 운영 체제 부담 사이에 트레이드 오프가 있음 - 운영체제는 경쟁하는 프로세스들 사이에서 시스템 자원 분배해야 함 > CPU cycle - preempt..