{"componentChunkName":"component---src-templates-blog-post-js","path":"/language/200816-프로그램-실행/","result":{"data":{"site":{"siteMetadata":{"title":"Junbyeol Blog","author":"Junsung Yoon","siteUrl":"https://junbyeol.github.io","comment":{"disqusShortName":"","utterances":"junbyeol/junbyeol.github.io"},"sponsor":{"buyMeACoffeeId":"junbyeol"}}},"markdownRemark":{"id":"74fb13bc-b51b-5ce9-8f96-71205ebff7b1","excerpt":"이 글은 윤준성의 개발꼬맹이 시절, 혼자 노션에 공부하며 정리해둔 것 중 괜찮은 것을 추려올린 글입니다.\n기술블로그 글 기고 목적으로 작성되지 않아, 가독성이 좋지 않거나 알 수 없는 워딩이 있을 수 있습니다. 프로그램 실행: 프로그래밍 언어(High-level)를 런타임 이전에 기계어로 해석하는 과정  실행 (컴퓨팅) C의 실행 과정(gcc) 전처리 단계 - 전처리기(cpp) include, #define 등 #으로 시작하는 문법 사항이 적절히 전처리된 C…","html":"<blockquote>\n<p>이 글은 윤준성의 개발꼬맹이 시절, 혼자 노션에 공부하며 정리해둔 것 중 괜찮은 것을 추려올린 글입니다.\n기술블로그 글 기고 목적으로 작성되지 않아, 가독성이 좋지 않거나 알 수 없는 워딩이 있을 수 있습니다.</p>\n</blockquote>\n<p>프로그램 실행: 프로그래밍 언어(High-level)를 런타임 이전에 기계어로 해석하는 과정</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 293px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 72.69624573378839%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsSAAALEgHS3X78AAADDklEQVQ4y3VU3U9SYRg/BKQFxwU0PkZRzMojjJAT7AABih4+RETBj1BRQJnf6NTwC2VeuLUu2mp159qs9Qe01m1XbfYXtPUX1LrwolVrXdHvxaOS0dl+e573ed/3eX/P16Go0+8cwzBShUIhgS4mBo1GI1GpVJLjfZ1OJ9Xr9dLjC319fVTNr6enR5HJZJ7n8/md+fn5B4uLi8WxsbH9qampJ0QfGRnZy+VyewsLCyWceQj7fZ7nteRud3f3vw77+/vp1dXVn3D2bHBw0AsHsYGBgXQ2m301OzsbhgxMTk6+xKNDAA/nXR6Px05Y12QYiUTqCoXC7/Hx8R0s5SKRqAXSEg6HH6nVagU5g72C2Ww2QTUA1wCVWCy+UNNhU1OTan19/fvS0tIHhBKJx+OJ3t5eiHim6+gLIi0ZhBeLRqPBWCwW9vl8UeS48phWq6U6OjpOHSKMpysrKx/B8lPVO3rgBqADbglSL+hmgDirIweNRuNfBEVw9L5YLB4iVy/wEhcIBNjW1lbO5XL52tvb7WDD+f1+zuv1wuTyOJ1OotxFBPdgbyBO2traKOS9wq6I6h3s7u6WUZTHaA0tNkxwYsOhFrfb7cBlBy5a4ZBFMVgikQYGxWyWy+WVaicSiSN6y8vL+1tbW7+Qv4OZmZkSsZXLZSIuCwUg8TSStgRuAiYh5Eq4LMtaksnkeaIj7xQ1PT39rlQq/djc3PwGQx7hhlB1kvxOrAMIiydAIUJkDSY8AfYjoVAogubOIRq70JMiant7u4zmfbOxsXE4MTHBnmmAK4BakEqBNdGvAherzl060cDsCxiW5+bm3iIvQ8jVHbSOG8VxORyOsN1u7+Q4LoBC8GRts9liVqs1jtz6g8GgE+wciCg1PDwcOp6S66jw17W1tc8IiUmn05bR0dEKwNiECWlGWCwBpsiGKbqNNDHoCHMqlbJgbcEomuG85YQ1RsmIgryGerbzRVU9yQho/M/I0YCMwrBX/ixKpZI2GAwqqVSKTpA3yGSyE9A0LRc+otCw0dX7xFZfX0/yKPkD/W3n0RUUMQYAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled.png\"\n        title=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled.png\"\n        src=\"/static/beb8a09803b49ffb4b420b27d67b1518/3cf3e/200816-1.png\"\n        srcset=\"/static/beb8a09803b49ffb4b420b27d67b1518/3cf3e/200816-1.png 293w\"\n        sizes=\"(max-width: 293px) 100vw, 293px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><a href=\"https://ko.wikipedia.org/wiki/%EC%8B%A4%ED%96%89_(%EC%BB%B4%ED%93%A8%ED%8C%85)\">실행 (컴퓨팅)</a></p>\n<h1 id=\"c의-실행-과정gcc\" style=\"position:relative;\"><a href=\"#c%EC%9D%98-%EC%8B%A4%ED%96%89-%EA%B3%BC%EC%A0%95gcc\" aria-label=\"c의 실행 과정gcc permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>C의 실행 과정(gcc)</h1>\n<ol>\n<li>\n<p>전처리 단계 - 전처리기(cpp)</p>\n<ul>\n<li>\n<h1 id=\"include-define-등-으로-시작하는-문법-사항이-적절히-전처리된-c-언어-소스파일-생성\" style=\"position:relative;\"><a href=\"#include-define-%EB%93%B1-%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%AC%B8%EB%B2%95-%EC%82%AC%ED%95%AD%EC%9D%B4-%EC%A0%81%EC%A0%88%ED%9E%88-%EC%A0%84%EC%B2%98%EB%A6%AC%EB%90%9C-c-%EC%96%B8%EC%96%B4-%EC%86%8C%EC%8A%A4%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1\" aria-label=\"include define 등 으로 시작하는 문법 사항이 적절히 전처리된 c 언어 소스파일 생성 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>include, #define 등 #으로 시작하는 문법 사항이 적절히 전처리된 C 언어 소스파일 생성</h1>\n</li>\n</ul>\n</li>\n<li>\n<p>컴파일 단계 - 컴파일러(cc1)</p>\n<ul>\n<li>고급 언어 → 저급언어(어셈블리)</li>\n<li>C 언어 소스파일 —컴파일—> 어셈블리 소스 파일</li>\n</ul>\n</li>\n<li>\n<p>어셈블 단계 - 어셈블러(as)</p>\n<ul>\n<li>어셈블리 소스 파일 —어셈블—>목적파일</li>\n</ul>\n</li>\n<li>\n<p>링크 단계 - 링커(id)</p>\n<ul>\n<li>목적파일들 + 라이브러리 —링크—> 실행 가능한 파일</li>\n</ul>\n</li>\n</ol>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 364px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 81%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsSAAALEgHS3X78AAABUklEQVQ4y42UDU+DMBCGOwIMkA0cUDdgOs3cTIwxGv//b/O6PE1uzUAveYH2eu99FmOupRMMglRQCPbsLQQPglGwFOSCR0GD7qY4grPgCNET3wOkZ/Yc0QvvV0E1Reg8W8EzntcQ73DWQuR1veBANpOSctinUSqDmLVRutj8ITHRaKNIOcuVbmX+IQtS87IRJHxHpKt1sxGuKLJviiv6iTptqe0J3ci5YxD1ldSCN8E3Ro7gCye+sz/su/Wn4F2QTRHeqUgs3R3ppmV0DuxblUU2l3YSjEEe6BK1zuaG2qjCV8GwF4pQd/Z+rrOJiq7AMEW3pRw9ugj9ki6nYWYDRh33tVEz6GvXEFGn9P4mNeqcc3oha2lGS7dTotoxbz7ymmhKyGru957A3PnLw3n7IIoSspJ6Wkg7Us3R9awHbAcf/QbDNahu/IU84mACGpzXkHe/IrYQSJ3nh5AAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%201.png\"\n        title=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%201.png\"\n        src=\"/static/6ee0d92e82ccbedf6d6f30f36a31279d/e45a9/200816-2.png\"\n        srcset=\"/static/6ee0d92e82ccbedf6d6f30f36a31279d/5a46d/200816-2.png 300w,\n/static/6ee0d92e82ccbedf6d6f30f36a31279d/e45a9/200816-2.png 364w\"\n        sizes=\"(max-width: 364px) 100vw, 364px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 500px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 33%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAABT0lEQVQoz22QSUsDQRCF598KogQ8KBG8COLBg39AQYLbWZGccoieokaMiRPcJeA6bolO90xvn53JIFF8UFR3v6rXryp4iR3Rl+UjgWbrlFqtRhie0pWGKCbjXiU8v3XZ292lWq1yfnFBT/k3z2W81zDWgXMEhZVjxlZOmCs/8v6VIoXAKsFW44OR5RYTpQbja5fs30p0EtPr9fgUKfM7HUaXjiiUWsxu3xFrMgRKKZTSaGP9B+4n+vfUc4PQ2L6DHJ5Ga4OQklhInxOSJKGvFfALA7F+/g/O/Tk4jfPTXJ2FVCoVwnabYNiVywvj1HH2rAfxpGg/ad6F9QLWO7XZvm5eDeFDQngvuXwxKDPo/eXQ5oLXvri4fkJxtc7MZpOpjZCD6y46FUgpsh0ulm+YLB0yvd5godzJd+j+jjw01j+Iooh6vY4xJl/QcJ/Ler8BmfEOIzFs/m8AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%202.png\"\n        title=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%202.png\"\n        src=\"/static/ffac6c1b10a102b80a3b16937e3b653a/0b533/200816-3.png\"\n        srcset=\"/static/ffac6c1b10a102b80a3b16937e3b653a/5a46d/200816-3.png 300w,\n/static/ffac6c1b10a102b80a3b16937e3b653a/0b533/200816-3.png 500w\"\n        sizes=\"(max-width: 500px) 100vw, 500px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h1 id=\"용어\" style=\"position:relative;\"><a href=\"#%EC%9A%A9%EC%96%B4\" aria-label=\"용어 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>용어</h1>\n<h2 id=\"런타임\" style=\"position:relative;\"><a href=\"#%EB%9F%B0%ED%83%80%EC%9E%84\" aria-label=\"런타임 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>런타임</h2>\n<ul>\n<li>프로그램이 실행되고 있는 때에 존재하는 곳</li>\n<li>Javascript의 런타임인 Browser 혹은 Node.js</li>\n</ul>\n<aside>\n💡 런타임 VS 컴파일타임\n<ul>\n<li>이름에서도 알 수 있듯이 ‘실행되는 때’와 ‘번역되는 때’로 다르다</li>\n<li>\n<p>컴파일타임 오류</p>\n<ul>\n<li>Syntax error, Typecheck error</li>\n</ul>\n</li>\n<li>\n<p>런타임 오류</p>\n<ul>\n<li>0나누기, Null참조, 스택오버플로우</li>\n</ul>\n</li>\n</ul>\n</aside>\n<h2 id=\"컴파일러-vs-인터프리터\" style=\"position:relative;\"><a href=\"#%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC-vs-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0\" aria-label=\"컴파일러 vs 인터프리터 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>컴파일러 vs 인터프리터</h2>\n<ul>\n<li>컴파일러는 소스코드 전체를 훑고 실행가능한 파일로 변환한 후 실행하지만,\n인터프리터는 각 행을 중간코드로 변환하고 차례로 실행한다</li>\n<li>컴파일러가 인터프리터 보다 실행시간이 빠르다</li>\n<li>컴파일러는 전체파일을 변환한 뒤 에러를 보고하지만,\n인터프리터는 에러가 발생한 행에서 에러를 보고하고 그 이후 코드는 보지 않는다</li>\n<li>컴파일러를 사용하는 언어: C\n인터프리터를 사용하는 언어: Python</li>\n</ul>\n<aside>\n💡 모든 언어를 엄밀하게 컴파일러/인터프리터 언어로 나눌 수는 없다\n자바는 컴파일과 인터프리트를 병행하여 양단의 장점을 취하고, 심지어 자바스크립트는 해석 엔진에 따라 실행 과정이 제각각이다(추후 작성)\n</aside>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 780px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 62.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsSAAALEgHS3X78AAABbElEQVQ4y32Tia6CQAxF5/9/EZAgIIJsggsg0JfTpAbJ00kmMy13bm8XXNu2wu66TqZpkm+r73u5XC5S17VUVaW+2+0mYRjK4XCQpmlkWRZxAH3fl8fjIdfrVZ7Pp9zvd7U5scEURSFpmorneVKWpQrgxH8+n5V8nmdxkOR5ro5hGGRd1w9l2AAJQCYQEAQ/J2p5T1AlHMdR04CMTdo8yrJMI6OEVF6vl6bMY4hPp5PaYBBlwZ0p4DR1RGNbdAgIDDFYlBEIDIHwvwn3xd+mDBhC1ELya5kgZ5ct0d7e+799ZzmaQTc5rVakgo/aWDr/LRpFWdiUQBVyOR6PSgARxWY8giB4+2kWKdvGxk85mMMoirSx2mUKniSJKrSZAwwx33gMEKUosMYwDWRgjeOuhJDYoOKEEDuOYw1AdykD6YEhMDaEnDQM/LspFpFfh1QNsB0TgPadudv6yQDij7H51jHqQn2okw3vr7Fh/QGQDPBPQpxoswAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%203.png\"\n        title=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%203.png\"\n        src=\"/static/a7550be8c618f9383b68805fbe2ac3fc/a1792/200816-4.png\"\n        srcset=\"/static/a7550be8c618f9383b68805fbe2ac3fc/5a46d/200816-4.png 300w,\n/static/a7550be8c618f9383b68805fbe2ac3fc/0a47e/200816-4.png 600w,\n/static/a7550be8c618f9383b68805fbe2ac3fc/a1792/200816-4.png 780w\"\n        sizes=\"(max-width: 780px) 100vw, 780px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2 id=\"빌드\" style=\"position:relative;\"><a href=\"#%EB%B9%8C%EB%93%9C\" aria-label=\"빌드 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>빌드</h2>\n<ul>\n<li>소스코드 → 실행가능한 소프트웨어 산출물로 만드는 일련의 과정</li>\n<li>컴파일은 빌드의 한 단계</li>\n<li>대략, 컴파일 + 링크 = 빌드 라고 봐도 무방</li>\n</ul>\n<h1 id=\"java의-실행과정\" style=\"position:relative;\"><a href=\"#java%EC%9D%98-%EC%8B%A4%ED%96%89%EA%B3%BC%EC%A0%95\" aria-label=\"java의 실행과정 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Java의 실행과정</h1>\n<ol>\n<li>\n<p>java 파일은 javac(java compiler, gcc 자바 버전) 바이트코드로 쓰여진 .class 파일로 <strong>컴파일</strong>됨</p>\n<ul>\n<li>바이트코드는 JVM이 이해할 수 있는 자바 소스 코드</li>\n<li>JVM만 있으면 어떤 OS에서도 실행가능하다</li>\n<li>\n<p>OS마다 맥용 JVM, 리눅스용 JVM이 있다는 뜻</p>\n<p>= JVM은 OS 종속적이지만, 자바는 OS에 비 종속적이다!</p>\n</li>\n</ul>\n</li>\n</ol>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 549px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 92.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAIAAADUsmlHAAAACXBIWXMAAAsSAAALEgHS3X78AAACa0lEQVQ4y42S207bQBCG/XYVKX2DqlIv+jJIlSrUi0ot4qLKDRTRAkIByrElBBICEYH4QOwkjmM7Byfx+rDeY9epVCEClP/C2p2ZTzO/dyR+TxTToD9020PH7LUN8fXsVjDo8GjIpyRNwQjXT9r5Vft0zTr5bhV+GEffBucbzFUmafYkzDnxXTa2edj1GjdJ3xQHOrJoNHpG54kQZQnlds8DMYoJp/xhPQAniHh+MhiMZeVW1Qw/gJ4fE0r/A/81BCJcMcbHFWPzsLy+XzyTncu6F0J03/FjY+sOyBUbywfy0n5tq9TUO6Np8lFYVBLKLWfg+RHChD/TM2MMI0Jw6rBjdWAUiwPGVASfggWWPjNhDc3KHxXLZ9XC73KlrBwfFa8u1GE/uFv2SGfKjFqnWtTkC6NSUGrn9evS7U1J79ujqR25A2OMkRAWHsXchDLq+z6EkFKKCU6zkwKRug8HAej2XIyTOI4FAGOIUNJumyAA6WWiBMIgDDq29W94SXRAJPCGrm5oCIvnBOkUBBIaNVv1btdGJEQEpstDQpgA3VB94CUYEEokQpK6W7jSd/OXa9XmXqNbFnV+5MjWYamWO6tu1qz9wbglgpZXvW7u5SvrlfrPW+cYoUgS7SMGzV5LbakhC0GS/lXMCCDA7JuqqQIKIEnXK8RxwAK5KVueFZBQTC5xZZvLufHpSvcwy5UddrPBvCbXdrmSA8WV3q8sV7eZiLuySHFtxzn4Gp6vcnWLKjsSX3o7/PhCmZvR32ec+QxbeIlrObb8jnyZaX/IWPOzdCFDsq9JKcsXX8WfZ7W5mdGnV3xxNsm++QMqMuwJJbuNmwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%204.png\"\n        title=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%204.png\"\n        src=\"/static/bf2a97e6329fc361cfa03e2a8875aeaf/928ea/200816-5.png\"\n        srcset=\"/static/bf2a97e6329fc361cfa03e2a8875aeaf/5a46d/200816-5.png 300w,\n/static/bf2a97e6329fc361cfa03e2a8875aeaf/928ea/200816-5.png 549w\"\n        sizes=\"(max-width: 549px) 100vw, 549px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<aside>\n💡 JVM(Java Virtual **Machine**)도 기계어를 읽는 **기계**다\n기계어가 지칭하는 기계가 꼭 하드웨어일 필요는 없다.\n</aside>\n<ol start=\"2\">\n<li>자바의 런타임 과정에서 자바 바이트코드와 라이브러리는 JVM의 클래스 로더에 의해 묶인다(일종의 링커?)</li>\n<li>자바 인터프리터와 JIT Compiler로 자바 바이트코드를 명령어 단위로 읽어서 실행함</li>\n<li>인터프리터의 속도가 느리다는 단점을 보완하기 위해 추후에 등장한 것이 JIT Compiler</li>\n<li>이 둘의 적절한 협업으로 Execution Engine의 성능이 향상된다</li>\n<li>JVM이 OS로부터 할당받은 메모리공간에서 자바가 실행된다!</li>\n</ol>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 800px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 46%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsSAAALEgHS3X78AAABM0lEQVQoz5VRa2+DMAzk//8xJD5M1TYhVTC6lhZIwiNA0aA8brG7tFXpl51kmVzs4+w4P02L4niCTjOo7z10lqE8JVC7Pfr2jP/CqYoSaRwjOx6RHg6QSYLECB+CELlUaJoGdV3fQmuNsixXvL1zhBSsPE4TpnnmvJizNg1932MaRwyXCy4mRvN97joIITCb2mEYmKdM56Io4CilXlonBySwwjyxw1cglzdB64DysiwsWNUaeaURJBVOeYSdiPGxU0iF5J7OuJVSsjMCj5znOVuOoghhGGK73fIFFbdtiy/D+0GEt3cPm88N9okA9RB834fneXBdlzXIhEN/IEy0w79Yj7yYHS3XOsNZR5TtI1Etj2wFacznHdL417s7T06s4DN45EdBG2vBO/8oSC9LPGUr+AtJJLdS4tCYeQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%205.png\"\n        title=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%205.png\"\n        src=\"/static/c74f9fd0eab2157b4cd5d57cef3c268f/5a190/200816-6.png\"\n        srcset=\"/static/c74f9fd0eab2157b4cd5d57cef3c268f/5a46d/200816-6.png 300w,\n/static/c74f9fd0eab2157b4cd5d57cef3c268f/0a47e/200816-6.png 600w,\n/static/c74f9fd0eab2157b4cd5d57cef3c268f/5a190/200816-6.png 800w\"\n        sizes=\"(max-width: 800px) 100vw, 800px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 234px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 92.3076923076923%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAAsSAAALEgHS3X78AAAEXUlEQVQ4y02U228UZRjG9y8wGk1M1MT4Fxj1xgQTueFwo4mRyJWJEYWEqKiVMwRrsZFyPrQgUKAt5dgtlNIDbSk9cChtgba73fPsebfdmdnZmZ3tdqEtP7+Z5cKLZ753nnnfZ5953sk6Cg4HxU8+prh8OcXVqyi+8Tqx2nq8JvjiGv60gTueo3U0ybWRBDfGkjaco+XT4m6Np/Cl87giCo7YmSZSV9tI3uwm6ewg2Xid6JSElFtEkovEsyUmEybfnHSx6vAEmy4H2NMW5uCdOL9eCbDi0ATrzk8TkucJiB93eAsglSAmELWwIGAsEleLRNV5Iso8nlSBQ3ei/H07TF1/gtP9URqH45y6l6Cq3eLitqAvpePwx7NIMyaNQ3Hq78U4PxCj+WGKM4MJ+qazJLQSYSE6oz8vI7+AP6HiS2RJGy8EVyKVKxFRS/iSlqCwGcoUWd/gYev1ENudIeEkwnfnPNT1hpBSKpNhmYmwYsMVyzLijjIl8pKUEv7ZOQICtqDl0JcybAfdLsVGj1u10fYsw1hYt1/byjIpnCa0eVL6C7EshWBKE/XCK/7/Dl8JDvs1IaQw4M1y11MWnYjniQlBy0H3lELXlCyeabSPJ2gbE5F4snROyvSKOUujnKFYtyRuvj/v4csTLqo7ovYmP695yoX7KTIis6cxkzViy2tOukUkEntvR6nujFF5K2LPWLNBuWR/Yg6/CDeSznGsK8C+W37q+4Kc6glS2eqjZyLNrJoXC8hxsCPA3hte6nokTveFOHc3KE6JPS0ejovZsNCwluXIhH0syGGW1Chko+jRaWYCk+jSBEpwAlmy7su1HvOgSZOk3CPkE/7yjBqxz0U5giJ6Hdal9KgZc+AshQfNFO43offUUnD3Yz5pJ99bi9p3lnRXHYbgzfE25n1DFOz+i5jDjZhDDZQeNJANTQqHITda1TKylZ9iXqrAOLce+ae3MXtPYFz+A3nDaxi1azHrf0Td+CaZf9eRvn0UZdN76Ke+Jd+wkWzVZ2i7P0LxPcEhh6YxnbvEcAWKswq99U9y9T8wN9aKee8Mev06tNZKVOdfGBc2oHcfQx+9YfO5aztQb1ajN/2MeXUzqojGoYS9vMylWDIyyBEv80qcpbzMgpYUEHxeoTAbQUsEeCn4xVyaJfHM6rd6tZiPRUPmpZ4mG3YLhyLD4uBZzO7DZG7WYHQdtut8VxmF7iNo7ftR2moo9Bwnf+eoDavWOw8hC94UfcX+k6hBK8OgC23vMmSRj7rpXZSKD9D2rcA4sBpj/wpyNStFvaqMI19gHP8K/cBKcse+RvntfZRf3iGz8S2yuz5E9ooMFbGUuY5/7AUY17bZyDt3M3txM+mmCrJXtiFf2kqmeQszjb+Legvq5S3kW3ZSaNnBnHMncy3bed5ZTU6awjEr+XieCVPMxJjPRG2UBNyjw4wO9jI1MsTko0G7fjxgoQfv+EMW1AQJ7zNcj4cIu8bFf+hjwlPj/Af+jLL3nOf7OAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%206.png\"\n        title=\"200716%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7%20%E1%84%89%E1%85%B5%E1%86%AF%E1%84%92%E1%85%A2%E1%86%BC%2071d799cf76294c2ea084bc4443b22495/Untitled%206.png\"\n        src=\"/static/41313b906283047b35ddd223487566a0/7235c/200816-7.png\"\n        srcset=\"/static/41313b906283047b35ddd223487566a0/7235c/200816-7.png 234w\"\n        sizes=\"(max-width: 234px) 100vw, 234px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>","frontmatter":{"title":"프로그램 실행","date":"August 16, 2020"}}},"pageContext":{"slug":"/language/200816-프로그램-실행/","previous":{"fields":{"slug":"/infra/200525-NGINX/"},"frontmatter":{"title":"NGINX"}},"next":{"fields":{"slug":"/web/201026-Babel/"},"frontmatter":{"title":"Babel"}}}}}