본문 바로가기

NIO2

IO 와 NIO 를 이용한 입출력 (2/2) NIO자바 4에서 새롭게 등장하고 7에서 재정비된 NIO 는 IO 와 비교해 여러 강점을 가진다. 1. MMIO(Merory-Mapped IO) 방식으로 버퍼 지원2. 넌블로킹 모드 지원3. Scatter/Gather 지원4. 파일락 이전 포스팅에 1,2,3, 의 내용이 정리되어 있다. 파일락의 경우, 어떤 파일을 수정하는 동안 다른 쓰레드에서 읽기 작업을 가능하게 할지 설정하는 기술이다. MMIO일반적으로 I/O 작업이 이뤄질때, 이를 위한 별도의 메모리 공간이 할당된다. 문제는 I/O 작업이 일어날 때마다 이 별도의 메모리 공간(자바에서는 Heap)을 사용하기 위한 시스템콜이 일어나고, 이 작업이 상당한 자원을 소모한다는 것이다.이 문제를 해결하기 위해 운영체제는 MMIO 라는 기술을 지원한다.mmi.. 2024. 5. 17.
IO 와 NIO 를 이용한 입출력 (1/2) 자바에는 입출력을 위한 I/O API 존재한다.I/O 클래스는 두개가 존재하는데, 기존 I/O 와 자바4에 등장해서 자바 7에 재정리된 버퍼를 사용하는 New I/O 다. 버퍼버퍼에 대해 쉽게 이해하기 위해 먼저 마트에서 장을 본다고 가정해보자. 살 물건을 하나씩 계산대로 가지고 가기 보다는, 바구니에 담아서 한번에 가져가는 것이 이동시간도 적게 걸리고 힘도 덜 들 것이다. 버퍼는 바로 이 바구니와 비슷한 역할을 한다. 즉, 데이터를 다루기 전 일정 크기만큼 한번에 가져와 가지고 있는 저장소다. 덕분에 데이터를 사용하기 위해 매번 데이터를 찾으러 갈 필요가 없어 실행 시간이 빨라진다는 장점이 있다. 기본 I/O 클래스를 이용한 버퍼코드로 살펴보기에 앞서 일부 세팅이 필요하다.1. 더미 파일 생성파워쉘에서.. 2024. 5. 13.