Pages

Saturday, November 13, 2010

Process එකක ව්‍යුහය 2

කලින් ලිපියෙන් කියපු විදියට program එකක් පරිගණකය තුළ execute වෙන්න අපි හැම දෙයක්ම එකින් එක පරිගණකයට දෙන්න ඕනි. පරිගණකය තුල program එකක් execute වීමේදී සිදුවෙන්නෙ program counter(pc) එකේ තියෙන memory address එකෙන් කියවෙන memory location එකේ තියෙන instruction එක ක්‍රියාත්මක කරන එක විතරයි. පරිගණකය විසින් කරල දිය යුතු හැම දෙයක්ම අපි instructions විදියට දෙන්න ඕනි වෙනවා. මෙම කරුණ ඉතා හොදින් තේරුම් ගැනීම ගොඩක් වැදගත් වෙනවා. කලින් ලිපියෙදි අපි භාවිතා කරපු උදාහරණයම සලකල බලමු.

int main() {

    int a = 10;
    int b = 5;
    int c = add(a,b);
    return 0;
   
}

int add(int x, int y) {

    int z = x+y;
    return z;
   
}

මෙය memory එක තුල විහිදෙන්නේ පහත ආකාරයට යැයි සලකමු.


සාමාන්‍යයෙන් මෙම program execute වෙද්දි main method එක ඇතුලෙ යම් තැනකදි add method එක call කරන්න වෙනවා. එනම් එතෙක් වෙලා program counter(pc) එක main method එකේ තියෙන instruction address තිබිල add method එක call කරාම add method එක පටන් ගන්න තැන memory address එක pc එකට copy කරගන්න ඕනි. එතකොට add method එක run වෙන්න පටන් ගන්නවා.


මේ විදියට program එක run උනාට පස්සෙ ගැටලුවක් එනවා. add method එක run වෙලා ඉවර උනාම නැවත main එකේ add method එක call කරපු තැන ඉදන් ඉදිරියට run වෙන්න ඕනි. ඒත් කලින් කියපු විදියට පරිගණකය run කරන්නෙ අපි කියන විදියට පමණක් නිසා add method එක run කරල ඉවර උනාම නැවත main method එක ඇතුලෙ run වෙන්න ඕනි තැන දැනගන්නෙ කොහොමද???

add method එක run උනාට පස්සෙ මේක දැනගන්න විදියක් නෑ. මොකද විවිධ අවස්ථා වලදි add method එක විවිධ තැන් වලින් call කරන්න පුලුවන්. එම නිසා add method එක ඇතුලෙදි නැවත යන්න ඕනි තැන දැනගන්න විදියක් නැහැ. මෙතනදි කරන්නෙ main method එකෙන් එද්දිම නැවත එන්න ඕනි memory address එක සටහන් කරගන්න එක. add method එක ඉවර උනාට පස්සෙ සටහන් කර ගත් තැන තියෙන memory address එක pc එකට copy කර ගන්නවා. එතකොට ගැටලුව විසදෙනවා.

මෙලෙස සටහන් කරන තැනට memory එකේ නිශ්චිත තැනක් භාවිතා කරොත් method එකක් ඇතුලෙ තව method එකක් යොදද්දි ගැටලු එනවා. මොකද main method එකයි add method එකයි කොටස් දෙකක් නිසා main method එකෙන් සටහන් කරන තැන add method එකෙන් නැවත අරගන්න නම් සටහන් කරන තැන පොදු එකගතාවක් තියෙන්න ඕනි. ඒත් method එකක් ඇතුලෙ තව method එකක් යොදද්දි මේ method දෙකටම එකම තැන භාවිතා කරන්න බැරි නිසා. ඒ වගේම recursion වලදි මේ ක්‍රමය කොහොමවත් භාවිතා කරන්න බැරි වෙනවා. එම නිසා නිශ්චිත memory location එකක මෙම දත්තය සටහන් කරන්න බැහැ. මේ සදහා stack එකක් භාවිතා කරනවා.


මේ ආකාරයට තමයි method එකක් call වෙන්නෙ.

7 comments:

  1. නියමයි මචන් Article එක....
    Very Clear & Helpful

    පුළුවන් නම් Mutex ගැනත් ලියපන්... ලොකු දෙයක්...

    ReplyDelete
  2. එල මචන් Process එකකදී ‍වෙන වැ‍ඩේ හොදට තේරැනා..
    ගොඩක් පින් මචන්.. තව ගොඩක් හොද Articles ලියන්න ලැබේවා. උඔලට මේ කරන දේවල් වලින් කවදාවත් වරදින් නැහැ මචන්..

    ReplyDelete
  3. ගොඩක් හොදට තේරුම් ගන්න පුලුවන්.
    තව තවත් ලියන්න ශක්තිය ලබේවා!
    Thank u very much

    ReplyDelete
  4. gamburu concept ekak saralawa umba lassanata pahadili karalathiyanawa machn. pattai

    ReplyDelete
  5. Machan puluwannam ara process management wala rules 3n 2 and 3 poddak wistara karapallako...thanx........goodluck

    ReplyDelete
  6. හැමෝටම THANKS........
    OS හැම පාඩමක් ගැනම පුළුවන් විදියට මොනව හරි ටික ටික ලියන්න තමා හිතන් ඉන්නෙ.....
    try එකක් දීල බලමු...

    ReplyDelete

ඔබගේ අදහස් පවසන්න ...
මට ඒව මසුරන් වටිනවා ....