전체 글

전체 글

    [CSAPP] 10.1 Unix I/O

    10.1 Unix I/O 리눅스 파일은 B0, B1, ..., Bk, ..., Bm-1과 같이 m바이트의 시퀀스이다. 모든 I/O 장치(네트워크, 디스크, 터미널 등)는 파일로 모델링되며, 모든 입력과 출력은 적절한 파일을 읽고 쓰는 것으로 수행된다. 이러한 파일과 장치 간의 우아한 매핑으로 인해 리눅스 커널은 Unix I/O라고 하는 간단하고 low-level의 응용 프로그램 인터페이스를 내보낼 수 있다. 이 인터페이스를 통해 모든 입력과 출력이 일관되고 균일하게 수행된다. 파일 열기. 응용 프로그램은 커널에 해당 파일을 열 것을 알리고, 커널은 파일을 식별하는 작은 양의 양의 정수인 디스크립터를 반환한다. 커널은 열린 파일에 대한 모든 정보를 추적하며, 응용 프로그램은 디스크립터만 추적한다. 리눅스 ..

    [CSAPP] Chapter 10. System-Level I/O

    Chapter 10. System-Level I/O 입출력(I/O)은 주 기억장치와 디스크 드라이브, 터미널, 네트워크와 같은 외부 장치 간 데이터를 복사하는 과정이다. 입력 작업은 I/O 장치에서 데이터를 메인 메모리로 복사하고, 출력 작업은 메인 메모리에서 어느 장치로 데이터를 복사한다. 모든 언어 런타임 시스템은 I/O 수행을 위한 high- level 함수를 제공한다. 예를 들어, ANSI C는 printf 및 scanf와 같은 버퍼링된 I/O를 수행하는 표준 I/O 라이브러리를 제공한다. C++ 언어는 > (“get from”) 연산자를 오버로딩하여 유사한 기능을 제공한다. L inux 시스템에서는 이러한 high- level I/O 함수가 커널에서 제공하는 시스템 수준 Unix I/O 함수를 ..