-
Notifications
You must be signed in to change notification settings - Fork 0
how_browsers_work
- ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑํ ์์์ฝ๋๋ฅผ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ณํํ๋ ํ๋ก๊ทธ๋จ
- ์ฃผ๋ก ์์ ์์ค์ฝ๋๋ฅผ ์ด์ ๋ธ๋ฆฌ์ด๋ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ค.
- ์ง์ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ฉด ๋ถ๋ด์ด ํฌ๊ธฐ ๋๋ฌธ์ ์ด์ ๋ธ๋ฆฌํ์์ ๋ชฉ์ ํ์ผ๋ก ์์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(์ด์ ๋ธ๋ฆฌ์ด, ๊ธฐ๊ณ์ด)๋ ์ฌ๋์ด ์ดํดํ๊ธฐ ์ด๋ ค์์ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ๊ฐ ์ด๋ ต๋ค. ๋ํ ํน์ ํ๋์จ์ด ๊ตฌ์กฐ์ ์์กด์ฑ์ด ๊ฐํ๋ค. ๋ฐ๋ผ์, ํ๋์จ์ด ์์กด์ฑ์ ์ค์ด๊ณ ์ฌ๋์ด ์์ฑํ๊ธฐ ์ฌ์ด ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๊ฐ๋ฐ๋์๋ค. ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ์ปดํจํฐ๊ฐ ์คํ๊ฐ๋ฅํ๋๋ก ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ๋์ด์ผ ํ๋๋ฐ, ์ด ๊ณผ์ ์ ์ปดํ์ผ๋ฌ๊ฐ ์ฒ๋ฆฌํ๋ค.
์ธํฐํ๋ฆฌํฐ๋ ๋ณ๋์ ์ปดํ์ผ ๊ณผ์ ์์ด ํ๋ฒ์ ํ ์ค์ฉ ์ฝ์ด๋ค์ฌ ์คํํ๋ ํ๋ก๊ทธ๋จ์ ๋งํ๋ค.
์ปดํ์ผ๋ฌ์ ๋ค๋ฅธ์ ์ ์คํ์ค์ ์ฝ๋๋ฅผ ํด์ํด์ ๋ณด์ฌ์ฃผ๊ณ , ๋ชฉ์ ํ์ผ์ ์์ฑํ์ง ์๋๋ค.
์ธํฐํ๋ฆฌํฐ๋ ํฌ๊ฒ ๋์ข ๋ฅ๊ฐ ์๋ค.
- ์ปดํ์ผ๋ฌ + ์ธํฐํ๋ฆฌํฐ ๊ฒฐํฉํ
์์ค์ฝ๋๋ฅผ ์ค๊ฐ ์ฝ๋ ํํ๋ก ๋ณํ ํ ์ธํฐํ๋ฆฌํฐ๊ฐ ์ฝ์ด๋ค์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๊ณ ํด์ํ๋ฉฐ ์คํํ๋ค. - ์์ค์ฝ๋ ์ ์งํ
์์ค์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํ์ฑ ๋ผ์ธ ๋จ์๋ก ํด์ํด์ ์คํํ๋ค.
์ฑ๋ฅํฅ์์ ์ํด ์คํ ์์ ์ ์์์ฝ๋๋ ์ค๊ฐ ์ฝ๋๋ฅผ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ๋ณํํ๋๋ฐ ์ด๋ฌํ ๊ธฐ๋ฒ์ JIT(Just-in-time) ์ปดํ์ผ์ด๋ผ๊ณ ํ๋ค.
๋ชจ๋ ๋ธ๋ผ์ฐ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ดํด์์ ์ํด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ํ์ฌ๋์ด ์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ํด์ํ๊ณ ์คํํ๋ ์ธํฐํ๋ฆฌํฐ๋ค. ์ด์ ๋ ๋ธ๋ผ์ฐ์ ์ธ์๋ ์๋ฒ์์ญ์ด๋ PC์ ์ค์นํ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ํ์ฌ๋์ด ์ฌ์ฉ๋๊ณ ์๋ค.

V8์ ๋
์ผ ๊ตฌ๊ธ ๊ฐ๋ฐ ์ผํฐ์์ ๋ง๋ค์ด์ง JavaScript ์์ง์ด๋ค. ์คํ ์์ค์ด๊ณ C++๋ก ์์ฑ๋์๋ค.
ํด๋ผ์ด์ธํธ์ชฝ(Google Chrome)๊ณผ ์๋ฒ์ชฝ(node.js) JavaScript ์ดํ๋ฆฌ์ผ์ด์
๋ชจ๋์ ์ฐ์ธ๋ค. V8์ ์น ๋ธ๋ผ์ฐ์ ์์์ ์คํ๋๋ JavaScript์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ์ฒ์ ๊ณ ์๋์๋ค. ์๋๋ฅผ ๋์ด๊ธฐ ์ํด์ V8์ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ๋ ๋์ JavaScript ์ฝ๋๋ฅผ ์ข๋ ํจ์จ์ ์ธ ๊ธฐ๊ณ์ด ์ฝ๋๋ก ๋ฒ์ญํ๋ค. ์์ฆ์ JavaScript ์์ง์ฒ๋ผ JIT(Just-In-Time) ์ปดํ์ผ๋ฌ๋ฅผ ์ ์ฉํ์ฌ JavaScript ์ฝ๋๋ฅผ ์คํํ ๋ ์ปดํ์ผํ์ฌ ๊ธฐ๊ณ์ด ์ฝ๋๋ก ๋ง๋ ๋ค. V8์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ๋ฐ์ดํธ์ฝ๋ ๋๋ ๋ค๋ฅธ ์ค๊ฐ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋ ๋ค๋ ๊ฒ์ด๋ค.

๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ์ฐธ์กฐํ๊ณ ์ ํ๋ ์นํ์ด์ง๋ฅผ ์๋ฒ์ ์์ฒญํ๊ณ ์๋ต์ ๋ฐ์ ๋ธ๋ผ์ฐ์ ํ์ํ๋ ๊ฒ์ด๋ค. ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ html, css, javascript ํ์ผ์ ์๋ต๋ฐ๋๋ค. html, cssํ์ผ์ ๋ ๋๋ง ์์ง์ HTML ํ์์ CSS ํ์์ ์ํด ํ์ฑ๋์ด DOM, CSSOM ํธ๋ฆฌ๋ก ๋ณํ๋๊ณ ๋ ๋ ํธ๋ฆฌ๋ก ๊ฒฐํฉ๋๋ค.
HTML ํ์๋ script ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ ํ๋ก์ธ์ค๋ฅผ ์ค์งํ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ ์ด ๊ถํ์ ๋๊ธด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์คํ์ด ์๋ฃ๋ ํ ๋ธ๋ผ์ฐ์ ๊ฐ ์ค์งํ๋ ์์ ๋ถํฐ DOM ์์ฑ์ ์ฌ๊ฐํ๋ค. ์ด๊ฒ์ script ํ๊ทธ์ ์์น์ ์ํด DOM ์์ฑ์ด ์ง์ฐ๋ ์ ์์์ ์๋ฏธํ๋ค.
