fork 함수에 대해 질문드립니다..

등짝을보자의 이미지

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
 
int main()
{
        pid_t pid;
 
        if((pid=fork()) == -1)
                perror("fork failed");
        else if(pid != 0)
                printf("pid %d child process %d\n",getpid(),pid); //1111111111
        else
                printf("pid %d parent process %d\n",getpid(),getppid());//222222222222222
        return 0;
}

위에 소스을 보시면 1번부터 실행되야하는것처럼 보이지만..
실행해보면 2번이 먼저 실행이 된다음에 1번이 실행되더군요?
왜 그런건가요??
stack 하고 관련이 있는건가요??

IsExist의 이미지

fork() 라는 함수는 함수 내부에서 자신을 복사한 프로세스를 하나 만듭니다. 스케줄러에는 같은 실행파일
이미지를 갖는 2개의 프로세스가 보이고 복사된 시점부터 같은 프로그램 카운트(PC)을 같은 프로세스가 2개가
되는 겁니다. 두 프로세스의 차이라면 하나는 부모가 되고 하나는 차일드입니다. 그 PC로부터 각 프로세스의
실행을 보면 부모 프로세스는 fork() 리턴이 0인 아닌 값으로 리턴되고
자식 프로세스는 fork() 리턴값이 0인 프로세스로 실행됩니다.

실행순서는 스케줄러의 상황에 따라서 부모가 먼저 실행될 수 있고 아니면 자식이 먼저 실행될 수 있습니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

등짝을보자의 이미지

실행순서는 스케줄러의 상황에 따라서 부모가 먼저 실행될 수 있고 아니면 자식이 먼저 실행될 수 있습니다.

스케줄러의 상황이라는게 뭔가요??


감비노도 궁금해하더라구..등짝!..등짝을보자!..


감비노도 궁금해하더라구..등짝!..등짝을보자!..

IsExist의 이미지

정확히는 프로세스의 스케줄링 우선순위에 따라 결정된다는 말이 맞겠지요. fork()의 분기 이전에 부모프로세스가
점유한 시간에 따라 우선이 뒤 바뀔 수 있습니다. 순서를 항상 보장한다고 말하기는 힘듭니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

ㅡ,.ㅡ;;의 이미지

암말이 목적지로 달려가다가 숫말과 눈이마주쳐.. 망아지를 낳았습니다...

망아지도 태어나자말자 달렸습니다...

암말도 새끼낳고 바로 달렸습니다...

문) 목적지에 먼저도착한 말은?

1. 암말...

2. 망아지...

3. 숫말...

4. 알수없다.


----------------------------------------------------------------------------

송효진의 이미지

숫말이 ?개월 이상 앞서고,
망아지가 어미말 보다 좀 늦겠군요. ㅎㅎ

emerge money

ㅡ,.ㅡ;;의 이미지

땡.~!

숫말은 다른암말과 또눈이 마주쳤음..

어미말은 달리다가 산후조리로 잠시 요양중..ㅎ


----------------------------------------------------------------------------

freemckang의 이미지

copy on write(용어가 맞나요? 하도 오랜만에 생각을 들춰내다보니... 헷갈리네요 ;) 개념과는 어떤 관련이 없을까요? fork를 할 때 꼭 필요한 것만 복사하고(vfork?) dirty bit가 생기면 그때부터 복사가 이루어지는 것으로 알고 있는데... 이거 잘 되는거 맞나요??(어디선가 개념만 있지 사실은 안된다는 얘길 들은 것 같아서요... ;; 어디지?? -_-;;)

음... 답변이 아니라 질문이 되었군요 :)

句日新, 日新 日新 又日新.

句日新, 日新 日新 又日新.

댓글 달기

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