프로세스 속성값들 중에서..

익명 사용자의 이미지

프로세스 속성값들 중에서
semadj라는 값이 있는데 이 값이 어떠한 기능을 하는지 궁금합니다.

fork() 수행시 이 이외에
real UID, real parent GID,
efficient UID, efficient parent GID
set-user-id mode bit, set-group-id mode bit, mask
nice, process group ID, work directory, root(real user) directory

등의 속성 값들을 상속 받는걸로 알고 있습니다.

위에 열거한 속성 값 이외에 또 어떠한 속성값들을 상속받으며,
그 속성들의 기능은 어떤지 알려주시면 감사드릴께용..

글구요..
좀비 프로세스가 생성되는 과정에서요..
호출 프로세스의 부모 프로세스의 SA_NOCLDWAIT 플래그가 세팅 되지 않으
면 ppid값이 1로 되면서 좀비 프로세스가 된다고 했는데..

이 부분에 대한 간략한 설명 부탁드립니다.

^^*

긴글 읽어주셔서 감사하구요.
고수님들의 영양가 있는 답변 부탁드립니다.

익명 사용자의 이미지

지금 자료가 없어서 자세하게 얘기하기는 좀 그렇고요..

fork()함수 호출시 child process가 상속 받는 것과 그것에
대한 자세한 설명은 웬만한 유닉스 혹은 리눅스 시스템 프로그래밍
책에 보면 자세하게 나와 있습니다.

주로 많이 참조하는 책이 Stevens의 "Advanced programming in UNIX
Environment"입니다.

혹은 Stevens의 "UNIX Network Programming, 1st Edition"에도 보면
같은 내용이 있을 겁니다.(2nd Edition에는 없는거 같아요...)

좀비 프로세스가 생성되는 경우는 Child process를 생성한 parent
process가 Child가 죽는 것을 기다리지 않고 먼저 죽어버릴경우
Child는 init프로세스를 부모로하는 좀비 프로세스로 되어버립니다.
그래서 ppid가 1이 되는 거고요..

child가 좀비가 되는 것을 막으려면 parent process에서 wait()라는
시스템 콜을 호출해서 child가 죽기를 기다려야 합니다.

자세한 사용법은 man wait해서 보시고, 위에 설명한 책에도 자세하게
나와 있으니 참조하시기 바랍니다.

그럼...

익명 사용자의 이미지

답변 감사드립니다.
저두 책 보면서 질문드린거거든요..
책에는 자세히 안나와있어서요..

지금 리눅스 서버 돌리면서..
직접 헤더화일 분석하면서 공부하구 있는데..

책과 헤더화일에는 한계가 있더라구요...
그래서 질문 드렸었습니다.

답변 감사드리구요.
책 구해서 더 뒤져봐야겠네요..

항상 좋은 일들만 있구 행복하시길.. ^^*

익명 사용자의 이미지

좀비 프로세스에 대해 잘못 알고 계신것 같은데요,
Child process가 실행을 마쳤는데도 Parent process에서 종료 값을
wait(), waitpid()등의 함수로 가져가지 않고 계속 대기 하고 있을 경우
생성이 됩니다.
Parent process가 언제 종료 값을 가져 갈지 모르니까
프로세스 디스크립터 필드에 종료 값을 가지고 있는 상태(좀비)
가 되면서 Parent process의 부름을 기다리고 있는거죠.
만약 Parent process가 무한 루프를 돌면서 SIGCHLD 신호를 어떤식으로든
(SIG_IGN등..)처리해 주지 않는다면
좀비는 계속 남아 있습니다.

Child process보다 Parent process가 먼저 종료하게 되면,
Child process는 init을 부모 프로세스로 해서
실행이 됩니다.(데몬이 이런식 이죠..)
init는 Child process의 종료 값을 가져가기 위해
wait()를 주기적으로 호출해서 좀비를 처리합니다.

간단히 top과 pstree로 확인해 보면 될겁니다.

SA_NOCLDWAIT를 sa_flags에 설정하는 것은
SIGCHLD 신호를 무시하는 것과 같은 역활을 합니다.
참고로, 리눅스에서는 아직 지원 안됩니다.
wait의 맨페이지를 참고하세요.

그리고,
말씀하신것들 뿐아니라
부모 프로세스의 프로세스 디스크립터 필드 대부분을 상속 받습니다.
상속 받고 나서 copy on write 기법으로 메모리 주소를 수정하거나,
다른 항목들도 자식 프로세스에 맞도록 수정하죠.
여기서 프로세스 디스크립터 항목에 대해 설명하기엔 좀 어렵겠네요.
리눅스 커널이나 유닉스 커널에 관한 서적을 참고하세요

댓글 달기

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