시스템 콜에 의한 컨텍스트 스위칭

voider의 이미지

전 이제까지 응용 프로그램에서 시스템콜을 하면 커널모드로 넘어가면서
커널에 관련된 컨텍스트로 컨텍스트 스위칭이 되는주 알고 있었거든요

그런데 ldd 를 보고 있는데 그게 아니라는 생각이 드네요

유닉스는 시스템콜과 하드웨어 인터럽트를 이용해서 사용자 공간에서
커널 공간으로 진입한다. 시스템 콜을 수행하는 코드는 프로세스의 문맥속에서
작업한다 - 이것은 자신을 호출한 프로세스를 위해서 동작하며 프로세스의 주소 공간에 있는 데이터에 접근할수 있다.

이말은 응용 프로그램에서 시스템콜이 일어나도 그 컨텍스트 그대로 커널 코드가 실행된다는 말인가요?

움.... 만약 그렇게 된다면 컨텍스트는 그대로 사용되지만 레벨만 커널 모드로
바뀌는 건가요.... 그렇게 하는것이 더 나을 듯도 하네요... 흠흠

그러면 인터럽트에 의한 코드만이 원래 커널용으로 만들어진 프로세스에서 돌아가는건가...... 에고.

fromdj의 이미지

시스템콜은 소프트웨어적인 인터럽트를 발생시켜서 해당 인터럽트 핸들러를
수행시키는 결과를 낳습니다. 시스템콜을 하는 순간 모드는 커널모드입니다.
근데 컨텍스트는 커널부터 현재의 Process 까지가 되겠지요,
모든 프로세스는 커널주소공간을 공유하고 있으니 별도의 커널으로의 Context
Switch는 없는것.

^^ be cool ~
http://fromdj.pe.kr

voider의 이미지

zoocmic wrote:

모든 프로세스는 커널주소공간을 공유하고 있으니 별도의 커널으로의 Context
Switch는 없는것.

모든 프로세스가 커널 주소 공간을 공유하고 있다는 말은 무슨 말입니까?
제가 알고 있기론 유저 프로세스는 커널 주소 영역에 접근 할수 있는 방법이 없는걸로 알고 있는데요..
제가 틀리게 알고 있었나요?

-- 아쉬운 하루 되세요 --

fromdj의 이미지

Yes. User process can't access the kernel address area directly.
But, It have the space in there. just can't do that. It means,
The Process have 4GB address space. and It's half (2GB) is Kernel area and other half is his own. It makes the process can
share the kernel service easily. the only way the user process
can access the kernel is the system call method.

^^ be cool ~
http://fromdj.pe.kr

댓글 달기

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