raw I/O란?

ssk의 이미지

책을 읽다 보면 raw I/O란 이야기가 가끔 보이는데 이게 무슨 뜻인지요?

그리고 raw I/O의 장단점이나 실제 사용 방법은 어떻게 되는지 예제 코드를 볼 수 있는 곳이 있다면 좀 알려 주세요.

감사합니다....

다즐링의 이미지

프로그래머는 아닙니다만.

용어가 같다면 다음과 같은것을 이야기합니다.

실제적으로 리눅스의 경우 filesystem이 여러가지 경로를 거쳐서 사용되는데요.

그중에 메모리 캐쉬나 io를 동기적? 으로 바꾸어주는 여러가지

경로를 거칩니다.

게다가 정해진 파일시스템위에 적게되죠.

하지만 raw I/O 를 사용할 경우에 저러한 것들을 프로그래머의 마음대로

설정할수 있는것으로 압니다.

예를 들자면 오라클 퍼포먼스 튜닝 가이드에보면

리눅스의 디스크는 캐쉬등의 요소가 있으므로 오라클의 캐쉬와 중복된다.

그래서 raw disk 를 사용함으로서 그러한 것들을 어쩌구 했던것이 기억납니다.

그리고 소스코드는 news 데몬인 innd 의 cnfs 항목을 보시면 될것 같습니다.

뉴스의 특성상 expire 시키거나 기존의 데이터를 날려야하는데.

cnfs같은 경우에 (cycling news file system) block device
(raw i/o 와 같은 뜻으로 생각됨)
위에서 세팅가능하고

raw i/o 로 cnfs를 생성했을시에 접근은 불가능하지만 (쉘에서 말이죠)

여러가지 보조 유틸리티 ( inn 에서 제공하는) 을 통해 가능합니다.

즉 독자적 파일 시스템을 구축하는것이가능합니다.

그리고 웹에서 찻아본바에 의하면 비동기 I/O 구축이가능하다던데

이건 가능한지 모르겠습니다 =)

제대로 된 답이 되었는지 모르겠군요.

ssk wrote:
책을 읽다 보면 raw I/O란 이야기가 가끔 보이는데 이게 무슨 뜻인지요?

그리고 raw I/O의 장단점이나 실제 사용 방법은 어떻게 되는지 예제 코드를 볼 수 있는 곳이 있다면 좀 알려 주세요.

감사합니다....

------------------------------------------------------------------------------------------------
Life is in 다즐링

orient16의 이미지

일반적으로 읽기/쓰기를 할때

리눅스는 내부적으로 버퍼캐쉬를 운용하여 데이타를 유지한다.

그러나 raw i/o 는

user-space 로 부터 바로 I/O 를 처리하도록 하며

버퍼캐쉬에 데이타를 유지않도록 한다.

고로 한번 쓰이고, 다시 참고가 안될 넘들이라면

raw i/o 는 성능향상에 도움이 될 수 있다.

winchild의 이미지

raw I/O 는 고급 I/O 프로그래밍 기법입니다. OUTPUT 은 별루 차이가 없지만 INPUT 은 차이가 많습니다. 예를 들면 특수한 제어문자도 모두 내 프로그램안에서 처리 해야 합니다.

예를 들면 ^C 같은 것도 내가 직접 처리를 해주어야 합니다. 각종 다른 제어문자도 마찬가지죠. 그만큼 고급기능을 만들수 있지만 해줘야 할일도 많다는 것을 의미합니다.

또한 INTERRUPT 기법을 이용하여 일정시간 동안 데이터가 들어오지 않을 경우의 예외처리도 필요합니다.

다 설명하기가 힘들군요.
그리고 INPUT 에 있어서 항상 입력 포트를 감시하므로 그만큼 부하가 많이 걸립니다.

- 겨울아찌 -

- 겨울아찌 -
winchild@gmail.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.