C에서 IO function 중에 bit 단위 access 되는 것을 찾습니다.

honeamis의 이미지

file io에서 read/write 가 byte align 되지 않는 경우에 사용할 수 있는 library가 있는지요.
아니면 그러한 용도를 위해서 OS가 확장되어 있는 것이 있는지요.

예를들면 3bit 크기의 data chunk를 100개 file write 하려고 하는데 별도로 function 구현하지 않고 가능하면
system call 수준에서 처리하고 싶습니다.

별도 구현하면 아무래도 속도문제가 있어서....

shamlock의 이미지

소켓공부를 하다보면 TCP/IP 패킷의 헤더를 보아야 할 필요가 있는데요
헤더의 어떤 필드는 비트단위인 경우가 있거든요

헤더가 구조체로 표현되는데 아래와 같이 구현되어 있던데요

struct
{
    char two_bit:2;
    char three_bit:3;
    //..................
}

제 생각엔 시스템이 비트단위의 시스템콜을 제공하는 것이 좋지않을듯 하네요
시스템콜이 호출될때마다 user모드에서 kernel모드로 전환되어야 할텐데..
이 부하를 무시하지 못할것 같군요..

그래서 file 디스크립터가 있음에도 불구하고...
FILE 구조체가 나온것같습니다.(사용자영역의 버퍼사용...) --> write할때 커널모드로 전환하는 횟수를 줄이기 위해, 사용자공간에 쓸내용을 모아두었다가..
가능하면 한꺼번에 많이 쓰자는 개념입니다.

속도문제를 고려하신다면 ... 시스템콜이 있어도 이용하지 않는게 나을듯 합니다.

님이 비트단위로 기록하는 구조체 및 함수를 만드시는게 속도향상을 위해
나을 것같군요...

이상입니다.

@.@

alsong의 이미지

버퍼링을 할 수 있는 경우라면
syscall을 호출하는 overhead보다
메모리에 300bit를 function으로 처리하고
한번에 write하는게 속도면에서 좋아 보입니다.

그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.

irondog의 이미지

그런류의 별도 표준 함수는 존재하지 않을 것 같은데요.
CPU따라 다른 big endian이나 little endian의 변환의 경우
보통 파일 IO 전이나 직후에 bit 연산 매크로를 만들어서 바꾸지 않나요?

honeamis의 이미지

아무래도 제가 잘못생각하고 있었나 봅니다.
FILE open 만 하고 나머지는 custom function 을 제공하는 소스가 있던데
이걸 참조할 수 밖에 없겠네요.

많이 배웠습니다.

민법 제 2 조 제 2 항 - 권리는 남용하지 못한다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.