π§ νλ‘μΈμ€μ μ μ΄ Unixλ C νλ‘κ·Έλ¨μΌλ‘λΆν° νλ‘μΈμ€λ₯Ό μ μ΄νκΈ° μν΄ λ§μ μμ€ν
μ½μ μ 곡ν©λλ€. λ€μμ λνμ μΈ κΈ°λ₯λ€μ
λλ€. νλ‘μΈμ€ ID κ°μ Έμ€κΈ° νλ‘μΈμ€ μμ±κ³Ό μ’
λ£ μμ νλ‘μΈμ€ μ κ±° νλ‘κ·Έλ¨μ λ‘λ©κ³Ό μ€ν π§ νλ‘μΈμ€ ID κ°μ Έμ€κΈ° getpid : νΈμΆνλ νλ‘μΈμ€μ PIDλ₯Ό λ°νν©λλ€. getppid : λΆλͺ¨ νλ‘μΈμ€μ PIDλ₯Ό λ°νν©λλ€. (μ¦ νΈμΆνλ νλ‘μΈμ€λ₯Ό λ§λ νλ‘μΈμ€λ₯Ό λ°νν©λλ€.) κ°κ°μ νλ‘μΈμ€λ κ³ μ ν νλ‘μΈμ€ ID (PID)λ₯Ό κ°μ΅λλ€. μμ ν¨μλ€μ ν΅ν΄ PIDλ₯Ό μ»μ΄μ¬ μ μμ΅λλ€. μ΄λ λ°ν νμ
μ pid_t νμ
μ μ μ κ°μ΄λ©°, μ΄λ 리λ
μ€ μμ€ν
μμ types.hμ μ μλ‘ μ μ₯λμ΄ μμ΅λλ€. π§ νλ‘μΈμ€μ μν νλ‘κ·Έλλ¨Έμ κ΄μ μμ νλ‘μΈμ€λ λ€μκ³Ό κ°μ ..
π₯ Computer Science/μμ€ν νλ‘κ·Έλλ°
π§ νλ‘μΈμ€ νλ‘μΈμ€λ μ΄μ체μ κ° λ§λ€μ΄ μ£Όλ μ€ν νλ‘κ·Έλ¨μ μΈμ€ν΄μ€μ
λλ€. νλ‘κ·Έλ¨μ μ€λλ μμ€ν
μμ μ€νλ λ, λ§μΉ λ¨ ν κ°μ νλ‘κ·Έλ¨λ§μ΄ μμ€ν
μμ λμκ°κ³ μλ κ² κ°μ μ°©κ°μ΄ λ€κ² ν©λλ€. μ΄λ¬ν μ°©κ°μ νλ‘μΈμ€λΌλ κ°λ
μ μν΄ μ΄λ£¨μ΄μ§λλ€. μμ€ν
λ΄μ κ° νλ‘κ·Έλ¨μ μ΄λ€ νλ‘μΈμ€μ λ¬Έλ§₯(context)μμ λμκ°λλ€. λ¬Έλ§₯μ νλ‘κ·Έλ¨μ΄ μ ννκ² λμκ°κΈ° μν΄μ νμν μνλ‘ κ΅¬μ±λλ©°, λ¬Έλ§₯ μμλ λ©λͺ¨λ¦¬μ μ μ₯λ νλ‘κ·Έλ¨μ μ½λμ λ°μ΄ν°, μ€ν, λ²μ© λ μ§μ€ν°μ λ΄μ©, νλ‘κ·Έλ¨ μΉ΄μ΄ν°, νκ²½λ³μ, μ΄λ € μλ νμΌμ μλ³μκ° ν¬ν¨λ©λλ€. μ¬μ©μκ° μ€ν λͺ©μ νμΌμ μ΄λ¦μ μμ μ
λ ₯νμ¬ νλ‘κ·Έλ¨μ λ릴 λλ§λ€ μμ μλ‘μ΄ νλ‘μΈμ€λ₯Ό μμ±νκ³ , μ€ν λͺ©μ νμΌμ μλ‘μ΄ νλ‘μΈμ€μ λ¬Έλ§₯μμ μ€ν..
π§ μ μ΄νλ¦ CPUμ μ μμ μ²μ 곡κΈνλ μμ λΆν°, μ μμ΄ κΊΌμ§λ μμ κΉμ§ νλ‘κ·Έλ¨ μΉ΄μ΄ν°(PC)λ μ°μλ (μΈμ€νΈλμ
μ) μ£Όμκ°λ€μ μ€νν©λλ€. λͺ
λ Ήμ΄ 1 λͺ
λ Ήμ΄ 2 λͺ
λ Ήμ΄ 3 ... λͺ
λ Ήμ΄ n λͺ
λ Ήμ΄ 1μμ λͺ
λ Ήμ΄ 2λ‘μ μ νμ μ μ΄μ΄λμ΄λΌ λΆλ¦
λλ€. κ·Έλ¦¬κ³ μμ κ°μ μ μ΄μ΄λμ λ°°μ΄μ (νλ‘μΈμμ) μ μ΄νλ¦μ΄λΌ λΆλ¦
λλ€. π§ μμΈμ μΈ μ μ΄ νλ¦, ECF κ°μ₯ κ°λ¨ν μ νμ μ μ΄νλ¦μ λͺ
λ Ήμ΄ 1κ³Ό λͺ
λ Ήμ΄ 2κ° λ©λͺ¨λ¦¬μ μλ‘ λλν μλ κ²½μ°μ
λλ€. μ μ΄νλ¦ μμμ jump, branches, call, return λ±μ λͺ
λ μ΄κ° μ€νλλ©΄ μμ κ°μ μ μ§μ μΈ μ μ΄νλ¦μ΄ λ³κ²½λκ³ , μλ‘ λλν μ‘΄μ¬νμ§ μλ λͺ
λ Ήμ΄κ° μ€νλ©λλ€. κ·Έλ¬λ μμ€ν
μ μμ²λΌ λͺ
λ Ήμ΄λ‘ μΈν μν λ³νκ° μλ, νλ‘κ·Έλ¨μ μ€νκ³Ό..
π§ λ²νΌ μ€λ²νλ‘μ° λ©λͺ¨λ¦¬λ₯Ό λ€λ£¨λ λ°μ μ€λ₯κ° λ°μνμ¬ μλͺ»λ λμμ νλ νλ‘κ·Έλ¨ μ·¨μ½μ μ μλ―Έν©λλ€. Cμμλ λ°°μ΄ μ°Έμ‘° μ λ²μλ₯Ό 체ν¬νμ§ μμΌλ©°, μ§μλ³μλ€μ΄ λ³΄μ‘΄μ© λ μ§μ€ν°μ λ¦¬ν΄ μ£Όμ κ°μ μ 보λ€κ³Ό ν¨κ» μ€νμ μ μ₯λλ€λ κ²μ λ°°μ μ΅λλ€. μ΄λ¬ν μ‘°ν© λλ¬Έμ μ¬κ°ν νλ‘κ·Έλ¨ μλ¬κ° λ°μν μ μλλ°, μ€νμ μ μ₯λ μνμ λ³΄κ° λ²μλ₯Ό λ²μ΄λ λ°°μ΄μ μμμ λν μ°κΈ° μμ
μ μνμ¬ λ³κ²½λλ κ²½μ°μ
λλ€. κ·Έλ¬κ³ λμ νλ‘κ·Έλ¨μ΄ λ μ§μ€ν° κ°μ λ€μ μ μ¬νκ±°λ, μ΄λ κ² λ³κ²½λ μνμ 보λ₯Ό μ¬μ©νμ¬ ret μΈμ€νΈλμ
μ μ€νν λ λ²κ·Έλ₯Ό λ°μμν΅λλ€. μΌλ°μ μΌλ‘ λ°°μ΄μ ν λΉλ ν¬κΈ° μ΄μμ λ©λͺ¨λ¦¬λ₯Ό μ κ·Όνλ κ²½μ° λ²νΌ μ€λ²νλ‘μ° κ° λ°μν©λλ€. νν ννλ‘λ μ€νΈλ§ μ
λ ₯μ κΈΈμ΄λ₯Ό 체ν¬νμ§ μλ κ²½μ°κ° μμ΅λ..
μ΄ 74μ₯ λΆλμ΄κ³ , μ 체 μ½λ νμ€νμ€ λ€ μμΈνκ² μ μ΄λμ΅λλ€. (νμ΄ν
νμΈμ :))
π§ νλ‘μμ μ μ€ν νλ‘μμ λ μ§μ λ μΈμλ€κ³Ό λ¦¬ν΄ κ°μΌλ‘ νΉμ κΈ°λ₯μ ꡬννλ μ½λλ₯Ό κ°μΈμ£Όλ λ°©λ²μ μ 곡ν©λλ€. μλ₯Ό λ€μ΄ νλ‘μμ Pκ° νλ‘μμ Qλ₯Ό νΈμΆν λ€, Qκ° μ€νλ ν λ€μ Pλ‘ λ¦¬ν΄λλ€κ³ κ°μ νκ² μ΅λλ€. μ¦ λ€μκ³Ό κ°μ νμμ
λλ€. Q() { F(); } νλ‘μμ λ₯Ό κΈ°κ³μ΄ μμ€μμ μ§μνκΈ° μν΄ μ²λ¦¬λμ΄μΌ νλ μ¬λ¬ νΉμ±λ€μ΄ μ‘΄μ¬ν©λλ€. μ μ΄κΆμ μ λ¬ : νλ‘κ·Έλ¨ μΉ΄μ΄ν°(PC)λ Qμ μ§μ
ν λ, Qμ λν μ½λμ μμμ£Όμλ‘ μ€μ λ©λλ€. 리ν΄νλ κ²½μ° Pμμ Qλ₯Ό νΈμΆν ν μ§νλμ€μΌ ν λ€μ μΈμ€νΈλμ
μΌλ‘ μ€μ λμ΄μΌ ν©λλ€. λ°μ΄ν° μ λ¬: Pλ μ¬λ¬κ°μ 맀κ°λ³μλ₯Ό Qμ μ 곡ν μ μμ΄μΌ ν©λλ€. Qλ Pμκ² νλμ κ°μ 리ν΄ν μ μμ΄μΌ ν©λλ€. λ©λͺ¨λ¦¬ ν λΉκ³Ό λ°λ©: Qλ μμν λ ..
π§ λ°λ³΅λ¬Έ κΈ°κ³μ΄μλ λ°λ³΅λ¬Έμ λμλλ μΈμ€νΈλμ
μ΄ μμ΅λλ€. κ·Έ λμ μ‘°κ±΄λΆ ν
μ€νΈμ, μ ν μΈμ€νΈλμ
μ ν¨κ» μ¬μ©νμ¬ λ°λ³΅λ¬Έμ ννν©λλ€. GCC μ λ€λ₯Έ μ»΄νμΌλ¬λ€μ λ°λ³΅λ¬Έμ λ κ°μ κΈ°λ³Έ 루ν ν¨ν΄μ κΈ°μ΄νμ¬ μ½λλ₯Ό μμ±ν©λλ€. κ°μ₯ κ°λ¨ν do-whileλΆν° μμνμ¬ λ³΄λ€ λ³΅μ‘ν ꡬν λ°©λ²μ μ΄ν΄λ³΄λ©° λ κ°μ§ ν¨ν΄μ λ€λ£¨λλ‘ νκ² μ΅λλ€. π§ do - while do-while λ¬Έμ₯μ μΌλ°μ μΈ ννλ μλμ κ°μ΅λλ€. do { body-statement } while ( test-expr ); λ°λ³΅λ¬Έμ body-statement λ₯Ό λ°λ³΅μ μΌλ‘ μ€ννκ³ , test-expr μ κ³μ°νμ¬ κ·Έ κ²°κ³Όκ° 0μ΄ μλλΌλ©΄ λ°λ³΅ν©λλ€. body-statement λ μ μ΄λ ν λ² μ€νλλ€λ κ²μ μ£Όλͺ©νλ©°, ν΄λΉ ..
π§ μ μ΄ λͺ
λ Ή μ¬λ¬ 쑰건문λ€μ μ¬μ©νκΈ° μν΄ μ μ΄ λͺ
λ Ήμ΄ νμν©λλ€. μΌλ°μ μΌλ‘ CPU λ΄λΆμ μνλ₯Ό μ μ₯ν μ μκΈ° λλ¬Έμ, λ μ§μ€ν°μ μνλ₯Ό μ μ₯νκ² λ©λλ€. %rax λ μ§μ€ν°λ μμ λ°μ΄ν°, μ°μ°μ κ²°κ³Ό λ±μ μ μ₯νλ©° %rsp λ μ§μ€ν°λ λ°νμ μ€νμ μμΉλ₯Ό, %rip λ μ§μ€ν°λ νμ¬ μ€νμ½λμ μμΉλ₯Ό μ μ₯ν©λλ€. κ·Έλ¦¬κ³ μ΅κ·Ό μ§νν μ°μ°μ κ²°κ³Όμ λ°λΌ μνκ° λ³κ²½λλ 4μ’
λ₯μ (1λΉνΈ) νλκ·Έ λ μ§μ€ν°κ° μ‘΄μ¬ν©λλ€. μ΄λ¦μ CF, ZF, SF, OFμ΄λ©°, μ΄λ€μ ν΅ν΄ 쑰건문 λ±μ μ μ΄λ₯Ό μ§νν©λλ€. π§ Conditional Codes (쑰건 μ½λ) νλκ·Έ λ μ§μ€ν°λ 쑰건μ½λ λ μ§μ€ν°λΌκ³ λ λΆλ¦½λλ€. μ΄λ€μ μ°μ μ°μ°μ κ²°κ³Όμ λ°λΌ κ°μ΄ λ°λλ λ μ§μ€ν°λ€μ
λλ€. μ£Όμνμ¬μΌ ν μ μ movq νΉμ l..