Computer Science 41

[OS] 19장: TLB (Translation Lookaside Buffers)

19장: TLB (Translation Lookaside Buffers)MMU의 한 구성요소가상 - 물리 주소변환에 사용되는 캐시 역할TLB 작동 예시a[0]에 접근VPN 06 접근TLB에 VPN 06 검색 → 없음, 미스났음TLB에 VPN 06 갱신a[1] 접근VPN 06 접근TLB에 VPN 06 검색 → 있음, 적중3 miss & 7 hit공간 지역성이 잘 드러남정리CPU로부터 논리적 주소가 나옴VPN을 통해 TLB 확인없으면 페이지 테이블 조회함TLB 장점여러 VPN을 병렬로 탐색 가능시간 지역성한 번 사용됐으면 또 사용될 가능성 높음공간 지역성인접한 주소가 사용될 가능성 큼TLB 할 일Context Switch프로세스 A, B의 VPN을 통한 TLB 사용VPN 10을 통해 TLB 확인했으나 없음..

[OS] 18장: 메모리 가상화의 Paging

18장: 메모리 가상화의 Paging세그먼트 복습주소 변환 = Segment Table공유 및 보호 기능 제공빈 공간 탐ㅅ맥 오버헤드 및 외부 단편화 문제페이징 개요주소변환 = 페이지 테이블 사용가상 주소 공간 → 동일한 크기의 페이지로 분할물리 주소 공간 → 동일한 크기의 페이지 프레임으로 분할페이징 장점유연성프로세스 주소공간 상관없이 효율적임heap, stack, .. 신경 X단순성페이지 크기 = 페이지 프레임 크기빈공간 관리가 간단함페이징 단점→ 내부 단편화페이징 사용물리 주소 = 128byte가상 주소 = 64byte페이지 프레임크기 = 16byte주소 변환가상 주소의 두 가지 요소VPN = Virtual Page Number (위 사진에선 4개만 필요 = 2비트)Offset물리 주소를 알려면..

[OS] 17장: Free-Space Management

17장: Free-Space Management물리 메모리의 빈 공간 관리할당과 회수를 통해 유지함분할과 병합물리 주소를 분할해서 사용하고, 다 쓰면 병합하는 식으로 동작분할메모리 요구를 하면,만족하는 크기의 빈 공간이 있을 때 할당 가능→ 20byte를 요구하면 안됨 (연속적이지 않아서)1바이트 요구주소가 20부터 시작인 노드가21로 바뀌고, len = 9로 바뀜병합사용 후 반환 시, 인접한 빈 공간과 합쳐짐가운데 10~19 사용중이던게 free 되었음0~19가 합쳐짐할당 공간의 크기 파악free 메소드에는 반환될 크기에 대한 정보가 없음Header 블록을 메모리에 두어서 정보를 받아냄Header 블록필수 정보할당된 크기추가 정보속도 향상을 위한 추가 포인터무결성 체크Header 블록이 있을 때,메모리..

[OS] 16장: Segmentation

16장: Segmentation개요세그먼트 = 임의의 길이의 연속된 주소 공간여기서는 Code, Heap, Stack을 세그먼트라 침주소변환 - 세그먼트 테이블물리 공간에 배치할 때, 세그먼트 단위로 배치함즉, 세그먼트마다 Base/Bounds 레지스터 필요 → 일반화 Base/Bounds 기법하나의 프로세스는 여러 개의 세그먼트로 구성됨세그먼트 주소 변환물리주소 = OffSet + BaseOffSet = 세그먼트 내에서의 위치가상 주소 공간에서 코드,힙,스택 별로 세그먼트가 있는데그 세그먼트 시작 지점에서의 위치로 Offset을 따짐Heap 주소 인코딩4200 번지의 세그먼트에서 인코딩하기4200 = 4096 + 104⇒ 01 | 0000 0110 1000Stack 주소 인코딩 (반대)스택은 거꾸로 ..

[OS] 15장: 주소 변환의 원리

15장: 주소 변환의 원리개요어떻게 메모리를 가상화 하여효율성과 제어를 달성할 것인가 ?효율성: 가상 주소 → 물리주소 변환의 속도제어권: 접근 가능한 메모리 위치 제한유연성: 프로그래밍 편의메모리 가상화하드웨어 지원이 필요함빠른 주소 변환MMU, TLB, Cache ..OS 역할빈 공간 관리 및 할당관리 효율 및 접근 제어가상 공간의 동적 운영메모리 사용 예void func() { int x = 3000; x = x + 3;}어셈블리어 변환128 번지 명령어 인출명령 실행132 번지 명령어 인출명령 실행135 번지 명령어 인출명령 실행가상 주소와 물리 주소물리적 주소물리 메모리에 그대로 올리면 안됨→ OS 재배치 작업 필요메모리 접근 시마다 실제 주소로 변환 작업Base/Bou..

Swift로 코드 최적화하기

백준/프로그래머스 풀다보면서 얻은 Swift 꿀팁 정리(다른 언어도 포함일 수도 ㅇㅇ) 1. 입력 받을 때 map { Int($0)! } 보다는 map { Int(String($0))! }이 더 빠르다.let input = readLine()!.split(separator: " ").map { Int($0)! }vslet input = readLine()!.split(separator: " ").map { Int(String(($0))! }2. 함수 단위로 코드를 실행하면 컴파일러 최적화 측면에서 더 효율적이다.func solve() -> Int { var N = Int(readLine()!)! var crane = readLine()!.split(separator: " ").map { Int..

[CN] 2장: CDNs

CDNsStreaming stored video: Client Buffer서버가 비디오를 보내면, 유저는 다음과 같이 보면 됨근데, 클라이언트-서버 간 대역폭은 네트워크 혼잡이 발생가능즉, 클라이언트 측의 버퍼가 필요함클라이언트 측 버퍼링 및 재생 지연을 위해네트워크 추가적인 지연과 지연 변이를 보상DASH 프로토콜비디오 품질이 좋을수록 더 높은 대역폭이 필요해서 만든 프로토콜클라이언트클라이언트-서버 간의 대역폭을 주기적으로 측정매니페스트 파일을 참조하여,비디오 조각을 요청함대역폭 상황에 따라 최대 품질 버전의 청크를 선택함서버비디오 파일을 여러 조각으로 분할각 조각은 여러 품질 버전으로 인코딩HD, FHD, 4K ..여러 품질 버전의 비디오 조각은 여러 서버에 저장됨매니페스트 파일: 여러 품질 버전의 ..

[CN] 2장: Peer-To-Peer Applications

Peer-To-Peer ApplicationsP2P 개요클라이언트가 송신, 제공 다 하는 역할 → 자기 확장성항상 동작하지 않고, 피어의 IP 주소는 바뀔 수 있음파일 분배: 클라이언트-서버 vs P2P한 서버에서 F크기의 파일을 N개의 피어로 배포하는데 걸리는 시간?클라이언트-서버: N이 증가함에 따라 선형적으로 시간 증가→ 서버가 N명한테 다 주는 방식서버 전송파일 1개: F/u파일 N개: N*F/u클라이언트최소분배시간: F/d(min)d(min) = 다운 로드가 가장 느린 클라이언트의 속도P2P: N이 증가해도, u(i)도 증가해서 효율적임서버 전송반드시 1개 파일,F/u 시간 걸림클라이언트최소분배시간: F/d(min)P2P 파일 분배: BitTorrent토렌트: 특정 파일 분배에 참여하는 피어의 ..