<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Give inspiration.</title>
    <link>https://ysld.tistory.com/</link>
    <description>대학생들의 개인 글 &amp;amp; 개인 포트폴리오 저장용 블로그.</description>
    <language>ko</language>
    <pubDate>Mon, 11 May 2026 17:13:40 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>주윤성</managingEditor>
    <image>
      <title>Give inspiration.</title>
      <url>https://tistory1.daumcdn.net/tistory/1945505/attach/8af924da301e4fd3a7f712c781a2876f</url>
      <link>https://ysld.tistory.com</link>
    </image>
    <item>
      <title>Ubuntu에서 nvidia-smi 실행시 'No devices were found' 오류 발생 해결 방법.</title>
      <link>https://ysld.tistory.com/363</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 워크스테이션을 구매하고, 그래픽카드 드라이버 설정을 하던 중 문제가 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로산 &lt;b&gt;RTX5090이 인식&lt;/b&gt;이 안되는겁니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2j3Mx/dJMcabimTk1/LcuHmAnPyfQOJMyFxqsEy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2j3Mx/dJMcabimTk1/LcuHmAnPyfQOJMyFxqsEy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2j3Mx/dJMcabimTk1/LcuHmAnPyfQOJMyFxqsEy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2j3Mx%2FdJMcabimTk1%2FLcuHmAnPyfQOJMyFxqsEy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;918&quot; height=&quot;384&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;ubuntu-drivers devices&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 명령어를 통해 나온 드라이버중, 당연히 &lt;b&gt;recommended&lt;/b&gt; 를 설치하였으나, &lt;b&gt;'nvidia-smi'&lt;/b&gt; 명령어를 통해 확인해보면 &lt;b&gt;'No devices were found'&lt;/b&gt; 라며 GPU 인식이 안되는 문제가 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저의 해결과정과, 방법을 기록해놓을테니, 비슷한 문제가 있으신 분들은 한번 따라해보시길 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 이 문제에 대해서 간단히 설명하자면 특정 NVIDIA GPU들은 리눅스 환경에서의 기본 드라이버가 아닌 open driver를 설치해야 인식한다고 하는 해외 포럼 글을 발견했습니다. (발견하기까지 정말 오래 걸렸습니다...) 2024년 이후 모델부터, 오픈소스 드라이버로 변경되면서 조금 차이가 있는 것 같다는 내용입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://askubuntu.com/questions/1553084/nvidia-smi-displays-no-devices-were-found&quot;&gt;https://askubuntu.com/questions/1553084/nvidia-smi-displays-no-devices-were-found&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1764576248114&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;nvidia-smi displays &amp;quot;No devices were found&amp;quot;&quot; data-og-description=&quot;I downloaded the NVIDIA drivers on a fresh installation of Ubuntu 24.04, but I can't get get nvidia-smi to display anything other than &amp;quot;No devices were found&amp;quot;. None of the solutions I could&quot; data-og-host=&quot;askubuntu.com&quot; data-og-source-url=&quot;https://askubuntu.com/questions/1553084/nvidia-smi-displays-no-devices-were-found&quot; data-og-url=&quot;https://askubuntu.com/questions/1553084/nvidia-smi-displays-no-devices-were-found&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cg0PPa/hyZOx5w4QE/SK5RioCRZAVVn0xrq3Wck1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://askubuntu.com/questions/1553084/nvidia-smi-displays-no-devices-were-found&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://askubuntu.com/questions/1553084/nvidia-smi-displays-no-devices-were-found&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cg0PPa/hyZOx5w4QE/SK5RioCRZAVVn0xrq3Wck1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;nvidia-smi displays &quot;No devices were found&quot;&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I downloaded the NVIDIA drivers on a fresh installation of Ubuntu 24.04, but I can't get get nvidia-smi to display anything other than &quot;No devices were found&quot;. None of the solutions I could&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;askubuntu.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 또한, recommended 버전이 아닌, 최신 드라이버의 open 버전으로 설치하니까 바로 해결이 되었습니다.&lt;/p&gt;
&lt;h1&gt;1. 기존 드라이버 삭제&lt;/h1&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;sudo apt premoce --purge nvidia-*
sudo apt autoremove&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;2. 드라이버 다시 설치 &amp;amp; 재부팅&lt;/h1&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;sudo apt install nvidia-driver-580-open #본인에게 맞는 버전으로 설치하세요.
sudo reboot

