πŸŽ„ μ„±μž₯일지 3.1

μ±… ν–‰λ³΅ν•œ 이기주의자(웨인 닀이어)의 λ‚΄μš©μ— μžκ·Ήλ°›μ•„ μ‹œμž‘ν•˜λŠ” μ†Œλ°•ν•œ μ„±μž₯기둝

μ‚΄μ•„μžˆλŠ” 꽃과 죽은 꽃은 μ–΄λ–»κ²Œ κ΅¬λ³„ν•˜λŠ”κ°€?
μ„±μž₯ν•˜κ³  μžˆλŠ” 것이 μ‚΄μ•„ μžˆλŠ” 것이닀.
생λͺ…μ˜ μœ μΌν•œ μ¦κ±°λŠ” μ„±μž₯이닀!

🌳 ν‚€μ›Œλ“œ (1.0)
μ΅œλŒ€ν•œ κ°„λ‹¨ν•˜κ²Œ 정리, 좔후에 λ³΄λ©΄μ„œ 슀슀둜 μ„€λͺ…
πŸ‰ κ²½ν—˜ μœ„μ£Όλ‘œ (2.0)
λ‹¨μˆœ 정보λ₯Ό μ „λ‹¬ν•˜κΈ°λ³΄λ‹€ 무엇을 λ°°μ› κ³  μ–΄λ–»κ²Œ ν•΄κ²°ν–ˆλŠ”μ§€ 짧고 κ°„λ‹¨ν•˜κ²Œ μž‘μ„±
❄️ 정해진 ν…œν”Œλ¦Ώμ— λ§žμΆ°μ„œ (3.0)
ν‚€μ›Œλ“œ, κ²½ν—˜ λͺ¨λ‘ μ’‹λ‹€. λ‹€λ§Œ 맀일 μž‘μ„±ν•˜κΈ°λ‘œ 마음 λ¨Ήμ€λ§ŒνΌ ν•΅μ‹¬λ§Œ κ°„κ²°ν•˜κ²Œ 정리할 수 있게 ν…œν”Œλ¦Ώμ„ μž‘μ„± (3.1) 230102λΆ€ν„° μ‹œμž‘λ˜λŠ” ν•™μŠ΅μ— κ΄€ν•œ λ‚΄μš© μΆ”κ°€

πŸ”‘ 였늘의 ν‚€μ›Œλ“œ

μŠ€μΌ€μ€„λ§

  • 운영체제(OS)κ°€ ν”„λ‘œμ„ΈμŠ€λ“€μ—κ²Œ κ³΅μ •ν•˜κ³  ν•©λ¦¬μ μœΌλ‘œ CPU μžμ›μ„ λ°°λΆ„ν•˜λŠ” 것

μŠ€λ ˆλ“œ

  • ν•˜λ“œμ›¨μ–΄μ  μŠ€λ ˆλ“œ: μ½”μ–΄ ν•˜λ‚˜κ°€ λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” λͺ…λ Ήμ˜ λ‹¨μœ„
  • μ†Œν”„νŠΈμ›¨μ–΄μ  μŠ€λ ˆλ“œ: ν”„λ‘œκ·Έλž¨ ν•˜λ‚˜μ—μ„œ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” λ‹¨μœ„

이벀트 처리

  • 이벀트 λ‹¨μœ„μ˜ 병렬 처리
  • 단일 μŠ€λ ˆλ“œμ—μ„œ λΉ„λ™κΈ°μ μœΌλ‘œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ 이벀트λ₯Ό λ°œμƒμ‹œμΌœ μ²˜λ¦¬ν•œλ‹€.
  • μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 경우, 이벀트 루프λ₯Ό 톡해 단일 μŠ€λ ˆλ“œμ—μ„œλ„ 병렬적인 μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜λ‹€.

비동기

  • 동기가 μ•„λ‹Œ 것(asynchronous)
  • non-blocking으둜 ν…ŒμŠ€ν¬λ₯Ό μˆ˜ν–‰ν•œλ‹€.
  • λ³‘λ ¬μ μœΌλ‘œ ν…ŒμŠ€ν¬λ₯Ό μˆ˜ν–‰ν•œλ‹€.
  • μš”μ²­κ³Ό κ²°κ³Όκ°€ λ™μ‹œμ— μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€.(μš”μ²­ν•œ κ·Έ μžλ¦¬μ—μ„œ κ²°κ³Όκ°€ 주어지지 μ•ŠλŠ”λ‹€.)
  • κ²°κ³Όκ°€ μ£Όμ–΄μ§€λŠ” 데 μ‹œκ°„μ΄ 걸리더라도 κ·Έλ™μ•ˆ λ‹€λ₯Έ μž‘μ—…μ΄ κ°€λŠ₯ν•˜λ‹€.
  • 동기보닀 μ§κ΄€μ μœΌλ‘œ μ΄ν•΄ν•˜κΈ° μ–΄λ ΅λ‹€.(섀계가 νž˜λ“€λ‹€.)

μ½œλ°±ν•¨μˆ˜

  • μ›ν•˜λŠ” μ‹œμ (νŠΉμ •ν•œ μ‹œμ )에 ν˜ΈμΆœν•  수 μžˆλŠ” ν•¨μˆ˜
  • μ–΄λ–€ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬λ˜λŠ” ν•¨μˆ˜
  • κ°œλ°œμžκ°€ μ½œλ°±ν•¨μˆ˜λ‘œ μ–΄λ–€ ν•¨μˆ˜λ₯Ό μ „λ‹¬ν•˜λŠ” μˆœκ°„, κ·Έ ν•¨μˆ˜μ˜ μ‹€ν–‰κΆŒμ€ κ·Έ μ½œλ°±ν•¨μˆ˜λ₯Ό 받은 ν•¨μˆ˜μ—κ²Œ λ„˜μ–΄κ°„λ‹€.
  • 즉, λΉ„λ™κΈ°μ μœΌλ‘œ μž‘λ™μ„ 원할 땐 비동기 api에 ν•¨μˆ˜ 자체λ₯Ό λ„˜κ²¨μ£Όμ–΄μ•Ό ν•œλ‹€!

