2015의 게시물 표시

[Network] Link-layer addressing & address resolution protocol (ARP)

이미지
네트워크를 공부한지 하도 오래되서 link-layer address를 어디에 쓰는건지 잊어버렸다.(link-layer address, link address, physical address, MAC address 다 같은 말이다.) Data communications and networking 5판의 9장을 참고하여 쓴다. 9.2 Link-Layer Addressing Internet 같은 connectionless internetwork의 경우에 datagram(packet)을 IP 주소만을 이용해서 보낼 수는 없다. Connectionless communication  is a data  transmission  method used in  packet switching  networks by which each data unit is individually addressed and routed based on information carried in each unit, rather than in the setup information of a prearranged, fixed data channel as in  connection-oriented communication  (wikipedia, connectionless communication, connectionless internetwork) 각 datagram은 같은 source와 destination으로 이동하더도 다른 path를 가지게 된다. datagram이 network layer에서 data-link layer로 가면 datagram이 frame으로 encapuslate되고 두 개의 data-link address가 frame header에 붙는다. 이 두 주소는 다른 링크로 갈 때 마다 바뀌게 된다. 아래 그림을 참고하자. datagram의 Link-layer 주소가 link1,...

[리눅스 커널] 리눅스 커널의 블록 디바이스 I/O 과정

리눅스 커널의 블록 디바이스 I/O 과정의 기본적인 흐름 사용자 프로세스 -> 표준 C 라이브러리 -> 시스템콜 인터페이스 -> 가상파일시스템 -> ext4 파일시스템 -> 블록 디바이스 드라이버 -> 블록 디바이스(디스크) 블록 디바이스 -> (인터럽트) -> 블록 디바이스 드라이버 -> ext4 파일시스템 -> ... 역순 1. 사용자 프로세스는 실행 도중 파일을 읽기 위해 fread()라는 표준 C 라이브러리 함수를 호출 2. 이 함수는 read() 시스템콜로 구현되어 있으므로 read() 시스템콜을 호출, 커널에 파일 읽기 동작을 요청 3. 소프트웨어 인터럽트(=시스템콜)가 발생해 커널에 진입하면 호출한 시스템콜 번호에 따라 해당 시스템콜 종류를 판별, 현재는 read() 시스템콜이므로 리눅스 커널의 가상 파일 시스템(Virtual File System, VFS)에 파일(디스크) 읽기 요청을 하게 된다. 4. VFS가 ext4 파일시스템에게 읽기 동작을 요청 5. ext4 파일시스템의 read() operation은 파일시스템 관련 처리를 한 뒤 블록 디바이스 드라이버에 읽기 요청 6. 읽기 요청 받은 블록 디바이스 드라이버는 읽을 파일에 해당하는 블록 디바이스의 블록 단위 데이터를 메모리로 읽어오려고 하드웨어를 제어. 따라서 현재 프로세스는 블록 디바이스의 I/O 동작을 완료하기 전까지 sleep하게 됨. 즉 현재 프로세스 상태를 대기 상태(wait state)로 변경하고 스케줄러를 호출해 다른 프로세스를 실행함 7. 하드디스크가 읽기 요청을 받으면 메모리에 있는 리눅스 커널의 캐시 영역에 요청받은 데이터를 전송. 블록 I/O 연산은 대부분 DMA로 이루어짐. 8. 데이터 전송 완료하면 인터럽트 발생시켜 디바이스 드라이버에게 읽기 동작이 끝났음을 알려줌 9. 디바이스 드라이버에 등록된 인터럽트 핸들러 실행 10. 인터럽트 핸들러가 읽기 동작을 완료하면 대기하던 프로세...

Xen overview

Reference: CPU scheduling for virtual desktop infrastructure, Hwanju Kim Task-aware Virtual Machine Scheduling for I/O Performance, Hwanju Kim, VEE'09 Running Xen, Matthews, Prentice hall Xen Overview Xen is an open-source hypervisor based on a paravirtualization technique, which achieves higher performance than full virtualization approaches. (Full virtualizatoin: allows a system to run many instructions directly on the raw ahrdware. It no longer must use software to simulate a different basic architecture.) Xen puts the priviledged VM, called domain0 , in charge of managing other guest VMs, called domainU . Xen also supports full virtualization based on hardware-assisted virtualization(Intel-VT and AMD-V), ensuring that it is possible to run unmodified OSes such as Windows. such a full-virtualized domain is called a hardware virtual machine (HVM) by Xen. The Xen Hypervisor The Xen hypervisor is the heart of Xen. It sits between the guest domains and the physica...