sudo apt install nvidia-cuda-toolkit #CUDA 쓰실분들만 설치&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OO2UN/dJMcaacGuO1/iD4BaebDGeAkv3QRyck9v0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OO2UN/dJMcaacGuO1/iD4BaebDGeAkv3QRyck9v0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OO2UN/dJMcaacGuO1/iD4BaebDGeAkv3QRyck9v0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOO2UN%2FdJMcaacGuO1%2FiD4BaebDGeAkv3QRyck9v0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1300&quot; height=&quot;632&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 개같이 인식되는 모습을 볼 수 있습니다.&lt;/p&gt;</description>
      <category>&amp;gt; Useful-data/도움되는 정보</category>
      <category>No devices were found 오류</category>
      <category>nvidia-smi</category>
      <category>Ubuntu GPU</category>
      <category>그래픽카드드라이버</category>
      <category>리눅스</category>
      <category>리눅스 그래픽카드 인식</category>
      <category>우분투</category>
      <category>우분투 GPU 인식</category>
      <category>우분투 그래픽카드 드라이버</category>
      <category>우분투 그래픽카드 인식</category>
      <author>주윤성</author>
      <guid isPermaLink="true">https://ysld.tistory.com/363</guid>
      <comments>https://ysld.tistory.com/363#entry363comment</comments>
      <pubDate>Mon, 1 Dec 2025 17:06:36 +0900</pubDate>
    </item>
    <item>
      <title>2D 8Bit UI pre-view</title>
      <link>https://ysld.tistory.com/361</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1581&quot; data-origin-height=&quot;893&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWs803/btsHRKWkpWD/YaS4IqNs9nLffJWs6YnpHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWs803/btsHRKWkpWD/YaS4IqNs9nLffJWs6YnpHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWs803/btsHRKWkpWD/YaS4IqNs9nLffJWs6YnpHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWs803%2FbtsHRKWkpWD%2FYaS4IqNs9nLffJWs6YnpHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1581&quot; height=&quot;893&quot; data-origin-width=&quot;1581&quot; data-origin-height=&quot;893&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메인화면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1587&quot; data-origin-height=&quot;888&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P4fa5/btsHTjo9oHl/IEvLgLsfaK8zNxyqt3mjUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P4fa5/btsHTjo9oHl/IEvLgLsfaK8zNxyqt3mjUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P4fa5/btsHTjo9oHl/IEvLgLsfaK8zNxyqt3mjUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP4fa5%2FbtsHTjo9oHl%2FIEvLgLsfaK8zNxyqt3mjUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1587&quot; height=&quot;888&quot; data-origin-width=&quot;1587&quot; data-origin-height=&quot;888&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티플레이(로비)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1595&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GojUk/btsHSrhnm0g/NrBdUZFcu5aMvqggIo7HAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GojUk/btsHSrhnm0g/NrBdUZFcu5aMvqggIo7HAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GojUk/btsHSrhnm0g/NrBdUZFcu5aMvqggIo7HAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGojUk%2FbtsHSrhnm0g%2FNrBdUZFcu5aMvqggIo7HAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1595&quot; height=&quot;894&quot; data-origin-width=&quot;1595&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티플레이(인게임 로비)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1583&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z1bjQ/btsHTJnBE8Y/Om8hdkvyr10IatEBbWcJG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z1bjQ/btsHTJnBE8Y/Om8hdkvyr10IatEBbWcJG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z1bjQ/btsHTJnBE8Y/Om8hdkvyr10IatEBbWcJG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz1bjQ%2FbtsHTJnBE8Y%2FOm8hdkvyr10IatEBbWcJG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1583&quot; height=&quot;884&quot; data-origin-width=&quot;1583&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인게임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과화면 및 기타&amp;nbsp; ui는, 업데이트 예정.&lt;/p&gt;</description>
      <category>Study/Unity</category>
      <author>주윤성</author>
      <guid isPermaLink="true">https://ysld.tistory.com/361</guid>
      <comments>https://ysld.tistory.com/361#entry361comment</comments>
      <pubDate>Mon, 10 Jun 2024 01:48:12 +0900</pubDate>
    </item>
    <item>
      <title>운영체제 관련 용어 정리 요약본.</title>
      <link>https://ysld.tistory.com/352</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;운영체제(Operating system)에서 주로 다루는 관련용어를 요약한 문서입니다.&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주요 개념&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;*프로세스(Process)&lt;/b&gt; : 실행중인 프로그램을 의미. 운영체제와 상호작용함. 스레드가 모여있는 컨테이너.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;*프로세스 ID (PID)&lt;/b&gt; : 각각의 프로세스들을 구분하는 고유 식별자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;*프로세스 오버레이(Process overlay)&lt;/b&gt; : 현재 실행중인 프로세스 주소 공간에 새로운 응용프로그램을 적재해 실행 시키는 방법.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;*스레드(Thread)&lt;/b&gt; : 하나의 프로세스 내에서 실행되는 실행, 스케줄링의 단위. 스레드가 모이면, 프로세스가 됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;*멀티스레드(Multi-thread)&lt;/b&gt; : 하나의 프로세스 내에서 여러개의 스레드가 동시에 실행되는것. 멀티스레드는 각각의 스레드의 작업에 영향을 주지 않고 동시에 작업을 할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;*스레드 동기화&lt;/b&gt; : 공유데이터에 접근하는 스레드가 충돌이 없도록 상호협력하는것. 공유데이터에 대한 다수의 스레드 접근으로, 공유데이터가 훼손되는걸 막기위해 만든 해결책.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 운영체제&lt;/b&gt; : 컴퓨터 사용자와, 컴퓨터 하드웨어 사이의 중계역할을 해주며, 프로그램의 실행을 관리, 제어하는 시스템 소프트웨어이다. 운영체제는 컴퓨터 자체가 아니며, 실체가 있는 소프트웨어로, 컴퓨터가 켜질 때 가장 먼저 메모리에 적재되어 실행되며, 이후 모든 프로그램의 실행을 제어하고, 사용자 요청을 처리해주는 컴퓨터 자원을 독점적으로 관리하는 특별한 소프트웨어이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 폰노이만 프로그래밍 내장방식&lt;/b&gt; : CPU와 메모리, 소프트웨어와 하드웨어를 분리했다는 것에 의미가있는 프로그래밍 방식으로, 실행 할 프로그램을 메모리에 담아 CPU가 실행하는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 일괄처리(배치) 시스템(Batch system)&lt;/b&gt; : batch 운영체제는, 자동으로 테이프 저장장치에 대기중인 프로그램을 한 번에 하나씩 적재하고 실행하는 시스템 유형이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 다중 프로그래밍 시스템&lt;/b&gt; : 여러 프로그램들을 메모리에 올려놓고, CPU가 한 프로그램을 실행하다 입출력이 발생하면, 입출력이 완료될 때 까지 다른 프로그램을 실행하는 방식으로, CPU의 유휴시간(노는시간)을 줄이는 기법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&amp;gt; 배치 일괄처리 시스템과 다중 프로그래밍 시스템은, 컴퓨터간의 즉각적인 대응이 불가능하다는 단점이 있음.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. 시 분할 시스템&lt;/b&gt; : 여러 프로세스가 CPU 사용시간을 분할해 나누어쓰는 기법으로, 컴퓨터가 대화식으로 바뀜에 따라, 배치 일괄처리 시스템과, 다중 프로그래밍 시스템은 컴퓨터간의 즉각적인 대응이 불가능한 점을 개선하기 위해 만들어진 기법.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6. 메모리 계층 구조&lt;/b&gt; : 컴퓨터 시스템의 메모리를 계층적으로 구성하여 성능과 비용을 균형적으로 조절하는 방법. 캐시메모리, 주기억장치, 보조기억장치로 이루어져있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;7. 명령어&lt;/b&gt; : CPU에서 실행될 수 있는 기계어 명령어. 운영체제도 마찬가지로, CPU가 실행할 수 있는 명령어를 발생시켜 시스템 동작을 제어함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;8. 레지스터&lt;/b&gt; : CPU 내부에 존재하며, 데이터나 명령어를 일시적으로 저장하는 기억장치. CPU 고속 연산을 위해 적은 용량으로 많은 개수을 필요로함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;9. 프로그램 카운터&lt;/b&gt; : CPU 내부 레지스터중 하나. 다음에 실행 될 명령어 주소를 저장하는 역할. 운영체제는, 이 프로그램 카운터를 통해 다음에 실행 될 프로세스를 결정함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;10. 명령어 사이클&lt;/b&gt; : CPU에서 명령어를 실행하는 단계적 프로세스.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;11. 프로세스 4대공간&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 코드 영역 : 실행 할 프로그램의 코드가 저장되는 영역, 프로그램의 명령어가 저장됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 데이터 영역 : 프로그램에서 사용하는 전역 변수, 정적 변수가 저장되는 공간.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp; *전역변수 : 프로그램 전체에서 접근이 가능한 변수로, 프로그램이 시작될 떄 초기화되며 프로그램이 종료될 때 까지 유지됨. 프로그램 전체에서 동일한 값이 유지되어야 할 때 사용됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 스택 영역 : 함수 호출시 생성되는 지역변수, 매개변수가 저장되는 공간. 함수의 호출과 반환시 필요한 정보를 저장하기 위해 사용됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 힙 영역 : 동적으로 할당된 메모리가 저장되는 영역. 프로그램 실행 중 필요한 메모리를 동적으로 할당함 &amp;gt; 사용후 반드시 반환해야함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;12. 컨텍스트 스위칭&lt;/b&gt; : 멀티태스킹을 구현하기 위한 기술 중 하나. CPU가 실행하는 프로세스를 바꾸기 위해, 이전 프로세스의 상태를 저장하고 새로운 프로세스의 상태를 불러오는 과정으로, 스레드와 프로세스간의 전환이 이루어짐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 컨텍스트 스위칭 오버헤드 : CPU가 현재 실행중인 프로세스(스레드)를 중지하고, 새로운 프로세스(스레드)를 실행하는것으로, 현재 실행중인 프로세스(스레드)의 상태를 저장하고, 새로 실행할 프로세스(스레드)의 상태를 복원(불러오는)하는것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 스레드 컨텍스트 스위칭 : 현재 실행중인 스레드를 중단시키고, 다른 스레드에게 CPU를 할당.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 디스패처 : 컨텍스트 스위칭을 실행하는 커널 코드. 스케줄러에 의해 선택된 스레드를 CPU가 실행하게 하는 기법으로, 커널&amp;lt;-&amp;gt;사용자 간의 전환이 이루어짐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;13. 커널&lt;/b&gt; : 하드웨어와 응용프로그램 사이를 연결하는 인터페이스. 시스템 자원을 관리하고, 응용프로그램 실행을 제어함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 커널 레벨 스레드 : 응용프로그램이 시스템 호출을 통해 커널레벨 스레드 생성 &amp;gt; 커널에 의해 스케줄됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 사용자 레벨 스레드 : 응용프로그램이 라이브러리 함수 호출을 통해 사용자 레벨 스레드 생성 &amp;gt; 스레드 라이브러리에 의해 스케줄됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;14. 장치관리자&lt;/b&gt; : 컴퓨터 시스템장치를 제어하는 소프트웨어. 운영체제의 일부로 제공되며 시스템 시작시 자동으로 로드됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;15. 인터럽트&lt;/b&gt; :&amp;nbsp; CPU가 프로그램을 실행하고 있을 때, 입출력 요청과 같은 다른 이벤트가 발생하여 처리할 작업이 있는 경우, 실행중인 작업을 일시정지하고, 해당 이벤트를 우선 처리하는것으로, 시스템 성능 최적화 및 효율을 높일 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 인터럽트 서비스 루틴 : 인터럽트를 처리하는 명령어의 집함으로, 일반적으로 장치관리자 내에 포함되어있음. 커널이 적재된 메모리 영역에 있는 코드임.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;16. 동적 할당&lt;/b&gt; : 프로그램 실행 중에 메모리를 할당하는 방식. 프로그램이 실행될 때 운영체제가 프로그램이 필요로하는 메모리 만큼 동적으로 할당함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;17. 함수 호출&lt;/b&gt; : 프로그래밍 언어에서, 함수를 호출하고 반환하는 과정. 스택(Stack)을 관리하는 기능을 제공함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;18 .시스템 호출&lt;/b&gt; : 운영체제의 서비스를 받기 위해 호출하는 인터페이스. 프로세스가 운영체제의 서비스를 받기위해 필요로함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;19. 논리적 주소&lt;/b&gt; : 프로세스가 실제로 참조하는 주소. &lt;u&gt;프로세스가 직접적으로 접근할 수 있는 가상메모리&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;20. 물리적 주소&lt;/b&gt; : 실제 메모리에 데이터가 저장되는 물리적 위치. &lt;u&gt;CPU가 직접 접근할 수 있는 주소.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;21. 프로세스 테이블&lt;/b&gt; : 현재 실행중인 모든 프로세스에대한 정보를 유지하는 데이터 구조.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- PID : 각각의 프로세스를 구별하는 고유 식별자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 상태 : 현재 프로세스가 어떤 상태인지 나타냄 (실행중, 일시정지, 종료됨, 재개됨 등)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&amp;nbsp; 우선순위 : 스케줄링 알고리즘에서 실행 우선순위를 결정하기 위한 값.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 레지스터 상태 : CPU 내부 레지스터에 저장된 프로세스 정보.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 입출력 상태 : 프로세스가 사용하는 입출력장치에 관한 정보.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;22. 프로세스 제어 블록(PCB)&lt;/b&gt; : 각각의 프로세스에 대한 정보를 담고있는 자료구조. 프로세스에 대한 모든 정보를 저장하며, 프로세스를 추적, 제어하는데 사용됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;23. 프로세스 생명주기&lt;/b&gt; : Ready &amp;lt; &amp;gt; Running &amp;gt; Blocked &amp;gt; Ready&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Running 중간에 입출력 발생시, Blocked상태가 되며, 할당 받은 시간 이내 작업이 안끝나면 다시 Ready상태로 돌아가는 주기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;24. 프로세스 상태 전이&lt;/b&gt; : 실행중인 프로세스가 다양한 상태를 거치며 시스템 자원을 사용하는 과정을 말함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;25. 유휴상태(Idle)&lt;/b&gt; : CPU가 아무런 작업을 하지 않고 대기하는 상태.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;26. 부모-자식 프로세스&lt;/b&gt; : 부모프로세스가 자식프로세스를 생성하고, 자식프로세스는 부모프로세스에게서 권한, 자원을 상속받아 사용 및 실행됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;27. 좀비 프로세스&lt;/b&gt; : 부모프로세스가 아직 종료코드를 읽지 않은 자식 프로세스를 말함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;28. 고아 프로세스&lt;/b&gt; : 부모프로세스가 먼저 종료되버린 자식 프로세스를 발함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;29. CPU Bound Job(CPU집중프로세스)&lt;/b&gt; : 대부분의 시간을 연산작업을 하는데 보내는 프로세스. CPU속도가 성능을 좌우함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;30. I/O Bound Job :&lt;/b&gt; 대부분의 시간을 입/출력 작업에 시간을 보내는 프로세스. I/O 장치의 시스템 속도가 성능을 좌우함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;31. 스레드 제어블록(TCB)&lt;/b&gt; : 각 스레드마다 하나씩 존재하며, 운영체제가 각 스레드를 관리하기위해 유지하는 정보의 집합.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;32. 작업 스케줄링&lt;/b&gt; : 일괄처리시스템(Batch system)에서 대기중이 배치 작업중 메모리에 적재할 작업을 결정하는것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;33. CPU 스케줄링&lt;/b&gt; : 프로세스, 스레드중 하나를 선택해 CPU에 할당하는 것. 오늘날은 스레드중 하나를 선택하는 스레드 스케줄링임.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;34. CPU burst&lt;/b&gt; : 프로그램 실행중 CPU의 연산 작업이 연속적으로 발생하는 상황.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;35. I/O busrt&lt;/b&gt; : 프로그램 실행 중 I/O장치의 입출력이 이루어지는 상황.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;36. Time-slice&lt;/b&gt; : 스케줄된 스레드에게 한 번에 할당하는 CPU 시간.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 커널이 스케줄을 단행하는 주기 시간이라고 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;37. 비선점 방식&lt;/b&gt; : 프로세스가 CPU를 점유하고 있는동안 다른 프로세스가 스레드가 CPU를 강제로 뺏을 수 없는 방식. CPU를 점유중인 프로세스(스레드)가 CPU를 내놓기 전 까지 계속 실행됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;38. 선점 방식&lt;/b&gt; : 프로세스가 CPU를 점유하고 있는동안, 다른 프로세스(스레드)가 CPU를 강제로 뺏어올 수 있는 방식. 선점방식 운영체제는, 우선순위, 시간할당량에 따라 프로세스(스레드)를 선택함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;39. 기아&lt;/b&gt; : 스레드가 스케줄링되지못하고 ,계속 준비리스트에 있는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;40. 임계구역&lt;/b&gt; : 공유데이터에 접근하는 프로그램 코드들.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 임계구역 진입 코드 : 상호배제를 위해 필요한 코드. 임계구역이 실행중인 스레드가 있는지 검사함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;41. 상호배제&lt;/b&gt; : 임계구역이 오직 한 스레드만 베타적, 독점적으로 사용되도록 하는 기술.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;42. 원자코드&lt;/b&gt; : 일련의 명령문을 모두 실행하거나, 전혀 실행하지 않은 단 하나의 단위로 실행되는 코드로, 실행 중 다른 프로세스나 스레드의 상호작용에 대해 분리되어 안전하게 실행됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;43. 뮤택스&lt;/b&gt; : 잠금/열림 중 하나의 상태를 갖는 Lock변수를 이용해 한 스레드만 임계구역에 진입시키고, 다른 스레드는 큐에 대기시키는 것. (Sleep-waiting lock 기법)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;44. 스핀락&lt;/b&gt; : 뮤택스와 유사하지만, lock을 소유한 스레드만 자원을 베타적으로 사용할 수 있음. (동기화 기법, Busy waiting lock 기법)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;45. 세마포어&lt;/b&gt; : 멀티 스레드 사이에서의 공유자원에 대한 동시접근을 막는 기법. (동기화 기법)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Binary semaphore(이진세마포어) : 카운터 값이 0,1인 세마포어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Counter semaphore(카운터 세마포어) : 카운터 값이 이진세마포어보다 큰 세마포어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;46. 뮤택스와 세마포어의 차이점&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 뮤택스는 소유가능하며, 뮤택스를 소유한 스레드만 뮤택스를 해제할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 세마포어는 소유가 불가능하며, 세마포어를 소유하지 않은 스레드도 세마포어 해제가 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;47. 우선순위&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-우선순위 역전 : 스레드 동기화로인해 높은 순위의 스레드가 낮은 순위의 스레드보다 늦게 스케줄링 되는 현상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-우선순위 올림 : 스레드가 공유자원을 소유하게 될 때, 스레드 우선순위를 미리 정해진 높은 우선순위로 옮기는 것으로 우선순위가 선점되지않고, 빨리 실행되도록 유도할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-우선순위 상속 : 낮은순위의 스레드가 공유데이터를 소유하고, 높은 우선순위의 스레드가 공유데이터를 요청할 때, 공유데이터를 소유한 낮은 우선순위의 스레드를 공유데이터를 요청한 높은 우선순위의 스레드보다 우선순위를 높게 설정하여 빨리 실행시키는 것.&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/Network</category>
      <author>주윤성</author>
      <guid isPermaLink="true">https://ysld.tistory.com/352</guid>
      <comments>https://ysld.tistory.com/352#entry352comment</comments>
      <pubDate>Fri, 21 Apr 2023 00:07:32 +0900</pubDate>
    </item>
    <item>
      <title>운영체제  관련 용어 정리.</title>
      <link>https://ysld.tistory.com/351</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;운영체제관련 중요 용어를 20자 내외로 정리한 내용.&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;운영체제 (Operating System)&lt;/b&gt; : 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중계역할을 하면서, 프로그램의 실행을 관리 및 제어하는 시스템 소프트웨어이다. 운영체제는, 컴퓨터 자체가 아니며 실체가 있는 소프트웨어로써, 컴퓨터가 켜질 때 처음으로 메모리에 적재되어 나머지 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 컴퓨터의 자원을 독점적으로 관하는 특별한 소프트웨어이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;폰 노이만형 프로그램 내장방식&lt;/b&gt; : CPU와 메모리, 소프트웨어와 하드웨어를 분리했다는 의미가 있는 프로그래밍 방식으로, 실행할 프로그램을 메모리에 담고 CPU가 프로그램을 실행하는 방식으로, 고정 프로그래밍 방식에비해 획기적인 변화를 추구했으며, 프로그램은 입력 장치를 통해 메모리에 적재하고 펀치카드에 구멍을 뚫어 프로그램을 작성해 카드 리더기로 프로그램을 메모리에 읽어들이는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;배치(일괄)처리 시스템(Batch System)&lt;/b&gt; : 개발자와 관리자를 구분하여, 개발자는 펀치카드를 입력 데크에 두고 결과를 기다리고, 자동으로 테이프 장치에 대기 중인 프로그램을 한 번에 하나씩 적재하고 실행하는 시스템 유형이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다중프로그래밍 시스템(Multi programming system)&lt;/b&gt; : 여러 프로그램을 메모리에 올려놓고, CPU가 한 프로그램을 실행하다 I/O가 발생하면, 입출력이 완료될 때 까지 CPU가 메모리에 적재된 다른 프로그램을 실행하는 식으로 CPU가 노는 시간을 줄이는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시분할 시스템(Time sharing system)&lt;/b&gt; : 컴퓨터 환경이 대화식으로 바뀌면서, 기존의 배치처리와 다중 프로그래밍 시스템 방식은 컴퓨터와 사용자 간의 즉각적인 대응이 가능하지 않다는 문제점이 발견되어, 여러개의 프로세스가 CPU 사용 시간을 분할해 나눠 쓰는 개념을 적용한 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;메모리 계층구조(Memory nierarchy structure)&lt;/b&gt; : 컴퓨터 시스템의 메모리를 계층적으로 구성하여, 성능과 비용을 균형적으로 조절하는 방법으로, 캐시메모리, 주기억장치, 보조기억장치로 이루어져있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;명령어(Instruction)&lt;/b&gt; : CPU에서 실행될 수 있는 기계어 명령어이다. 운영체제도 마찬가지로 CPU가 실행 할 수 있는 명려어를 발생시켜, 시스템 동작을 제어한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;레지스터(register)&lt;/b&gt; : CPU 내부에 존재하며, 데이터나 명령어를 일시적으로 저장하는 기억장치로, CPU의 연산을 고속으로 수행하기 위해 적은 용량으로 많은 개수가 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로그램 카운터(PC, Program Counter)&lt;/b&gt; : CPU 내부 레지스터 중 하나로, 다음에 실행될 명령어의 주소를 저장하는 역할을 하며, 운영체제는 프로그램 카운터를 활용하여 다음에 실행될 프로세스를 결정하고, 다음 프로세스 실행을 위해 프로그램 카운터를 새로운 프로세스 첫번째 명령어 주소로 업데이트 한다. 이런 과정을 통해 CPU는 여러 개의 프로세스를 동시에 실행할 수 있게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;명령어 사이클(IC,Instructure Cycle)&lt;/b&gt; : CPU에서 명령어를 실행하는 단계적 프로세스를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;프로세스 4대 공간&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;1. 코드(Code)&lt;/b&gt; 영역 : 실행할 프로그램의 코드가 저장되는 영역으로, 프로그램의 명령어가 저장되며, 실행중인 프로그램 코드가 들어가게된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;2. 데이터(Data) 영역&lt;/b&gt; : 전역 변수와 정적(static) 변수가 저장되는 영역으로, 프로그램에서 사용되는 전역 변수, 정적 변수 등의 데이터가 들어가게된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;3. 스택(Stack) 영역&lt;/b&gt; : 함수 호출시 생성되는 지역 변수와 매개변수가 저장되는 영역으로, 함수의 호출과 반환시 필요한 정보를 저장하기 위해 사영된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;4. 힙(Heap)영역&lt;/b&gt; : 동적으로 할당된 메모리가 저장되는 영역으로, 프로그램 실행중에 필요한 메모리를 동적으로 할당하기 위해 사용됨. 힙 영역에서 할당된 메모리는 사용 후 반드시 해제해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;컨택스트 스위칭(Context Switching)&lt;/b&gt; : 멀티태스킹을 구현하기 위한 기술 중 하나로, CPU가 실행하는 프로세스를 바꾸기 위해 이전 프로세스의 상태를 저장하고, 새로운 프로세스의 상태를 불러오는 과정. 이를 통해 여러개의 프로세스가 동시에 실행될 수 있다. 즉, 스레드와 프로세스간의 전환이 이루어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커널(kernel)&lt;/b&gt; : 하드웨어와 응용 프로그램 사이를 연결해주는 인터페이스로, 커널은 시스템 자원(CPU, 메모리, 디스크, 네트워크 인터페이스 등)을 관리하고, 응용프로그램의 실행을 제어한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;장치 관리자(device driver)&lt;/b&gt; : 컴퓨터시스템의 장치들을 제어하는 소프트웨어로, 운영체제에서 하드웨어를 제어하기 위해서는 해당 장치에 대한 드라이버가 필요한데, 이 드라이버가 바로 장치관리자이다. 장치 관리자는 일반적으로 운영체제의 일부로 제공되며, 시스템 시작시 자동으로 로드된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인터럽트(interrupt)&lt;/b&gt; : CPU가 프로그램을 실행하고 있을 때 입출력 요청 등 다른 이벤트가 발생하여 처리할 작업이 있는 경우, 실행 중인 작업을 일시적으로 중단하고 해당 이벤트를 우선 처리하는 것으로, 시스템 성능최적화와 효율성을 높일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인터럽트 서비스 루틴(Interrupt service routine)&lt;/b&gt; : 인터럽트를 처리하는 명령어의 집합으로, 일반적으로 장치 드라이버 내에 있다. 커널이 적재된 메모리 영역에 있는 코드이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;전역 변수&lt;/b&gt; : 프로그램 전체에서 접근 가능한 변수를 의미한다. 전역 변수는 프로그램이 시작될 때 초기화되며, 프로그램이 종료될 때까지 유지된다. 전역 변수는 프로그램 전체에서 동일한 값이 유지되어야 하는 경우에 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;동적 할당(Dynamic allocation)&lt;/b&gt; : 프로그램이 실행 중에 필요한 메모리를 할당하는 방법으로, 프로그램이 실행되면 운영체제는 프로그램이 필요로하는 메모리 크기를 파악하고, 필요한 만큼의 메모리를 동적으로 할당한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;함수 호출(Function call)&lt;/b&gt; : 프로그래밍 언어에서 함수를 호출하고 반환하는 과정을 의미한다. 스택을 관리하는 기능을 제공하며, 시스템 콜(System call)과 같은 중요한 기능들도 함수 호출을 이용하여 구현됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시스템 호출(System call)&lt;/b&gt; : 운영체제의 서비스를 받기 위해 호출하는 인터페이스로, 운영체제의 기능을 호출할 때는 운영체제에서 제공하는 특별한 인터페이스를 사용해야한다. 시스템 호출은 프로세스가 운영체제의 서비스를 이용하기 위해 필요한 방법이며, 운영체제 서비스를 이용하기 위해 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로세스(Process)&lt;/b&gt; : 실행중인 프로그램을 의미하며, 운영체제는 프로세스를 생성, 중지, 일시정지, 재개 등의 작업을 수행할 수 있다. 즉, 프로세스와 운영체제가 상호작용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로세스 ID(PID, Process IDentification)&lt;/b&gt; : 각각의 프로세스를 식별하는 고유한 식별자를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;논리적 주소(Logical address)&lt;/b&gt; : 프로세스가 실제로 참조하는 주소. 프로세스가 직접적으로 접근할 수 있는 가상 메모리 주소이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;물리적 주소(Physical address)&lt;/b&gt; : 실제 메모리에서 데이터가 저장되는 물리적 위치. CPU가 직접 접근할 수 있는 주소이며, 이를 통해 메모리에서 데이터를 읽고 쓸 수 있다. 즉, 운영체제는 물리적 주소를 할당하고 관리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로세스 테이블(Process table)&lt;/b&gt; : 현재 실행중인 모든 프로세스에 대한 정보를 유지하는 데이터 구조. 운영체제는 프로세스 상태를 감시하고, 스케줄링을 수행하여 관리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 1. 프로세스 ID (PID) : 각 프로세스를 구별하기 위한 고유 식별자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 2. 상태 (State) : 현재 프로세스가 어떤 상태에 있는지 나타냄. ( 실행 중, 대기 중, 종료됨 등 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 3. 우선순위 (Priority) : 스케줄링 알고리즘에서 프로세스의 실행 우선순위를 결정하기 위한 값.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 4. 레지스터 상태 (Register State) : CPU 레지스터에 저장된 프로세스 관련 정보.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 5. 입출력 상태 (I/O State) : 프로세스가 사용하는 입출력 장치와 관련된 정보.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로세스 제어블록(PCB, Process Control Block)&lt;/b&gt; : 각각의 프로세스에 대한 정보를 담고 있는 자료구조. 운영체제 커널의 메모리 공간에 저장되며, 프로세스의 상태, PID, PC, 레지스터값, 스케줄링정보, 메모리 할당 정보, I/O 상태 등 프로세스에 대한 모든 정보를 저장하며, 프로세스를 추적, 제어하는데 사용되는 데이터 구조이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로세스 생명주기(Process life cycle)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; Ready State(준비상태), Running State(실행 상태), Blocked State(중단 상태) 로 구성.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 준비상태에서, 실행상태로 프로세스가 진행되고, 중간에 입/출력이 발생하면 중단상태가 됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 할당받은 시간동안, 작업이 끝나지 않으면 다시 준비상태로 가서 순서를 기다린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로세스 상태전이 (Process state transition)&lt;/b&gt; : 운영체제에서 실행중인 프로세스가 다양한 상태를 거치며 시스템 자원을 사용하는 과정으로, 일반적으로 프로세스는 생성(New) &amp;gt; 준비(Ready) &amp;gt; 실행(Running) &amp;gt; 대기(Wating) &amp;gt; 종료(Terminated, Zombie(종료코드 실행전, 메모리에 아직 남아있음) &amp;gt; Out(종료코드 실행후, 메모리에서 제거됨) 이렇게 5가지 상태를 가짐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;유휴 상태(Idle state)&lt;/b&gt; : CPU가 아무런 작업을 하지 않고 대기하고 있는 상태. CPU가 실행 중인 프로세스가 없고, 어떠한 작업도 수행하지 않는 상태이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;부모-자식 프로세스(Parent-child process)&lt;/b&gt; : 부모 프로세스가 자식 프로세스를 생성하고, 자식 프로세스는 부모 프로세스로부터 상속된 자원과 권한을 사용하며 실행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; fork() : 자식 프로세스를 생성하는 시스템 호출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; exit() : 프로세스의 종료를 커널에 알리는 시스템 호출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; wait() : 부모가 자식 프로세스의 종료를 기다리고 확인하는 시스템 호출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;좀비프로세스(Zomebie process)&lt;/b&gt; : 종료하였지만, 부모 프로세스가 종료 코드를 읽지 않은 상태의 프로세스.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고아 프로세스(Orphan process)&lt;/b&gt; : 부모가 먼저 종료한 자식 프로세스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CPU Bound Job[CPU intensive process) / CPU 집중 프로세스&lt;/b&gt; : 대부분의 시간을 계산 중심의 CPU 작업을 하느라 보내는 프로세스로, 배열 곱, 인공지능 연산, 이미지 처리등을 수행하며, &lt;u&gt;CPU 속도가 성능을 좌우(CPU bound)&lt;/u&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;I/O Bound Job[I/O intensive process)&lt;/b&gt; : 입출력 작업에 대부분의 시간을 보내는 프로세스로, 네트워크 전송, 파일 입출력에 집중된 프로세스이다. &lt;u&gt;입출력 장치나, 입출력 시스템의 속도가 성능을 좌우(I/O Bound)&lt;/u&gt;한다. / 파일 서버, 웹 서버 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로세스 오버레이(Process overlay)&lt;/b&gt; : 현재 실행중인 프로세스의 주소 공간에 새로운 응용프로그램을 적재하여 실행 시키는 방법.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스레드(Thread)&lt;/b&gt; : 하나의 프로세스 내에서 실행되는 실행&amp;amp;스케줄링 단위이다. 프로세스는 스레드의 컨테이너라고 할 수 있고, 스레드의 공유 공간(환경)을 제공한다. 스레드는 함수로 작성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;멀티 스레드(Multi Thread)&lt;/b&gt; : 하나의 프로세스 내에서 여러개의 스레드가 동시에 실행되는 것을 말한다. 멀티 스레드는 다른 스레드가 실행중인 작업에 영향을 주지 않고, 동시에 여러 작업을 처리할 수 있어, 시스템 자원을 효율적으로 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스레드 제어 블록(TCB, Thread Control Block)&lt;/b&gt; : 운영체제가 각 스레드를 관리하기 위해 유지하는 정보의 집합으로, 각 스레드마다 하나씩 TCB가 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스레드 컨텍스트 스위칭(Thread context switching)&lt;/b&gt; : 현재 실행중인 스레드를 중단시키고, 다른 스레드에게 CPU를 할당.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;컨텍스트 스위칭 오버헤드(Context switching overhead)&lt;/b&gt; : CPU가 현재 실행중인 프로세스나 스레드를 중지하고, 다른 프로세스나 스레드를 실행하는 것으로, CPU는 현재 실행중인 프로세스나 스레드의 상태를 저장하고 다음에 실행할 프로세스나 스레드의 상태를 복원한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커널 레벨 스레드 (Kernel level thread)&lt;/b&gt; : 응용프로그램이 시스템 호출을 통해 커널 레벨 스레드를 생성하고, 커널이 스레드에 대한 정보(TCB)를 커널 공간에 생성하고 소유한다. 커널에 의해 스케줄되며, 스레드 주소 공간은 사용자 공간에 존재한다. 이 때 메인 스레드는, 커널 스레드이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사용자 레벨 스레드 (User level thread)&lt;/b&gt; : 응용프로그램이 라이브러리 함수를 호출하여 사용자 레벨 스레드를 생성한다. 스레드 라이브러리가 스레드 정보(U-TCB)를 사용자 공간에 생성하고 소유하며, 스레드 라이브러리에 의해 스케줄된다. 이 때 스레드 주소 공간은 사용자 공간에 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;작업 스케줄링(Job scheduling)&lt;/b&gt; : 배치 시스템에서, 대기중인 배치 작업 중 메모리에 적재할 작업을 결정하는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CPU 스케줄링(CPU scheduling)&lt;/b&gt; : 프로세스/스레드 중에 하나를 선택하여 CPU에 할당하는 것으로, 오늘날 CPU 스케줄링은 스레드 중 하나를 선택하는 스레드 스케줄링이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CPU burst&lt;/b&gt; : 프로그램 실행 중, CPU연산이 연속적으로 실행되는 상황이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;I/O burst&lt;/b&gt; : 프로그램 실행 중 I/O 장치의 입출력이 이루어지는 상황이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Time slice(or slot, quantum) &lt;/b&gt;: 스케줄된 스레드에게 한 번 할당하는 CPU 시간을 의미한다. 커널이 스케줄을 단행하는 주기 시간이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;비선점(Non-preemption)&lt;/b&gt; : 프로세스나 스레드가 CPU를 점유하고 있는 동안 다른 프로세스나 스레드가 CPU를 강제로 뺏어올 수 없는 방식으로, 프로세스나 스레드가 CPU를 스스로 내어 놓을 때 까지 계속 실행됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;선점(Preemption)&lt;/b&gt; : 프로세스나 스레드가 CPU를 점유하고 있는 동안, 운영체제가 CPU를 강제로 뺏어와 다른 프로세스나 스레드를 실행 시키는 방식으로, 선점형 스케줄링을 사용하는 운영체제는 운선순위나 시간 할당량 등의 조건에 따라 프로세스나 스레드를 선택하고, 실행 중인 프로세스나 스레드의 우선순위가 낮아지거나 시간 할당량이 만료되면 CPU를 강제로 뺏어오게된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;디스패처(Dispatcher)&lt;/b&gt; : 컨텍스트 스위칭을 실행하는 커널 코드이다. 스케줄러에 의해 선택된 스레드를 CPU가 실행하도록 하는 작업으로, 커널 모드에서 사용자 모드로 전환시킨다. 새로 선택된 스레드가 이전에 중단된 곳에서부터 실행하도록 점프하는 역할을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기아(Starvation)&lt;/b&gt; : 스레드가 스케줄링에서 선택되지 못한 채 오랫동안 준비 리스트에 있는 상황.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;에이징(Aging)&lt;/b&gt; : 기아의 해결책으로, 스레드가 준비 리스트에 머무는 시간에 비례하여 스케줄링 순위를 높이는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스레드 동기화(Thread synchronization)&lt;/b&gt; : 공유 데이터에 대한 다수의 스레드가 동시에 접근할 때, 공유 데이터가 훼손되는 문제의 해결책으로, 공유데이터를 접근하고자 하는 다수의 스레드가 충돌 없이 공유데이터에 접근하기 위해 상호 협력하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;임계구역(Critical section)&lt;/b&gt; : 공유 데이터에 접근하는 프로그램 코드들이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;상호배제(Mutual exclusion)&lt;/b&gt; :임계구역이 오직 한 스레드만 배타적 독점적으로 사용되도록 하는 기술이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;임계구역 진입 코드(Entry code)&lt;/b&gt; : 상호 배제를 위해 필요한 코드로, 현재 임계 구역이 실행중인 스레드가 있는지 검사한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;임계구역 코드(Critical code)&lt;/b&gt; : 멀티스레드 환경에서 동기화 문제를 해결하기 위한 방법 중 하나로, 임계구역은 공유 자원에 접근하는 코드 영역을 의미하며, 한 번에 한 스레드가 접근할 수 있도록 보호해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원자코드(atomic instruction)&lt;/b&gt; : 일련의 명령문을 모두 실행하거나, 전혀 실행하지 않는 하나의 단위로 실행되는 코드를 말한다. 원자 코드는 실행 중 다른 프로세스나 스레드와 상호작용에서 분리되어 안전하게 실행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;뮤택스(Mutex)&lt;/b&gt; : 잠김/열림 중 한 상태를 가지는 락 변수를 이용한다, 한 스레드만 임계구역에 진입시키며, 다른 스레드는 큐에 대기한다. &amp;gt; Sleep-wationg lock 기법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스핀락(Spin-lock)&lt;/b&gt; : 뮤텍스와 거의 같으나, Busy-waiting lock 기법을 사용한다. 락을 소유한 스레드만 자원을 배타적으로 사용할 수 있고, 동기화 기법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;세마포(Sepaphore)&lt;/b&gt; : 멀티 스레드 사이의 자원 관리 기법.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;카운터 세마포(Counter semaphore)&lt;/b&gt; : 자원의 인스턴스가 여러개의 경우.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이진 세마포(Binary semaphore)&lt;/b&gt; : 자원이 1개있는경우, 멀티스레드 사이의 자원 관리. 한 개의 자원에 대해 한 개의 스레드만 엑세스 할 수 있도록 보호하는 기능을 하며, 뮤택스와 매우 유사하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;우선순위 역전(Priority inversion)&lt;/b&gt; : 스레드의 동기화로 인해 높은 순위의 스레드가 낮은 순위의 스레드보다 늦게 스케줄링 되는 현상.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;우선순위 올림(Priority ceiling)&lt;/b&gt; : 스레드가 공유 자원을 소유하게 될 때, 스레드의 우선순위를 미리 정해진 높은 우선순위로 일시적으로 올리는 것이다. 우선순위가 선점되지않고, 빨리 실행되도록 유도한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;우선순위 상속(Priority inheritance)&lt;/b&gt; : 낮은 순위의 스레드가 공유 자원을 가지고 있는 동안, 높은 순위의 스레드가 공유 자원을 요청하면 공유 자원을 가진 스레드의 우선순위를 요청한 스레드보다 높게 설정하여 빨리 실행시킨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/Network</category>
      <author>주윤성</author>
      <guid isPermaLink="true">https://ysld.tistory.com/351</guid>
      <comments>https://ysld.tistory.com/351#entry351comment</comments>
      <pubDate>Wed, 19 Apr 2023 20:39:20 +0900</pubDate>
    </item>
    <item>
      <title>02. 운영체제의 태동</title>
      <link>https://ysld.tistory.com/350</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;고정 프로그램 컴퓨터(1940~)&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 고정 프로그램 방식 ( fixed program computer )&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 1940년대, 전자식 디지털 컴퓨터가 만들어지기 시작하는 시대 / 애니악&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 운영체제에 대한 개념이 없음&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 소프트웨어&amp;amp;하드웨어의 분리 개념 또한 없음 = 모든 것이 하드웨어로 제작&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 프로그래밍&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 종이에 프로그램을 구현하는 스위치와 전선 연결도 작성&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 배선판(Plug board)에 전선 연결, 프로그램을 기계에 고착시킴&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 하나의 명령을 구성하기 위해 여러가닥의 전선 연결 = 프로그램 하나 구축에 수천개의 전선 연결 필요&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; Z3, Colossus, ENIAC 등&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;내장 프로그램 컴퓨터(1945~)&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;중계 역할&lt;/b&gt;을 하면서, 프로그램 실행을 관리하고, 제어하는 시스템 소프트웨어.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 내장 프로그래밍 방식 ( Stored program )&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 폰 노이만에 의해 제안됨, 오늘날의 컴퓨터 구조임&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 내장 프로그램 컴퓨터의 의미&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; CPU와 메모리를 분리&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 소프트웨어&amp;amp;하드웨어의 분리&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 실행할 프로그램을 메모리에 담고, CPU가 프로그램을 실행하는 방식, 고정 프로그래밍 방식에 비해 획기적인 변화&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 프로그램은 입력 장치를 통해 메모리에 적재됨, 펀치카드에 구멍을 뚫어서 작성&amp;amp;카드리더기로 프로그램을 메모리로 읽어들임&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;870&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qMrmd/btsa5VVAGHO/KX6VXlkMJP6OWAV98ujFMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qMrmd/btsa5VVAGHO/KX6VXlkMJP6OWAV98ujFMK/img.png&quot; data-alt=&quot;폰 노이만형 내장 프로그램 컴퓨터 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qMrmd/btsa5VVAGHO/KX6VXlkMJP6OWAV98ujFMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqMrmd%2Fbtsa5VVAGHO%2FKX6VXlkMJP6OWAV98ujFMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;930&quot; height=&quot;870&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;870&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;폰 노이만형 내장 프로그램 컴퓨터 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;운영체제 개념의 시작(1950~)&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 프로그램 로딩 시대&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 운영체제 개념의 시작&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- IBM701 메인 프레임&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; IBM에서 만든 첫번째 범용 내장 프로그래밍 방식의 컴퓨터&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 판매하지 않았고, 대여만 가능했으며 소프트웨어도 제공하지 않았음&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;운영체제의 싹, 로더 프로그램의 필요성&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 과거 개발자가 프로그램을 카드에 작성할 때 마다 시간낭비라고 생각함&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 목적 프로그램을 읽어 들이는 코드의 작성 필요, 이 코드를 Loader라고 부름&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 로더가 운영체제로 발전&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 사용자의 명령을 받아 저장 장치에 담긴 프로그램을 메모리에 적재하는 기능을 하게됨&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 원시 운영체제 GM OS 등.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1377&quot; data-origin-height=&quot;907&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nil3p/btsaV3Ny2fr/mrmnIPzzFtRbje9UrGVEbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nil3p/btsaV3Ny2fr/mrmnIPzzFtRbje9UrGVEbk/img.png&quot; data-alt=&quot;운영체제 발전과정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nil3p/btsaV3Ny2fr/mrmnIPzzFtRbje9UrGVEbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnil3p%2FbtsaV3Ny2fr%2FmrmnIPzzFtRbje9UrGVEbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1377&quot; height=&quot;907&quot; data-origin-width=&quot;1377&quot; data-origin-height=&quot;907&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;운영체제 발전과정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 글은, 대학생 공부 필기용으로 대학 수업 및 서적에서 파생되어 본인 개인 학습용으로 작성된 글임을 밝힙니다.&lt;/p&gt;</description>
      <category>Study/Network</category>
      <author>주윤성</author>
      <guid isPermaLink="true">https://ysld.tistory.com/350</guid>
      <comments>https://ysld.tistory.com/350#entry350comment</comments>
      <pubDate>Tue, 18 Apr 2023 23:01:25 +0900</pubDate>
    </item>
    <item>
      <title>01. 운영체제의 시작과 발전.</title>
      <link>https://ysld.tistory.com/349</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;운영체제(Operating System)의 정의&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 &lt;b&gt;중계 역할&lt;/b&gt;을 하면서, 프로그램 실행을 관리하고, 제어하는 시스템 소프트웨어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 즉, 운영체제는 &lt;b&gt;컴퓨터 자체가 아니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 운영체제는 &lt;b&gt;실체가 있는 '소프트웨어'&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 컴퓨터가 켜질 때, 처음으로 Roading(디스크(보조기억장치)-&amp;gt;RAM(주기억장치))되어 나머지 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 소프트웨어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 컴퓨터의&lt;b&gt; 자원을 독점적으로 관리하는 특별한 소프트웨어&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자와 직접적으로 대화하는 모든 프로그램 = 응용프로그램&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ㄴ 사용자의 요구는 들어줄 수 있지만, 컴퓨터 하드웨어와 직접적으로 대화할 수 없음 &amp;gt; 그걸 대신해주는 프로그램이 바로 운영체제.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 소프트웨어는 운영체제를 통해 컴퓨터 하드웨어를 제어할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 운영체제는 모든 컴퓨터의 자원(resource)을 관리함. &amp;gt; 하드웨어자원(cpu,메모리,하드,프린터 등), 소프트웨어자원(응용프로그램), 데이터 자원(파일, 데이터베이스 등)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 운영체제는 자원에 대한 독점(exclusive) 권한이 있음. &amp;gt; 자원 할당 및 공유, 엑세스, 입출력 등.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 운영체제는 관리자(supervisor)임. &amp;gt; 실행중인 프로그램, 메모리, 파일과 디스크장치, 입출력장치, 계정 등을 관리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 운영체제는 소프트웨어(Software)임. &amp;gt; 커널 이라고 불리는 핵심 코드와 UI,도구 프로그램들 등 장치를 제어하는 디바이스들로 구성.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;운영체제의 목적과 기능&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 운영체제의 목적은, 사용자의 컴퓨터 사용의 편리성과 컴퓨터 자원 관리의 효율성을 목적으로한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 운영체제의 기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; CPU/프로세스 관리, 메모리 관리, 파일 시스템 관리, 장치 관리, 네트워크 관리, 보안 관리, 기타 ( 사용자 계정, 통계, 오류 발견&amp;amp;대응, 부팅 등 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[ 응용소프트웨어 &amp;lt; &amp;gt; 운영체제 &amp;lt; &amp;gt; 컴퓨터 하드웨어 ] : 운영체제는, 소프트웨어와 하드웨어 사이에서 동작.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은, 대학생 공부 필기용으로 대학 수업 및 서적에서 파생되어 본인 개인 학습용으로 작성된 글임을 밝힙니다.&lt;/p&gt;</description>
      <category>Study/Network</category>
      <author>주윤성</author>
      <guid isPermaLink="true">https://ysld.tistory.com/349</guid>
      <comments>https://ysld.tistory.com/349#entry349comment</comments>
      <pubDate>Tue, 18 Apr 2023 22:46:42 +0900</pubDate>
    </item>
    <item>
      <title>SQL 기본 명령어 분류.</title>
      <link>https://ysld.tistory.com/346</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;SQL의 기본 명령어의 분류&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;데이터 정의어&lt;/b&gt; &lt;i&gt;Data Definition Language (DDL)&lt;/i&gt; : 테이블 생성,변경,삭제&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;데이터 조작어&lt;/b&gt; &lt;i&gt;Data Manipulation Language (DML)&lt;/i&gt; : 데이터 삽입, 조회, 수정, 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;데이터 제어어&lt;/b&gt; &lt;i&gt;Data Control Language (DCL)&lt;/i&gt; : 데이터 접근권 부여 및 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;트랜젝션 제어어&lt;/b&gt; &lt;i&gt;Transaction Control Language (TCL)&lt;/i&gt; : DML(데이터 조작어) 명령어 실행, 취소, 임시저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DBA(Database Administrator)&lt;/b&gt; : 데이터베이스 관리자로서, 기업 내에서 데이터베이스를 관리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Data Analyst&lt;/b&gt; : 데이터 분석을 통해, 새로운 인사이트를 도출.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DBA&lt;/b&gt;는, DDL(데이터정의), DCL(데이터제어)을 주로 사용하며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;데이터 분석가&lt;/b&gt;는, DML(데이터조작), TCL(트랜젝션제어)을 주로 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Comment&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘같은 시대에는, 풀스택 개발자가 당연시되는만큼, 데이터 분석은 물론, DBA의 역할까지 겸해야 할 것 같다는 생각이 듬.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;*이 카테고리의 글들은, 네이버 부스트코스를 통한 강좌 과목들에 대한 개인적 복습 목적으로 작성되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/Database</category>
      <author>주윤성</author>
      <guid isPermaLink="true">https://ysld.tistory.com/346</guid>
      <comments>https://ysld.tistory.com/346#entry346comment</comments>
      <pubDate>Sun, 5 Mar 2023 20:43:02 +0900</pubDate>
    </item>
    <item>
      <title>한글파일에 자필서명 추가하기. (스캔 X)</title>
      <link>https://ysld.tistory.com/342</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;온라인 업무를 하다보면, &lt;b&gt;한글파일(hwp)&lt;/b&gt;에 서명을 해야하는 경우가 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;보통의 경우, &lt;u&gt;문서를 인쇄 &amp;gt; 자필서명 &amp;gt; 스캔&lt;/u&gt; 순으로 작업하는 경우가 많은데요, 이것은 &lt;u&gt;매우 비효율적인 방법&lt;/u&gt;입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;한글파일에 간단하고 빠르게 자필 서명을 삽입하는 방법에 대해서 알아보겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 종이에 자필로 서명을 하고, 핸드폰으로 촬영한다.&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_Photo_2022-12-08-16-56-17.jpeg&quot; data-origin-width=&quot;1258&quot; data-origin-height=&quot;903&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD4LW2/btrS5PznFSu/fjp6J5qNFBEK4nzzOv7ZK1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD4LW2/btrS5PznFSu/fjp6J5qNFBEK4nzzOv7ZK1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD4LW2/btrS5PznFSu/fjp6J5qNFBEK4nzzOv7ZK1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD4LW2%2FbtrS5PznFSu%2Ffjp6J5qNFBEK4nzzOv7ZK1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;581&quot; height=&quot;903&quot; data-filename=&quot;KakaoTalk_Photo_2022-12-08-16-56-17.jpeg&quot; data-origin-width=&quot;1258&quot; data-origin-height=&quot;903&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;하얀 종이 위에, &lt;b&gt;볼펜이나 매직을 이용해 검은색(혹은 파란색)으로 서명을하고, 핸드폰으로 촬영&lt;/b&gt;하여 컴퓨터로 옮겨줍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;*카카오톡 PC버전 혹은 이메일 '나에게 쓰기' 등을 이용하시면 편리합니다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 한글 문서에 삽입한다.&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1185&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x8igk/btrTbj6iCxW/0gWUJK0o1mzgNOoXzAFloK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x8igk/btrTbj6iCxW/0gWUJK0o1mzgNOoXzAFloK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x8igk/btrTbj6iCxW/0gWUJK0o1mzgNOoXzAFloK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx8igk%2FbtrTbj6iCxW%2F0gWUJK0o1mzgNOoXzAFloK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;747&quot; height=&quot;376&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1185&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;한글문서 상단, &lt;b&gt;편집 &amp;gt; 그림 (컨트롤+N)을 통해, 방금 컴퓨터로 불러온 자필서명 사진을 삽입&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;삽입한 그림을 &lt;b&gt;우클릭&amp;gt;개체속성&lt;/b&gt;을 눌러 메뉴를 열어줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;900&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zKKo1/btrS9RC1io3/t9QjwKgr2kuR2gsR7sDu4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zKKo1/btrS9RC1io3/t9QjwKgr2kuR2gsR7sDu4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zKKo1/btrS9RC1io3/t9QjwKgr2kuR2gsR7sDu4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzKKo1%2FbtrS9RC1io3%2Ft9QjwKgr2kuR2gsR7sDu4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;494&quot; height=&quot;392&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;900&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이후 &lt;b&gt;'글 뒤로' 버튼을 눌러 이미지를 글자의 뒷쪽에 위치하게 설정&lt;/b&gt;하고, &lt;b&gt;'위치' 부분의 '글자처럼 취급'이 체크되어있다면, 체크를 해제&lt;/b&gt;해줍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그 다음, &lt;b&gt;'그림' 탭으로 이동&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;1082&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyjeK4/btrS6hI5FVT/yce8DuoCMEcu7KPFBRk1Gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyjeK4/btrS6hI5FVT/yce8DuoCMEcu7KPFBRk1Gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyjeK4/btrS6hI5FVT/yce8DuoCMEcu7KPFBRk1Gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyjeK4%2FbtrS6hI5FVT%2Fyce8DuoCMEcu7KPFBRk1Gk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;452&quot; height=&quot;613&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;1082&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그림탭의 하단&lt;b&gt; '그림 효과' 에서 흑백&lt;/b&gt;을 눌러줍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그 다음, 마우스를 이용하여 원하는 위치로 자필 서명 이미지를 옮겨주면 끝!!&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>&amp;gt; Useful-data/도움되는 정보</category>
      <category>한글 서명 스캔</category>
      <category>한글 서명넣기</category>
      <category>한글문서 서명</category>
      <category>한글문서 서명 스캔</category>
      <category>한글문서 서명넣기</category>
      <category>한글문서 자필서명</category>
      <category>한글서명</category>
      <category>한글파일 자필서명</category>
      <category>한글파일 자필서명넣기</category>
      <category>한글파일서명</category>
      <author>주윤성</author>
      <guid isPermaLink="true">https://ysld.tistory.com/342</guid>
      <comments>https://ysld.tistory.com/342#entry342comment</comments>
      <pubDate>Thu, 8 Dec 2022 16:57:32 +0900</pubDate>
    </item>
    <item>
      <title>맥북(Mac OS) M1/M2 에서 가상윈도우 구동 및 스팀게임 플레이.</title>
      <link>https://ysld.tistory.com/339</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;*이 포스트는 더 많은 정보와 사진과 함께 업데이트 될 예정임.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*아무리 찾아도 방법이 안나와서, 직접 해결하고 요점만 간략하게 미리 정리해둔 글임을 밝힘.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0. 서론&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 맥북 에어(M2)를 통해서 하고자 했던거는, 개발 및 디자인 작업은 물론, 가끔 야외에서 간단한 게임들(아이작같은거)을 하고 싶었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히, 스팀에서 Mac OS를 지원하는게임은 매우 드물고, 적다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 내가 시도했던방법은 VMware를 통한 가상윈도우 설치 후 스팀설치 &amp;gt; 윈도우 기반인 가상머신에서 게임실행.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정에서 발견된 문제점은 M1/M2 기반의 VMware에 관한 정보가 너무 부족하다는것 (대부분은 인텔맥 기반 설명임)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고, Windows 10/11 ARM을 받아서 VDHX파일로 간신히 설치를 했다고 하더라도, 윈도우 구동 자체가 가상환경에서 버벅거리며 소리/드라이버 관련 오류가 많았음 (스팀게임 또한 그래픽드라이버 문제로 실행되지 않았음)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 또한 OpenGL 관련 마이크로소프트 업데이트 파일도 제대로 설치를 못했음. ( 이건 마이크로 소프트스토어에서 설치가 가능한데, 스토어 오픈 자체가 가상환경에서 먹통이되버림.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VMware를 사용했던 가장 큰 이유는, 과거 윈도우환경에서 VMware를 통해 리눅스 개발환경을 사용했던 경험이 있었기 때문임과 동시에, VMware는 무료니까..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 제대로된 구동이 안된다는걸 확인했고 시간만 낭비하고 결국 모두 제거함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 본론&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 발견한 솔루션.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 나의 목적은, 고사양 게임이 아닌 간단한 윈도우 기반 게임을 즐기는 것. 뭐 카트라이더 같은것도..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애플 실리콘 기반 맥에서 가장 잘 맞는다는 페럴렐즈(&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://www.parallels.com/kr/pd/general/&quot; data-agch=&quot;HJ3bqe&quot; data-agdh=&quot;fvd3vc&quot; data-rw=&quot;https://www.googleadservices.com/pagead/aclk?sa=L&amp;amp;ai=DChcSEwjSnP_fv437AhXIwpYKHdeaC9AYABABGgJ0bA&amp;amp;ae=2&amp;amp;ohost=www.google.com&amp;amp;cid=CAESa-D2-AqqVT2wOdQKJzLiz0qXL2hIqIKeRGhdKj7SeXyPKwphhH__U_JIt9FehvFmVck-FH5r1tmAw5k-TFzOshTrQo7P8ijTmi_h9B_SRoiS1O2BvgHtd4Ivye_-o9IRMsoRC5xBMMDv4xS8&amp;amp;sig=AOD64_1kH7WtsrRab0K8c2LcJQFgw6pfvA&amp;amp;q&amp;amp;adurl&quot; data-ae=&quot;1&quot; data-al=&quot;1&quot; data-ved=&quot;2ahUKEwjWh_jfv437AhUSpVYBHa6MBmMQ0Qx6BAgFEAE&quot;&gt;Parallels&lt;/a&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;)를 통해서 윈도우 가상환경을 만들고, 실험해보는 것이였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;결과는 대성공, 단점은 패럴렐즈는 14일 무료 이후 유료 결제를 해야한다는 단점이 존재한다.&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 방법은 간단하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1-1 &amp;gt; 페럴렐즈 설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1-2 &amp;gt; 페럴렐즈 설치 후 나오는 윈도우11 설치 문구에 동의하고 같이 설치.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1-3 &amp;gt; 페럴렐즈 에서 구동된 가상 윈도우11에서 마이크로소프트스토어 접속&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1-4 &amp;gt; OpenGL 검색 후 가장 맨위에 나오는 소프트웨어 설치.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1-5 &amp;gt; VMware에서 오류로 안되던 게임들 싹다 잘 돌아간다. 일단 아이작이랑 Brotato 같은 게임들도 아주 잘 켜진다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 결론&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정을 대체 왜 내가 5시간동안 고생해서 찾아낸건지..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;M2와 관련된 정보가 너무 부족해서 고생한거라고 생각중. 이제 이 글을 본 사람들은 나와같은 개고생을 안했으면 하는 마음에 기록을 남김.&lt;/p&gt;</description>
      <category>&amp;gt; Useful-data/도움되는 정보</category>
      <category>M1 윈도우</category>
      <category>M2 windows11</category>
      <category>M2 윈도우</category>
      <category>M2 윈도우11</category>
      <category>맥북</category>
      <category>맥북 windows</category>
      <category>맥북 가상윈도우</category>
      <category>맥북 윈도우</category>
      <category>맥북 윈도우10</category>
      <category>맥북윈도우11</category>
      <author>주윤성</author>
      <guid isPermaLink="true">https://ysld.tistory.com/339</guid>
      <comments>https://ysld.tistory.com/339#entry339comment</comments>
      <pubDate>Wed, 2 Nov 2022 02:32:11 +0900</pubDate>
    </item>
    <item>
      <title>확증편향의 시대.</title>
      <link>https://ysld.tistory.com/337</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;나의 신념과 일치하는 정보는 받아들이지만, 일치 하지 않는 정보는 무시하는 경향.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말해 '믿고 싶은것만 믿는 것'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감정적으로나 이성적으로나 생각해보았을때, 본인이 편한 쪽으로 해석하는게 가장 합리적이라고 생각하기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특수한 사건이나, 행동에 대해서 올바른가 아닌가에 대한 가치를 논할 때, 자신의 의지와 상관없이 다수의 의견에 동조하게 된다는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 사건에 대해 100명중 99명이 같은 의견을 제시할 때, 남은 한명이 과연 반대 의견을 말할 수 있을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 시대에서, 절대 다수의 의견에 반대되는 행동이나 말은, 올바른 행동일지라도 눈치를 보게되고 모두에게 미움을 받을거란 사실을 알고 있을것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인의 가치를 존중하는 자유보다, 서로 눈치를보며 눈에띄지않게 집단을 따라가려고 하는 성향이 짙어지고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기 자유민주주의 국가에서, 정치와 관계없이 사람들의 성향이 집단지성으로 묶이기 시작 한 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올바른 사고와 판단 이전에, 절대다수의 성향과 생각을 먼저 고려한다는게 맞는걸까.&lt;/p&gt;</description>
      <category>&amp;gt; personal/Philosophy</category>
      <author>주윤성</author>
      <guid isPermaLink="true">https://ysld.tistory.com/337</guid>
      <comments>https://ysld.tistory.com/337#entry337comment</comments>
      <pubDate>Mon, 31 Oct 2022 18:30:50 +0900</pubDate>
    </item>
  </channel>
</rss>