ν΄λ‘œμ €

  • μ–΄λ–€ μ™ΈλΆ€ν•¨μˆ˜ A의 μƒνƒœ aλ₯Ό λ‚΄λΆ€ν•¨μˆ˜ Bκ°€ μ°Έμ‘°ν•˜κ³  있고, A의 λ°˜ν™˜κ°’μœΌλ‘œ B ν•¨μˆ˜ μžμ²΄κ°€ λ°˜ν™˜λ  λ•Œ 아직 a에 λŒ€ν•œ μ°Έμ‘° κ°€λŠ₯μ„±μœΌλ‘œ aκ°€ κ°€λΉ„μ§€μ½œλ ‰νŒ…λ˜μ§€ μ•Šκ³  μ‚΄μ•„μžˆλŠ” ν˜„μƒ
  • λΉ„λ™κΈ°μ μœΌλ‘œ μž‘λ™ν•  λ•Œ μ „λ‹¬ν•˜λŠ” μ½œλ°±ν•¨μˆ˜ λ˜ν•œ ν΄λ‘œμ €λ₯Ό μ΄μš©ν•΄ μ–΄λ–€ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 μžˆλ‹€.

비동기(ν΄λ‘œμ € x)

function asyncFunc(cb) {
setTimeout(cb, 1000);
}

asyncFunc(function() {
console.log("1 second passed");
});

비동기(ν΄λ‘œμ € o)

function asyncFunc(cb) {
  setTimeout(cb, 1000);
}

function closureExample() {
  let message = "1 second passed";

  return function() {
    console.log(message);
  };
}

let closureFunc = closureExample();
asyncFunc(closureFunc);

참고자료

πŸ“ μš”μ•½ 및 ν•˜λ£¨ 간단 회고

μ˜€λŠ˜μ€ μͺΌκΈˆ κ³΅λΆ€ν•˜λŠ”λ° λ©˜νƒˆμ΄ λ‚˜κ°”λ˜ κ±° κ°™λ‹€. 운영체제 파트 μžμ²΄κ°€ κ°œλ…λ„ μ–΄λ ΅κ³  κ΅¬ν˜„λ„ 쉽지 μ•Šμ•„μ„œ 그런 것 κ°™λ‹€.
일단 λ―Έμ…˜μ€ 미뀄두고 κ°œλ…λΆ€ν„° μ—΄μ‹¬νžˆ μŠ΅λ“ν–ˆλŠ”λ°, 막상 κ΅¬ν˜„μ„ ν•˜λ €λ‹ˆ 생각보닀 쉽지 μ•Šμ•„μ„œ 그게 μ’€ λ©˜νƒˆμ΄ νž˜λ“€κ²Œ ν–ˆλ‹€. 객체지ν–₯이 λ„ˆλ¬΄λ„ˆλ¬΄ μ’‹κ³  μž¬λ―ΈμžˆλŠ”λ°, 각 κ°μ²΄μ—κ²Œ μ˜¬λ°”λ₯Έ μ±…μž„κ³Ό 역할을 μ£ΌλŠ” 건 정말 μ–΄λ ΅λ‹€. ν•˜λ¬Όλ©° κ°œλ…μ μœΌλ‘œ μ΄ν•΄ν•œ 운영체제의 일뢀λ₯Ό κ΅¬ν˜„ν•˜λ €λ‹ˆ 쉽지 μ•Šλ‹€. κ·Έλž˜λ„ λ©˜νƒˆ 작고 λ‚΄κ°€ ν•  수 μžˆλŠ”λ§ŒνΌ 악착같이 μ•…λ…ν•˜κ²Œ ν•  것이닀! λ¬Όλ‘  λ‹€ν–‰νžˆ μž¬λ―ΈμžˆμœΌλ‹ˆκΉŒβ€¦! 재미있게 악착같이 ν•˜μž!

였늘의 μž˜ν•œ 점

  • μ–΄μ œ 였늘 정말 λΉ λ₯΄κ²Œ 컴퓨터 ꡬ쑰 + 운영체제 κ°œλ… 곡뢀(μ „λΆ€ 남진 μ•Šμ§€λ§Œ λ‹€μŒμ—” 훨씬 νŽΈν•˜κ²Œ 이해할 수 μžˆμ„ 것 κ°™λ‹€.)
  • λ©˜νƒˆμ΄ νž˜λ“€μ—ˆμ§€λ§Œ, λκΉŒμ§€ λ…ΈνŠΈλΆ μ•žμ—μ„œ κ³ μ „ν•œ 점

였늘의 μ•„μ‰¬μš΄ 점

  • κ°œλ…μ„ μ•Œμ•„λ„ 이걸 μ½”λ“œλ‘œ κ΅¬ν˜„ν•˜λŠ” 건 생각보닀 쉽지 μ•Šμ•˜λ‹€λŠ” 점…
  • μ–΄μ°Œμ €μ°Œ κ΅¬ν˜„ν–ˆλ”λΌλ„ μ½”λ“œκ°€ λ„ˆλ¬΄β€¦ 더 잘 μ •λ¦¬ν•΄λ³΄μž