Computer Science/Computer Systems (28) 썸네일형 리스트형 [Lecture 19] Networking / 네트워킹 #PART I: The Internet 인터넷이란 전 세계의 컴퓨터가 서로 연결되어 정보를 교환할 수 있는, 하나의 거대한 컴퓨터 통신망을 말한다. 수십억 개의 연결된 컴퓨팅 장치 hosts = end systems 인터넷의 "엣지"에서 네트워크 앱 실행 패킷 교환 / Packet switches forward packet / 전달 패킷(데이터 모음) 라우터, 스위치 통신 회선 / Communication links 광섬유, 구리, 라디오, 위성으로 구성됨 전송 속도: 대역폭 네트워크 장치, 라우터, 링크 모음: 보통 어느 한 조직에서 관리 인터넷: 네트워크의 네트워크 상호 연결된 ISP(Internet Service Provider)들 프로토콜은 어디에나 존재한다 메시지 보내기, 받기 제어 예: HTT.. [Lecture 18] Virtual Memory / 가상 메모리: Principles and Mechanisms #컴퓨터 구조 리뷰 Virtual memory/가상 메모리에 대해 보기 앞서 기본 컴퓨터 구조 개념을 다시 한번 살펴보자. Virtual address / 가상 주소: 링커, printf("%p\n", ptr) 등등과 같이 사용자 프로그램에서 사용하는 주소 범위: 0~2^ addresswidth Physical address / 물리 주소 내부적으로 메모리 주소를 지정하는 데 사용되는 주소. 사용자에게 보이지 않음 범위: 0~X (여기서 X는 컴퓨터의 메모리이다) Page / 페이지 Virtual page: 인접한 가상 주소 범위 Physical page (frame): 인접한 물리적 주소 범위 MMU (Memory management unit) 페이지 테이블에서 찾은 정보를 기반으로 가상 페이지를 물리.. [Lecture 15] Dynamic Memory Management (malloc/free) EXPLICIT MEMORY MANAGEMENT #Dynamic Memory Allocation Explicit vs. Implicit Memory Allocator Explicit: 응용프로그램이 공간을 할당하고 free한다 예: malloc and free in C Implicit: 응용 프로그램에서 공간을 할당하지만 free하지 않는다 예: Java, ML or Lisp와 같은 언어의 garbage collection Allocation 두 경우 모두 메모리 할당자는 블록 집합으로 메모리의 추상화를 제공한다 사용 가능한 메모리 블록을 애플리케이션에 배포한다 #Process Memory Image 할당자가 sbrk 함수를 사용하여 운영 체제에서 추가 힙 메모리를 요청한고, 힙의 초기 시작은 랜덤화된다.. [Lecture 14] 멀티쓰레딩 VIII - Atomic Variables and Operations #Introduction 적절한 락(lock)이 사용될 때, 여러 스레드는 공유 주소 공간에 접근할 수 있고 공유 메모리 멀티스레딩 프로그래밍 모델의 기본 직관에 해당하는 이러한 공유 변수의 동일한 값을 볼 수 있다. 데이터 레이스가 없는 프로그램만이 순차적 일관성을 제공한다(모든 스레드에 의해 "단계"의 관점에서 모든 메모리 동작의 순차적 순서가 관찰되며 프로그램의 순서와 일치한다) 이를 보장하는 전통적인 방법은 lock사용, 세마포어나 조건 변수를 사용하는 것이었다 lock: lock을 획득하고 중요 섹션에 진입하는 두 번째 스레드에는 lock을 획득한 첫 번째 스레드에서 수행한 모든 업데이트가 표시된다 세마포어/조건 변수: 대기 호출에서 반환되는 스레드는 대기에서 스레드를 반환하게 된 신호 작업 전.. [Lecture 13] 멀티쓰레딩 VII - Performance #Performance Considerations 멀티스레딩 프로그램에서는 정확성이 가장 중요하다. 정확성은 성능과 바꿀 수 없다. 데이터 레이스, 원자성 위반, 순서 위반 또는 교착 상태가 발생하기 쉬운 코드의 성능에 대해서는 아무도 신경 쓰지 않는다. 그렇긴 하지만 이번 포스트에서는 멀티스레딩 프로그램에서의 성능에 대해서 알아보자. 먼저 잠금 (lock)의 비용을 알아 보자. 간접 비용(잠금 사용으로 인한 성능 손실) 아래 나올 사진들은 다음의 실험을 거처 나온 성능 결과이다. 5개의 CPU 바인딩 프로세스를 시뮬레이션하여 Lock을 경합하고 D 기간 동안 각 잠금을 유지한 다음 U 기간 동안 잠금 없이 실행한다. 스레드가 임의로 잠금을 선택한다. 연한 녹색은 잠금 장치를 고정하지 않고 실행되는 쓰레.. [Lecture 12] 멀티쓰레딩 VI - Atomicity Violations #Atomicity Violations 원자성 위반(Atomicity Violations)은 적절한 잠금 규칙을 준수하는 경우에도 발생할 수 있는 동시성 (concurrency) 버그 유형이다(공유 데이터에 액세스하거나 업데이트하는 동안 잠금이 일관되게 유지되는 경우). 보통 Atomic이어야 하는 업데이트가 결합될 때 동일한 잠금의 보호 하에 수행되지 않는 경우 발생한다. 원자성 위반 발생 가능 패턴들: 보호용 잠금 장치 획득 (a) 공유 상태에서 정보를 추출 (b) 잠금 해제 보호 (c) 정보를 기반으로 한 행동에 대한 약속 (d) S'를 보호하는 잠금 장치 획득 (e) 저장된 정보를 기반으로 한 공유 상태 S'에 대한 조치 (f) S'를 보호하는 잠금 해제 (g) 공유 상태로 업데이트되어 b)에서 .. [Lecture 11] 멀티쓰레딩 V - Deadlock #Deadlock 데드락, 즉 교착상태란 2개 이상의 배타적인 자원을 2개 이상의 프로세서 또는 태스크가 부분적으로 각각 점유하고자 함에 따라 일어나는 상태이며 그것 이상 어느 쪽도 진행되지 않는 상태를 말한다. 그림은 태스크 A가 파일 A를 점유하여 파일 B의 점유해제를 기다리거나 태스크 B가 파일 B를 점유하여 파일 A의 점유해제를 기다리게 되어 양 A, B 태스크가 모두 이것 이상 처리가 진행되지 않는 상태의 예를 나타낸다. 쉽게 말해 하나 이상의 관련 스레드가 차단된 스레드의 원인이 되므로 절대 발생하지 않을 이벤트를 기다리는 상태이다 (리소스 에서 데드락이란: 스레드는 현재 리소스를 요청하는 스레드에 의해 보유되므로 허용되지 않는 리소스를 기다리는 동안 차단된다.) Deadlock은 리소스 경합.. [Lecture 10] 멀티쓰레딩 IV - Condition Variables & Monitors #Condition Variables & Monitors / 조건 변수 & 모니터 조건 변수(mutex와 함께)는 모니터라고 하는 더 큰 추상화의 구성 요소이다. 동시성 프로그래밍에서 모니터(Monitor)는 스레드가 상호 배제와 특정 조건이 거짓이 될 때까지 기다리는(차단) 기능을 모두 가질 수 있도록 하는 동기화 구성체이다. 모니터는 또한 다른 스레드의 조건이 충족되었음을 알리는 메커니즘을 가지고 있다. 모니터는 뮤텍스(lock) 개체와 조건 변수로 구성된다. 조건 변수는 본질적으로 특정 조건을 기다리는 스레드의 컨테이너이다. 모니터는 스레드가 배타적 액세스 권한을 다시 얻고 작업을 재개하기 전에 특정 조건이 충족될 때까지 대기하기 위해 일시적으로 배타적 액세스를 포기하는 메커니즘을 제공한다. 쉽게 .. 이전 1 2 3 4 다음