<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>JEONG TECH BLOG</title>
    <link>https://jeongwon201.tistory.com/</link>
    <description>백엔드 개발에 대한 내 생각을 정리한 블로그</description>
    <language>ko</language>
    <pubDate>Tue, 16 Jun 2026 01:45:52 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>jeongwon201</managingEditor>
    <item>
      <title>객체 지향 프로그래밍(Object-Oriented Programming, OOP)</title>
      <link>https://jeongwon201.tistory.com/25</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;객체&amp;nbsp;지향&amp;nbsp;프로그래밍(Object-Oriented&amp;nbsp;Programming,&amp;nbsp;OOP)&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GLD7o/btru8ujXRl2/1iewZBsfTkU88hWJh5mOIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GLD7o/btru8ujXRl2/1iewZBsfTkU88hWJh5mOIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GLD7o/btru8ujXRl2/1iewZBsfTkU88hWJh5mOIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGLD7o%2Fbtru8ujXRl2%2F1iewZBsfTkU88hWJh5mOIk%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;250&quot; height=&quot;250&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;객체 지향 프로그래밍&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터 프로그래밍 초기, 프로그램은 명령어의 목록이라는 인식이 자리 잡고 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램의 기능을 어떤 절차로 처리할 것인가에 초점을 둔 절차 지향 프로그래밍 기법을 사용했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그러나, 객체 지향 프로그래밍의 등장으로 많은 변화를 불러일으켰다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;객체 지향 프로그래밍(Object-Oriented Programming, OOP)&lt;/b&gt;이란 프로그램을 명령어의 목록이 아닌, 여러 개의 독립된 단위, 즉 객체들의 집합체로 바라보자는 관점을 중심으로 하는 프로그래밍의 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서 &lt;b&gt;객체(Object)&lt;/b&gt;란 사람이 말로서 표현 가능한 모든 것을 객체라고 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예를 들어 컴퓨터 프로그램으로 나라는 사람을 구현할 때 사람이 객체가 되고, 그 사람을 구성하는 모든 것(팔, 다리, 머리 등)들 또한 객체가 될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;즉, 객체 지향 프로그래밍이란 프로그램을 어떤 객체가 어떤 일을 할 것인가에 초점을 두어 프로그래밍을 하는 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;객체라는 개념을 도입함으로써 프로그램을 유연하고 &lt;b&gt;변경이 용이&lt;/b&gt;하게 만들기 때문에 &lt;b&gt;더 배우기 쉽고&lt;/b&gt; 소프트웨어의 &lt;b&gt;개발과 보수를 간편하게&lt;/b&gt; 하며, 보다 직&lt;b&gt;관적인 코드 분석&lt;/b&gt;을 가능하게 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;객체 지향 프로그래밍에서는 세 가지의 기본 구성 요소가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;객체 지향 프로그래밍의 기본 구성 요소&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클래스(Class)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;같은 종류의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것으로, 객체 지향 프로그램의 기본적인 사용자 정의 데이터형이라고 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;객체(Object)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;객체는 프로그래밍 관점에서 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클래스의 인스턴스(실제로 메모리상에 할당된 것)로, 객체는 자신의 고유 속성(attribute)을 가지며, 클래스에서 정의한 행위를 수행할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메서드(Method)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클래스로부터 생성된 객체를 사용하는 방법으로서, 객체에 명령을 내리는 메시지라고 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;쉽게 말해서, 클래스에서 정의된 행위(behavior)를 메서드라고 생각하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예를 들어 '홍길동', '임꺽정' 은 '사람'이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;'사람'이라는 클래스의 인스턴스로 '홍길동', '임꺽정'이라는 객체가 생성된 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;'사람'은 배가 고플 때 특정 행위를 하며, 이 행위는 '먹는다'가 될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;'홍길동', '임꺽정'은 배가 고프면 '먹는다' 메서드를 수행할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 객체 지향 프로그래밍은 여러 특징을 가지게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;객체 지향 프로그래밍의 특징&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;추상화(Abstraction)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;객체들의 공통적인 속성과 행위를 추출하는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;'모든 사람은 이름이 있고, 배가 고프면 밥을 먹는다.'&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;'이름'이 속성이 되고, '먹는다'는 행위가 되며, 이러한 공통적인 부분을 추출하는 것이 추상화이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;캡슐화(Encapsulation)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;추상화에서 추출한 속성과 행위를 하나로 묶고, 실제 구현되는 내용을 외부로부터 감추어 은닉한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;쉽게 말해서, 객체의 속성과 행위를 불투명한 캡슐로 감싸는 것으로 생각하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;객체가 불투명한 캡슐로 감싸져있기 때문에 독립적으로 역할을 수행할 수 있고, 내용을 볼 수 없어 외부와 상호 작용할 때 메서드를 이용하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;상속(Inheritance)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게하는 기능이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이름 그대로 부모가 자식에게 재산을 물려주는 것과 같은 맥락이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그래서 상속한 클래스를 부모 클래스, 상속을 받은 새로운 클래스를 자식 클래스라고 부르기도 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다형성(Polymorphism)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하나의 요소에 여러 개념을 넣어놓은 것으로, 오버라이딩 또는 오버로딩을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;쉽게 말해, 하나의 메서드가 상황에 따라 여러 행위를 하는 것이라고 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;오버라이딩(Overriding)이란 같은 이름의 메서드가 여러 클래스에서&amp;nbsp;서로 다른 기능을 하는 것이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;오버로딩(Overloading)이란 같은 이름의 메서드가 인자의 개수나, 자료형에 따라 다른 기능을 하는 것이다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;동적 바인딩(Dynamic Binding)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩으로, 다형성의 개념을 실현한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서 바인딩이란 프로그램에 사용된 구성 요소의 실제 값 또는 프로퍼티를 결정짓는 행위를 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램 시작 전 컴파일 시 수행하는 바인딩을 &lt;b&gt;정적 바인딩&lt;/b&gt;, 시작 도중에 수행하는 바인딩을 &lt;b&gt;동적 바인딩&lt;/b&gt;이라 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;정적 바인딩이라면 부모 클래스의 메서드를 자식 클래스가 오버라이딩하여도 이미 컴파일 시에 부모 클래스의 메서드를 호출할 수 있도록 바인딩하였기 때문에 부모 클래스의 메서드만 호출하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그러나 동적 바인딩을 사용하게 되면 메서드를 호출할 때 바인딩된 메서드가 없어서 실시간으로 호출할 메서드를 식별하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 객체 지향 프로그래밍을 사용하는 언어로는 C++, C#, 파이썬, 자바 등이 있다.&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;&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;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;객체 지향 프로그래밍.&quot; Wikipedia. 2022. 01. 24. 수정, 2022. 03. 04. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&quot;&gt;https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Java</category>
      <category>객체</category>
      <category>객체 지향 특징</category>
      <category>객체 지향 프로그래밍</category>
      <category>객체 지향 프로그래밍 특징</category>
      <category>객체 지향 프로그램 특징</category>
      <category>객체지향</category>
      <category>객체지향 프로그래밍</category>
      <category>객체지향프로그래밍</category>
      <category>객체지향프로그래밍 특징</category>
      <author>jeongwon201</author>
      <guid isPermaLink="true">https://jeongwon201.tistory.com/25</guid>
      <comments>https://jeongwon201.tistory.com/25#entry25comment</comments>
      <pubDate>Fri, 4 Mar 2022 22:24:55 +0900</pubDate>
    </item>
    <item>
      <title>POSIX</title>
      <link>https://jeongwon201.tistory.com/24</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;POSIX&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&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;225&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bi3oI/btruMorPjRw/6orEzkCQ8U0kinv59Iau9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bi3oI/btruMorPjRw/6orEzkCQ8U0kinv59Iau9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bi3oI/btruMorPjRw/6orEzkCQ8U0kinv59Iau9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBi3oI%2FbtruMorPjRw%2F6orEzkCQ8U0kinv59Iau9k%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;225&quot; height=&quot;225&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;POSIX란&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;POSIX&lt;/b&gt;란 Portable Operating System Interface의 약자로, 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 &lt;b&gt;인터페이스&lt;/b&gt; &lt;b&gt;규격&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;쉽게 말해서, 이 표준을 따르면 운영체제가 서로 달라도 &lt;b&gt;호환&lt;/b&gt; 가능하게 하는 인터페이스의 표준이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스트림&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX3cOV/btruTi4UlW5/GY0frwRihUS8Gk3sujWpiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX3cOV/btruTi4UlW5/GY0frwRihUS8Gk3sujWpiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX3cOV/btruTi4UlW5/GY0frwRihUS8Gk3sujWpiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX3cOV%2FbtruTi4UlW5%2FGY0frwRihUS8Gk3sujWpiK%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;유닉스 이전의 대부분의 운영체제에서, 프로그램은 적절한 입력 장치와 출력 장치에 직접 연결해야 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 작업은 운영체제마다 처리 방식이 달랐기 때문에 매우 방대한 작업이었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이런 상황에서 유닉스는 어떠한 장치와 연결되었는지 알 필요 없이 자동으로 연결되는 기능을 제공했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기존의 복잡한 작업을 스트림이라는 개념으로 해소했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서 스트림이란 추상적인 개념으로, 일단은 &lt;b&gt;데이터의 통로&lt;/b&gt;라고 생각하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;표준 스트림&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MgArt/btruVKNmzgr/7GPZ2NZ4plUtBxLUzX78P1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MgArt/btruVKNmzgr/7GPZ2NZ4plUtBxLUzX78P1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MgArt/btruVKNmzgr/7GPZ2NZ4plUtBxLUzX78P1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMgArt%2FbtruVKNmzgr%2F7GPZ2NZ4plUtBxLUzX78P1%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;C 언어에 기반을 둔 유닉스 관련 시스템에서 파일을 읽거나 쓸 때 쓰이는 세 가지 스트림이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이를 &lt;b&gt;표준 스트림&lt;/b&gt;이라 하는데, 이는 유닉스 및 유닉스 계열 운영체제에서 프로그램과 단말기 사이에 미리 연결된 입출력 통로를 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일반적으로 프로그램 실행 시 세 개의 스트림(stdin, stdout, stderr)이 자동으로 열린다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;stdin, 표준 입력&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램으로 들어가는 데이터 스트림이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램이 사용자에게 패스워드 입력하도록 요구할 경우에 해당되는 스트림이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;stdout, 표준 출력&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램이 출력 데이터를 기록하는 스트림이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 출력이 stdout 스트림을 통해 출력된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;stderr, 표준 오류&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일반적으로 디버깅 정보 또는 오류를 출력하기 위한 또 다른 출력 스트림이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;표준 출력과는 독립적인 스트림이며, 별도로 리다이렉트 될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아래 그림은 표준 스트림의 흐름이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646202777987&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ echo foo&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PPwVo/btruUoKvUhe/NKb5mhK03AyzwekLmkIJ31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PPwVo/btruUoKvUhe/NKb5mhK03AyzwekLmkIJ31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PPwVo/btruUoKvUhe/NKb5mhK03AyzwekLmkIJ31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPPwVo%2FbtruUoKvUhe%2FNKb5mhK03AyzwekLmkIJ31%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;690&quot; height=&quot;362&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;362&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;echo&lt;/b&gt;는 입력받은 문자열을 터미널에 출력하는 명령어이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;stdin을 통해 키보드로 입력받은 foo 는 echo로 전달되고, echo에서 stdout 스트림으로 foo 를 전달해 터미널에 출력한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 과정에서 오류가 발생하면 stderr 스트림에서 입력된 오류를 출력한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 표준 스트림은 POSIX에 포함되며, 이 POSIX를 따르는 모든 운영체제에 제공된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파이프(Pipe)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&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;225&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cv69yn/btruUnETWs1/7LXmyBMzUmfcQnm122NXKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cv69yn/btruUnETWs1/7LXmyBMzUmfcQnm122NXKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cv69yn/btruUnETWs1/7LXmyBMzUmfcQnm122NXKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcv69yn%2FbtruUnETWs1%2F7LXmyBMzUmfcQnm122NXKK%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;파이프(Pipe)&lt;/b&gt;는 유닉스 계열 운영체제에서 제공되는 &lt;b&gt;병행성 메커니즘&lt;/b&gt;의 하나로, 프로세스 간 통신을 가능하게 해주는 버퍼이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예를 들어, 어떤 프로그램의 출력 결과를 다른 프로그램의 입력 값으로 사용할 수 있도록 병행성을 제공해주는 메커니즘으로 생각하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파이프의 사용 방법은 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646203746157&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ echo &quot;foo bar baz&quot; | wc -w&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;354&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3NLuc/btruRNjHHwM/gcTshKiSOga5bKu3WQOUIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3NLuc/btruRNjHHwM/gcTshKiSOga5bKu3WQOUIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3NLuc/btruRNjHHwM/gcTshKiSOga5bKu3WQOUIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3NLuc%2FbtruRNjHHwM%2FgcTshKiSOga5bKu3WQOUIk%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;916&quot; height=&quot;354&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;354&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;wc&lt;/b&gt; 는 개수를 세는 명령어이며, &lt;b&gt;-w&lt;/b&gt; 는 단어이다. 즉 단어의 개수를 세라는 의미이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;stdin을 통해 키보드로 입력받은 foo bar baz 는&lt;b&gt; |&lt;/b&gt; (파이프)에 의해 wc 의 stdin으로 전달된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;foo bar baz 는 세 단어로 조합된 문자열이므로, wc는 stdout에게 3을 전달해 터미널에 3을 출력하게 된다.&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;&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;&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;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;POSIX.&quot; Wikipedia. 2022. 01. 13. 수정, 2022. 03. 02. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/POSIX&quot;&gt;https://ko.wikipedia.org/wiki/POSIX&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;표준 스트림.&quot; Wikipedia. 2022. 02. 15. 수정, 2022. 03. 02. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%EC%8A%A4%ED%8A%B8%EB%A6%BC&quot;&gt;https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%EC%8A%A4%ED%8A%B8%EB%A6%BC&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;파이프(유닉스).&quot; Wikipedia. 2022. 02. 12. 수정, 2022. 03. 02. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%ED%94%84_(%EC%9C%A0%EB%8B%89%EC%8A%A4)&quot;&gt;https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%ED%94%84_(%EC%9C%A0%EB%8B%89%EC%8A%A4)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;stdin, stdout, stderr, and pipes.&quot; Github. n.d. 수정, 2022. 03. 02. 접속, &lt;a href=&quot;https://github.com/kennyyu/bootcamp-unix/wiki/stdin,-stdout,-stderr,-and-pipes&quot;&gt;https://github.com/kennyyu/bootcamp-unix/wiki/stdin,-stdout,-stderr,-and-pipes&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Backend Roadmap/OS</category>
      <author>jeongwon201</author>
      <guid isPermaLink="true">https://jeongwon201.tistory.com/24</guid>
      <comments>https://jeongwon201.tistory.com/24#entry24comment</comments>
      <pubDate>Wed, 2 Mar 2022 16:22:31 +0900</pubDate>
    </item>
    <item>
      <title>터미널(Terminal)</title>
      <link>https://jeongwon201.tistory.com/23</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;터미널(Terminal)&lt;/span&gt;&lt;/b&gt;&lt;/h2&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;960&quot; data-origin-height=&quot;595&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXOcRB/btruPa6BOej/zixKElBwbPZlKRFtkjfak1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXOcRB/btruPa6BOej/zixKElBwbPZlKRFtkjfak1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXOcRB/btruPa6BOej/zixKElBwbPZlKRFtkjfak1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXOcRB%2FbtruPa6BOej%2FzixKElBwbPZlKRFtkjfak1%2Fimg.webp&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;300&quot; height=&quot;186&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;595&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;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;터미널(Terminal)이란&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;터미널(Terminal)&lt;/b&gt;이란 단말기를 뜻하는 단어로, 컴퓨터 시스템에서 데이터를 입력하거나 표시하는데 쓰이는 전자 하드웨어 기기이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터 터미널은 사람과 컴퓨터의 인터페이스의 한 종류이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;터미널은 1950~60년대에 만들어졌으며, 원래 형태는 오늘날 우리가 사용하는 *&lt;b&gt;GUI&lt;/b&gt;와는 많이 다른 모습을 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;GUI(Graphic User Interface)&lt;/b&gt;란 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 등의 그래픽으로 나타낸 인터페이스이다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;당시 터미널은 CLI 환경으로 특정 명령어를 통해 컴퓨터와 상호작용할 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;CLI(Command Line Interface)&lt;/b&gt;란 사람과 컴퓨터와의 상호작용을 텍스트의 형태로 수행하는 인터페이스이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 환경은 빈 화면과 깜빡이는 커서, 수행할 작업에 대한 도움이 거의 없었고, 기본적인 명령어들을 외워야지만 사용하는데 익숙해질 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;979&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/etCNlG/btruO90vgri/YzeLImhX8cPn8smyurEbB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/etCNlG/btruO90vgri/YzeLImhX8cPn8smyurEbB0/img.png&quot; data-alt=&quot;Windows 명령 프롬프트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/etCNlG/btruO90vgri/YzeLImhX8cPn8smyurEbB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FetCNlG%2FbtruO90vgri%2FYzeLImhX8cPn8smyurEbB0%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;600&quot; height=&quot;314&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Windows 명령 프롬프트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이후 GUI의 등장으로 인해 이러한 명령어들을 외우고 다닐 필요가 없어졌고, 누구나 컴퓨터를 손쉽게 사용할 수 있게 되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;현재 터미널은 CLI 환경을 이용할 수 있게 해주는 소프트웨어의 의미로 사용되고 있으며, 컴퓨터의 기본 파일 시스템과 저수준의 기능에 대한 접근을 제공한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;letter-spacing: 0px; font-family: 'Nanum Gothic';&quot;&gt;컴퓨터, 마이크로 컴퓨터, 클라우드에 저장된 서버, 심지어 휴대전화에 이르기까지 터미널은 모든 운영체제의 기본 기능으로 남아있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;터미널 사용법&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;터미널의 사용 방법과 명령어에 대해 간단히 알아보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;리눅스/유닉스 계열 시스템의 운영체제는 기본적으로 터미널이 제공된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그러나 Windows 운영체제의 경우 별도의 터미널과 명령어를 사용하고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Windows 운영체제에서 리눅스/유닉스 명령어를 사용하려면 가상 머신을 설치하는 등의 별도의 작업이 필요하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가상 머신을 설치하려면 많은 시간이 소요되므로, &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;최근 MS에서 Windows 10 부터 제공하는 WSL을 사용하자.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;WSL&lt;/b&gt;이란 윈도우 환경에서 리눅스 도구를 사용할 수 있도록 지원하는 소프트웨어이다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1646126663174&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;WSL 설치&quot; data-og-description=&quot;wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linux 배포판에서 실행되는 Windows 머신에서 Bash 터미널을 사용할 수 있습니&quot; data-og-host=&quot;docs.microsoft.com&quot; data-og-source-url=&quot;https://docs.microsoft.com/ko-kr/windows/wsl/install&quot; data-og-url=&quot;https://docs.microsoft.com/ko-kr/windows/wsl/install&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c0ONwm/hyNzWPMdoU/3AHOrsfkSHmkfNryeFjl21/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/ko-kr/windows/wsl/install&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.microsoft.com/ko-kr/windows/wsl/install&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c0ONwm/hyNzWPMdoU/3AHOrsfkSHmkfNryeFjl21/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&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;WSL 설치&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linux 배포판에서 실행되는 Windows 머신에서 Bash 터미널을 사용할 수 있습니&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.microsoft.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;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설치를 완료했다면, 일부 명령어를 알아보고 직접 입력해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 파일 시스템에 관련된 작업을 수행하는 명령어이다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;ls&lt;/b&gt; : 디렉토리 목록 출력&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;cd&lt;/b&gt; : 디렉토리 구조에서 이동&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;mkdir&lt;/b&gt; : 디렉토리 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;touch&lt;/b&gt; : 빈 파일 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;cat&lt;/b&gt; : 파일 생성 또는 파일 내용 출력&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;mv&lt;/b&gt; : 파일 이동&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;cp&lt;/b&gt; : 파일 복사&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;rm&lt;/b&gt; : 파일 또는 디렉토리 삭제&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 디렉토리를 생성하여 해당 디렉토리에 파일을 만드는 과정이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우선 mkdir 명령어를 통해 test 라는 이름을 가진 디렉토리를 생성하려면 터미널에 다음과 같이 입력한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646132356333&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mkdir test&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ls 명령어를 이용해 디렉토리 목록을 출력해보면 test 라는 이름을 가진 디렉토리가 생성되었음을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgy5xG/btruwI4y1cB/w8RUPdeFtUinNV8Pk3Kk30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgy5xG/btruwI4y1cB/w8RUPdeFtUinNV8Pk3Kk30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgy5xG/btruwI4y1cB/w8RUPdeFtUinNV8Pk3Kk30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbgy5xG%2FbtruwI4y1cB%2Fw8RUPdeFtUinNV8Pk3Kk30%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;600&quot; height=&quot;291&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;test 디렉토리로 이동하려면 터미널에 다음과 같이 입력한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646132572614&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd test&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDz7vW/btruQr09VnR/nMvTScVGD5FwvTRC28l1s1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDz7vW/btruQr09VnR/nMvTScVGD5FwvTRC28l1s1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDz7vW/btruQr09VnR/nMvTScVGD5FwvTRC28l1s1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDz7vW%2FbtruQr09VnR%2FnMvTScVGD5FwvTRC28l1s1%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;600&quot; height=&quot;225&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위 그림과 같이 $ 기호 앞에 파란색 텍스트로 현재 위치한 디렉토리를 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;test 디렉토리 내부에 cat 명령어를 이용하여 파일을 하나 생성해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;터미널에 다음과 같이 입력한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646133132261&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cat &amp;gt; testfile
