write 2

read/write과 sendfile 방식 비교

Context Switching이란 커널 모드와 사용자 모드 간의 전환을 의미합니다.현재 실행 중인 사용자 프로세스 (user mode) -> 커널 코드 (kernel mode)로 전환하거나 그 반대로 바뀌는 것을 말하는데 이 전환은 OS 레벨에서 이루어집니다. 예를 들어 read 호출 시 사용자 코드가 실행되며 시스템 콜이 발생하고, user mode에서 kernel mode로 전환되게 됩니다. 커널 에서 해당 fd를 확인하고 디스크로부터 실제 데이터를 읽고 커널 내부 버퍼에 복사를 수행합니다. 커널은 내부 함수를 사용하여 사용자 공간 버퍼로 데이터를 복사한뒤 작업이 끝나면 Kernel mode에서 User Mode로 돌아갑니다. 따라서 read, write는 2번의 context switch가 발생하..

C++ 2025.06.20

11. [C++] 파티션 메모리 복사 (dd 명령어, 파일 입출력)

개요eMMC와 같은 저장 장치는 하나의 물리적 장치입니다.이 장치를 논리적으로 나누는 것을 파티션이라고 하는데, 저장장치 안에서 영역을 구분해주는 역할을 합니다.리눅스와 같은 운영체제에서는 커널 내부에 VFS(Virtual File System)이라는 추상화 계층이 있어 여러 파일 시스템과 장치 파일을 통합 관리합니다. eMMC와 같은 특정 하드웨어에 유저가 접근하려면, VFS가 유저의 요청을 디바이스 드라이버로 전달하고, 드라이버가 하드웨어와 직접 통신하여 데이터를 읽거나 씁니다. 따라서 유저는 직접 물리 메모리에 접근하지 않고, 커널을 통해 메모리와 하드웨어 자원에 접근할 수 있습니다. 리눅스 커널 내부의 VFS(Virtural File System)는 /proc, /sys, /dev 와 같은 가상 ..

C++ 2025.06.03