{"id":5131,"date":"2022-11-23T21:38:00","date_gmt":"2022-11-23T12:38:00","guid":{"rendered":"https:\/\/terzeron.com\/?p=5131"},"modified":"2022-11-23T21:38:00","modified_gmt":"2022-11-23T12:38:00","slug":"os-%ed%98%b8%ed%99%98%ec%84%b1-%ec%82%bd%ec%a7%88%ec%9d%98-%ea%b8%b0%eb%a1%9d","status":"publish","type":"post","link":"https:\/\/terzeron.com\/?p=5131","title":{"rendered":"OS \ud638\ud658\uc131 \uc0bd\uc9c8\uc758 \uae30\ub85d"},"content":{"rendered":"\n<p>1. \ud30c\uc77c \uc2dc\uc2a4\ud15c\uc758 \ubcc0\ud654\ub97c \ucd94\uc801\ud558\ub294 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\ub824\uace0 \ud588\uc74c<\/p>\n\n\n\n<p>2. inotify \uae30\ubc18\uc758 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucd5c\uc885\uc801\uc73c\ub85c \uc120\ud0dd\ud568 (\uadf8\ub098\ub9c8 PoC\ub97c \ud1b5\uacfc\ud55c \uba87 \uc548 \ub418\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc600\uc74c)<\/p>\n\n\n\n<p>3. \uc6d0\ub798 inotify \uae30\ub2a5\uc740 \ub9ac\ub205\uc2a4 \ucee4\ub110\uc5d0\uc11c \uc9c0\uc6d0\ud558\ub294 \uae30\ub2a5\uc774\ub77c \ub9e5\uc5d0\uc11c\ub294 \uc544\uc608 C \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub3d9\uc801 \ub85c\ub529\ud558\ub2e4\uac00 \uc2e4\ud328\ud568. \uc8fc\uc704\uc5d0 \uc870\uc5b8\uc744 \uad6c\ud574\ubcf4\ub2c8 \ub9ac\ub205\uc2a4 \ucee8\ud14c\uc774\ub108\ub97c \uc774\uc6a9\ud574\uc11c \uac1c\ubc1c\ud558\ub294 \uac8c \uc88b\uaca0\ub2e4\uace0 \ud568<\/p>\n\n\n\n<p>4. x86_64 \ub9ac\ub205\uc2a4 \uc11c\ubc84\uc5d0 \ubc30\ud3ec\ud560 \uc608\uc815\uc774\ub77c\uc11c \uc2e4\ub9ac\ucf58 \ub9e5\ubd81 \ud658\uacbd\uc5d0 \ud798\ub4e4\uac8c \uac1c\ubc1c\uc6a9 amd64 \ub9ac\ub205\uc2a4 \ucee8\ud14c\uc774\ub108\ub97c \ub9c8\ub828\ud588\uc74c<\/p>\n\n\n\n<p>5. <a><\/a>inotify \uae30\ub2a5\uc744 \uc368\ubcf4\ub824\uace0 \ud558\ub2c8 \uc548 \ub428. \uc774\uc0c1\ud574\uc11c \uac80\uc0c9\ud574\ubcf4\ub2c8 (\ub9e5\uc6a9 \ub3c4\ucee4\ub294 QEMU \uc704\uc5d0\uc11c \uac00\uc0c1\ud654\ub41c \ub9ac\ub205\uc2a4 \uc704\uc5d0 \uc124\uce58\ub418\ub294 \uac74\ub370) QEMU\uac00 inotify \uae30\ub2a5\uc744 \uc9c0\uc6d0\ud574\uc8fc\uc9c0 \uc54a\ub294\ub2e4\uace0 \ud568<\/p>\n\n\n\n<p>6. \uacb0\uad6d \uc2e4\ub9ac\ucf58 \ub9e5\ubd81 \uac1c\ubc1c \ud658\uacbd\uc5d0\uc11c\ub294 inotify \uae30\ub2a5\uc744 \ud14c\uc2a4\ud2b8\ud574\ubcfc \ubc29\ubc95\uc774 \uc5c6\uc74c<\/p>\n\n\n\n<p>6.5 \ub9e5\uc5d0\uc11c\ub294 \uc6d0\ub798 inotify \ub300\uc2e0 kqueue \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc784<\/p>\n\n\n\n<p>7. inotify\uc640 kqueue\ub97c \uc544\uc6b0\ub974\ub294 C \ub77c\uc774\ube0c\ub7ec\ub9ac\ub3c4 \uc788\uc9c0\ub9cc \uc774\uac78 \ud30c\uc774\uc36c\uc6a9\uc73c\ub85c \ub9cc\ub4e0 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \ubc84\uadf8\uac00 \uc788\uc74c. \uc6d0 \uc800\uc790\uc5d0\uac8c \ud328\uce58 \uc81c\uc548\uc744 \ud588\uc73c\ub098 \ubb35\ubb35\ubd80\ub2f5<\/p>\n\n\n\n<p>8. 7\ubc88\uc774 \ud574\uacb0\ub41c\ub2e4\uace0 \ud558\ub354\ub77c\ub3c4 \ub9e5\ubd81 \uac1c\ubc1c\ud658\uacbd\uc5d0\uc11c \ub9ac\ub205\uc2a4 \ucee4\ub110 \uc77c\ubd80 \uae30\ub2a5\uc744 \ud14c\uc2a4\ud2b8\ud558\ub294 \uac74 \uc560\ucd08\uc5d0 \ubd88\uac00\ub2a5\ud55c \ubb38\uc81c\uc600\uc74c\uc744 \uae68\ub2ec\uc74c<\/p>\n\n\n\n<p>9. \ucee8\ud14c\uc774\ub108\ub77c\ub294 \uac74 \uc6d0\ub798 \ubc30\ud3ec\uc6a9\uc774\ub77c, \uac1c\ubc1c\uc6a9\uc73c\ub85c dockerfile \ube4c\ub4dc\ub97c \ud574\ubcf4\ub2c8 \uac1c\ubc1c lifecycle\ud558\uace0 \ub2f9\ucdcc \ub9de\uc9c8 \uc54a\uc74c<\/p>\n\n\n\n<p>9.5 \uc77c\ubc18\uc801\uc73c\ub85c \uac1c\ubc1c\uc744 \ud558\ub824\uba74 hot reload\uac00 \ub418\uc5b4\uc57c \ud558\ub294\ub370 \uadf8\ub7ec\ub824\uba74 \ud504\ub85c\uc81d\ud2b8 \ub514\ub809\ud1a0\ub9ac \ubcfc\ub968\uc744 \uacf5\uc720\ud574\uc57c \ud558\uace0 \uc678\ubd80 \uc758\uc874\uc131 \uc124\uce58\ub97c \ud574\uc57c \ud558\ub294\ub370 \uc678\ubd80 \uc758\uc874\uc131\uc740 requirements.txt\ub098 package.json \ub4f1\uc758 \ud504\ub85c\uc81d\ud2b8 \ud30c\uc77c\uc744 \uc774\uc6a9\ud574\uc57c \ud568. \uadf8\ub7f0\ub370 docker build \ub2e8\uacc4\uc5d0\uc11c\ub294 \uc544\uc9c1 \ubcfc\ub968 \uacf5\uc720\uac00 \uc548 \ub418\uc5b4 \uc788\uace0 docker run \ub2e8\uacc4\uc5d0 \ub4e4\uc5b4\uac00\uc57c \ubcfc\ub968 \uacf5\uc720\uac00 \ub428. (COPY \uba85\ub839\uc73c\ub85c \uc77c\ubd80 \ud574\uacb0\ud560 \uc218 \uc788\uae34 \ud568)<\/p>\n\n\n\n<p>10. \uc774\ub7f0 \uc800\ub7f0 \uc774\uc720\ub85c \ub9ac\ub205\uc2a4 \ucee4\ub110\uacfc \uad00\ub828\uc788\ub294 \uae30\ub2a5\uc740 \uac1c\ubc1c \ud658\uacbd\uc5d0\uc11c\uc758 \ud14c\uc2a4\ud2b8\ub294 \ud3ec\uae30\ud574\uace0 \uc11c\ube44\uc2a4 \ud658\uacbd\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ub97c \ud574\uc57c \ud588\uc74c<\/p>\n\n\n\n<p>11. C \ubc14\uc774\ub108\ub9ac \uac1c\ubc1c\ub3c4 \ube44\uc2b7\ud558\uba74\uc11c \uc57d\uac04 \ub2e4\ub978 \ubb38\uc81c\uac00 \uc788\ub294\ub370, \uc2e4\ub9ac\ucf58 \ub9e5\ubd81\uc5d0\uc11c x86_64 \ub9ac\ub205\uc2a4 \ubc14\uc774\ub108\ub9ac\ub97c \uac1c\ubc1c\ud574\uc11c \ucee8\ud14c\uc774\ub108\ub85c \ubc30\ud3ec\ud558\ub824\uba74 \uc0c1\ub2f9\ud788 \uc5b4\ub824\uc6c0 (docker\uac00 \uba40\ud2f0 \uc544\ud0a4\ud14d\ucc98 \ube4c\ub4dc\ub97c \uc9c0\uc6d0\ud558\uae34 \ud568)<\/p>\n\n\n\n<p>11.5. \uc11c\ube44\uc2a4\uc6a9 \uc11c\ubc84\ub4e4\uc774 arm64 \uc544\ud0a4\ud14d\ucc98\ub97c \ucc44\ud0dd\ud558\uba74 \uc2e4\ub9ac\ucf58 \ub9e5\ubd81 \ud658\uacbd\uacfc \uc11c\ube44\uc2a4\uc6a9 \uc11c\ubc84\uc758 \ud638\ud658\uc131\uc774 \ub192\uaca0\uc9c0\ub9cc, \uadf8\uac8c \ud604\uc2e4\ud654\ub418\uae30 \uc804\uc5d0 \ub0b4\uac00 \uc5c5\uacc4\uc5d0\uc11c \uc740\ud1f4\ud560 \uac83 \uac19\uc74c (nvidia\uc758 ARM \uc778\uc218 \uc2e4\ud328\uac00 \ucd5c\uc18c \uba87 \ub144\uc744 \uc9c0\uc5f0\uc2dc\ucf30\uc74c)<\/p>\n\n\n\n<p>12. \uc624\ud508\uc18c\uc2a4 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc5ec\ub7ec \uac00\uc9c0 PoC \ud558\ub2e4\ubcf4\uba74 \uc624\ud508\uc18c\uc2a4 \uc0dd\ud0dc\uacc4\ub294 \ucc38\uc73c\ub85c \ucde8\uc57d\ud558\ub2e4\ub294 \uac78 \ub290\ub07c\uac8c \ub428. \uc8fc\uc694 \ud504\ub808\uc784\uc6cd\uc744 \ucd5c\uc2e0 \ubc84\uc804\uc73c\ub85c \uc0ac\uc6a9\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\uba74 \uc624\ud508\uc18c\uc2a4 \uc758\uc874\uc131\ub4e4\uc774 \ub300\uc751\uc774 \ub2a6\uc5b4\uc11c \uc81c\ub300\ub85c \ub3d9\uc791\ud558\uc9c0 \uc54a\ub294 \ub9ce\uc740 \ubb38\uc81c\uc810\uc744 \ubc1c\uacac\ud568 (ex. react 18\uc744 \uc0ac\uc6a9\ud558\uba74 16\uc5d0\uc11c \uc798 \ub3d9\uc791\ud558\ub358 facebook oauth \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ub3d9\uc791\ud558\uc9c0 \uc54a\ub294\ub2e4\ub4e0\uac00)<\/p>\n\n\n\n<p>12.5 \uc624\ud508\uc18c\uc2a4\ub2c8\uae4c (PR\ubcf4\ub0b4\uae30 \uc804\uc5d0) \ubc84\uadf8 \uc81c\ubcf4\uc640 \ud328\uce58 \uc81c\uc548\uc744 \ud574\ubcf4\uae34 \ud558\ub294\ub370, \uc798 \ubc1b\uc544\uc8fc\ub294 \uc6d0 \uc800\uc790\ub4e4\ub3c4 \uc77c\ubd80 \uc788\uc9c0\ub9cc \ub300\ubd80\ubd84\uc740 \ub300\ub2f5\uc870\ucc28 \uc5c6\uac70\ub098, \uac70\uc808\ud558\uac70\ub098, \ubc1b\uc544\uc8fc\uae34 \ud558\ub294\ub370 \ube60\ub974\uac8c \ub9b4\ub9ac\uc988\ub97c \uc798 \uc548 \ud574\uc90c<\/p>\n<div class=\"fb-background-color\">\n\t\t\t  <div \n\t\t\t  \tclass = \"fb-comments\" \n\t\t\t  \tdata-href = \"https:\/\/terzeron.com\/?p=5131\"\n\t\t\t  \tdata-numposts = \"100\"\n\t\t\t  \tdata-lazy = \"true\"\n\t\t\t\tdata-colorscheme = \"light\"\n\t\t\t\tdata-order-by = \"time\"\n\t\t\t\tdata-mobile=true>\n\t\t\t  <\/div><\/div>\n\t\t  <style>\n\t\t    .fb-background-color {\n\t\t\t\tbackground: #ffffff !important;\n\t\t\t}\n\t\t\t.fb_iframe_widget_fluid_desktop iframe {\n\t\t\t    width: 100% !important;\n\t\t\t}\n\t\t  <\/style>\n\t\t  ","protected":false},"excerpt":{"rendered":"<p>1. \ud30c\uc77c \uc2dc\uc2a4\ud15c\uc758 \ubcc0\ud654\ub97c \ucd94\uc801\ud558\ub294 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\ub824\uace0 \ud588\uc74c 2. inotify \uae30\ubc18\uc758 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucd5c\uc885\uc801\uc73c\ub85c \uc120\ud0dd\ud568 (\uadf8\ub098\ub9c8 PoC\ub97c \ud1b5\uacfc\ud55c \uba87 \uc548 \ub418\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc600\uc74c) 3. \uc6d0\ub798 inotify \uae30\ub2a5\uc740 \ub9ac\ub205\uc2a4 \ucee4\ub110\uc5d0\uc11c \uc9c0\uc6d0\ud558\ub294 \uae30\ub2a5\uc774\ub77c \ub9e5\uc5d0\uc11c\ub294 \uc544\uc608 C \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub3d9\uc801 \ub85c\ub529\ud558\ub2e4\uac00 \uc2e4\ud328\ud568. \uc8fc\uc704\uc5d0 \uc870\uc5b8\uc744 \uad6c\ud574\ubcf4\ub2c8 \ub9ac\ub205\uc2a4 &hellip; <a href=\"https:\/\/terzeron.com\/?p=5131\">\uacc4\uc18d \uc77d\uae30 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"categories":[13,14,9],"tags":[],"class_list":["post-5131","post","type-post","status-publish","format-standard","hentry","category-programming","category-unixlinux","category-9"],"_links":{"self":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/posts\/5131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5131"}],"version-history":[{"count":0,"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/posts\/5131\/revisions"}],"wp:attachment":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}