user level memory access vs kernel level memory access

studentoflinux의 이미지

안녕하세요.

arm 임베디드 보드에서 메모리 액세스 관련 코딩을 하다가 궁금한 것이 생겼습니다.

리얼 타임 시스템을 개발중이라 외부 램에 일정 주기로 read/write을 해야 하는데요.

user level에서 mmap을 이용해서 테스트 중인데요. 아무래도 userlevel에서는 실제 메모리에 데이터를 쓰기 까지 user level 버퍼를 거쳐 리얼타임 성능에 영향을 미칠 것 같습니다.

커널레벨에서 메모리 액세스를 하려면 어떻게 해야 하나요 ?

debian wheezy 사용중입니다.

감사합니다.

shint의 이미지

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

studentoflinux의 이미지

초보라 이런 개념으로 생각해야 한다는걸 잊었네요.

mmap와 같은 기능을 하는 것이 커널레벨에도 있군요

정말 도움 많이 되었습니다.

익명 사용자의 이미지

zero copy 개념에 대해 공부하세요.
오래된 개념이네요. 그러나, 여전히 중요한 개념이기도 합니다.
zero copy개념, 현재는 여러 분야에서 보편적인 지식이라 구지 언급할 필요는 없지만, 실시간시스템을 하시는 분이라면 반드시 아셔야 하겠지요.

* 아. 그리고, 실시간 시스템에서는 가상메모리를 사용하지 않습니다. 아시다시피, 그 이유는 가상메모리 관리(스워핑 등)로 인한 오버헤드로 인해 실시간성을 예측하기 어렵기 때문이지요, 아울러, 머신 명령어의 사이클도 고려할 필요가 있는 경우도 있다는 사실을 기억하세요.

studentoflinux의 이미지

네 감사합니다.

bushi의 이미지

user level 버퍼를 거치지 않습니다.

/dev/mem 을 사용하시는 거라면,
O_DSYNC 플래그로 open() 할 경우 mmap() 때 cache/write-buffer 모두 비활성화 시킬 수 있습니다.

/dev/mem 을 사용하시는 거라면,
CPU 가 memory mapped I/O 로 접근할 수 있는 모든 영역에 접근 가능하고, MMAP_NORESERVE 을 같이 사용하세요.
(CONFIG_STRICT_DEVMEM 이 켜져 있을 경우, RAM 영역과 IORESOURCE_EXCLUSIVE 로 등록한 영역의 mmap() 은 거부됩니다)

어떤 식으로든 user application 이 끼어들어야만 하는 구조라면,
application 이 mmap() 해서 직접 접근하는게 가장 효율적입니다.

댓글 달기

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