리눅스 커널의 시스템 정보 유지

koain의 이미지

유저 레벨에서는 파일 입출력을 통해 정보를 저장하고 유지하지 않습니까?

커널에서는 원하는 정보를 유지하고 싶을 때 어떤 방식을 사용하는지요?
검색을 해보니 커널에서의 파일 입출력은 추천하지 않고 있더군요.

생각해보았을 때 IPC나 copy to user, copy from user 함수를 통해
유저쪽 프로세스와 통신하여 유저쪽에서 저장하는 방법을생각해보았습니다.

하지만 위 방법들은 오버헤드가 심할거 같은데요
리눅스 커널에서 독자적으로 가능한 방법은 없는건가요?

리눅스 커널에서 유지해야할 시스템 정보들은 어떻게 유지되는건가요?

shint의 이미지


- 책 보기
- 강의 듣기
- 공개된 소스를 참고
- 커널 모듈을 컴파일

리눅스 커널의 시스템 정보 유지

OLC Center
http://olc.kr/main/index.jsp

리눅스 커널
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=%EB%A6%AC%EB%88%85%EC%8A%A4+%EC%BB%A4%EB%84%90

Proc filesystem - 시스템 정보 수집
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/system_programing/proc/GetSMSInfo

리눅스 커널 os버전 cpu 메모리 등 시스템 정보보기 리눅스
http://blog.naver.com/ttochy486/220562351000

[6기 강북 전영진] 리눅스 커널 심층 분석 #3
http://blog.secmem.org/569

[오픈소스] 평범한 개발자가 리눅스 커널에 참여하게된 이야기 - 행사 후기 및 의견 ├ 오픈소스 OpenSource
http://seoz.egloos.com/4084364

임베디드 자바 및 리눅스 커널 솔루션은 FALINUX 에서
http://www.kuccblog.net/1407

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

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

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

jeff_an의 이미지

제 짧은 지식을 통해 답변을 드리자면...
커널도 스택에 저장을 합니다, 필요한 프로세스 정보와 컨텍스트 스위칭이 일어날 때등과 같이 프로세스 정보는 스택에 저장을 해요.
그리고 자주 사용되지 않는 정보는 스왑 영역으로 내보내고 다시 필요하면 메모리로 로드합니다.
사용자 쪽이건 시스템 쪽이건 임시로 저장할 데이터는 모두 메모리에 적재시킵니다.

koain의 이미지

제 말은 컴퓨터가 꺼지고 다시 켜지더라도 유지되어야할 정보들이 있을텐데
그러한 정보들이 어떻게 유지 되는지가 궁금한 것 입니다.

jeff_an의 이미지

꺼지고 켜지면 당연히 보조 기억장치에 저장을 해야겠죠..
유저가 응용 프로그램에서 데이터 저장을 하듯이, 커널도 프로세스 단위니까 영구적으로 저장해야할 정보들은 파일로 저장을 하죠.

koain의 이미지

제가 궁금한것은 그 파일로 저장하는 방법에 관한 것입니다.

저는 지금 블록 계층에서의 정보들을 유지하고 싶은데요

유저레벨의 파일입출력은 시스템 콜을 통해 이루어질텐데

VFS밑, Native FS(ext2, ext3 ...) 아래의 블록 계층에서 다시 위 쪽 계층의 함수인
시스템 콜을 이용하여 파일 입출력을 하는 것이 자연스러워 보이지 않아서요

검색을 해보니 커널에서의 파일 입출력을 권장하지 않더라구요

Necromancer의 이미지

커널은 해당 장치를 사용할 수 있는 "드라이버"만 제공하고
이전상태 저장은 커널의 해당 기능과 연계된 유틸리티 프로그램에서 제공합니다.

ex) 종료 직전의 사운드 사용셋팅과 볼륨정보 저장 -> 종료시 alsa-util에서 저장, 부팅시 alsa-util이 자동실행되면서 저장된 이전설정을 커널에 다시 입력.

이때문에 배포판별로 리부팅할 때 이전상태가 저장되기도 하고 안되기도 하는 경우가 꽤 많습니다.

재부팅 안하고 커널이 쭈욱 작동중에는 커널도 메모리에 저장합니다. 유저 프로그램에게 안보이는 커널만의 스택과 힙이 따로 있습니다.

Written By the Black Knight of Destruction

koain의 이미지

커널이 유저 레벨의 프로세스와 통신을 통해 정보를 저장하고 읽어 온다는 말씀이신가요?

저도 그 방법을 이용해보려고 커널과 유저 프로세스간 IPC, 소켓 통신, ioctl 등의
방법을 생각해보았는데요 일반적으로 어떤 방식을 이용하나요?

댓글 달기

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