this is testfile.
&amp;lt;Ctrl + C 입력&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;testfile 이라는 이름에 this is testfile. 이라는 내용을 가지는 파일을 생성한다는 의미이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Ctrl + C 를 눌러 저장 후 커서를 디렉토리로 이동시킨다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bP8SKk/btruHxvo4Xy/qXz5aojIimoGQKhB1a1CB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bP8SKk/btruHxvo4Xy/qXz5aojIimoGQKhB1a1CB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bP8SKk/btruHxvo4Xy/qXz5aojIimoGQKhB1a1CB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbP8SKk%2FbtruHxvo4Xy%2FqXz5aojIimoGQKhB1a1CB1%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;600&quot; height=&quot;237&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;testfile의 내용을 출력하려면 터미널에 다음과 같이 입력한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646133657101&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cat testfile&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU2RuN/btruI7oTDtS/eiednBhKEuF2Rcrg24cVRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU2RuN/btruI7oTDtS/eiednBhKEuF2Rcrg24cVRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU2RuN/btruI7oTDtS/eiednBhKEuF2Rcrg24cVRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU2RuN%2FbtruI7oTDtS%2FeiednBhKEuF2Rcrg24cVRK%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;600&quot; height=&quot;243&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;cat 명령어를 통해 파일 생성뿐만 아니라 파일의 내용도 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;cp명령어를 이용해 파일을 복사해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1646191720651&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cp testfile testfile2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;testfile을 testfile2 이름으로 복사한다는 의미이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ls 명령어를 입력하면 testfile 2가 생성된 것을 확인할 수 있으며, cat 명령어로 내용을 출력하면 testfile과 동일한 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;539&quot; data-origin-height=&quot;313&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1PN9c/btruMo5Vl1u/aNLJozyRPtDC9c0jxnC5sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1PN9c/btruMo5Vl1u/aNLJozyRPtDC9c0jxnC5sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1PN9c/btruMo5Vl1u/aNLJozyRPtDC9c0jxnC5sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1PN9c%2FbtruMo5Vl1u%2FaNLJozyRPtDC9c0jxnC5sk%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;600&quot; height=&quot;348&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;539&quot; data-origin-height=&quot;313&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;mv 명령어로 복사한 testfile2 를 다른 디렉토리에 이동시켜보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우선 이동시켜야 할 디렉토리가 필요하므로, test 디렉토리 내부에 test2 디렉토리를 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;mkdir 명령어를 이용하여 test2 디렉토리를 생성하였으면 터미널에 다음과 같이 입력한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646192158776&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mv testfile2 test2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;testfile2 파일을 test2 디렉토리로 이동시킨다는 의미이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SiILb/btruKjjNfyp/vKWb2FYKRxl07znBjOVxy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SiILb/btruKjjNfyp/vKWb2FYKRxl07znBjOVxy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SiILb/btruKjjNfyp/vKWb2FYKRxl07znBjOVxy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSiILb%2FbtruKjjNfyp%2FvKWb2FYKRxl07znBjOVxy1%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;600&quot; height=&quot;455&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;test 디렉토리 내부에서 ls 명령어를 입력하면 testfile2가 사라진 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그다음, cd 명령어를 통해 test2 디렉토리 내부로 이동하여 ls 명령어를 입력하면 해당 디렉토리에 testfile2가 이동했음을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 지금까지 만들었던 파일과 디렉토리들을 삭제해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우선 cd 명령어를 통해 디렉토리에서 빠져나온다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646192405850&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그다음, rm 명령어를 통해 만들었던 파일과 디렉토리를 삭제하려면 터미널에 다음과 같이 입력한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646134005104&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rm -r test&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;디렉토리 삭제 시 -r 옵션을 입력해야 삭제가 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이후 -ls 명령어를 입력해보면 test 디렉토리가 사라진 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXEeDl/btruRLToFfC/Kk7HbMIgXQ0l5O2qvFZZC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXEeDl/btruRLToFfC/Kk7HbMIgXQ0l5O2qvFZZC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXEeDl/btruRLToFfC/Kk7HbMIgXQ0l5O2qvFZZC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXEeDl%2FbtruRLToFfC%2FKk7HbMIgXQ0l5O2qvFZZC1%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;600&quot; height=&quot;360&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;&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;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt; &quot;Command line crash course.&quot; MDN Web Docs. n.d. 수정, 2022. 03. 01. 접속, &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Command_line#welcome_to_the_terminal&quot;&gt;https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Command_line#welcome_to_the_terminal&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;단말기.&quot; Wikipedia. 2022. 02. 23. 수정, 2022. 03. 01. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%8B%A8%EB%A7%90%EA%B8%B0&quot;&gt;https://ko.wikipedia.org/wiki/%EB%8B%A8%EB%A7%90%EA%B8%B0&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;명령 줄 인터페이스.&quot; Wikipedia. 2022. 02. 27. 수정, 2022. 03. 01. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9_%EC%A4%84_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4&quot;&gt;https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9_%EC%A4%84_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Backend Roadmap/OS</category>
      <category>terminal</category>
      <category>WSL</category>
      <category>리눅스 기본 명령어</category>
      <category>리눅스 기초 명령어</category>
      <category>우분투 터미널</category>
      <category>컴퓨터 터미널</category>
      <category>터미널</category>
      <category>터미널 사용법</category>
      <author>jeongwon201</author>
      <guid isPermaLink="true">https://jeongwon201.tistory.com/23</guid>
      <comments>https://jeongwon201.tistory.com/23#entry23comment</comments>
      <pubDate>Tue, 1 Mar 2022 20:48:46 +0900</pubDate>
    </item>
    <item>
      <title>네트워크(Network) ②</title>
      <link>https://jeongwon201.tistory.com/22</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;네트워크(Network)&amp;nbsp;②&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&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;960&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGNp9T/btruE9l0vod/IrMVc1NcQbQ63qfvB6UK8K/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGNp9T/btruE9l0vod/IrMVc1NcQbQ63qfvB6UK8K/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGNp9T/btruE9l0vod/IrMVc1NcQbQ63qfvB6UK8K/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGNp9T%2FbtruE9l0vod%2FIrMVc1NcQbQ63qfvB6UK8K%2Fimg.webp&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;500&quot; height=&quot;333&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터 네트워크 모델(Computer Network Model)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;초기 네트워크 시스템에서 통신을 목적으로 하는 소프트웨어의 구현은 복잡하고 구조화되지 않은 단일 프로그램을 기반으로 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 결과, 소프트웨어를 테스트하고 수정하는 것이 매우 어려워졌고, 보다 구조적이고 관리하기 편한 설계가 필요했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 문제를 극복하기위해 국제 표준화 기구, ISO(International Organization for Standardization)는 계층화된 접근 방식을 개발했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;계층형 아키텍처(Layerd Architecture)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;계층형 아키텍처(Layerd Architecture)&lt;/b&gt;는 네트워크의 개념을 독립된 여러 계층으로 분리하는 것을 목적으로 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;분리된 각 계층은 특정 작업만을 할당하여 수행하며, 상 &amp;middot; 하위 계층 간 상호작용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;각 하위 계층은 상위 계층에 서비스를 추가하여 통신을 관리하고, 애플리케이션을 실행하기 위한 서비스를 제공한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;727&quot; data-origin-height=&quot;448&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kZQ2t/btrutlANX8r/ODNjX8zWre23i26vDuMwdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kZQ2t/btrutlANX8r/ODNjX8zWre23i26vDuMwdk/img.png&quot; data-alt=&quot;계층형 아키텍처&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kZQ2t/btrutlANX8r/ODNjX8zWre23i26vDuMwdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkZQ2t%2FbtrutlANX8r%2FODNjX8zWre23i26vDuMwdk%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;400&quot; height=&quot;246&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;448&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;계층형 아키텍처&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;계층형 아키텍처의 기본 요소는 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;서비스(Service)&lt;/b&gt; : 각 계층이 상위 계층에 제공하는 일련의 작업이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;프로토콜(Protocol)&lt;/b&gt; : 계층이 동일한 수준의 계층과 정보를 교환하는 데 사용되는 규칙이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;인터페이스(Interface)&lt;/b&gt; : 메시지가 한 계층에서 다른 계층으로 전송될 때의 방식을 의미한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;각 계층은 하위 계층의 서비스만을 이용하고, 상위 계층에게 서비스를 제공함으로써 계층 간 독립성을 보장한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서 각 계층을 수정해도 다른 계층에게 영향을 미치지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;계층의 수, 기능, 각 계층의 내용은 네트워크마다 다르지만, 계층의 목적은 하위 계층에서 상위 계층으로 서비스를 제공하고 서비스 구현의 세부사항을 숨기는 것으로 동일하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 계층 및 프로토콜의 집합을 &lt;b&gt;네트워크 아키텍처&lt;/b&gt;라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;계층형 아키텍처를 기반으로 한들, 계층의 수와 기능 등이 네트워크마다 달라 서로 다른 기종 간 통신이 불가능했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;통신 기술의 발달, 개인용 컴퓨터의 보급으로 컴퓨터 간 네트워크의 필요성이 절실히 대두되자, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;국제 표준화 기구(ISO)는 네트워크의 구조를 표준화하기 위해 OSI 참조 모델을 제시했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;OSI 참조 모델(&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;Open Systems Interconnection Reference Model, OSI&lt;/span&gt;)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;OSI 참조 모델(&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;Open Systems Interconnection Reference Model, OSI&lt;/span&gt;)&lt;/b&gt;란 컴퓨터의 응용 프로그램 정보가 물리적 매체를 통해 다른 컴퓨터의 응용프로그램으로 이동하는 방식을 설명하는 참조 모델이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;OSI 모델은 다음과 같은 계층으로 구성된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;595&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mX10M/btrusNZvXMz/AQLK8iqVUlWrTxls2RdKu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mX10M/btrusNZvXMz/AQLK8iqVUlWrTxls2RdKu0/img.png&quot; data-alt=&quot;OSI 모델&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mX10M/btrusNZvXMz/AQLK8iqVUlWrTxls2RdKu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmX10M%2FbtrusNZvXMz%2FAQLK8iqVUlWrTxls2RdKu0%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;350&quot; height=&quot;496&quot; data-origin-width=&quot;595&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;OSI 모델&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;OSI 모델은 &lt;b&gt;상위 계층&lt;/b&gt;과 &lt;b&gt;하위 계층&lt;/b&gt;으로 구분된다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;상위 계층 : 주로 응용 프로그램과 관련된 작업을 다루며, 소프트웨어에서만 구현된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하위 계층 : 데이터 전송과 관련된 작업을 다루며, 하드웨어와 소프트웨어로 구현된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;각 계층의 기능은 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;물리(Physical) 계층&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비트를 한 노드에서 다른 노드로 전송하는 하드웨어 전송 기술을 다룬다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;두 개 이상의 장치를 물리적으로 연결하는 회선을 구성하거나, 두 장치 간 데이터 전송, 네트워크 토폴로지를 정의한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;데이터 링크(Data Link) 계층&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;신뢰성있는 데이터 전송을 보장하기 위한 계층이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;물리 계층과 상호작용하면서 발생하는 오류를 검출하고 수정하는 &lt;b&gt;오류 제어&lt;/b&gt; 기능과, 연결된 두 장치 간 주고받는 데이터가 손상되지 않도록 양쪽에서 일정한 데이터 속도를 유지하는 &lt;b&gt;흐름 제어&lt;/b&gt; 기능을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 네트워크 계층으로 데이터를 전달하기 위해 물리 계층의 비트 스트림을 프레임(Frame)으로 변환한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;네트워크(Network) 계층&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주소 할당 및 고유 주소 지정을 관리하며 라우팅 기능을 담당하는 계층이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하위 계층으로부터 전달받은 프레임에 주소를 추가하고, &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;통신하려는 목적지까지의 여러 경로 중 최적의 경로를 찾아주는 &lt;b&gt;라우팅&lt;/b&gt; 기능을 수행한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;전달받은 데이터를 캡슐화하거나, 역 캡슐화하여 네트워크 계층의 데이터 단위로 변환하는 &lt;b&gt;패킷화&lt;/b&gt;를 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;전송(Transport) 계층&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;letter-spacing: 0px; font-family: 'Nanum Gothic';&quot;&gt;양 끝단의 사용자들이 신뢰성있는 데이터를 주고받을 수 있도록 보장해주는 계층이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;letter-spacing: 0px; font-family: 'Nanum Gothic';&quot;&gt;상위 계층들이 데이터 전달의 유효성이나 효율성을 고려하지 않도록 &lt;b&gt;중복을 검사&lt;/b&gt;하는 등의 기능을 통해 종단 간 신뢰적이고 효율적인 데이터 전송을 담당한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;세션(Session) 계층&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;통신 장치 간 상호 작용의 설정, 유지, 동기화를 담당하는 계층이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;두 프로세스 사이에서 대화 관리하는 &lt;b&gt;대화 제어&lt;/b&gt; 기능을 수행하거나, 데이터를 전송할 때 체크포인트를 두어 오류 발생 시 체크포인트부터 다시 전송할 수 있게 하는 &lt;b&gt;동기화&lt;/b&gt; 기능을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;표현(Presentation) 계층&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;두 시스템 간 교환되는 정보 또는 코드의 번역을 담당한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;인코딩이나 암호화 등 데이터를 다른 형태로 &lt;b&gt;변환&lt;/b&gt;하거나, 전송할 데이터를 &lt;b&gt;압축&lt;/b&gt;하는 기능을 수행하는 계층이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;응용(Application) 계층&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사용자와 직접적으로 상호작용하는 계층이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;응용 계층 아래의 표현 계층과 상호작용할 수 있는 데이터를 사용자에게 보여주는 &lt;b&gt;인터페이스&lt;/b&gt; 역할을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;OSI 모델 외 인터넷의 모든 통신에서 사용되는 TCP/IP 모델도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1645970106961&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;TCP/IP(Transmission Control Protocol / Internet Protocol)&quot; data-og-description=&quot;TCP/IP(Transmission&amp;nbsp;Control&amp;nbsp;Protocol&amp;nbsp;/&amp;nbsp;Internet&amp;nbsp;Protocol) 컴퓨터가 서로 통신하는 경우, 프로토콜이라 불리는 특정 규칙 또는 규약을 사용하여 순서대로 데이터를 전송하거나 수신할 수 있다. TCP/IP(Tr..&quot; data-og-host=&quot;jeongwon201.tistory.com&quot; data-og-source-url=&quot;https://jeongwon201.tistory.com/9&quot; data-og-url=&quot;https://jeongwon201.tistory.com/9&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/3Yv9h/hyNxCjwkhW/7MeqrkH2ze0ZMWUpNKLxi0/img.jpg?width=400&amp;amp;height=119&amp;amp;face=0_0_400_119,https://scrap.kakaocdn.net/dn/cmkuyO/hyNxCDNBOc/CAyWmRzig2DKW77jELoVqk/img.jpg?width=400&amp;amp;height=119&amp;amp;face=0_0_400_119,https://scrap.kakaocdn.net/dn/eawZih/hyNxQB32kL/86GaONZDL8mcWSLQKvaFB1/img.png?width=666&amp;amp;height=500&amp;amp;face=0_0_666_500&quot;&gt;&lt;a href=&quot;https://jeongwon201.tistory.com/9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jeongwon201.tistory.com/9&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/3Yv9h/hyNxCjwkhW/7MeqrkH2ze0ZMWUpNKLxi0/img.jpg?width=400&amp;amp;height=119&amp;amp;face=0_0_400_119,https://scrap.kakaocdn.net/dn/cmkuyO/hyNxCDNBOc/CAyWmRzig2DKW77jELoVqk/img.jpg?width=400&amp;amp;height=119&amp;amp;face=0_0_400_119,https://scrap.kakaocdn.net/dn/eawZih/hyNxQB32kL/86GaONZDL8mcWSLQKvaFB1/img.png?width=666&amp;amp;height=500&amp;amp;face=0_0_666_500');&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;TCP/IP(Transmission Control Protocol / Internet Protocol)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;TCP/IP(Transmission&amp;nbsp;Control&amp;nbsp;Protocol&amp;nbsp;/&amp;nbsp;Internet&amp;nbsp;Protocol) 컴퓨터가 서로 통신하는 경우, 프로토콜이라 불리는 특정 규칙 또는 규약을 사용하여 순서대로 데이터를 전송하거나 수신할 수 있다. TCP/IP(Tr..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jeongwon201.tistory.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;&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;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Computer Network Models.&quot; javatpoint. n.d. 수정, 2022. 02. 27. 접속, &lt;a href=&quot;https://www.javatpoint.com/computer-network-models&quot;&gt;https://www.javatpoint.com/computer-network-models&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;OSI Model.&quot; javatpoint. n.d. 수정, 2022. 02. 27. 접속, &lt;a href=&quot;https://www.javatpoint.com/osi-model&quot;&gt;https://www.javatpoint.com/osi-model&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Computer Network Models.&quot; tutorialspoint. n.d. 수정, 2022. 02. 27. 접속, &lt;a href=&quot;https://www.tutorialspoint.com/data_communication_computer_network/computer_network_models.htm&quot;&gt;https://www.tutorialspoint.com/data_communication_computer_network/computer_network_models.htm&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;OSI 모형.&quot; Wikipedia. 2022. 02. 11. 수정, 2022. 02. 27. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/OSI_%EB%AA%A8%ED%98%95&quot;&gt;https://ko.wikipedia.org/wiki/OSI_%EB%AA%A8%ED%98%95&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>OSI</category>
      <category>OSI 7 계층</category>
      <category>OSI 계층</category>
      <category>OSI 모델</category>
      <category>OSI 참조 모델</category>
      <category>계층형 아키텍처</category>
      <category>계층화 아키텍처</category>
      <category>네트워크</category>
      <category>네트워크 모델</category>
      <category>네트워크 아키텍처</category>
      <author>jeongwon201</author>
      <guid isPermaLink="true">https://jeongwon201.tistory.com/22</guid>
      <comments>https://jeongwon201.tistory.com/22#entry22comment</comments>
      <pubDate>Sun, 27 Feb 2022 23:06:30 +0900</pubDate>
    </item>
    <item>
      <title>네트워크(Network) ①</title>
      <link>https://jeongwon201.tistory.com/21</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;네트워크(Network)&lt;/span&gt;&lt;/b&gt;&lt;/h2&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;960&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sc5eZ/btrul229lyx/XmMtHmbzibMDqQhXu1OdK1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sc5eZ/btrul229lyx/XmMtHmbzibMDqQhXu1OdK1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sc5eZ/btrul229lyx/XmMtHmbzibMDqQhXu1OdK1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsc5eZ%2Fbtrul229lyx%2FXmMtHmbzibMDqQhXu1OdK1%2Fimg.webp&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;500&quot; height=&quot;333&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우리가 현재 사용하는 인터넷은 아주 방대한 네트워크로 구성되어 서로 연결되어있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우리는 어떻게 집에서 먼 나라의 사람들과 소통을 할 수 있을 까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 포스팅은 네트워크에 대해 설명을 해보려 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;네트워크(Network)란&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터에서의 &lt;b&gt;네트워크(Network)&lt;/b&gt;란 여러 컴퓨터가 연결되어 정보를 주고받는 &lt;b&gt;통신망&lt;/b&gt;을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그물을 뜻하는 Net과 일하다의 Work의 합성어로, 수많은 컴퓨터를 그물로 엮는 행위라고 생각할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 네트워크는 무선 또는 유선의 형태로 연결될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 네트워크는 통신망의 범위에 따라 구분된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;네트워크의 유형&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일반적으로 네트워크는 &lt;b&gt;지리적 범위&lt;/b&gt;에 따라 여러 유형으로 구분된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서 말하는 지리적 범위는 휴대전화와 블루투스 사이의 작은 범위, 인터넷 자체만큼의 큰 범위 등 통신망의 범위를 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;PAN(Personal Area Network, 개인 영역 네트워크)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사용자의 개인적인 범위, &lt;b&gt;가장 작은&lt;/b&gt; 네트워크이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;블루투스를 사용한 무선 키보드, 마우스, 이어폰 등이 PAN에 해당된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LAN(Local Area Network, 근거리 통신망)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;건물 내부에서 사용하는 망, 단일 관리 시스템에서 운영되는 컴퓨터 네트워크를 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일반적으로 조직의 사무실, 학교, 대학에서 사용하는 네트워크이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;468&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPNnxu/btruoMygTqx/GyszO4qtlbcZeMYtqPcyJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPNnxu/btruoMygTqx/GyszO4qtlbcZeMYtqPcyJk/img.png&quot; data-alt=&quot;LAN&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPNnxu/btruoMygTqx/GyszO4qtlbcZeMYtqPcyJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPNnxu%2FbtruoMygTqx%2FGyszO4qtlbcZeMYtqPcyJk%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;200&quot; height=&quot;192&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LAN&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MAN(Metropolitan Area Network, 대도시 통신망)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;보다 큰 네트워크를 형성하기 위해 다른 LAN을 상호 연결하여 더 넓은 지리적 범위를 가지는 네트워크이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;작은 통신망이 모여 하나의 도시 단위의 통신망을 형성한 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1093&quot; data-origin-height=&quot;855&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzxzNP/btruh6SHtbb/KXXm1ypWiJvYT3hx8Lgvx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzxzNP/btruh6SHtbb/KXXm1ypWiJvYT3hx8Lgvx0/img.png&quot; data-alt=&quot;MAN&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzxzNP/btruh6SHtbb/KXXm1ypWiJvYT3hx8Lgvx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzxzNP%2Fbtruh6SHtbb%2FKXXm1ypWiJvYT3hx8Lgvx0%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;300&quot; height=&quot;235&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;855&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MAN&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;WAN(Wide Area Network, 광역 통신망)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주 또는 국가와 같은 넓은 지리적 범위로 확장된 네트워크이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;대도시 통신망이 모여 하나의 국가 단위의 통신망을 형성한 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1210&quot; data-origin-height=&quot;915&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNdkFp/btruk4GDP7k/XOJZpmMHJGZpwQipdVejY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNdkFp/btruk4GDP7k/XOJZpmMHJGZpwQipdVejY1/img.png&quot; data-alt=&quot;WAN&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNdkFp/btruk4GDP7k/XOJZpmMHJGZpwQipdVejY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNdkFp%2Fbtruk4GDP7k%2FXOJZpmMHJGZpwQipdVejY1%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;400&quot; height=&quot;302&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;915&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;WAN&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;인터네트워크(Internetwork)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단히 인터넷이라고 불리는 인터네트워크는 지구 상에서 존재하는 가장 큰 네트워크라고 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LAN, WAN을 더불어, 연결되는 모든 범위를 포함하는 네트워크이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 네트워크는 실제로 어떻게 연결될까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;네트워크 토폴로지(Network Topology)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;토폴로지(Topology)&lt;/b&gt;란 일반적으로 &lt;b&gt;물리적인&lt;/b&gt; 배치의 형태로 이루어진 모양을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터에서의 &lt;b&gt;네트워크 토폴로지(Network Topology)&lt;/b&gt;란 컴퓨터 네트워크의 요소들을 물리적으로 연결해 놓은 연결 방식 또는 구조를 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;네트워크 토폴로지의 유형은 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;포인트 투 포인트 토폴로지(Point-to-Point Topology)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;서로 다른 두 컴퓨터 또는 네트워크를 구성하는 장치가 일 대 일로 연결된 형태이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;544&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWUmG0/btrujI43Yrd/DsxkQksxu3Ko9UL5HlPo3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWUmG0/btrujI43Yrd/DsxkQksxu3Ko9UL5HlPo3K/img.png&quot; data-alt=&quot;Point to Point&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWUmG0/btrujI43Yrd/DsxkQksxu3Ko9UL5HlPo3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWUmG0%2FbtrujI43Yrd%2FDsxkQksxu3Ko9UL5HlPo3K%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;300&quot; height=&quot;83&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Point to Point&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;버스 토폴로지(Bus Topology)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 장치가 하나의 통신 라인을 공유하는 형태이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;713&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UjfEo/btruqFTfFVt/8A9BtOxmw42gLDwrh8CXvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UjfEo/btruqFTfFVt/8A9BtOxmw42gLDwrh8CXvK/img.png&quot; data-alt=&quot;Bus Topology&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UjfEo/btruqFTfFVt/8A9BtOxmw42gLDwrh8CXvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUjfEo%2FbtruqFTfFVt%2F8A9BtOxmw42gLDwrh8CXvK%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;300&quot; height=&quot;169&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Bus Topology&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;데이터는 한 방향으로만 흐르며, 여러 컴퓨터가 동시에 데이터를 전송하게 되면 문제가 발생할 수 있으나, *CSMA 기술을 통해 이를 해결할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;CSMA(Carrier Sense Multiple Access)&lt;/b&gt;란 데이터의 무결성이 유지되도록 데이터 흐름을 제어하는 매체 접근 제어 프로토콜의 한 종류이다.&lt;/span&gt;&lt;/blockquote&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;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스타 토폴로지(Star Topology)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 호스트를 Point-to-Point 방식으로 중앙 컴퓨터 또는 허브에 연결된 형태이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;743&quot; data-origin-height=&quot;639&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CNro2/btrubL84bMO/gAkOKenelcJ4qrcFanTlK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CNro2/btrubL84bMO/gAkOKenelcJ4qrcFanTlK1/img.png&quot; data-alt=&quot;Star Topology&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CNro2/btrubL84bMO/gAkOKenelcJ4qrcFanTlK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCNro2%2FbtrubL84bMO%2FgAkOKenelcJ4qrcFanTlK1%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;300&quot; height=&quot;258&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;639&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Star Topology&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;통신은 중앙 컴퓨터 또는 허브를 통해 이루어진다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터를 추가하여 연결하는 데 필요한 추가 케이블은 한 개로 비용이 많이 들지 않지만, 중앙 컴퓨터 또는 허브에 문제가 생기는 경우 모든 통신이 중단되게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;링 토폴로지(Ring Topology)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;각 컴퓨터는 양 옆으로 두 대의 컴퓨터와 연결되어 순환 구조를 가지는 유형이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;599&quot; data-origin-height=&quot;552&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OpgKZ/btrupJazGrb/AQxrXrobDaQIYbsY6e4fo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OpgKZ/btrupJazGrb/AQxrXrobDaQIYbsY6e4fo0/img.png&quot; data-alt=&quot;Ring Topology&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OpgKZ/btrupJazGrb/AQxrXrobDaQIYbsY6e4fo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOpgKZ%2FbtrupJazGrb%2FAQxrXrobDaQIYbsY6e4fo0%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;300&quot; height=&quot;276&quot; data-origin-width=&quot;599&quot; data-origin-height=&quot;552&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Ring Topology&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;인접하지 않은 컴퓨터와 통신할 경우 중간에 있는 컴퓨터를 거쳐야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터를 추가하면 필요한 케이블의 개수는 하나로 비용이 저렴하지만, 한 대의 컴퓨터에 문제가 발생하면 통신 시 해당 컴퓨터를 우회하여 빠른 방향의 역방향으로 통신해야 하므로, 시간이 오래 걸릴 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메쉬 토폴로지(Mesh Topology)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여러 컴퓨터가 하나 이상의 컴퓨터와 연결되어 그물과 같은 형태의 모습을 보이는 유형이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;599&quot; data-origin-height=&quot;552&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7FFaR/btruoKUReUW/WxzKFIkmiRr3xcrdtyKDEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7FFaR/btruoKUReUW/WxzKFIkmiRr3xcrdtyKDEK/img.png&quot; data-alt=&quot;Mesh Topology&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7FFaR/btruoKUReUW/WxzKFIkmiRr3xcrdtyKDEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7FFaR%2FbtruoKUReUW%2FWxzKFIkmiRr3xcrdtyKDEK%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;300&quot; height=&quot;276&quot; data-origin-width=&quot;599&quot; data-origin-height=&quot;552&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Mesh Topology&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 컴퓨터가 연결된다는 가정하게 &lt;b&gt;n(n-1)/2&lt;/b&gt; 개의 케이블이 필요하며, &lt;b&gt;n&lt;/b&gt;은 컴퓨터의 수를 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;지금 까지 알아본 토폴로지 중 가장 안정적인 네트워크 구조이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;트리 토폴로지(Tree Topology)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;계층형 토폴로지라고도 하는 이 유형은 현재 사용되고 있는 가장 일반적인 네트워크 토폴로지 형태이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;993&quot; data-origin-height=&quot;854&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsLgCb/btruk3VuPqp/AbFicwL530JkextZrbMLvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsLgCb/btruk3VuPqp/AbFicwL530JkextZrbMLvK/img.png&quot; data-alt=&quot;Tree Topology&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsLgCb/btruk3VuPqp/AbFicwL530JkextZrbMLvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsLgCb%2Fbtruk3VuPqp%2FAbFicwL530JkextZrbMLvK%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;500&quot; height=&quot;430&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;854&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Tree Topology&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 토폴로지는 여러 계층으로 나누어진다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가장 아래 Access 계층은 사용자의 컴퓨터가 연결되는 계층이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Distribution 계층은 상위 계층과 하위 계층 사이에서 중개역할을 하는 계층이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Core 계층은 네트워크의 중심, 즉 모든 노드가 분기되는 최상위 계층이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하이브리드 토폴로지(Hybrid Topology)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;둘 이상의 토폴로지가 혼합된 네트워크 구조의 유형이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;혼합된 모든 토폴로지의 장점과 단점을 지니게 되며, 인터넷은 가장 큰 하이브리드 토폴로지의 좋은 예라고 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위 내용을 바탕으로 설계된 네트워크 아키텍처를 알아보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;네트워크 아키텍처(Network Architecture)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;네트워크&amp;nbsp;아키텍처(Network&amp;nbsp;Architecture)&lt;/b&gt;란 소프트웨어, 하드웨어, 프로토콜 및 데이터 전송 매체의 물리적 및 논리적인 구조 또는 설계이다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단히 컴퓨터 네트워크가 어떻게 구성되고, 동작하는지에 대한 구조라고 생각하면 된다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 잘 알려진 두 가지 유형의 네트워크 아키텍처이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클라이언트-서버 네트워크(Client-Server Network)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클라이언트라고 하는 사용자가 서버라고 하는 중앙 컴퓨터에서 여러 리소스 데이터에 접근할 수 있도록 설계된 네트워크 아키텍처이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;688&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkSQgE/btruqFMDzoe/YQTYYtJz20SA0Fqdiy6rt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkSQgE/btruqFMDzoe/YQTYYtJz20SA0Fqdiy6rt1/img.png&quot; data-alt=&quot;Client-Server&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkSQgE/btruqFMDzoe/YQTYYtJz20SA0Fqdiy6rt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkSQgE%2FbtruqFMDzoe%2FYQTYYtJz20SA0Fqdiy6rt1%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;350&quot; height=&quot;197&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Client-Server&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사용자 A가 사용자 B에게 데이터를 전송하는 통신을 하려는 경우, 사용자 A는 서버에게 데이터를 주며 B에게 전송할 것을 요청한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;서버는 사용자 A로부터 받은 데이터를 사용자 B에게 전송한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클라이언트-서버 네트워크는 이러한 방식으로 통신하게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;P2P&amp;nbsp;네트워크(Peer&amp;nbsp;To&amp;nbsp;Peer&amp;nbsp;Network) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 컴퓨터가 데이터 처리에 대해 동일한 권한과 책임을 갖고 함께 연결되는 네트워크이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;599&quot; data-origin-height=&quot;551&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8wZkZ/btrulSyWlbL/ddQ50THDw7waHijD7rTSR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8wZkZ/btrulSyWlbL/ddQ50THDw7waHijD7rTSR1/img.png&quot; data-alt=&quot;P2P&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8wZkZ/btrulSyWlbL/ddQ50THDw7waHijD7rTSR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8wZkZ%2FbtrulSyWlbL%2FddQ50THDw7waHijD7rTSR1%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;300&quot; height=&quot;276&quot; data-origin-width=&quot;599&quot; data-origin-height=&quot;551&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;P2P&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클라이언트-서버 네트워크와 달리, 중앙에 집중된 시스템을 이용하지 않고 각 컴퓨터가 Point-to-Point 방식으로 연결되어 통신을 하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;현재 각광받는 기술인 블록체인이 P2P 네트워크를 기반으로 하고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 포스팅에서는 많은 유형의 네트워크 구조로부터 오는 문제점을 해결하기 위한 네트워크 참조 모델인 OSI와 네트워크 보안에 대해서 다루어보겠습니다.&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;&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;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;What is a Computer Network?&quot; javatpoint. n.d. 수정, 2022. 02. 25. 접속, &lt;a href=&quot;https://www.javatpoint.com/computer-network-tutorial&quot;&gt;https://www.javatpoint.com/computer-network-tutorial&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Data Communication &amp;amp; Computer Network.&quot; tutorialspoint. n.d. 수정, 2022. 02. 25. 접속, &lt;a href=&quot;https://www.tutorialspoint.com/data_communication_computer_network/index.htm&quot;&gt;https://www.tutorialspoint.com/data_communication_computer_network/index.htm&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Backend Roadmap/OS</category>
      <author>jeongwon201</author>
      <guid isPermaLink="true">https://jeongwon201.tistory.com/21</guid>
      <comments>https://jeongwon201.tistory.com/21#entry21comment</comments>
      <pubDate>Fri, 25 Feb 2022 20:34:26 +0900</pubDate>
    </item>
    <item>
      <title>입출력 관리(Input/Output Management)</title>
      <link>https://jeongwon201.tistory.com/20</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 관리(Input/Output Management)&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhJHyB/btruexO6DJO/3rfBCLFHW03igYN5KMsokk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhJHyB/btruexO6DJO/3rfBCLFHW03igYN5KMsokk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhJHyB/btruexO6DJO/3rfBCLFHW03igYN5KMsokk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhJHyB%2FbtruexO6DJO%2F3rfBCLFHW03igYN5KMsokk%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;300&quot; height=&quot;300&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 관리(Input/Output Management)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;운영체제의 중요한 작업 중 두 가지는 연산 작업과 입출력 작업이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;운영체제는 마우스, 키보드, 모니터, 프린터, 스피커 등 컴퓨터와 연결된 모든 입출력&amp;nbsp;장치를 관리한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예를 들어 마우스의 입력을 받아 모니터 화면에 출력하는 등의 작업을 할 수 있게 하며, 여러 입 출력 장치 간 충돌이 일어나지 않도록 관리한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 작업을 간단하게 표현하면, 아래와 같은 흐름으로 동작한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;881&quot; data-origin-height=&quot;99&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yc2Zk/btrubukbXvs/PGObLCAVbRxm4nt3QRYEUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yc2Zk/btrubukbXvs/PGObLCAVbRxm4nt3QRYEUk/img.png&quot; data-alt=&quot;입출력 시스템&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yc2Zk/btrubukbXvs/PGObLCAVbRxm4nt3QRYEUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyc2Zk%2FbtrubukbXvs%2FPGObLCAVbRxm4nt3QRYEUk%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;700&quot; height=&quot;79&quot; data-origin-width=&quot;881&quot; data-origin-height=&quot;99&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;입출력 시스템&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;응용 프로그램이 *&lt;b&gt;시스템 콜&lt;/b&gt;을 호출하면, 이 호출이 커널의 장치 드라이버에게 전달되고, 장치 드라이버는 하드웨어인 장치 제어기와 명령 및 정보를 주고받으며 작업을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;시스템 콜(System Call)&lt;/b&gt;이란 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 시스템은 응용 프로그램의 입출력 요청을 받아 입출력 장치로 보낸 후, 장치에서 오는 모든 응답을 응용프로그램으로 전달한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 입출력 시스템의 장치는 두 가지로 나눌 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;블록 장치(Block Device)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;드라이버가 전체 데이터 블록을 전송하여 통신하는 장치이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;데이터 전체를 전송하기 때문에 하드 디스크, CD/DVD 등의 장치가 포함된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;문자 장치(Character Device)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;드라이버가 단일 문자를 송수신하여 통신하는 장치이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;통신하는 데이터가 단순한 마우스, 키보드 등의 장치가 포함된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;장치 드라이버(Device Driver)&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFOU7w/btruk4rLAIe/dBWp8MnqbW2WVaD9t2sE6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFOU7w/btruk4rLAIe/dBWp8MnqbW2WVaD9t2sE6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFOU7w/btruk4rLAIe/dBWp8MnqbW2WVaD9t2sE6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFOU7w%2Fbtruk4rLAIe%2FdBWp8MnqbW2WVaD9t2sE6K%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&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;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;장치 드라이버(Device Driver)&lt;/b&gt;는 특정 장치를 제어하기 위한 커널의 일부분으로, 소프트웨어 모듈이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;운영 체제는 입출력 장치를 처리하기 위해 장치 드라이버의 도움을 받는다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;응용 프로그램에서 특정 장치를 사용하고자 시스템 콜을 요청하면, 장치 드라이버는 커널 내부에 버퍼 공간을 만들고, 장치 제어기 내부에 있는 특정 레지스터에 기록된 데이터 값을 버퍼로 받아와 데이터를 읽거나 쓰는 방식으로 장치 제어기와 상호작용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;장치 제어기(Device Controller)&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cESZmm/btrugP3rvzi/eJrxvfQdXA4OTcvYSs0BG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cESZmm/btrugP3rvzi/eJrxvfQdXA4OTcvYSs0BG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cESZmm/btrugP3rvzi/eJrxvfQdXA4OTcvYSs0BG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcESZmm%2FbtrugP3rvzi%2FeJrxvfQdXA4OTcvYSs0BG0%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&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;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;장치 제어기(Device Controller)&lt;/b&gt;는 장치와 장치 드라이버 간 인터페이스이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터에 연결된 모든 장치의 플러그는 소켓으로 연결되고, 소켓이 장치 제어기에 연결된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;장치 제어기는 각 장치가 운영체제와 통신하기 위해 장치의 *&lt;b&gt;비트 스트림&lt;/b&gt;을 *&lt;b&gt;바이트 블록&lt;/b&gt; 형태로 변환하고, 필요에 따라 오류를 수정하는 작업을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터는 모든 데이터를 0과 1로 처리하며, 이러한 숫자 체계를 이진 수라 고한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;비트(Bit)&lt;/b&gt;란 컴퓨터가 처리하는 정보를 나타내는 최소 단위로, 한 자리 이진수를 의미하며 1 비트라고 표현한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;비트 스트림(Bit Stream)&lt;/b&gt;이란 비트가 직렬의 형태로 연속되어 나열된 데이터를 의미한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;바이트(Byte)&lt;/b&gt;란 8비트를 의미하며, 컴퓨터의 데이터 크기를 나타내는 단위로 사용한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;바이트 블록(Byte Block)&lt;/b&gt;이란 여러 바이트 단위의 데이터로 구성된 데이터 세트를 의미한다.&lt;/span&gt;&lt;/blockquote&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 장치의 데이터 이동 방식&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z8bbn/btrua3INknn/CPDHOvjBl5naxqkTtJLknk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z8bbn/btrua3INknn/CPDHOvjBl5naxqkTtJLknk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z8bbn/btrua3INknn/CPDHOvjBl5naxqkTtJLknk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz8bbn%2Fbtrua3INknn%2FCPDHOvjBl5naxqkTtJLknk%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 장치를 제어하기 위해, CPU와 입출력 장치는 서로 정보를 주고받을 수 있어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 장치의 데이터 이동 방식으로는 세 가지 방식이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;특수 명령 입출력(Special Instruction I/O)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 장치를 제어하기 위해 특별히 만들어진 &lt;b&gt;CPU 명령&lt;/b&gt;을 사용하는 방식이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 명령어는 일반적으로 데이터를 입출력 장치로 보내거나, 입출력 장치에서 읽어올 수 있도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메모리 맵 입출력(Memory Mapped I/O)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메모리와 I/O 장치가 &lt;b&gt;동일한 주소 공간을&lt;/b&gt; &lt;b&gt;공유&lt;/b&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;장치는 특정 메모리 위치에 직접 연결되어 입출력 장치가 CPU를 거치지 않고 메모리로 데이터 블록을 전송하거나 메모리로부터 데이터 블록을 수신할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;852&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdE5cR/btruajddt3T/VSwuRcXgR2eU3XZin6JE3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdE5cR/btruajddt3T/VSwuRcXgR2eU3XZin6JE3K/img.png&quot; data-alt=&quot;메모리 맵 입출력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdE5cR/btruajddt3T/VSwuRcXgR2eU3XZin6JE3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdE5cR%2Fbtruajddt3T%2FVSwuRcXgR2eU3XZin6JE3K%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;600&quot; height=&quot;279&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;메모리 맵 입출력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;매모리 맵 입출력을 사용하는 동안, 운영체제는 메모리에 버퍼를 할당하고, 입출력 장치에게 해당 버퍼를 사용하여 CPU로 데이터를 보내게 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 장치는 CPU와 비동기적으로 작동하며, 완료되면 CPU를 인터럽트 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 방식은 메모리에 액세스 할 수 있는 모든 명령을 사용하여 입출력 장치를 조작할 수 있기 때문에 디스크, 통신 인터페이스와 같은 &lt;b&gt;고속 입출력 장치에 사용&lt;/b&gt;된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;DMA(Direct Memory Access, 직접 메모리 접근)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CPU의 개입 없이 &lt;b&gt;독립적으로 메인 시스템의 메모리에 접근할 수 있게 해주는 방식&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;특정 하드웨어는 DMA 하드웨어를 의미하며, 이는 주 메모리와 입출력 장치 간 데이터 교환을 제어한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;DMA 방식은 데이터 전송을 관리하고, 시스템 버스에 대한 접근을 중재하는 &lt;b&gt;DMAC(DMA Controller)&lt;/b&gt;라는 특수 하드웨어가 필요하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 컨트롤러는 데이터를 읽고 쓰는 대상의 주소 파악, 전송된 바이트 수를 추적하는 카운터, 입출력 및 메모리 유형 파악, CPU에 대한 인터럽트 및 상태를 파악하는 기능을 가진다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;DMA는 다음과 같이 동작한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;906&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zgZS3/btrufEOrhZz/m4Zv4pSFrNKc0P7gzmENG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zgZS3/btrufEOrhZz/m4Zv4pSFrNKc0P7gzmENG1/img.png&quot; data-alt=&quot;DMA&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zgZS3/btrufEOrhZz/m4Zv4pSFrNKc0P7gzmENG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzgZS3%2FbtrufEOrhZz%2Fm4Zv4pSFrNKc0P7gzmENG1%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;450&quot; height=&quot;513&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;906&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DMA&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 장치가 CPU에게 입출력을 요청한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CPU는 DMAC에게 데이터 적재에 대한 권한을 넘기고, 원래 하던 작업을 계속한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;DMAC는 장치 제어기를 통해 입출력 장치로부터 데이터를 받아온다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;DMAC는 메모리에 데이터를 적재한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;DMAC는 데이터 적재를 완료한 후 CPU에게 적재를 완료했음을 알린다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터는 모든 유형의 입력이 발생했음을 감지할 수 있어야 하는데, 폴링과 인터럽트라고 하는 두 가지 방식으로 입력이 발생했음을 감지한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;폴링, 인터럽트(Polling, Interrupt)&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caFH2g/btruhuR9htN/Fbc1BGkde4s4F9jf4Eg4iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caFH2g/btruhuR9htN/Fbc1BGkde4s4F9jf4Eg4iK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caFH2g/btruhuR9htN/Fbc1BGkde4s4F9jf4Eg4iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaFH2g%2FbtruhuR9htN%2FFbc1BGkde4s4F9jf4Eg4iK%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;폴링(Polling)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 장치가 프로세서와 통신하는 가장 간단한 방법으로, 장치의 &lt;b&gt;상태를 주기적으로 확인&lt;/b&gt;하여 CPU가 입출력 장치를 처리해야 하는 시간인지 확인하는 방식이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;응용 프로그램으로부터 입출력 요청이 들어오면 장치 드라이버가 장치의 데이터를 받아와 CPU가 입출력 장치를 처리할 수 있을 때까지 계속 반복하여 감시하게 되는데, CPU는 다른 작업을 수행하지 못하고 데이터가 적재될 때까지 기다리게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이는 매우 비효율적이며, CPU의 낭비를 초래한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;인터럽트(Interrupt)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;폴링 방식에서의 CPU에 대한 낭비를 줄이기 위해 고안된 방식이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CPU가 장치 드라이버를 통해 입출력 명령을 장치 제어기에 전송하고, &lt;b&gt;CPU는 다른 작업을 수행하다가&lt;/b&gt; 장치 제어기가 받은 명령 작업의 완료를 CPU에게 알려주는 방식이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;인터럽트 발생 시 CPU는 현재 진행 중인 프로세스를 중단하고, 이 프로세스에 대한 값을 보존한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그 후 현재 발생된 인터럽트에 해당하는 곳으로 점프하여 작업을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;인터럽트에 대한 작업이 완료되면, 중단했던 프로세스를 복구하여 해당 프로세스를 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입출력 관리에 대해 부족한 내용이 많습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;&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;&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;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Operating System - I/O Hardware.&quot; tutorialspoint. n.d. 수정, 2022. 02. 23. 접속, &lt;a href=&quot;https://www.tutorialspoint.com/operating_system/os_io_hardware.htm&quot;&gt;https://www.tutorialspoint.com/operating_system/os_io_hardware.htm&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Operating System - I/O Softwares.&quot; tutorialspoint. n.d. 수정, 2022. 02. 23. 접속, &lt;a href=&quot;https://www.tutorialspoint.com/operating_system/os_io_software.htm&quot;&gt;https://www.tutorialspoint.com/operating_system/os_io_software.htm&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;[운영체제] 입출력시스템.&quot; Tistory. n.d. 수정, 2022. 02. 23. 접속, &lt;a href=&quot;https://inuplace.tistory.com/282&quot;&gt;https://inuplace.tistory.com/282&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;직접 메모리 접근.&quot; Wikipedia. 2022. 02. 18. 수정, 2022. 02. 23. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%A7%81%EC%A0%91_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EC%A0%91%EA%B7%BC&quot;&gt;https://ko.wikipedia.org/wiki/%EC%A7%81%EC%A0%91_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EC%A0%91%EA%B7%BC&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Backend Roadmap/OS</category>
      <category>device controller</category>
      <category>Device Driver</category>
      <category>io management</category>
      <category>io system</category>
      <category>인터럽트</category>
      <category>입출력 관리</category>
      <category>입출력 시스템</category>
      <category>장치 드라이버</category>
      <category>장치 제어기</category>
      <category>폴링</category>
      <author>jeongwon201</author>
      <guid isPermaLink="true">https://jeongwon201.tistory.com/20</guid>
      <comments>https://jeongwon201.tistory.com/20#entry20comment</comments>
      <pubDate>Wed, 23 Feb 2022 18:58:24 +0900</pubDate>
    </item>
    <item>
      <title>IPC(InterProcess Communication, 프로세스 간 통신)</title>
      <link>https://jeongwon201.tistory.com/19</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;IPC(InterProcess&amp;nbsp;Communication,&amp;nbsp;프로세스&amp;nbsp;간&amp;nbsp;통신)&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&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;666&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9LBx3/btrtYVjtqJl/1JpctktbAxV9MsGULqdXL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9LBx3/btrtYVjtqJl/1JpctktbAxV9MsGULqdXL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9LBx3/btrtYVjtqJl/1JpctktbAxV9MsGULqdXL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9LBx3%2FbtrtYVjtqJl%2F1JpctktbAxV9MsGULqdXL1%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;500&quot; height=&quot;375&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;IPC에 대해 설명하기 앞서, 해당 포스팅을 참고하면 IPC를 이해하는데 도움이 될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://jeongwon201.tistory.com/18&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.02.21 - [Backend Roadmap/OS] - 스레드(Thread)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1645525918095&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;스레드(Thread)&quot; data-og-description=&quot;스레드(Thread) 스레드(Thread)란 스레드(Thread)란 프로세스(process) 내에서의 작업 단위로서, 프로세스 내부에서 실제로 작업을 수행하는 주체를 의미한다. 프로세스의 일부 특성을 지니고 있어 경량 &quot; data-og-host=&quot;jeongwon201.tistory.com&quot; data-og-source-url=&quot;https://jeongwon201.tistory.com/18&quot; data-og-url=&quot;https://jeongwon201.tistory.com/18&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cDXeoe/hyNvi5APQS/V2SXntnRt0ceKs639WppE0/img.png?width=343&amp;amp;height=323&amp;amp;face=0_0_343_323,https://scrap.kakaocdn.net/dn/xAIMh/hyNvk3pmJZ/gA6E31WWh6YuggecFKuql0/img.png?width=343&amp;amp;height=323&amp;amp;face=0_0_343_323,https://scrap.kakaocdn.net/dn/cgS4H4/hyNvpXW0HA/i81f5UKMcKaAuW7oEwzqfK/img.png?width=1566&amp;amp;height=637&amp;amp;face=0_0_1566_637&quot;&gt;&lt;a href=&quot;https://jeongwon201.tistory.com/18&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jeongwon201.tistory.com/18&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cDXeoe/hyNvi5APQS/V2SXntnRt0ceKs639WppE0/img.png?width=343&amp;amp;height=323&amp;amp;face=0_0_343_323,https://scrap.kakaocdn.net/dn/xAIMh/hyNvk3pmJZ/gA6E31WWh6YuggecFKuql0/img.png?width=343&amp;amp;height=323&amp;amp;face=0_0_343_323,https://scrap.kakaocdn.net/dn/cgS4H4/hyNvpXW0HA/i81f5UKMcKaAuW7oEwzqfK/img.png?width=1566&amp;amp;height=637&amp;amp;face=0_0_1566_637');&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;스레드(Thread)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;스레드(Thread) 스레드(Thread)란 스레드(Thread)란 프로세스(process) 내에서의 작업 단위로서, 프로세스 내부에서 실제로 작업을 수행하는 주체를 의미한다. 프로세스의 일부 특성을 지니고 있어 경량&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jeongwon201.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;IPC(InterProcess Communication, 프로세스 간 통신)란?&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;IPC(InterProcess Communication, 프로세스 간 통신)&lt;/b&gt;란 여러 프로세스 사이에 &lt;b&gt;데이터를 주고받는 행위&lt;/b&gt; 또는 그에 대한 방법이나 경로를 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;초기 컴퓨터 시스템의 경우 프로세서는 한 번에 하나의 프로세스만 실행이 가능했지만, 다중 코어 시스템의 등장으로 한 번에 여러 개의 프로세스를 동시에 실행할 수 있게 되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스는 두 가지 유형으로 &lt;b&gt;독립 프로세스&lt;/b&gt;와 &lt;b&gt;협력 프로세스&lt;/b&gt;가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;독립 프로세스&lt;/b&gt;는 다른 프로세스의 실행에 영향을 받지 않는 프로세스이다. 즉, &lt;b&gt;데이터를 공유하지 않는다&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;협력 프로세스&lt;/b&gt;는 다른 프로세스의 실행에 영향을 받는 프로세스로, 협력의 특성을 활용해 계산 속도, 편의성, 모듈성 등에서 우수한 모습을 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스는 각자 별개의 메모리 영역을 할당받는다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이때, 협력 프로세스는 자신의 메모리 영역에 저장된 데이터를 공유하기 위해 통신을 하게 되는데,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이때 사용되는 통신 메커니즘이&amp;nbsp;&lt;b&gt;IPC(InterProcess&amp;nbsp;Communication,&amp;nbsp;프로세스&amp;nbsp;간&amp;nbsp;통신)&lt;/b&gt; 이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 IPC는 여러 메커니즘이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;IPC 메커니즘&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NbXju/btrtYVKzgvO/rZAWLBWxOe6kKnSrDWiSN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NbXju/btrtYVKzgvO/rZAWLBWxOe6kKnSrDWiSN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NbXju/btrtYVKzgvO/rZAWLBWxOe6kKnSrDWiSN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNbXju%2FbtrtYVKzgvO%2FrZAWLBWxOe6kKnSrDWiSN1%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;공유 메모리(Shared Memory)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메모리의 일부 공간을 다수의 프로세스에게 공유하는 &lt;b&gt;양방향 통신 메커니즘&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;384&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cO65Uf/btrt4IiwyAN/saSJk5H3UKGLLfq71GEQn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cO65Uf/btrt4IiwyAN/saSJk5H3UKGLLfq71GEQn0/img.png&quot; data-alt=&quot;공유 메모리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cO65Uf/btrt4IiwyAN/saSJk5H3UKGLLfq71GEQn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcO65Uf%2Fbtrt4IiwyAN%2FsaSJk5H3UKGLLfq71GEQn0%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;230&quot; height=&quot;381&quot; data-origin-width=&quot;384&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;공유 메모리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스 A는 공유 메모리 세그먼트의 생성을 커널에게 요청하면 프로세스 A의 메모리 영역에 공유 메모리 영역이 생성된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스 B는 프로세스 A의 공유 메모리 세그먼트를 자신의 주소 공간에 추가하여 프로세스 A의 공유 메모리 영역을 사용할 수 있게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메시지 큐(Message Queue)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;운영체제의 제어를 통해 커널 내 &lt;b&gt;메시지 큐&lt;/b&gt;를 이용하여 메시지를 전달하는 &lt;b&gt;단방향 통신 메커니즘&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;474&quot; data-origin-height=&quot;565&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crn0SF/btrt5xA4otL/yirj7JAcoaLxUGkqUZEan1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crn0SF/btrt5xA4otL/yirj7JAcoaLxUGkqUZEan1/img.png&quot; data-alt=&quot;메시지 큐&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crn0SF/btrt5xA4otL/yirj7JAcoaLxUGkqUZEan1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcrn0SF%2Fbtrt5xA4otL%2Fyirj7JAcoaLxUGkqUZEan1%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;290&quot; height=&quot;346&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;565&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;메시지 큐&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스 A는 공유할 데이터를 메시지 형태로 커널의 메시지 큐에 송신한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스 B는 프로세스의 A 데이터가 필요할 때 커널의 메시지 큐에 연결하여 데이터를 수신한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메시지 큐는 &lt;b&gt;선입선출&lt;/b&gt; 방식으로 구성되어있으며, 저장된 데이터는 검색이 될 때까지 유지된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파이프(Pipe)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;부모의 프로세스가 생성된 자식 프로세스에게 데이터를 전달하는 &lt;b&gt;단방향 통신 메커니즘&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;846&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GpOmY/btrt4J9JYYc/xZ6eGQkK0eCFIlioa7YcXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GpOmY/btrt4J9JYYc/xZ6eGQkK0eCFIlioa7YcXk/img.png&quot; data-alt=&quot;파이프&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GpOmY/btrt4J9JYYc/xZ6eGQkK0eCFIlioa7YcXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGpOmY%2Fbtrt4J9JYYc%2FxZ6eGQkK0eCFIlioa7YcXk%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;550&quot; height=&quot;90&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이프&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;부모 프로세스가 파이프에 데이터를 쓰게 되면 자식 프로세스는 파이프에 있는 데이터를 읽는다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;단방향으로 데이터를 전달하는 파이프를 두 개 사용함으로써 부모 프로세스와 자식 프로세스 간 양방향 통신을 구현할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;소켓(Socket)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;네트워크의 소켓 통신을 이용하여 서로 다른 시스템 간 데이터를 공유하는 &lt;b&gt;양방향 통신 메커니즘&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;814&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nGISv/btrt6u5j3T5/AUOooPIYT3xbwQl0tgJ2XK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nGISv/btrt6u5j3T5/AUOooPIYT3xbwQl0tgJ2XK/img.png&quot; data-alt=&quot;소켓(Socket)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nGISv/btrt6u5j3T5/AUOooPIYT3xbwQl0tgJ2XK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnGISv%2Fbtrt6u5j3T5%2FAUOooPIYT3xbwQl0tgJ2XK%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;814&quot; height=&quot;126&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;126&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;소켓(Socket)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주로 &lt;b&gt;대용량&lt;/b&gt;의 데이터를 교환할 때 사용하며, 네트워크 소켓을 이용하여 &lt;b&gt;서버 - 클라이언트&lt;/b&gt; 구조로 데이터를 통신한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;서버에서 소켓을 생성하여 주소를 할당받아 클라이언트로부터 통신 요청을 기다린다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클라이언트가 서버에 통신을 요청하면, 서버는 이를 수락해 서로 데이터를 읽고 쓴다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 작업이 완료되면, 서버는 소켓을 종료한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;세마포어(Semaphore)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스 또는 스레드 간 &lt;b&gt;동기화&lt;/b&gt; 기능을 제공하는 메커니즘이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1572&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cY81A9/btrtVagJ3Kz/OdOsLXngc61RlGdkGZ7rFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cY81A9/btrtVagJ3Kz/OdOsLXngc61RlGdkGZ7rFk/img.png&quot; data-alt=&quot;세마포어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cY81A9/btrtVagJ3Kz/OdOsLXngc61RlGdkGZ7rFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcY81A9%2FbtrtVagJ3Kz%2FOdOsLXngc61RlGdkGZ7rFk%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;800&quot; height=&quot;383&quot; data-origin-width=&quot;1572&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;세마포어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;앞서 설명한 IPC 메커니즘들은 대부분 데이터의 전송을 목적으로 하는데 반해 세마포어는 데이터를 동기화하고 보호하는데 목적을 둔다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;공유 메모리에 있는 데이터를 여러 프로세스가 동시에 수정하는 등의 행위를 시도하면 데이터가 손상되게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서 여러 프로세스 사이에서 누가 먼저 데이터에 접근할 것인가에 대한 &lt;b&gt;순서&lt;/b&gt;를 지정해주어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스 A가 먼저 임계 구역에 진입하여 작업을 수행하면, 프로세스 A의 입장과 동시에 임계 구역을 잠가 다른 프로세스의 접근을 막는다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스 A의 작업이 완료되면 임계 구역의 잠금을 해제하고 대기 중이던 프로세스 B가 임계 구역에 접근할 수 있게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;IPC는 위에서 설명한 다섯 가지의 메커니즘 외 여러 메커니즘이 있다.&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;&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;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;프로세스 간 통신.&quot; Wikipedia. 2021. 12. 26. 수정, 2022. 02. 22. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EA%B0%84_%ED%86%B5%EC%8B%A0&quot;&gt;https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EA%B0%84_%ED%86%B5%EC%8B%A0&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;IPC.&quot; 정보통신기술용어해설. n.d. 수정, 2022. 02. 22. 접속, &lt;a href=&quot;http://www.ktword.co.kr/test/view/view.php?m_temp1=302&quot;&gt;http://www.ktword.co.kr/test/view/view.php?m_temp1=302&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;What is Inter Process Communication?&quot; javatpoint. n.d. 수정, 2022. 02. 22. 접속, &lt;a href=&quot;https://www.javatpoint.com/what-is-inter-process-communication&quot;&gt;https://www.javatpoint.com/what-is-inter-process-communication&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;What is Interprocess Communication?&quot; tutorialspoint. n.d. 수정, 2022. 02. 22. 접속, &lt;a href=&quot;https://www.tutorialspoint.com/what-is-interprocess-communication&quot;&gt;https://www.tutorialspoint.com/what-is-interprocess-communication&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Inter Process Communication (IPC).&quot; geeksforgeeks. n.d. 수정, 2022. 02. 22. 접속, &lt;a href=&quot;https://www.geeksforgeeks.org/inter-process-communication-ipc/&quot;&gt;https://www.geeksforgeeks.org/inter-process-communication-ipc/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Inter Process Communication (IPC) in OS.&quot; Guru99. n.d. 수정, 2022. 02. 22. 접속, &lt;a href=&quot;https://www.guru99.com/inter-process-communication-ipc.html#approaches-for-inter-process-communication&quot;&gt;https://www.guru99.com/inter-process-communication-ipc.html#approaches-for-inter-process-communication&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Backend Roadmap/OS</category>
      <author>jeongwon201</author>
      <guid isPermaLink="true">https://jeongwon201.tistory.com/19</guid>
      <comments>https://jeongwon201.tistory.com/19#entry19comment</comments>
      <pubDate>Tue, 22 Feb 2022 19:46:20 +0900</pubDate>
    </item>
    <item>
      <title>스레드(Thread)</title>
      <link>https://jeongwon201.tistory.com/18</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;스레드(Thread)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;323&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1yKUW/btrtTLtLXZE/zt6JtBT6WVZpc5xxaZSBy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1yKUW/btrtTLtLXZE/zt6JtBT6WVZpc5xxaZSBy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1yKUW/btrtTLtLXZE/zt6JtBT6WVZpc5xxaZSBy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1yKUW%2FbtrtTLtLXZE%2Fzt6JtBT6WVZpc5xxaZSBy1%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;300&quot; height=&quot;300&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;323&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;스레드(Thread)란&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;스레드(Thread)&lt;/b&gt;란 프로세스(process) 내에서의 &lt;b&gt;작업 단위&lt;/b&gt;로서, 프로세스 내부에서 실제로 작업을 수행하는 주체를 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스의 일부 특성을 지니고 있어 &lt;b&gt;경량 프로세스&lt;/b&gt;라고도 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 프로세스에는 &lt;b&gt;한 개 이상&lt;/b&gt;의 스레드가 존재하여 작업을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하나의 프로세스에 하나의 스레드가 존재하는 경우 &lt;b&gt;단일(Single) 스레드&lt;/b&gt;, 하나 이상의 스레드가 존재하는 경우&lt;b&gt; 다중(Multi) 스레드&lt;/b&gt;라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1566&quot; data-origin-height=&quot;637&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oduJZ/btrtMIR269R/nZ4CI87zwkDmQhYl9EGBA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oduJZ/btrtMIR269R/nZ4CI87zwkDmQhYl9EGBA0/img.png&quot; data-alt=&quot;싱글 스레드(좌)와 멀티 스레드(우)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oduJZ/btrtMIR269R/nZ4CI87zwkDmQhYl9EGBA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoduJZ%2FbtrtMIR269R%2FnZ4CI87zwkDmQhYl9EGBA0%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;750&quot; height=&quot;305&quot; data-origin-width=&quot;1566&quot; data-origin-height=&quot;637&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;싱글 스레드(좌)와 멀티 스레드(우)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하나의 프로세스를 구성하는 여러 스레드는 프로세스에 할당된 메모리, 자원 등을 &lt;b&gt;공유&lt;/b&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그러나 각자 자신만의 &lt;b&gt;스택 메모리&lt;/b&gt;와 &lt;b&gt;레지스터&lt;/b&gt;를 가진다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스레드마다 &lt;b&gt;독립적인&lt;/b&gt; 함수 실행을 위해 자신만의 &lt;b&gt;스택 메모리&lt;/b&gt;를 가지게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;스택 메모리&lt;/b&gt;란 함수 호출과 관계되는 지역 변수와 매개 변수가 저장되는 메모리 영역이다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스레드는 프로세스와 마찬가지로 &lt;b&gt;한 번에 하나&lt;/b&gt;의 스레드만 실행할 수 있으며, 스케줄러에 의해 상태가 전이될 때 &lt;b&gt;문맥 교환(Context Switching)&lt;/b&gt;을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 때, 현재 진행 상태를 기억하는 레지스터를 스레드마다 가지게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 스레드는 지원하는 주체에 따라 두 가지로 나눌 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스레드의 종류&lt;/span&gt;&lt;/b&gt;&lt;/h3&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-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;385&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y5MLm/btrtYV2ZyR5/lzKlHBTj8aqJ0T1jRhk9PK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y5MLm/btrtYV2ZyR5/lzKlHBTj8aqJ0T1jRhk9PK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y5MLm/btrtYV2ZyR5/lzKlHBTj8aqJ0T1jRhk9PK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy5MLm%2FbtrtYV2ZyR5%2FlzKlHBTj8aqJ0T1jRhk9PK%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;300&quot; height=&quot;231&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;385&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사용자 레벨 스레드(User-Level Thread)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;커널 영역이 아닌 &lt;b&gt;사용자 영역&lt;/b&gt;에서 지원된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일반적으로 사용자 영역의 라이브러리를 통해 구현되며, 라이브러리는 스레드의 생성 및 스케줄링 등에 관한 관리 기능을 제공한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;동일한 메모리 영역에서 스레드가 생성되어 관리되므로 &lt;b&gt;속도가 빠르다&lt;/b&gt;는 장점이 있는 반면, 여러 개의 사용자 스레드 중 &lt;b&gt;하나의 스레드가 시스템 호출 등으로 중단되면 나머지 모든 스레드 역시 중단&lt;/b&gt;되는 단점이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이는 커널이 프로세스 내부의 스레드를 인식하지 못하여 발생하는 것으로 프로세스를 대기 상태로 전환시키기 때문에 해당 프로세스를 구성하는 스레드 전체가 중단되는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;커널 레벨 스레드(Kernel-Level Thread)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;운영체제가 지원하는 스레드 기능으로 구현되며, &lt;b&gt;커널&lt;/b&gt;이 스레드의 생성 및 스케줄링 등을 관리한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;커널이 모든 스레드를 관리하기 때문에 스레드가 시스템 호출 등으로 중단되더라도, 스레드 전체가 중단되는 상황은 일어나지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다만, 사용자 스레드에 비해 생성 및 관리하는 것이 &lt;b&gt;느리다&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스레드의 동시성&lt;/span&gt;&lt;/b&gt;&lt;/h3&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-filename=&quot;pngwing.com.png&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vizRl/btrtNRu1Siv/Qw53kYmGEs9yjnBCphnsS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vizRl/btrtNRu1Siv/Qw53kYmGEs9yjnBCphnsS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vizRl/btrtNRu1Siv/Qw53kYmGEs9yjnBCphnsS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvizRl%2FbtrtNRu1Siv%2FQw53kYmGEs9yjnBCphnsS0%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;250&quot; height=&quot;250&quot; data-filename=&quot;pngwing.com.png&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스레드는 한 번에 하나만 실행이 가능하지만, 다중 코어 시스템의 등장으로 인해 실제로 여러 스레드가 동시에 수행될 수 있게 되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1633&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EUBWI/btrtO8316KW/qM7dyYt6PyuZf0yk7Ypkw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EUBWI/btrtO8316KW/qM7dyYt6PyuZf0yk7Ypkw0/img.png&quot; data-alt=&quot;싱글 코어와 멀티 코어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EUBWI/btrtO8316KW/qM7dyYt6PyuZf0yk7Ypkw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEUBWI%2FbtrtO8316KW%2FqM7dyYt6PyuZf0yk7Ypkw0%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;750&quot; height=&quot;232&quot; data-origin-width=&quot;1633&quot; data-origin-height=&quot;506&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;싱글 코어와 멀티 코어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위 그림에서 볼 수 있듯이, 성능적인 측면에서 뛰어난 모습을 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그러나 프로그램이 동시에 수행된다는 점에서 발생하는 문제점이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;앞서 설명한 것처럼 스레드는 자원을 공유한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스를 구성하는 여러 스레드가 동시에 하나의 공유자원에 접근하거나 공유 자원을 선점하려고 서로 경쟁하는 상황이 발생하게 되면 &lt;b&gt;무한 루프&lt;/b&gt;에 빠지거나, 데이터의 &lt;b&gt;정합성&lt;/b&gt;을 보장하지 못하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 스레드의 동시성에는 다양한 문제가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;경쟁 조건(Race Condition)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;935&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYXnx3/btrtIPjyDC9/hNb74RxiNgWkG459Bnvr61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYXnx3/btrtIPjyDC9/hNb74RxiNgWkG459Bnvr61/img.png&quot; data-alt=&quot;경쟁 조건&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYXnx3/btrtIPjyDC9/hNb74RxiNgWkG459Bnvr61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYXnx3%2FbtrtIPjyDC9%2FhNb74RxiNgWkG459Bnvr61%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;600&quot; height=&quot;274&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;경쟁 조건&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하나의 공유 자원에 둘 이상의 스레드가 해당 자원을 동시에 조작하여 의도하지 않은 결과를 가져오는 경우이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;경쟁 조건은 &lt;b&gt;임계 구역&lt;/b&gt;을 설정함으로써 해결할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여러 스레드가 임계 구역에 접근을 시도하게 되면, 하나의 스레드가 &lt;b&gt;접근&lt;/b&gt;을 허락받고 자원을 점유하여 실행된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이때, 나머지 스레드는 &lt;b&gt;대기&lt;/b&gt;하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;자원을 점유하던 스레드가 작업을 완료하면 임계 구역에서 &lt;b&gt;퇴장&lt;/b&gt;하고, 다음 스레드가 자원을 점유하여 작업을 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;임계 구역에서 작업 중인 스레드가 오랫동안 점유하는 것을 막기 위해 제한 시간을 두고, 이를 초과 시 임계 구역에서 벗어나게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이렇게 경쟁 조건은 임계 구역을 통해 해결이 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;교착 상태(Dead-Lock)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1416&quot; data-origin-height=&quot;531&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp837k/btrtOygQ4NV/tUCkg6RuvM9ZF9gFF59h2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp837k/btrtOygQ4NV/tUCkg6RuvM9ZF9gFF59h2k/img.png&quot; data-alt=&quot;교착 상태&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp837k/btrtOygQ4NV/tUCkg6RuvM9ZF9gFF59h2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp837k%2FbtrtOygQ4NV%2FtUCkg6RuvM9ZF9gFF59h2k%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;700&quot; height=&quot;263&quot; data-origin-width=&quot;1416&quot; data-origin-height=&quot;531&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;교착 상태&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;둘 이상의 스레드가 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;교착 상태가 발생하기 위해서는 아래 네 가지 조건을 모두 충족해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;상호 배제&lt;/b&gt; : 한 번에 한 개의 스레드만이 공유 자원을 사용할 수 있어야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;점유와 대기&lt;/b&gt; : 최소 하나의 자원을 점유하면서, 다른 스레드에 할당된 자원을 추가로 점유하기 위해 대기하는 스레드가 필요하다&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;비선점&lt;/b&gt; : 다른 스레드에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;환형 대기&lt;/b&gt; : 공유자원을 사용하기 위해 대기하는 스레드들이 원형으로 구성되어있어 자신에게 할당된 자원을 점유하면서 앞, 뒤 스레드의 자원을 요구해야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 조건 중 하나를 제거함으로써 교착 상태를 예방할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기아 상태(Starvation)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;특정 프로세스 또는 스레드의 &lt;b&gt;우선순위&lt;/b&gt;가 낮아 원하는 자원을 할당받지 못하고 무한정 대기하는 상태를 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1110&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oV8DG/btrtQpEEZq4/tUdnlgw3IhpA7SwgRHZh9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oV8DG/btrtQpEEZq4/tUdnlgw3IhpA7SwgRHZh9k/img.png&quot; data-alt=&quot;기아 상태&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oV8DG/btrtQpEEZq4/tUdnlgw3IhpA7SwgRHZh9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoV8DG%2FbtrtQpEEZq4%2FtUdnlgw3IhpA7SwgRHZh9k%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;600&quot; height=&quot;388&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;718&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기아 상태&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;무한정 대기하는 스레드의 우선순위를 조정하여 기아 상태를 해결할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;&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;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;스레드 (컴퓨팅).&quot; Wikipedia. 2022. 02. 08. 수정, 2022. 02. 21. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)&quot;&gt;https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Threads in Operating System.&quot; javatpoint. n.d. 수정, 2022. 02. 21. 접속, &lt;a href=&quot;https://www.javatpoint.com/threads-in-operating-system&quot;&gt;https://www.javatpoint.com/threads-in-operating-system&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Operating System - Multi-Threading.&quot; tutorialspoint. n.d. 수정, 2022. 02. 21. 접속, &lt;a href=&quot;https://www.tutorialspoint.com/operating_system/os_multi_threading.htm&quot;&gt;https://www.tutorialspoint.com/operating_system/os_multi_threading.htm&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;쓰레드(Thread)란 무엇인가?&quot; Gidhub. n.d. 수정, 2022. 02. 21. 접속, &lt;a href=&quot;https://goodgid.github.io/What-is-Thread/&quot;&gt;https://goodgid.github.io/What-is-Thread/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Concurrency in Operating System.&quot; geeksforgeeks. n.d. 수정, 2022. 02. 21. 접속, &lt;a href=&quot;https://www.geeksforgeeks.org/concurrency-in-operating-system/&quot;&gt;https://www.geeksforgeeks.org/concurrency-in-operating-system/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Concurrency in Operating System.&quot; javatpoint. n.d. 수정, 2022. 02. 21. 접속, &lt;a href=&quot;https://www.javatpoint.com/concurrency-in-operating-system&quot;&gt;https://www.javatpoint.com/concurrency-in-operating-system&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Backend Roadmap/OS</category>
      <category>thread</category>
      <category>경쟁조건</category>
      <category>공유자원</category>
      <category>공유자원 문제</category>
      <category>교착상태</category>
      <category>기아상태</category>
      <category>스레드</category>
      <category>스레드란</category>
      <category>스레드의 동시성</category>
      <category>쓰레드</category>
      <author>jeongwon201</author>
      <guid isPermaLink="true">https://jeongwon201.tistory.com/18</guid>
      <comments>https://jeongwon201.tistory.com/18#entry18comment</comments>
      <pubDate>Mon, 21 Feb 2022 16:34:29 +0900</pubDate>
    </item>
    <item>
      <title>프로세스 관리(Process Management)</title>
      <link>https://jeongwon201.tistory.com/17</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스&amp;nbsp;관리(Process&amp;nbsp;Management)&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&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;225&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EPGPF/btrtNROh231/AxIxGDAgjX910smHHOwlTk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EPGPF/btrtNROh231/AxIxGDAgjX910smHHOwlTk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EPGPF/btrtNROh231/AxIxGDAgjX910smHHOwlTk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEPGPF%2FbtrtNROh231%2FAxIxGDAgjX910smHHOwlTk%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;225&quot; height=&quot;225&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;초기 컴퓨터 시스템은 &lt;b&gt;한 번에 하나&lt;/b&gt;의 프로그램만 실행할 수 있었다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그로 인해 실행 중인 프로그램이 시스템의 완전한 권한을 갖고 리소스의 전부 또는 대부분에 접근할 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;반대로, 오늘날의 컴퓨터 시스템은 여러 프로그램을 메모리 로드하여 동시에 실행할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이는 다양한 프로그램에서 엄격한 통제와 더 많은 구획화를 요구했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;운영체제는 우리가 실행하는 프로그램과 다른 여러 시스템 작업을 동시 다발적으로 처리하기 위해서 프로세스를 관리해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스(Process)&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkgNXJ/btrtIPiZQ50/xWucFjIKry0VETjldPSpSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkgNXJ/btrtIPiZQ50/xWucFjIKry0VETjldPSpSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkgNXJ/btrtIPiZQ50/xWucFjIKry0VETjldPSpSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkgNXJ%2FbtrtIPiZQ50%2FxWucFjIKry0VETjldPSpSK%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;프로세스(Process)&lt;/b&gt;란 일반적으로 프로세서(Processor, CPU)에 의해 처리되는 &lt;b&gt;실행 중인 프로그램&lt;/b&gt;을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스와 프로그램이 헷갈릴 수 있는데, 쉽게 설명하면 &lt;b&gt;프로그램&lt;/b&gt;은 하드 디스크 등에 저장되어있는 &lt;b&gt;코드&lt;/b&gt;를 의미하고, &lt;b&gt;프로세스&lt;/b&gt;는 운영체제로부터 실행에 필요한 리소스를 할당받은 &lt;b&gt;동적인 상태의 프로그램&lt;/b&gt;이라고 생각하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우선 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드되어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아래 그림은 프로그램이 운영체제로부터 할당받은 메모리 공간이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;338&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uT1k3/btrtJDJ6oWV/hVfBSRO9PJkdWSw79Fc3b0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uT1k3/btrtJDJ6oWV/hVfBSRO9PJkdWSw79Fc3b0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uT1k3/btrtJDJ6oWV/hVfBSRO9PJkdWSw79Fc3b0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuT1k3%2FbtrtJDJ6oWV%2FhVfBSRO9PJkdWSw79Fc3b0%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;200&quot; height=&quot;626&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;코드(Code) 영역&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부른다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CPU는 코드 영역에 저장된 명령어를 하나씩 처리하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;데이터(Data) 영역&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램의 전역 변수와 정적 변수가 저장되는 영역이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료될 시 소멸한다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;전역 변수&lt;/b&gt;란 프로그램 어느 지역에서든 접근이 가능한 변수이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;정적 변수&lt;/b&gt;란 메모리에 고정적으로 할당되어, 종료될 때 해제되는 변수이다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;힙(Heap) 영역&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램 내부의 &lt;b&gt;동적&lt;/b&gt; 메모리 할당을 관리하는 데 사용되는 영역이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;쉽게 말해, 프로그램이 실행되는 동안 가변적인 크기의 데이터를 저장하기 위해 사용자가 직접 관리하는 메모리 공간이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스택(Stack) 영역&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;함수의 호출과 관계되는 지역 변수와 매개 변수가 저장되는 영역이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스택 영역은 함수 호출 시 할당되며, 함수의 실행이 끝나면 소멸한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스택과 힙은 프로세스 여유 공간의 반대쪽 끝에서 시작하여 서로를 향해 크기가 커진다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 둘이 만나게 되면 &lt;b&gt;스택 오버플로우&lt;/b&gt; 또는 &lt;b&gt;버퍼 오버플로우&lt;/b&gt;가 발생하게 된다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;오버플로우(Overflow)&lt;/b&gt;란 이름에서 알 수 있듯이, 데이터가 지정된 크기의 공간보다 커 해당 메모리 공간을 벗어나는 것을 의미한다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램은 이러한 형태로 메모리에 로드된다. &lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이렇게 로드된 프로그램은 이제 프로세스라고 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스가 생성될 때, 해당 프로세스에 대한 고유한 정보를 가지는 &lt;b&gt;PCB(Process Control Block, 프로세스 제어 블록)&lt;/b&gt;이 생성된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;PCB(Process Control Block, 프로세스 제어 블록)&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;256&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x76Mw/btrtKC5kZ4M/nNyekwC44mglk44m8fb74k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x76Mw/btrtKC5kZ4M/nNyekwC44mglk44m8fb74k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x76Mw/btrtKC5kZ4M/nNyekwC44mglk44m8fb74k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx76Mw%2FbtrtKC5kZ4M%2FnNyekwC44mglk44m8fb74k%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;PCB(Process Control Block, 프로세스 제어 블록)&lt;/b&gt;란 프로세스에 대한 중요한 정보를 저장해놓은 데이터이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;PCB에 저장되어있는 정보는 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;프로세스 고유 식별자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다른 프로세스와 구별하기 위한 고유 식별자이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;포인터&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;부모 또는 자식 프로세스에 대한 주소, 프로세스가 위치한 주소, 할당된 자원에 대한 주소를 기억하는 포인터 정보이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;프로세스 상태&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;준비, 대기, 실행 등의 프로세스의 상태 정보이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;스케줄링 정보&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스가 실행될 우선순위 등 스케줄링에 대한 정보이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;CPU 레지스터 정보&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CPU 안팎으로 프로세스를 교환할 때 저장하고 복원하기 위한 레지스터 정보이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;기억장치 관리 정보&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페이지 테이블 또는 세그먼트 테이블, 기준 레지스터에 대한 정보이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;입 &amp;middot; 출력 상태 정보&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입 &amp;middot; 출력 장치, 프로세스에서 사용 중인 파일 목록 등에 대한 정보이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;계정 정보&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CPU 사용시간, 실제 사용시간, 한정된 시간 등에 대한 정보이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;각 프로세스가 생성될 때마다 이러한 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스가 생성되어 시스템 내 존재하는 동안 프로세스의 상태는 계속 변한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CPU를 할당받아 명령을 수행할 수 있고, 할당이 해제되어 대기할 수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이렇게 프로세스의 상태가 변하는 것을 프로세스 상태 전이라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스 상태 전이&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FvoeE/btrtJBkvMt1/YD6Bxz3jiqiG3NfkyqiN91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FvoeE/btrtJBkvMt1/YD6Bxz3jiqiG3NfkyqiN91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FvoeE/btrtJBkvMt1/YD6Bxz3jiqiG3NfkyqiN91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFvoeE%2FbtrtJBkvMt1%2FYD6Bxz3jiqiG3NfkyqiN91%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;프로세스 상태 전이&lt;/b&gt;란 프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것을 의미하며, 상태 전이도를 통해 과정을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스는 다음 그림과 같은 과정을 통해 상태가 변화한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1161&quot; data-origin-height=&quot;443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k771G/btrtMJJGgmX/mw1K56JWx8TuuX9nVLQ9l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k771G/btrtMJJGgmX/mw1K56JWx8TuuX9nVLQ9l1/img.png&quot; data-alt=&quot;프로세스 상태 전이도&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k771G/btrtMJJGgmX/mw1K56JWx8TuuX9nVLQ9l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk771G%2FbtrtMJJGgmX%2Fmw1K56JWx8TuuX9nVLQ9l1%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;700&quot; height=&quot;267&quot; data-origin-width=&quot;1161&quot; data-origin-height=&quot;443&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로세스 상태 전이도&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;생성(New)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스가 생성되었고 스케줄러에 의해 준비 상태로 전이된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;준비(Ready)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스가 프로세서를 할당받기 위해 *&lt;b&gt;준비상태 큐&lt;/b&gt;에서 기다리는 상태이다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;준비상태 큐&lt;/b&gt;란 여러 프로세스가 프로세서를 할당받기 위해 기다리는 장소이다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서 &lt;b&gt;큐(Queue)&lt;/b&gt;의 개념을 알아야 하는데, &lt;b&gt;큐(Queue)&lt;/b&gt;란 컴퓨터의 기본적인 자료 구조중 한 가지로, 먼저 들어온 데이터가 먼저 나오는 &lt;b&gt;선입선출&lt;/b&gt; 구조로 데이터를 저장하는 형식을 말한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가장 먼저 준비 중인 프로세스가 가장 빨리 실행 상태로 전이된다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;실행(Run)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;준비 상태에서 실행 상태로 전이되는 과정을 &lt;b&gt;Dispatch&lt;/b&gt;라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;수행이 완료되기 전에 프로세스 할당 시간이 종료되면 프로세스는 준비 상태로 전이된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;대기(Wait), 보류, 블록(Block)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스에 입 &amp;middot; 출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 대기 상태로 전이된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입 &amp;middot; 출력 처리가 완료될 때까지 대기 상태로 있게 되며, 처리가 완료되면 준비 상태로 전이되는데, 이를 &lt;b&gt;Wake Up&lt;/b&gt;이라고한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;종료(Terminated, Exit)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스의 실행이 끝나고 프로세스의 할당이 해제된 상태이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 프로세스의 상태 전이는 운영체제의 스케줄링에 의해 수행된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스케줄링(Scheduling)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&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;256&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rGjNG/btrtRXGZe0U/qKyfckUGn6uYCDo26EOm7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rGjNG/btrtRXGZe0U/qKyfckUGn6uYCDo26EOm7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rGjNG/btrtRXGZe0U/qKyfckUGn6uYCDo26EOm7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrGjNG%2FbtrtRXGZe0U%2FqKyfckUGn6uYCDo26EOm7K%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;스케줄링(Scheduling)&lt;/b&gt;이란 프로세스가 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 &lt;b&gt;할당&lt;/b&gt;하는 작업을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스케줄링의 종류에는 장기 스케줄링, 중기 스케줄링, 단기 스케줄링이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스케줄링 종류&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;장기 스케줄링&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;작업 스케줄링(Job Scheduling), 상위 스케줄링이라고도 하며, 작업 스케줄러에 의해 실행된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;중기 스케줄링&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;어떤 프로세스들이 CPU를 할당받을 것인가를 결정하는 작업을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 보류시킨 후 활성화하여 일시적으로 부하를 조절한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;단기 스케줄링&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세서 스케줄링, 하위 스케줄링, 디스패처라고도 하며, 단기 스케줄링 또는 문맥 교환은 프로세서 스케줄러에 의해 수행된다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;문맥 교환(Context Switching)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서, 새로운 프로세스에게 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업을 의미한다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스 스케줄링 기법&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스 스케줄링(단기 스케줄링)에는 다음과 같은 두 가지의 기법이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비선점(Non-Preemptive) 스케줄링&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이미 할당된 CPU를 다른 CPU가 &lt;b&gt;강제로 빼앗아 사용할 수 없는&lt;/b&gt; 스케줄링 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 프로세스에 대해 공정하게 처리할 수 있으며, 종류로는 FCFS, SJF, 우선순위 등의 알고리즘이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;선점(Preemptive) 스케줄링&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 &lt;b&gt;강제로 빼앗아 사용할 수 있는&lt;/b&gt; 스케줄링 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;선점 스케줄링의 종류는 Round Robin, SRT, 선점 우선순위, 다단계 큐 등의 알고리즘이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;&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;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Process Management in Operating System.&quot; enjoyalgorithms. n.d. 수정, 2022. 02. 20. 접속, &lt;a href=&quot;https://www.enjoyalgorithms.com/blog/process-management-in-operating-system&quot;&gt;https://www.enjoyalgorithms.com/blog/process-management-in-operating-system&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;프로세스.&quot; Wikipedia. 2022. 02. 10. 수정, 2022. 02. 20. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4&quot;&gt;https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;프로세스 관리.&quot; Wikipedia. 2021. 12. 25. 수정, 2022. 02. 20. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EA%B4%80%EB%A6%AC&quot;&gt;https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EA%B4%80%EB%A6%AC&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;메모리의 구조.&quot; TCP SCHOOL. n.d. 수정, 2022. 02. 20. 접속, &lt;a href=&quot;http://www.tcpschool.com/c/c_memory_structure&quot;&gt;http://www.tcpschool.com/c/c_memory_structure&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;스케줄링(컴퓨팅).&quot; Wikipedia. 2021. 12. 25. 수정, 2022. 02. 20. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81_(%EC%BB%B4%ED%93%A8%ED%8C%85)&quot;&gt;https://ko.wikipedia.org/wiki/%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81_(%EC%BB%B4%ED%93%A8%ED%8C%85)&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Backend Roadmap/OS</category>
      <category>pcb</category>
      <category>Process</category>
      <category>Process Management</category>
      <category>scheduling</category>
      <category>스케줄링</category>
      <category>운영체제 스케줄링</category>
      <category>프로세스</category>
      <category>프로세스 관리</category>
      <category>프로세스 상태 전이</category>
      <category>프로세스 제어 블록</category>
      <author>jeongwon201</author>
      <guid isPermaLink="true">https://jeongwon201.tistory.com/17</guid>
      <comments>https://jeongwon201.tistory.com/17#entry17comment</comments>
      <pubDate>Sun, 20 Feb 2022 20:52:56 +0900</pubDate>
    </item>
    <item>
      <title>메모리 관리(Memory Management)</title>
      <link>https://jeongwon201.tistory.com/16</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메모리&amp;nbsp;관리(Memory&amp;nbsp;Management)&lt;/span&gt;&lt;/b&gt;&lt;/h2&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;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbJgtP/btrtHEhAnsB/6wIge2xV12DTyHo3rwMD4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbJgtP/btrtHEhAnsB/6wIge2xV12DTyHo3rwMD4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbJgtP/btrtHEhAnsB/6wIge2xV12DTyHo3rwMD4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbJgtP%2FbtrtHEhAnsB%2F6wIge2xV12DTyHo3rwMD4k%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;300&quot; height=&quot;300&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메모리 관리(Memory Management)란&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;메모리 관리(Memory Management)&lt;/b&gt;란 프로그램의 요청이 있을 때, 메모리의 일부를 해당 프로그램에 &lt;b&gt;할당&lt;/b&gt;하고, 더 이상 필요하지 않을 때 나중에 다시 사용할 수 있도록 할당을 &lt;b&gt;해제&lt;/b&gt;하여 컴퓨터의 메모리를 관리하는 운영체제의 기능이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컴퓨터에서 사용할 수 있는 메인 메모리의 양이 매우 &lt;b&gt;한정적&lt;/b&gt;이기 때문에 이는 컴퓨터 시스템에서 매우 중요하게 작용하는 부분이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메모리(Memory, 기억장치)란&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;메모리(Memory, 기억장치)&lt;/b&gt;란 전자회로에서 데이터의 상태, 명령어 등을 기록하는 기억장치를 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메모리의 종류로는 레지스터, 캐시 기억장치, 주 기억장치, 보조 기억장치가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;261&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pOeGq/btrtBN617U4/8yNjOhxXjfHqQIqk04Ovr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pOeGq/btrtBN617U4/8yNjOhxXjfHqQIqk04Ovr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pOeGq/btrtBN617U4/8yNjOhxXjfHqQIqk04Ovr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpOeGq%2FbtrtBN617U4%2F8yNjOhxXjfHqQIqk04Ovr0%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;150&quot; height=&quot;177&quot; data-origin-width=&quot;261&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위 그림은 기억장치를 계층 구조로 분류한 것을 나타낸 그림이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;상위의 기억장치일수록 접근 속도와 접근 시간이 빠르지만, 용량이 적으며 높은 가격대를 형성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;레지스터, 캐시 기억장치, 주 기억장치에 적재된 프로그램이나 데이터는 CPU가 직접 접근할 수 있으나, 보조 기억장치에 있는 프로그램이나 데이터에는 직접 접근할 수 없다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그래서 보조 기억장치에 있는 데이터를 주 기억장치에 적재시켜 CPU가 접근할 수 있게 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그럼 어떻게 메모리를 관리할까?&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메모리 관리의 전략&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;225&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z2Np3/btrtJDvctlZ/7gtfOX97h4lEQfZcVUis91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z2Np3/btrtJDvctlZ/7gtfOX97h4lEQfZcVUis91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z2Np3/btrtJDvctlZ/7gtfOX97h4lEQfZcVUis91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz2Np3%2FbtrtJDvctlZ%2F7gtfOX97h4lEQfZcVUis91%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;225&quot; height=&quot;225&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;메모리 관리의 전략&lt;/b&gt;은&amp;nbsp;보조 기억장치의 프로그램이나 데이터를 주 기억장치에 적재시키는 시기, 위치 등을 지정하여 한정된 주 기억장치의 공간을 효율적으로 사용하기 위한 전략으로 반입(Fetch), 배치(Placement), 교체(Replacement) 전략이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;반입(Fetch)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;보조 기억장치에 있는 프로그램이나 데이터를 &lt;b&gt;언제 주 기억장치로 적재할 것인가&lt;/b&gt;를 결정하는 전략으로 요구 반입(Demand Fetch), 예상 반입(Anticipatory Fetch)이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;요구 반입(Demand Fetch)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;실행 중인 프로그램이 특정 프로그램 또는 데이터의 &lt;b&gt;참조&lt;/b&gt;를 필요로 할 때 적재하는 반입 전략이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예상 반입(Anticipatory Fetch)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;실행 중인 프로그램에 의해 참조될 프로그램 또는 데이터를 미리 &lt;b&gt;예상&lt;/b&gt;하여 적재하는 반입 전략이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;배치(Placement)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;새로 반입되는 프로그램 또는 데이터를 주 기억장치의 &lt;b&gt;어느 곳에 위치시킬 것인가&lt;/b&gt;를 결정하는 전략으로 최초 적합(First Fit), 최적 적합(Best Fit), 최악 적합(Worst Fit)이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;최초 적합(First Fit)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램 또는 데이터가 들어갈 수 있는 크기의 빈 영역 중 &lt;b&gt;첫 번째 영역에&lt;/b&gt; 배치하는 전략이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;최적 적합(Best Fit)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램 또는 데이터가 들어갈 수 있는 크기의 빈 영역 중 &lt;b&gt;단편화를 가장 작게&lt;/b&gt; 남기는 분할 영역에 배치하는 전략이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;최악 적합(Worst Fit)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중 &lt;b&gt;단편화를 가장 크게&lt;/b&gt; 남기는 분할 영역에 배치하는 전략이다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;단편화란?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주 기억장치의 분할된 영역에서 프로그램이나 데이터를 할당할 경우, 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 &lt;b&gt;빈 공간&lt;/b&gt;을 의미한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;분할된 영역에 할당된 프로그램의 크기가 작아 영역 내부에 빈 공간이 생기는 현상을 &lt;b&gt;내부 단편화&lt;/b&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;분할된 영역에 할당할 프로그램의 크기가 커 다른 영역에 할당할 시 비어있는 영역이 남는 현상을 &lt;b&gt;외부 단편화&lt;/b&gt;라고 한다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;교체(Replacement)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주 기억장치의 모든 영역이 이미 사용 중인 상태에서 새로운 프로그램이나 데이터를 주 기억장치에 배치하려 할 때, 이미 사용되고 있는 영역 중 &lt;b&gt;어느 영역을 교체할 것인가&lt;/b&gt;를 결정하는 전략으로 FIFO, OPT, LRU, LFU, NRU, SCR 등이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;보조 기억장치의 프로그램이나 데이터를 주기억장치에 언제, 어디에 적재하는지 알았다면, &lt;b&gt;어떻게&lt;/b&gt; 적재할까?&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주 기억장치 할당 기법&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램이나 데이터를 실행하기 위해 주 기억장치에 어떻게 할당할 것인가에 대한 기법으로, 연속 할당 기법과 분산 할당 기법으로 분류할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1192&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rHu30/btrtB8Dqwgq/L3dkumwk90ym0CAMeaVSiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rHu30/btrtB8Dqwgq/L3dkumwk90ym0CAMeaVSiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rHu30/btrtB8Dqwgq/L3dkumwk90ym0CAMeaVSiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrHu30%2FbtrtB8Dqwgq%2FL3dkumwk90ym0CAMeaVSiK%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;600&quot; height=&quot;222&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;연속 할당 기법&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램을 주 기억장치에 연속으로 할당하는 기법으로, 단일 분할 할당과 다중 분할 할당 기법이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;단일 분할 할당 기법&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주 기억장치를 &lt;b&gt;운영체제 영역과 사용자 영역으로 나누어&lt;/b&gt; 사용하는 기법으로 초기 컴퓨터 시스템에서 사용되던 가장 간단한 할당 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;운영체제 영역은 운영체제가 &lt;b&gt;항상&lt;/b&gt; 상주하게되고, &lt;b&gt;한 번에 한 프로그램만이&lt;/b&gt; 사용자 영역의 메모리를 할당받게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;210&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT1R2i/btrtCo0slvq/eNBg3laBeBtSAIo9eAnNw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT1R2i/btrtCo0slvq/eNBg3laBeBtSAIo9eAnNw1/img.png&quot; data-alt=&quot;단일 분할 할당 기법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT1R2i/btrtCo0slvq/eNBg3laBeBtSAIo9eAnNw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT1R2i%2FbtrtCo0slvq%2FeNBg3laBeBtSAIo9eAnNw1%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;130&quot; height=&quot;265&quot; data-origin-width=&quot;210&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;단일 분할 할당 기법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;관리 및 설계가 쉽고 구현이 간단하다는 장점이 있지만, 한 번에 한 프로그램만이 영역을 할당받기 때문에 다중 프로그래밍, 즉 &lt;b&gt;여러 프로그램을 동시에 처리할 수 없다&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램이 주 기억장치보다 작으면 메모리 공간이 남아 효율이 좋지 않고, 주 기억장치보다 크다면 실행시킬 수 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주 기억장치보다 큰 프로그램을 실행시킬 수 없다는 문제점은 오버레이(Overlay) 기법의 등장으로 해결되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;오버레이(Overlay)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;보조 기억장치에 저장된 하나의 프로그램을 &lt;b&gt;여러 개의 조각으로 나누어&lt;/b&gt; 필요한 조각을 차례로 주 기억장치에 적재하여 프로그램을 실행하는 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주 기억장치가 모자라게 되면, 적재된 프로그램 조각 중 필요 없는 조각이 위치한 곳에 새로운 프로그램 조각을 덮어 씌우는 방식으로 동작하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1236&quot; data-origin-height=&quot;436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9ZWST/btrtITLmqR5/vKOjyc45tS0kUA1CnnkEaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9ZWST/btrtITLmqR5/vKOjyc45tS0kUA1CnnkEaK/img.png&quot; data-alt=&quot;오버레이(Overlay)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9ZWST/btrtITLmqR5/vKOjyc45tS0kUA1CnnkEaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9ZWST%2FbtrtITLmqR5%2FvKOjyc45tS0kUA1CnnkEaK%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;700&quot; height=&quot;247&quot; data-origin-width=&quot;1236&quot; data-origin-height=&quot;436&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오버레이(Overlay)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스와핑(Swapping)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하나의 프로그램 전체를 주 기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이때 교체된 프로그램은 보조 기억장치로 이동되며 이를 'Swap Out'이라 한다. 반대로 보조 기억장치에서 주 기억장치로 교체되는 과정을 'Swap In'이라고 한다. 이는 이후 페이징 기법으로 발전되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;1231&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diK5RK/btrtG744XB0/oD0WweBuQjOr0eIofCHZ5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diK5RK/btrtG744XB0/oD0WweBuQjOr0eIofCHZ5k/img.png&quot; data-alt=&quot;스와핑(Swapping)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diK5RK/btrtG744XB0/oD0WweBuQjOr0eIofCHZ5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiK5RK%2FbtrtG744XB0%2FoD0WweBuQjOr0eIofCHZ5k%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;700&quot; height=&quot;243&quot; data-origin-width=&quot;1231&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스와핑(Swapping)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다중 분할 할당 기법&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;단일 분할 할당 기법과 마찬가지로 운영체제 영역과 사용자 영역을 나누어 사용하지만, &lt;b&gt;사용자 영역을 여러 크기로 나누어&lt;/b&gt; 각 영역에 프로그램을 할당하여 수행하는 기법으로 고정 분할 할당(정적 할당)과 가변 분할 할당(동적 할당) 기법이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;고정 분할 할당(Multiple contiguous Fixed parTition allocation, MFT), 정적 할당(Static Allocation) 기법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램을 &lt;b&gt;할당하기 전&lt;/b&gt; 사용자 영역을 &lt;b&gt;고정된 크기로 나누어&lt;/b&gt; 프로그램을 각 영역에 할당하여 수행하는 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램을 실행하려면 각 영역 안에 프로그램 전체가 위치해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;고정된 크기의 영역에 다양한 크기의 프로그램이 할당되다 보니 단편화가 발생해 메모리의 낭비가 많다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이는 다중 프로그래밍에서 사용되었으나 현재는 사용되지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&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;848&quot; data-origin-height=&quot;429&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zAXww/btrtDEP0oKY/qDEegkeDvPBbu4PrQ7YfqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zAXww/btrtDEP0oKY/qDEegkeDvPBbu4PrQ7YfqK/img.png&quot; data-alt=&quot;고정 분할 할당 기법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zAXww/btrtDEP0oKY/qDEegkeDvPBbu4PrQ7YfqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzAXww%2FbtrtDEP0oKY%2FqDEegkeDvPBbu4PrQ7YfqK%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;500&quot; height=&quot;253&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;429&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;고정 분할 할당 기법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가변 분할 할당(Multiple contiguous Variable parTition allocation, MVT), 동적 할당(Dynamic Allocation) 기법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;고정 분할 할당 기법의 단편화를 줄이기 위해, 미리 영역을 분할하지 않고 프로그램을 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;단편화를 상당 부분 해결하긴 했으나, 영역과 영역 사이에서 외부 단편화가 발생할 수 있는 문제점이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&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;854&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9iCD9/btrtGilmqa7/5vm2tmHdK6O59XPnoYyZq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9iCD9/btrtGilmqa7/5vm2tmHdK6O59XPnoYyZq1/img.png&quot; data-alt=&quot;가변 분할 할당 기법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9iCD9/btrtGilmqa7/5vm2tmHdK6O59XPnoYyZq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9iCD9%2FbtrtGilmqa7%2F5vm2tmHdK6O59XPnoYyZq1%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;500&quot; height=&quot;251&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;가변 분할 할당 기법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;분산 할당 기법&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가상 메모리에 보관되어있는 프로그램을 &lt;b&gt;특정 단위의 조각으로 나누어&lt;/b&gt; 주 기억장치 내에 분산하여 할당하는 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;분산 할당 기법은 &lt;b&gt;가상 메모리 관리 기법&lt;/b&gt;이라고 부르기도 한다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;가상 메모리&lt;/b&gt;란 보조 기억장치의 일부를 주 기억장치처럼 사용하는 기법이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;용량이 적은 메인 메모리를 마치 큰 용량을 가진 것처럼 사용할 수 있게 한다.&lt;/span&gt;&lt;/blockquote&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;size18&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;연속 할당 기법은 연속적인 주소를 가지는 메인 메모리의 특성에 따라 프로그램을 연속으로 적재하는 기법으로, 이는 매우 어렵고 힘들다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;이때 가상 메모리, 즉 분산 할당 기법을 사용하게 되면 프로그램의 조각을 여기저기 흩어지게 하여 메모리를 할당해도, CPU는 해당 프로그램 조각들을 연속된 순서로 인식한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&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;1116&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dOJT9k/btrtHCRjgSb/ZBmgpKAMr5Wl6uZJQqc2fK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dOJT9k/btrtHCRjgSb/ZBmgpKAMr5Wl6uZJQqc2fK/img.png&quot; data-alt=&quot;분산 할당 기법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dOJT9k/btrtHCRjgSb/ZBmgpKAMr5Wl6uZJQqc2fK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdOJT9k%2FbtrtHCRjgSb%2FZBmgpKAMr5Wl6uZJQqc2fK%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;600&quot; height=&quot;230&quot; data-origin-width=&quot;1116&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;분산 할당 기법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;분산 할당 기법으로는 페이징, 세그먼테이션 기법이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페이징(Paging)&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가상 메모리에 보관된 프로그램과 메인 메모리의 영역을 &lt;b&gt;동일한 크기로 나눈 후&lt;/b&gt; 프로그램을 동일하게 나누어진 메인 메모리의 영역에 적재시켜 실행하는 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램을 일정한 크기로 나눈 단위를 &lt;b&gt;페이지(Page)&lt;/b&gt;라 하고 페이지의 크기로 일정하게 나누어진 주 기억장치의 단위를 &lt;b&gt;페이지 프레임(Page Frame)&lt;/b&gt;이라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가상 메모리에 저장된 프로그램을 실행하려면 가상 메모리의 주소를 메인 메모리의 주소로 &lt;b&gt;변환&lt;/b&gt;하는 작업이 필요하다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가상 메모리의 주소와 메인 메모리의 주소를 다루는 &lt;b&gt;페이지 테이블(Page Table)&lt;/b&gt;을 통해 페이지와 페이지 프레임을 매핑시켜 메모리를 할당하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&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;1116&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blkX62/btrtJD9H8E6/tSPKop8ljAecaXXsActkkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blkX62/btrtJD9H8E6/tSPKop8ljAecaXXsActkkK/img.png&quot; data-alt=&quot;페이징(Paging)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blkX62/btrtJD9H8E6/tSPKop8ljAecaXXsActkkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblkX62%2FbtrtJD9H8E6%2FtSPKop8ljAecaXXsActkkK%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;650&quot; height=&quot;257&quot; data-origin-width=&quot;1116&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;페이징(Paging)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메인 메모리를 고정된 크기로 나누는 방식으로 인해 고정된 크기보다 작은 페이지를 할당할 경우 &lt;b&gt;내부 단편화&lt;/b&gt;가 발생한다. 그에 반해 외부 단편화는 발생하지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페이지 교체 알고리즘&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페이징 기법에서 CPU가 접근한 페이지가 메인 메모리에 없는 경우 이를 페이지 부재(Page Fault)라 하는데, 이 페이지 부재가 발생했을 때 필요한 가상 메모리의 페이지를 메인 메모리에 적재하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이때, 메인 메모리의 모든 페이지 프레임이 사용 중이라면 어떤 페이지 프레임을 선택하여 교체할 것인가를 결정하는 알고리즘이 페이지 교체 알고리즘이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페이지 교체 알고리즘에는 OPT, FIFO, LRU, LFU, NUR, SCR 등이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;OPT(OPTimal replacement, 최적 교체)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 알고리즘이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;FIFO(First In First Out)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페이지가 메인 메모리에 적재될 때의 시간을 기억하고 있다가, 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 알고리즘이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LRU(Least Recently Used)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;최근 가장 오랫동안 사용하지 않은 페이지를 교체하는 알고리즘이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;각 페이지마다 사용 횟수를 기록하는 스택, 또는 카운터를 두어 가장 오랫동안 사용하지 않은, 즉 가장 오래전에 사용된 페이지를 교체한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LFU(Least Frequently Used)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사용 빈도가 가장 적은 페이지를 교체하는 알고리즘으로, 활발히 사용되는 페이지는 교체되지 않고 계속 사용된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;NUR(Not Used Recently)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LRU와 비슷한 알고리즘으로, 최근 사용하지 않은 페이지를 교체하는 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페이지가 사용되었을 때 또는 페이지의 내용이 변경되었을 때를 기록해 교체될 페이지의 순서를 결정한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;SCR(Second Change Replacement, 2차 기회 교체)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메인 메모리에 가장 오랫동안 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 알고리즘으로, FIFO 알고리즘의 단점을 보완하는 알고리즘이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;세그먼테이션(Segmentation)&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가상 메모리에 있는 프로그램을 다양한 크기의 &lt;b&gt;논리적인 단위&lt;/b&gt;로 나눈 후 메인 메모리에 적재시켜 실행하는 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페이징과는 다르게 다양한 크기로 메인 메모리에 적재하는 &lt;b&gt;가변&lt;/b&gt;적인 기법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프로그램을 코드, 데이터(변수) 등과 같은 논리적인 크기로 나눈 단위를 &lt;b&gt;세그먼트(Segment)&lt;/b&gt;라고 하며, 각 세그먼트는 고유한 이름과 크기를 갖는다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;할당하는 방식은 페이징과 비슷하지만 조금 다른 방식을 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페이징에서는 주소 변환을 위해 페이지 테이블을 사용하는 반면 세그먼테이션에서는 &lt;b&gt;세그먼트 테이블(Segment Table)&lt;/b&gt;을 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;세그먼트 테이블(Segment Table)&lt;/b&gt;은 세그먼트 번호와 시작 주소, 크기를 가지고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이를 이용하여 가상 메모리에 있는 세그먼트를 메인 메모리의 어느 주소에 할당할 것인가를 결정하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&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;1199&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjUHwB/btrtJDWee3c/vplpVfgKTAZaT7R6Q8S8gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjUHwB/btrtJDWee3c/vplpVfgKTAZaT7R6Q8S8gk/img.png&quot; data-alt=&quot;세그먼테이션(Segmentation)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjUHwB/btrtJDWee3c/vplpVfgKTAZaT7R6Q8S8gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjUHwB%2FbtrtJDWee3c%2FvplpVfgKTAZaT7R6Q8S8gk%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;700&quot; height=&quot;257&quot; data-origin-width=&quot;1199&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;세그먼테이션(Segmentation)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;세그먼테이션은 메인 메모리에 가변적인 크기로 저장하기 때문에 내부 단편화는 발생하지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하지만 위 그림처럼 &lt;b&gt;외부 단편화&lt;/b&gt;는 발생할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;&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;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Memory Management.&quot; javapoint. n.d. 수정, 2022. 02. 18. 접속, &lt;a href=&quot;https://www.javatpoint.com/memory-management-operating-system&quot;&gt;https://www.javatpoint.com/memory-management-operating-system&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;Operating System - Memory Management.&quot; tutorialspoint. n.d. 수정, 2022. 02. 18. 접속, &lt;a href=&quot;https://www.tutorialspoint.com/operating_system/os_memory_management.htm&quot;&gt;https://www.tutorialspoint.com/operating_system/os_memory_management.htm&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;메모리 관리.&quot; Wikipedia. 2022. 02. 15. 수정, 2022. 02. 18. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%A9%94%EB%AA%A8%EB%A6%AC_%EA%B4%80%EB%A6%AC&quot;&gt;https://ko.wikipedia.org/wiki/%EB%A9%94%EB%AA%A8%EB%A6%AC_%EA%B4%80%EB%A6%AC&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;페이징.&quot; Wikipedia. 2021. 11. 15. 수정, 2022. 02. 18. 접속, &lt;a href=&quot;https://ko.wikipedia.org/wiki/%ED%8E%98%EC%9D%B4%EC%A7%95&quot;&gt;https://ko.wikipedia.org/wiki/%ED%8E%98%EC%9D%B4%EC%A7%95&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Backend Roadmap/OS</category>
      <category>Memory Management</category>
      <category>overlay</category>
      <category>Swapping</category>
      <category>메모리 관리</category>
      <category>메모리 관리 기법</category>
      <category>메모리 관리 전략</category>
      <category>세그먼테이션</category>
      <category>스와핑</category>
      <category>오버레이</category>
      <category>페이징</category>
      <author>jeongwon201</author>
      <guid isPermaLink="true">https://jeongwon201.tistory.com/16</guid>
      <comments>https://jeongwon201.tistory.com/16#entry16comment</comments>
      <pubDate>Fri, 18 Feb 2022 21:04:32 +0900</pubDate>
    </item>
  </channel>
</rss>