<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>vss121의 블로그</title>
    <link>https://vss121.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 24 Jul 2026 07:36:03 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>vss121</managingEditor>
    <item>
      <title>[패스트캠퍼스] Spring 강의 - 학습 후기 및 과제 진행</title>
      <link>https://vss121.tistory.com/135</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;나도 할 수 있는 Java&amp;amp;Spring 웹 개발 종합반&quot;&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;내일배움카드를 사용해서 2023년 11~12월 동안 국비지원교육을 듣게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot만 끄적끄적 얕게 해보다가 Spring Legacy 부분을 배우게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강좌가 Java와 Spring으로 나뉘어져있는데, Java 비중이 많고 Spring 부분은 적어서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 Java를 알고 있었는데 Spring을 더 중점적으로 배우고 싶은 나에게는 내용이 적어서 조금 아쉬웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 Spring에 대해 자세히 배울 수 있어서 유익했다.&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;과제 문제로 &quot;도서 고객 및 대여관리 프로그램&quot;을 수행하였다.&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;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;과제 내용&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가. 과제 개요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 본 과제는 도서 고객 및 대여관리 프로그램이다. 본 과제에서는 고객등록 및 조회, 수정, 도서 대여리스트, 대여금액 조회 업무가 가능하도록 Spring Framework(Legacy)을 이용하여 프로그램을 제작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 개발 환경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Eclipse에서 진행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java SE Developement Kit 8.x 이상&amp;nbsp;&lt;br /&gt;STS3(Spring Tool Suite)&amp;nbsp;&lt;br /&gt;Apache Tomcat 8.0.31&lt;br /&gt;DBMS&amp;nbsp;MySQL&amp;nbsp;5.x&amp;nbsp;이상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SpringBoot 이용&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;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;진행 과정&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;MySQL 테이블 생성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맨 처음 한 것은 MySQL 테이블을 생성했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;workbench8.0을 사용하여 테이블 생성하고 튜플들을 직접 집어넣었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. member_tbl (고객정보 테이블)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 생성&lt;/p&gt;
&lt;pre id=&quot;code_1703155009907&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE `fastcampus-java`.`member_tbl` (
  `cust_no` INT NOT NULL,
  `cust_name` VARCHAR(20) NULL,
  `phone` VARCHAR(20) NULL,
  `join_date` DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
  `cust_email` VARCHAR(50) NULL,
  `grade` VARCHAR(20) NULL,
  PRIMARY KEY (`cust_no`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;343&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pLnrw/btsCt7tGjBG/bhArk3Vr8B7BpG43hiGke0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pLnrw/btsCt7tGjBG/bhArk3Vr8B7BpG43hiGke0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pLnrw/btsCt7tGjBG/bhArk3Vr8B7BpG43hiGke0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpLnrw%2FbtsCt7tGjBG%2FbhArk3Vr8B7BpG43hiGke0%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;885&quot; height=&quot;343&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;343&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 내용&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;762&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEE3Xn/btsCpzSLRkT/Rn9FUTgHldJUfjGuhqoLzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEE3Xn/btsCpzSLRkT/Rn9FUTgHldJUfjGuhqoLzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEE3Xn/btsCpzSLRkT/Rn9FUTgHldJUfjGuhqoLzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEE3Xn%2FbtsCpzSLRkT%2FRn9FUTgHldJUfjGuhqoLzk%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;762&quot; height=&quot;173&quot; data-origin-width=&quot;762&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. rent_tbl (고객대여정보 테이블)&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;테이블 생성&lt;/p&gt;
&lt;pre id=&quot;code_1703155447815&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE `fastcampus-java`.`rent_tbl` (
  `cust_no` INT NOT NULL,
  `rent_no` INT NOT NULL,
  `book_code` VARCHAR(20) NULL,
  `rent_price` INT NULL,
  `rent_date` DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`rent_no`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;849&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2Ewiw/btsCpe8ZQL8/Bngka5kbfeX1MuP7PZfLV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2Ewiw/btsCpe8ZQL8/Bngka5kbfeX1MuP7PZfLV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2Ewiw/btsCpe8ZQL8/Bngka5kbfeX1MuP7PZfLV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2Ewiw%2FbtsCpe8ZQL8%2FBngka5kbfeX1MuP7PZfLV0%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;849&quot; height=&quot;172&quot; data-origin-width=&quot;849&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 내용&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgrRmK/btsCoEUnFdu/whM7ie8rfFNaT3AVdU2oB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgrRmK/btsCoEUnFdu/whM7ie8rfFNaT3AVdU2oB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgrRmK/btsCoEUnFdu/whM7ie8rfFNaT3AVdU2oB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgrRmK%2FbtsCoEUnFdu%2FwhM7ie8rfFNaT3AVdU2oB0%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;621&quot; height=&quot;276&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Spring Legacy Project 생성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 기본 프로젝트 설정하기 (tomcat.. 등등) 이 부분은 강의 내용 그대로 따라갔다.&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;MySQL 설정이나 프로그램 코딩하는 부분은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0070d1; text-align: start;&quot;&gt;&lt;a href=&quot;https://woopi1087.tistory.com/34&quot;&gt;https://woopi1087.tistory.com/34&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1703959783226&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;(Spring Legacy Project - MVC모델) JDBC Template을 써서 DB연동&quot; data-og-description=&quot;앞의 글들에서 나는 MVC모델의 영역을 하나씩 보면서 프로젝트를 만들었다. 1. Spring Legacy proejct생성 : https://woopi1087.tistory.com/26 2. Repository : https://woopi1087.tistory.com/23 3. Service : https://woopi1087.tistory.co&quot; data-og-host=&quot;woopi1087.tistory.com&quot; data-og-source-url=&quot;https://woopi1087.tistory.com/34&quot; data-og-url=&quot;https://woopi1087.tistory.com/34&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/NJbPO/hyUTztofIS/HuWbnyAIW8OpPCUXup19k1/img.png?width=532&amp;amp;height=1143&amp;amp;face=0_0_532_1143,https://scrap.kakaocdn.net/dn/cuopX1/hyUXVn0QBT/T2wkWE2oN3ZC3AWMMxWhy0/img.png?width=532&amp;amp;height=1143&amp;amp;face=0_0_532_1143,https://scrap.kakaocdn.net/dn/P5Wvp/hyUXNjdCMN/82nyLDxOfOzgEf3pGWD3J0/img.png?width=1264&amp;amp;height=1075&amp;amp;face=0_0_1264_1075&quot;&gt;&lt;a href=&quot;https://woopi1087.tistory.com/34&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://woopi1087.tistory.com/34&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/NJbPO/hyUTztofIS/HuWbnyAIW8OpPCUXup19k1/img.png?width=532&amp;amp;height=1143&amp;amp;face=0_0_532_1143,https://scrap.kakaocdn.net/dn/cuopX1/hyUXVn0QBT/T2wkWE2oN3ZC3AWMMxWhy0/img.png?width=532&amp;amp;height=1143&amp;amp;face=0_0_532_1143,https://scrap.kakaocdn.net/dn/P5Wvp/hyUXNjdCMN/82nyLDxOfOzgEf3pGWD3J0/img.png?width=1264&amp;amp;height=1075&amp;amp;face=0_0_1264_1075');&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;(Spring Legacy Project - MVC모델) JDBC Template을 써서 DB연동&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;앞의 글들에서 나는 MVC모델의 영역을 하나씩 보면서 프로젝트를 만들었다. 1. Spring Legacy proejct생성 : https://woopi1087.tistory.com/26 2. Repository : https://woopi1087.tistory.com/23 3. Service : https://woopi1087.tistory.co&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;woopi1087.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 블로그의 도움을 많이 받아서 과제를 진행했다!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/basec7/btsCMyNh3dt/fvH2V4yXvv65Jn3YNtIxJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/basec7/btsCMyNh3dt/fvH2V4yXvv65Jn3YNtIxJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/basec7/btsCMyNh3dt/fvH2V4yXvv65Jn3YNtIxJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbasec7%2FbtsCMyNh3dt%2FfvH2V4yXvv65Jn3YNtIxJ0%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;1920&quot; height=&quot;1080&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 과제를 진행하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT한테 많이 물어보면서 모르는 부분을 익혀나갔다.&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;간단하게 CRUD를 직접 코딩하면서 익혀볼 수 있어서 좋았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적인 기능만 구현된 것이라,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나중에 더 추가적인 부분을 더 구현하면 좋을 것 같다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>전공/JAVA</category>
      <category>K디지털기초역량훈련</category>
      <category>spring 강의</category>
      <category>국비지원교육</category>
      <category>내일배움카드</category>
      <category>자바강의</category>
      <category>패스트캠퍼스</category>
      <author>vss121</author>
      <guid isPermaLink="true">https://vss121.tistory.com/135</guid>
      <comments>https://vss121.tistory.com/135#entry135comment</comments>
      <pubDate>Sun, 31 Dec 2023 19:59:41 +0900</pubDate>
    </item>
    <item>
      <title>[SE] 1. Software quality and Principles</title>
      <link>https://vss121.tistory.com/134</link>
      <description>&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;01 What is sw?&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1-1. SW in Nowadays&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Software engineering is concerned with theories, methods and tools for professional software development.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1-2. Definition of sw&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1-2-1. Program :&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;a collection of instructions executed by a computer&lt;/span&gt;, including compiled code as well as source code&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;코드들의 집합&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1-2-2. Software :&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;not only programs(codes), but all artifacts(모든 산출물) created during sw development&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;= computer programs + associated documentation&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Good SW should deliver the required functionality &amp;amp; performance(성능) to the user, and should be maintainable, dependable and usable&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. Characteristics of SW&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-1. Individual abilities (developer's ability) can affect productivity of sw development&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;SW (development) vs HW (manufacture, 대량 생산)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-2. Quality degradation(하락), but not consumed&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;706&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpgj1S/btsuCKGUHNI/T0MFGiQ1DagQuS7tzuXwp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpgj1S/btsuCKGUHNI/T0MFGiQ1DagQuS7tzuXwp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpgj1S/btsuCKGUHNI/T0MFGiQ1DagQuS7tzuXwp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcpgj1S%2FbtsuCKGUHNI%2FT0MFGiQ1DagQuS7tzuXwp0%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;706&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;706&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;HW : 환경적 조건에 영향받음&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;SW : 요구사항을 반영 -&amp;gt; 실패율 증가&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. ETC of SW&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3-1. SW problems to solve&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3-1-1. Slow advancement of SW development&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3-1-2. Increasing user demand for new SW&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3-1-3. Partial use of management techniques&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3-2. SW costs&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3-3. SW crisis&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Increasing req./ complexity/ difficulty,&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Same human resource/ developing method/ tool&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. SW project failure&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4-1. Increasing system complexity&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4-2. Failure to use sw engineering methods&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;02 What is sw engineering?&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. SW engineering&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1-1. What is engineering?&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;the study of using scientific principles (과학적 원리) to design and build machines, structures, and other things&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;applying engineering principles -&amp;gt; procedures &amp;amp; standards&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1-2. SW Engineering&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;SW + engineering&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;technical process + project management + development of tools + methods ...&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;an engineering discipline that is concerned with all aspects of sw production&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. Importance of SW engineering&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-1. Dependency of SW&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-2. Cost saving&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;03 Characteristics of developing software&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. SW process activities&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1-1.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;SW specification(명세화)&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: define sw &amp;amp; constraints&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1-2.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;SW development(개발)&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 설계, 프로그래밍&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1-3.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;SW validation(검증)&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;:&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1-4.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;SW evolution(진화)&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;1024&quot; data-origin-height=&quot;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k3Rcr/btsueLndcfv/AkPFyHMOHfMak6nWvQ1kAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k3Rcr/btsueLndcfv/AkPFyHMOHfMak6nWvQ1kAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k3Rcr/btsueLndcfv/AkPFyHMOHfMak6nWvQ1kAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk3Rcr%2FbtsueLndcfv%2FAkPFyHMOHfMak6nWvQ1kAK%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;1024&quot; height=&quot;494&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. General issues that affect SW&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-1. Heterogeneity(이질성)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-2. Business and social change&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-3. Security and trust&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-4. Scale&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;04 Details of sw engineering&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. Questions to understand SE&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. SW products&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-1. Generic products&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-2. Customized products&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. Product specification&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3-1. Generic products : by developer&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3-2. Customized products : by customer&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. Essential attributes of good SW&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;4-1. Maintainability(유지보수성)&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;4-2. Dependability and security(확실성,보안성)&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;4-3. Efficiency(효율성)&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;4-4. Acceptability(수용성)&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;05 Divergence of sw&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. SW engineering diversity&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. Application types&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-1. Stand-alone applications 독립형 어플리케이션&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-2. Interactive transaction-based applications&amp;nbsp; 대화형&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-3. Embedded control systems&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-4. Batch processing systems&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-5. Entertainment systems&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-6. Systems for modeling and simulation&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-7. Data collection systems&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-8. Systems of systems (SoS)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. SE fundamentals&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Different types of application but SE fundamentals&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;06 SE ethics&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. SE ethics&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. Issues of professional responsibility&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2-1. Confidentiality 비밀유지&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;2-2.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Competence 능력&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;2-3.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Intellectual property rights 지적 재산권&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;2-4.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Computer misuse 컴퓨터 남용&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. ACM/IEEE code of ethics&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;07 추가&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>전공/소프트웨어공학</category>
      <author>vss121</author>
      <guid isPermaLink="true">https://vss121.tistory.com/134</guid>
      <comments>https://vss121.tistory.com/134#entry134comment</comments>
      <pubDate>Wed, 20 Sep 2023 15:09:22 +0900</pubDate>
    </item>
    <item>
      <title>13 Physical Architecture Design</title>
      <link>https://vss121.tistory.com/133</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Physical architecture components&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Software components : Data Storage(DM layer의 object persistence), Data Access Logic(DM layer의 data access과 manipulation), Application logic(Problem domain layer에 위치), Presentation logic(human-computer interaction layer에 위치,&amp;nbsp; 사용자에 정보 제시 &amp;amp; 사용자 명령 수용(UI)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Hardware components : Client computers, servers, connecting network&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;Physical Architectures&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;① server-based&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;client(terminal)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;server의 기능 : Presentation logic, Application logic, Data Access Logic, Data Storage&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;② client-based&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- thin client/ fat server :&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;client : terminal 보다 조금 나음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;server : 모든 과정&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- fat client/ thin server :&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;client : Presentation logic, Application logic, Data Access Logic / 모든 과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;server : data storage&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;③ client server&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 2-Tiered Architecture 클라이언트가 서버에 요청, 서버가 클라이언트에 응&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;client : Presentation logic, Application logic&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;server : Data Access Logic, Data Storage&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 3-Tiered Architecture&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;client : Presentation logic&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;application server : Application logic&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;database server : Data Access Logic, Data Storage&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;deployment diagram&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- node : 모델에 hw 구성요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- artifact : 정보 시스템(sw, db..) 구성요소&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- communication path&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;network model&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- The network model is a diagram that shows the major components of the information &lt;br /&gt;system&amp;nbsp;(e.g.,&amp;nbsp;servers,&amp;nbsp;communication&amp;nbsp;lines,&amp;nbsp;networks)&amp;nbsp;and&amp;nbsp;their&amp;nbsp;geographic&amp;nbsp;locations&amp;nbsp;throughout &lt;br /&gt;the organization. &lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: start;&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;- high-level diagrams&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;it shows the locations of the components needed to support the application &lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: start;&quot;&gt; 애플리케이션을 지원하기 위해 필요한 구성 요소의 위치를 보여줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- low-level diagrams&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for each of the locations shown on the high-level diagram.&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;Nonfunctional requirements&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) Operational Requirements&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Technical Environment : type of hardware and software&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;HW and SW specification&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; System Integration : interaction with other systems&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Portability : response to changing environments&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Maintainability : expected business requirement changes&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) Performance Requirements&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Speed : response time of the system, transaction update time&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Capacity : number of users, volume of data&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Availability and Reliability : specify available times, permissible failure rate &lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: start;&quot;&gt;시스템이 사용자에게 제공될 가용성의 정도와 오류로 인한 허용 가능한 장애율입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) Security Requirements&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; System value estimates : business value of the system and data&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Access control : access limitations of users&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Encryption and Authentication : data encryption, and user logging&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Virus control : check for uploading and saving files&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) Cultural and Political Requirements&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Multilingual : English, French, Chinese, and more&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Customization : country-specific information (ex, phone number )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Making unstated norms explicit : stating assumption (ex, MM-DD-YY form)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; Legal requirements : laws and regulations for personal information&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDKLcV/btsi10IOsxU/HKSYsKdcVzkxbb5hqy0CH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDKLcV/btsi10IOsxU/HKSYsKdcVzkxbb5hqy0CH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDKLcV/btsi10IOsxU/HKSYsKdcVzkxbb5hqy0CH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDKLcV%2Fbtsi10IOsxU%2FHKSYsKdcVzkxbb5hqy0CH1%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;674&quot; height=&quot;667&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;667&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;</description>
      <category>전공/객체지향설계</category>
      <author>vss121</author>
      <guid isPermaLink="true">https://vss121.tistory.com/133</guid>
      <comments>https://vss121.tistory.com/133#entry133comment</comments>
      <pubDate>Thu, 8 Jun 2023 13:29:08 +0900</pubDate>
    </item>
    <item>
      <title>10장 보조기억장치 관리</title>
      <link>https://vss121.tistory.com/132</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Part 1 &lt;br /&gt;1.보조 기억 장치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블록 단위 접근, 저속 접근, [순차적 저장장치/무작위 접근 저장장치]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DAS, NAS, SAN&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;2.자기 디스크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원반(platter), arm, head&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sector &amp;lt; track &amp;lt; cylinder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접근시간 :&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 탐색시간 : 적절한 트랙 위로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 회전 지연시간 : 섹터 위로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 전송 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디스크 입출력 시스템 : 호스트 버스 어댑터, 디스크 컨트롤러, 디스크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Part 2 &lt;br /&gt;3.디스크 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 디스크 드라이브에 대한 접근시간(access time)을 줄일 수 있도록 디스크에 대한 서비스 요청(request)을 효과적으로 관리하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능 척도 : 1 처리량&amp;uarr;, 2 평균 응답시간&amp;darr;, 3 응답시간의 분산&amp;darr;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탐색시간 최적화방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 선착순(First-Come-First-Served, FCFS) 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 먼저 도착한 요청이 우선적으로 서비스 받게 처리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공평, 무기한 대기x // 처리량&amp;darr;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 최단 탐색시간 우선(Shortest Seek Time First, SSTF) 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 현재 head의 위치에서 탐색거리가 가장 짧은 요청 먼저 처리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처리량&amp;uarr;, 평균 응답시간&amp;darr; // 응답시간의 분산&amp;uarr;, 공평성x, 무기한 대기o // 일괄처리 시스템에 적합&lt;br /&gt;3) SCAN 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 현재 head의 진행방향에서 가장 가까이 있는 요청 먼저 처리&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헤드를 트랙 끝까지(0이나 99) 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무기한 대기x, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;처리량&amp;uarr;, 평균 응답시간&amp;darr; //&lt;span&gt; 진행 방향 반대쪽 끝요청들의 응답시간&amp;uarr;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;4) C-SCAN (Circular SCAN) 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 헤드는 항상 바깥쪽 실린더에서 안쪽 실린더로 이동하면서 가장 가까이 있는 요청 먼저 처리&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대기 시간 균등화 // 0-&amp;gt;99 이동&lt;br /&gt;5) FSCAN (Freeze SCAN) 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: SCAN 스케줄링 방식에서 도중에 도착하는 요청은 다음 주기에 처리&lt;br /&gt;6) N-Step SCAN 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 요청 대기열의 처음 N개의 요청 단위로 SCAN 방식처리&lt;br /&gt;7) LOOK 스케줄링 (엘레베이터 알고리즘)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: SCAN과 유사하나, 현재 진행방향에 요청이 없으면 마지막 실린더까지 가지 않고 방향 전환&lt;br /&gt;8) C-LOOK 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: C-SCAN + LOOK&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;9) 최단 지연시간 우선(Shortest-latency-time-first, SLTF) 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 현재 실린더에서 회전지연이 가장 적은 것 먼저 처리&lt;br /&gt;10 최단 위치이동 시간 우선(Shortest-positioning-time-first, SPTF) 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 위치이동 시간(탐색시간+회전지연시간)이 가장 짧은 요청부터 처리, 무기한대기o&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11) 최단 접근시간 우선(Shortest-access-time-first, SATF) 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 접근시간(위치이동시간+전송시간)이 가장 짧은 요청부터 처리, 무기한대기o&lt;br /&gt;&lt;u&gt;12) 마감시간(deadline) 디스크 스케줄링&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;: 무기한대기를 피하기 위해 디스크 요청에 대한 마감시간을 부여하고 그 이내에 처리&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;13) 완전공정 대기열(CFG) 디스크 스케줄링&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;:&amp;nbsp;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;4.디스크 캐시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Part 3 &lt;br /&gt;5.RAID(redundant&amp;nbsp;array&amp;nbsp;of&amp;nbsp;&lt;u&gt;independent&amp;nbsp;&lt;/u&gt;disks)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능 개선, 신뢰도 개선&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID 0 : 스트리핑(파일을 여러 개의 조각(strip)으로 나누어 디스크들에 분산 저장)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;병렬 접근으로 성능&amp;uarr; // 신뢰도&amp;darr;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;RAID&lt;span&gt; 1 : 미러링(복사본 유지)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;RAID&lt;span&gt; 2 :&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt; bit수준 hamming ECC Parity 사용, bit수준 스트리핑&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;RAID&lt;span&gt; 3 : RAID 0 + parity disk 1개&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bit수준 XOR ECC parity&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;RAID&lt;span&gt; 4 : RAID&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;3과 유사, block수준 스트리핑&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt; 5 : RAID 4와 유사, 패리티 정보를 디스크에 분산 저장&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt; 6 : RAID 5와 유사, 2bit의 parity 정보가 디스크에 분산 저장&lt;/span&gt;&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;774&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBBv9V/btsivRc5TEz/FYpopqTasjhc6GpsRzeDEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBBv9V/btsivRc5TEz/FYpopqTasjhc6GpsRzeDEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBBv9V/btsivRc5TEz/FYpopqTasjhc6GpsRzeDEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBBv9V%2FbtsivRc5TEz%2FFYpopqTasjhc6GpsRzeDEK%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;774&quot; height=&quot;336&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12. 저장장치인 NAS와 SAN 비교하여 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 연결 저장장치(NAS)는 네트워크를 통해 연결된 저장장치로써 NFS와 같이 client-server 방식으로 파일단위 접근 제어를 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;광저장장치 네트워크(SAN)에서는 전체 저장장치가 하나의 파일시스템으로 간주되며 파일을 블록 단위로 접근한다.&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;13. SCAN 방식이 SSTF&amp;nbsp; 방식보다 응답 시간의 편차가 적은 이유&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: left;&quot;&gt;SCAN 방식은 헤드가 한 방향으로 계속 이동하면서 요청을 처리하므로, 요청들이 디스크 트랙에 균등하게 분포되는 경향이 있습니다. 이에 비해 SSTF 방식은 가장 가까운 요청을 우선 처리하기 때문에 특정 영역에 요청이 몰릴 수 있습니다. &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;14. SSFT에서 무기한 대기가 발생할 수 있는 상황&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: left;&quot;&gt;특정 트랙과 다른 트랙 간의 이동 거리가 매우 큰 경우, SSFT 알고리즘은 가장 가까운 요청을 우선 처리하기 때문에 이동 거리가 큰 트랙의 요청은 무한히 대기하게 됩니다.&amp;nbsp;&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;17.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디스크 캐시의 목적 : 디스크가 여유로워질 때까지 디스크에 기록할 데이터를 잠시 보관한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;write-through caching(수정 시 바로 디스크에도 기록), write-back caching(수정 내용을 디스크 캐시에 저장했다가 주기적으로 디스크에 기록)&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;18. RAID 2에서 블록이 수정될 때 어떤 방식으로 해밍 오류 정정 코드 블록을 계산하는지 설명&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dk9nB9/btsiu1mI7w5/oF4GsXPATBptn82qn2JbK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dk9nB9/btsiu1mI7w5/oF4GsXPATBptn82qn2JbK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dk9nB9/btsiu1mI7w5/oF4GsXPATBptn82qn2JbK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdk9nB9%2Fbtsiu1mI7w5%2FoF4GsXPATBptn82qn2JbK0%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;451&quot; height=&quot;478&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>전공/운영체제</category>
      <author>vss121</author>
      <guid isPermaLink="true">https://vss121.tistory.com/132</guid>
      <comments>https://vss121.tistory.com/132#entry132comment</comments>
      <pubDate>Sat, 3 Jun 2023 19:44:10 +0900</pubDate>
    </item>
    <item>
      <title>9장 가상 메모리 관리</title>
      <link>https://vss121.tistory.com/131</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1. 메모리 적재(fetch)전략&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 페이지(page)나세그먼트(segment)를 보조기억장치에서 메모리로 이동시키는 시점 결정&lt;br /&gt;1) 요구페이징(demand paging) : 페이징 시스템에서 요구할 때 페이지를 적재하는 것&lt;br /&gt;2) 예측페이징(anticipatory paging) : 프로세스가 조만간 참조할 것 같은 페이지를 예측하여 적재&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;2. 지역성(locality)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 프로세스는 현재 실행되는 주소 부근에서 국부적인 부분만을 집중적으로 참조한다는 성질&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;페이지부재(page&amp;nbsp;fault) &lt;br /&gt;&amp;bull;참조하려는 페이지가 메모리에 없는 상황 &lt;br /&gt;페이지 부재가 발생하면 &lt;br /&gt;&amp;bull;해당 페이지를 보조기억장치에서 메모리로 적재 &lt;br /&gt;&amp;bull;페이지 사상표(page map table)의 해당 항목 갱신 &lt;br /&gt;빈페이지 프레임이 없으면, 메모리상의 페이지를 보조기억장치로 방출, 공간 확보 &lt;br /&gt;&amp;bull;교체대상 페이지가 수정되지 않은 경우 &lt;br /&gt;&amp;ndash;보조기억장치로 저장 불필요 &lt;br /&gt;&amp;bull;변경비트(modified&amp;nbsp;bit,&amp;nbsp;dirty&amp;nbsp;bit)&amp;nbsp;사용 &lt;br /&gt;&amp;ndash;페이지사상표의 항목에 포함 &lt;br /&gt;&amp;ndash;해당 페이지의 변경 여부 표시&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;3. 페이지 교체 전략 : 어떤 페이지를 메모리에서 내보낼지 결정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fixed allocation&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 최적의 페이지 교체 전략 : 가장 오랫동안 참조되지 않을 페이지 선택, 휴리스틱 이용,&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;무작위 페이지 교체 : 무작위로 교체할 페이지 선택&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;선입선출&lt;/u&gt;(First-In-First-Out, FIFO)&amp;nbsp; 페이지 교체 : 가장 오랫동안 메모리에 머문 페이지 교체, 비교적 낮은 비용으로 구현 가능, 가장 빈번하게 사용되는 페이지가 교체될 가능성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; -&amp;gt; Belady의 모순 : FIFO&amp;nbsp; 페이지 교체전략 사용 중 페이지 프레임의 개수를 늘리면 페이지 부재의 발생이 감소해야 하나,&amp;nbsp; 오히려 늘어나는 경우가 발생하는 상황 (지역성을 활용하지 않아서)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 최소최근사용(Least-Recently-Used, LRU) 페이지 교체 : 가장 오랫동안 참조되지 않은 채 메모리를 차지한 페이지 교체, loop 구조에서 문제&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;최소사용빈도(Least-Frequently-Used, LFU)&amp;nbsp; 페이지 교체 : 가장 적게 사용되는 페이지 교체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;-&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;최근미사용(Not-Used-Recently, NUR)&amp;nbsp; 페이지 교체 : 최소최근사용(LRU) 방법을 낮은 비용으로 근사&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;참조비트(reference bit)와 변경비트(modified bit) 사용 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(r,m)이 (0,0)-&amp;gt;(0,1)-&amp;gt;(1,0)-&amp;gt;(1,1) 순으로&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;이차기회&lt;/u&gt;(Second Chance) 페이지 교체 : 페이지 별로 참조비트(referenced bit)가 있는 FIFO&amp;nbsp; 전략&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조비트가 1이면 0으로 바꾸고 FIFO 대기열의 맨 뒤로 배치, 0이면 해당 페이지 교체&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조될 때마다 참조비트 1로 설정&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;클록&lt;/u&gt;(Clock) 페이지 교체 : 이차기회(Second chance) 페이지 교체와 유사, FIFO 대기열 대신 환형 리스트(circular list) 사용&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼재 적재된 page가 교체될 가능성이 높고, 참조비트 사용해 교체 페이지를 결정한다.&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;원거리&lt;/u&gt; 페이지(far page) 교체 : 프로세스의 참조 패턴을 나타내는 접근그래프(access graph) 생성하고 접근 그래프에서 참조된 페이지로부터 가장 멀리 떨어진 참조되지 않은 페이지 교체&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;Variable allocation&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* &lt;u&gt;쓰레싱&lt;/u&gt; :&amp;nbsp; 페이지부재(page fault)가 계속적으로 발생하여,&amp;nbsp; 프로세스의 처리시간보다 페이지 교체 시간이 더 많아지는 현상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 작업 집합 : 실행중인 프로세스가 일정시간 동안 참조하는 페이지들의 집합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리에 있어야 하는 페이지들의 집합, 지역성(locality) 특성 때문에 작업집합 유지 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;W(t,w)는 시간윈도우[ &amp;minus; , ] 동안 프로세스가 참조한 페이지들의 집합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우 크기 가 커짐에 따라 메모리에 유지하는 작업집합도 커지지만,&amp;nbsp; w가 일정 수준 이상 커지면 작업집합이 증가하지 않음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 작업집합(working set) 기반 페이지 교체 전략 : 작업집합 간의 전이를 할 때&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 페이지 부재 빈도(PFF) 페이지 교체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스의 페이지 부재 빈도에 따라 메모리에 유지할 페이지 개수를 조절한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 부재가 자주 일어나면, 프로세스에 할당된 페이지 프레임 수를 증가신다. (메모리 할당 증가)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 부재가 발생할 때만 수행(cf 작업집합 - 메모리에 참조할 때마다 관리)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 크기가 작을 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 페이지 테이블 크기 증가, 내부 단편화 감소, I/O 시간 증가, page fault 증가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 크기가 클 경우&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 페이지 테이블 크기 감소, 내부 단편화 증가, I/O 시간 감소, page fault 감소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전역/지역 페이지 교체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이징에서 프로그램 동작&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LINUX의 페이지 교체 전략&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;13. 시간 지역성, 공간 지역성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간 지역성은 최근 참조된 메모리 공간이 가까운 미래에도 계속 참조될 가능성이 높다는 성질이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복 구조, 프로시저, 스택 등이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공간 지역성은 일단 어떤 메모리가 참조되면, 근처 메모리 공간도 계속 참조되는 경향이 높다는 성질이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열검색, 순차적 코드의 실행, 관련 변수의 인접 선언 등이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;14. 이차기회 페이지 교체 알고리즘을 FIFO 교체 알고리즘과 비교하여 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15. 클록 페이지 교체 알고리즘과 이차기회 페이지 알고리즘 비교하여 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;16. 원거리 페이지 교체 알고리즘&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;17. 쓰레싱&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;18. 작업 집합과 지역성의 관계&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;19. 페이지 부재 빈도 페이지 교체 알고리즘&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;20. 리눅스에서 사용된 변형된 클록 페이지 교체 전략&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;활성 리스트와 비활성 리스트 2개의 연결 리스트를 사용하는데, 페이지 교체는 비활성 리스트에서 일어난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;21. 페이지 크기가 크거나 작을 때의 메모리 관련된 특성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 크기가 작으면, 내부 단편화를 감소시키고 특정한 참조 지역성만을 포함하기 때문에 기억장치 효율은 좋을 수 있다.&lt;/p&gt;</description>
      <category>전공/운영체제</category>
      <author>vss121</author>
      <guid isPermaLink="true">https://vss121.tistory.com/131</guid>
      <comments>https://vss121.tistory.com/131#entry131comment</comments>
      <pubDate>Sat, 3 Jun 2023 16:31:09 +0900</pubDate>
    </item>
    <item>
      <title>8장 메모리 관리</title>
      <link>https://vss121.tistory.com/130</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;* block : 보조기억장치 - 주기억장치 데이터 전송 단위&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;word : 주기억장치 - 레지스터 데이터 전송 단위&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;Part&amp;nbsp;1 &lt;br /&gt;-&amp;nbsp; 메모리 관리자 (memory manager)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 메모리 관리 전략&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 적재(fetch)전략 2) 배치 전략 3) 교체 전략&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 메모리 계층 구조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레지스터 &amp;gt; 캐시 &amp;gt; 메인메모리 &amp;gt; 보조기억장치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 메모리 할당&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 연속 할당 (continuous allocation) 프로그램을&amp;nbsp;연속인&amp;nbsp;메모리&amp;nbsp;한&amp;nbsp;곳&amp;nbsp;에&amp;nbsp;배치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; - 단일 프로그래밍 / 단일 사용자 환경 메모리 할당&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; - 문제점1 : 프로그램 크기 &amp;gt; 메모리 크기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; - 오버레이 (overlay) : 프로그램을 논리적 단위로 분할하여 현재 실행하는 부분만 메모리에 적재&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; - &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;문제점2 :&lt;span&gt; 커널 보호&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; - 경계 레지스터 (boundary register)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; - 문제점3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; - 스와핑 (swapping) : 프로세스를 일시적으로 메모리에서 보조기억장치 로 이동 시켰다가 계속 실행시키려 &lt;br /&gt;고&amp;nbsp;할&amp;nbsp;때&amp;nbsp;다시&amp;nbsp;메모리&amp;nbsp;에&amp;nbsp;적재&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp; - 다중 프로그래밍&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; 1.&amp;nbsp; 고정 분할 다중 프로그래밍 (fixed partition multiprogramming) : 메모리를 고정된 크기로 미리 분할한다. 각 프로세스를 하나의 분할에 적재한다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; 2. 가변 분할 다중 프로그래밍 (variable partition multiprogramming)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;: 고정된 분할의 경계를 없애고 각 작업에 필요한 만큼의 메모리 할당. 내부단편화 발생X&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - 가변 분할 다중 프로그래밍의 외부 단편화 대응 방법 : &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1)&lt;/span&gt;빈 공간 강제 통합 (coalescing) : 이웃&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2)&lt;span&gt; 빈&amp;nbsp;공간&amp;nbsp;집약&amp;nbsp;(compaction)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; -&lt;span&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;가변 분할 다중 프로그래밍의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;프로세스&amp;nbsp;배치&amp;nbsp;전략&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt; 1) 최초 적합 전략 (first fit strategy) : 가용공간 중 첫 번째 분할에 배치&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt; 2) 최적 적합 전략 (best fit strategy) : 가용공간 중 배치할 때 남는 공간이 가장 작은 곳에 배치&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt; 3) 최악 적합 전략&amp;nbsp;(worst fit strategy) 가용공간 중 배치할 때 남는 공간이 가장 큰 곳에 배치&lt;/span&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;단편화 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부 단편화 : 전체에서 남은 메모리 크기 &amp;gt; process 크기, 연속된 공간 아니면 메모리 낭비됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부 단편화 : 하나의 분할에 프로세스를 할당하고 남은 공간, partition 크기 &amp;gt; process 크기 면 메모리 낭비됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 불연속 할당 (non-continuous allocation) 프로그램을&amp;nbsp;여러&amp;nbsp;조각&amp;nbsp;segment,&amp;nbsp;page&amp;nbsp;으로&amp;nbsp;분할&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Part 2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;● 가상 메모리 (virtual memory) : 프로세스&amp;nbsp;전체가&amp;nbsp;메모리에&amp;nbsp;존재하지&amp;nbsp;않아도&amp;nbsp;실행될&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;하는 &lt;br /&gt;메모리&amp;nbsp;관리&amp;nbsp;기법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 가상 주소(상대주소, 논리주소 ) 공간 V : 프로세스에서 사용하는 주소의 전체 집합&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 물리 주소(실제주소) 공간 R : 실제&amp;nbsp;메모리의&amp;nbsp;주소&amp;nbsp;공간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 주소 변환 사상 (address translation mapping) : MMU에 의해 수행, 블록 단위&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 가상 주소 표현 v = (b,d)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 블록 사상 테이블 (block map table)에서 블록의 실제 메모리 위치 정보&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;●&lt;span&gt; 페이징 (paging) 직접변환&amp;nbsp;,&amp;nbsp;연관사상&amp;nbsp;변환&amp;nbsp;,&amp;nbsp;혼합방법&amp;nbsp;;&amp;nbsp;다단계&amp;nbsp;페이지&amp;nbsp;테이블&amp;nbsp;,&amp;nbsp;역&amp;nbsp;페이지&amp;nbsp;테이블&amp;nbsp;, &lt;br /&gt;페이지&amp;nbsp;공유&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 : 프로그램의 분할된 블록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;page frame : 메모리의 분할 영역, 페이지와 같은 크기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부 단편화x 내부 단편화o&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;가상 주소 표현 v=(p,d)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- address mapping 체계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1) 직접 사상 (direct mapping) : 메모리 2번 접근&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2) 연관 사상 (associative mapping) : Translation Look-aside Buffer (TLB)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;변환&amp;nbsp;속도의&amp;nbsp;개선을&amp;nbsp;위해&amp;nbsp;연관메모리&amp;nbsp;(associative&amp;nbsp;memory)&amp;nbsp;사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 동시(병렬) 검색수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3) 연관 사상/직접 사상 혼합 : 최근 사용된 페이지 정보만 연관메모리에 저장, 나머지는&amp;nbsp;page&amp;nbsp;table&amp;nbsp;에&amp;nbsp;저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 다단계&amp;nbsp;페이지&amp;nbsp;테이블&amp;nbsp;(multilevel&amp;nbsp;page&amp;nbsp;table)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 역&amp;nbsp;페이지&amp;nbsp;테이블&amp;nbsp;(inverted&amp;nbsp;page&amp;nbsp;table)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 해시 앵커 테이블 이용한 역 페이지 테이블 방법 개선&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 공유 (sharing) : 읽기 전용 코드&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;Part 3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;●&lt;span&gt; 세그멘테이션 (segmentation)&amp;nbsp;&lt;br /&gt;프로세스의 메모리 공간에 대한 프로그래머의 관점 (논리적으로 분할)&lt;br /&gt;크기가 일정하지 않은 함수 , 메인 프로그램, 스택 , 힙 , 전역변수 등의 개체 세그먼트들의 모임&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부 단편화x, 외부 단편화o&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 주소 표현 virtual address v = (segment number (s), displacement in a segment (d))&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 세그먼테이션 사상 테이블 (segmentation map table)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세그먼트 적재 비트 (0 : 메모리내 부재 , 1: 적재 ), 보조기억장치 주소 메모리 내 부재시 검색할 위치 , 세그먼트의 전체 길이, 세그먼트 시작 주소, 보호비트&amp;nbsp;(protection&amp;nbsp;bit)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MZC8D/btsibwuzEMI/b7IQFZsBMj4H6uZ5v1ZkX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MZC8D/btsibwuzEMI/b7IQFZsBMj4H6uZ5v1ZkX1/img.png&quot; data-alt=&quot;보조기억장치-&amp;amp;gt;swap device&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MZC8D/btsibwuzEMI/b7IQFZsBMj4H6uZ5v1ZkX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMZC8D%2FbtsibwuzEMI%2Fb7IQFZsBMj4H6uZ5v1ZkX1%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;698&quot; height=&quot;295&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;보조기억장치-&amp;gt;swap device&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세그먼트 공유&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세그먼트 보호 및 접근 제어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;페이징&amp;nbsp;세그먼테이션&amp;nbsp;혼용&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지화된 세그먼테이션 (paged segmentation) : 논리 단위의 세그먼트로 분할하고, 각 세그먼트를 고정된 크기의 page로 분할한다. 페이지 단위로 메모리에 적재한다.&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;프로세스별 세그먼트 테이블 (segment table), 세그먼트별 페이지 테이블 (page table)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12. 내부단편화와 외부단편화의 차이점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: left;&quot;&gt;내부 단편화는 메모리 할당 시 발생하는 문제로, 프로세스가 할당받은 메모리 공간 중 일부가 사용되지 않고 낭비되는 경우를 말합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: left;&quot;&gt;외부 단편화는 메모리 할당 해제 후 발생하는 문제로, 할당된 메모리 공간들 사이에 사용되지 않은 작은 조각들이 흩어져서 메모리 공간의 활용을 어렵게 만드는 경우를 말합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #374151; text-align: left;&quot;&gt;13. 페이지와 세그먼트의 차이점&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #374151; text-align: left;&quot;&gt;페이지는 일정한 크기의 블록이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #374151; text-align: left;&quot;&gt;세그먼트는 가변적인 크기의 블록이다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #374151; text-align: left;&quot;&gt;14.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: start;&quot;&gt;가상 메모리(Virtual Memory)는 컴퓨터 시스템에서 실제 물리적인 메모리(RAM)보다 큰 용량의 가상적인 메모리 공간을 사용하는 기술입니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: left;&quot;&gt;가상 메모리는 주기억장치보다 큰 메모리 공간을 제공하므로, 더 많은 프로세스나 더 큰 프로그램을 실행할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #f7f7f8; color: #374151; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;성능 저하: 가상 메모리를 사용하는 경우, 실제 메모리와 디스크 간의 데이터 전송이 필요합니다. 이로 인해 액세스 속도가 느려지고, 디스크의 사용량이 증가하여 성능 저하가 발생할 수 있습니다.&lt;/li&gt;
&lt;li&gt;페이지 부재: 가상 메모리 시스템에서는 페이지 부재(Page Fault)가 발생할 수 있습니다. 페이지 부재는 필요한 데이터가 실제 메모리에 없어 디스크에서 가져와야 하는 상황을 의미합니다. 페이지 부재가 자주 발생하면 성능이 저하될 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15. 페이징 기법에서 가상 주소를 실 주소로 사상하는 데 사용되는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 사상 (direct mapping) : 페이지테이블을 이용하며, 메모리 2번 접근&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;연관 사상 (associative mapping) : 변환 속도 개선을 위해 Translation Look-aside Buffer (TLB)을 이용한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;연관 사상/직접 사상 혼합 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;최근 사용된 페이지 정보만 연관메모리에 저장,&lt;span&gt;&amp;nbsp;&lt;/span&gt;나머지는&amp;nbsp;page&amp;nbsp;table&amp;nbsp;에&amp;nbsp;저장&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;16. 세그먼테이션에서 가상 주소를 실 주소로 사상하는 과정&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;프로세스의 SMT가 저장되어 있는 주소 b에 접근한다. SMT에서 segment s의 entry를 찾는다. 찾아진 entry에 대해 존재비트가 0이면 swap device로부터 해당 segment를 메모리로 적재한다. 아니면 실제 주소 r을 계산하여 r로 메모리에 접근한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;17. 페이징 기법과 세그멘테이션 기법을 비교하여 장단점&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;페이징 기법은 프로그램을 고정된 크기의 block으로 분할한다. &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;필요한 page만 메모리에 적재하여 사용하여 메모리의 효율적 활용을 할 수 있다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;외부 단편화 문제가 없다. 프로그램의 논리적 구조를 고려하지 않아 페이지 공유나 보호가 복잡하다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;세그멘테이션 기법은 프로그램을 논리적 단위로 분할한다. 필요한 segment만 메모리에 적재하여 사용하여 메모리의 효율적 활용을 할 수 있다. 내부 단편화 문제가 없다. 세그먼트 공유나 보호가 용이하다. 페이징 시스템 대비 관리 오버헤드가 크다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;18. 다단계 페이지 테이블을 사용한 페이징이 수행되는 과정과 장단점&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;페이지&amp;nbsp;테이블을&amp;nbsp;여러&amp;nbsp;단계&amp;nbsp;의&amp;nbsp;페이지&amp;nbsp;테이블&amp;nbsp;로&amp;nbsp;나누는&amp;nbsp;저장&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;하위 단계에는 필요한 만큼만 페이지 테이블 생성할 수 있어 저장공간 절약&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: left;&quot;&gt;주소 변환에 추가적인 메모리 접근이 필요하므로 속도 저하가 발생할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;19. 페이지화된 세그먼테이션 기법에서 메모리 관리와 주소 사상을 수행하는 방법&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;페이징 시스템과 유사하게 메모리 관리를 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;가상주소  =( , , ) 로 프로세스별 세그먼트 페이지와, 세그먼트별 페이지 테이블을 이용해 주소 사상을 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;20. 페이지 사상 테이블에 저장되는 항목들과 그 역할&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 존재 비트 (page resident bit),&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보조기억장치 내 위치 정보 (secondary storage address),&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 프레임 번호 (page frame number)&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;21. 세그먼트 사상 테이블에 저장되는 항목과 그 역할&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: left;&quot;&gt;세그먼트 번호 : &lt;span style=&quot;background-color: #f7f7f8; color: #374151; text-align: left;&quot;&gt;세그먼트 번호는 세그먼트 식별자(Identifier)로 사용&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세그먼트 적재 비트 (0 : 메모리내 부재 , 1: 적재 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보조기억장치 주소 메모리 내 부재시 검색할 위치 ,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세그먼트의 전체 길이,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세그먼트 시작 주소,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보호비트 (protection bit) : 읽기, 쓰기 , 실행 , 추가 쓰기&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;22. 페이징 기법에서 프로세스 간의 페이지가 공유되는 형태&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;23. 페이지화된 세그멘테이션 기법에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스 테이블: 전체&amp;nbsp;프로세스&amp;nbsp;정보&amp;nbsp;포함 &lt;br /&gt;세그먼트 테이블 :&amp;nbsp; 프로세스별로 세그먼트 정보 포함 &lt;br /&gt;페이지 테이블 : 세그먼트별&amp;nbsp;페이지&amp;nbsp;정보&amp;nbsp;포함&lt;/p&gt;</description>
      <category>전공/운영체제</category>
      <author>vss121</author>
      <guid isPermaLink="true">https://vss121.tistory.com/130</guid>
      <comments>https://vss121.tistory.com/130#entry130comment</comments>
      <pubDate>Sat, 3 Jun 2023 03:24:26 +0900</pubDate>
    </item>
    <item>
      <title>7 Behavioral Modeling</title>
      <link>https://vss121.tistory.com/129</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;행위 모델링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;p2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역할, 스타일 가이드라인, 과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sequence diagram&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;communication diagram&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(behavioral) state machine&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능 모델 : 비즈니스 시스템이 어떻게 행동할 것인지, 시스템이 무엇을 해야하는 지 표현, 정보 시스템의 외부 행위 시각을 묘사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조 모델 : 비지니스 시스템에 의해 만들어지고 사용되는 오브젝트 표현, 정보 시스템의 정적인 관점에서 묘사, 클래스 수준에 집중&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행위 모델 : 정보 시스템의 내부 행위나 동적인 관점에서 묘사, 오브젝트 수준에 집중&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행위 모델링&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 비즈니스 프로세스; 절차 -&amp;gt; sequence diagram, communication diagram&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 절차에서 사용되는 데이터가 어떻게 변해가는가 -&amp;gt; state machine&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;목적&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 구조 모델의 각 use case를 지지하기 위해 어떻게 오브젝트가 협력하는지 보여주기 위함&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 비즈니스 절차에서 내부 관점을 묘사&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클래스 다이어그램에서 어떤 멤버변수, 멤버함수가 필요한지를 정의했지만 멤버 함&amp;nbsp; 수에 대해서 어떤 함수가 호출될 것인지 그들 간에서 어떻게 동작할 것인가를 정의하기 위해 /&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;시스템의 동적인 관점&amp;gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 활동 다이어그램&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- interaction d&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - sequence d&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - communication d&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - interaction overview d&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- state machine diagram&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - (behavioral) state machine 멤버변수가 어떤 값을 가지면서 상태의 전환 표현&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - protocol state machine 한 클래스 안의 메소드(연산)가 어떤 호출 순서대로 실행되어지는지.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;어떤 상태와 조건 하에서 클래스의 연산이 호출되는지&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- uc 다이어그램&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;d 구성요소&amp;gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;객체 : 클래스의 인스턴스&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;속성(attributes) : 객체와 관련된 데이터&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;operation : 객체의 행동, 메시지 주고받음&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;메시지 : 객체 사이의 function call, procedure call&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;sequence d&amp;gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 동적 모델&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 하나의 uc에서 참여하는 오브젝트 보여준다, 객체가 서로 어떻게 상호작용하는지 보여준다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 정의된 상호작용에서 객체 사이에 주고받는 메시지를 보여준다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 수직 축 : 시간 라인, 수평 축 : 객체 집합&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- instance form(특정한 시나리오), generic form(시나리오에서 모든 가능한 대안)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;ex&amp;gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;objectName : className&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;: className&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오브젝트가 1개&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;objectName : className&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;object 를 나타냄&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- actor&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- object&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- lifeline (생명선)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 실행 발생&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 메시지 : 보낼 때 solid arrow 돌아올때 dashed arrow, asynchronous msg 는 &amp;gt; synchronous msg는 ▶&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 객체 소멸 : x&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- frame : interaction operator(이름) 등 포&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;● combined fragment&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- alt&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- loop(1,5)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- par&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;●&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;state invariants : 걸쳐있는 object가 해당 멤버변수 갖고 그 값으로 되어있을 때의 제약사항 가짐&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;●&lt;span&gt; &lt;/span&gt;&lt;/span&gt;recursion&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;●&lt;span&gt; interaction occurrences : ref&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;관여되는 객체만 써야한다, 안에 combined fragment 올 수 ㅇ&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;sd 그리기&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 시스템, uc, uc 시나리오, 클래스 메서드 결정&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. 참여하는 객체 확인&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. 생명선 설정&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. 메시지 레이아웃&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;5. 실행 발생 추가&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;6. 제약사항, fragments 정의&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;7. 검증&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;communication diagram&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;sd : 시간이나 순서가 중요, 여러 상호작용 fragments 보여줄 필요&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;cd : 상호작용의 맥락 보여줄 필요, 공동작업 객체에 대한 제어 흐름 이해. 순서보다는 객체사이의 메시지 흐름을 강조&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;actor, object, association, message, frame&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;message label은 sequence-number : [aGuardCondition] a Message&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;interaction overview diagram&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;상호작용에 대해 존재하는 옵션을 한 곳에 보여주는 것에 집중&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;노드가 상호작용하거나 상호작용 발생 위치에 대한 제어 흐름 개요&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;활동 다이어그램의 변형&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;state machine&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 한 생명주기 동안 클래스의 객체가 가질 수 있는 가능한 모든 상태를 보여준다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 모든 객체에 대해서 사용x 복잡한 객체 정의 시&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 동적 모델&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;state&amp;nbsp; : 특정 시점에서 속성의 값, 다른 객체와의 관계&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;initial state&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;final state&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;events : 객체의 상태 변화를 일으킴; 메소드 호출&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;transitions : 한 상태에서 다른 상태로 객체의 움직임&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;frame&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;guard-condition : 속성값 포함하는 boolean 표현&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;actions : atomic, nondecomposable 과정. interrupted x ; 메소드 실&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;activities : nonatomic, decomposable 과정. interrupted o&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;객체 사이의 상호작용이 아니라, 한 객체가 어떻게 처음 만들어져서 사라질 때까지의 상태변화&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;한 객체가 상태변화를 겪고 있다 -&amp;gt; 멤버변수의 값이 바뀐다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;usecase명세서 형용사로 되어있는 것이 상태가 될 수 있다&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Event [guard-condition] / Action-expression 3가지&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;메시지 보내기 : dashed arrows로 state machine 연결&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;OR-substate / AND-substate&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;hierarchical modeling&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;history indicator : 상태 전이 직전을 기억하고 있다가 다시 그쪽으로 갈 떄?&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클래스 다이어그램에서 어떤 subclass들은 상태일 수도 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;BSM을 복잡한 오브젝트에 대해서만 만든다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다이어그램의 왼쪽 위에 초기 상태, 오른쪽 아래에 final 상태&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;guard conditions은 상호 배제적이어야한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;BSM 그리기&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. context(클래스) 설정&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. 오브젝트의 initial, final, stable 상태를 확인&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. 객체가 stable states를 어떤 순서로 통과할 것인지 결정&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. 전이와 관련된 event, action, guard conditions 확인&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;5. 검증&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;sd는 객체간의 메시지 흐름을 시간으로&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;cd는 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;객체간의 메시지&lt;span&gt; 전달 복잡도&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;bsm &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;객체 하나의 상태변화&lt;/span&gt;&lt;/p&gt;</description>
      <category>전공/객체지향설계</category>
      <author>vss121</author>
      <guid isPermaLink="true">https://vss121.tistory.com/129</guid>
      <comments>https://vss121.tistory.com/129#entry129comment</comments>
      <pubDate>Wed, 31 May 2023 23:33:51 +0900</pubDate>
    </item>
    <item>
      <title>11장 파일 시스템 (File System)</title>
      <link>https://vss121.tistory.com/128</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;강의교재 다시 확인@&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Part 1 &lt;br /&gt;1.&amp;nbsp;파일과&amp;nbsp;디렉토리&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 : 하나의&amp;nbsp;단위로&amp;nbsp;처리될&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;이름이&amp;nbsp;부여된&amp;nbsp;데이터의&amp;nbsp;집합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일의 종류&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연속된 바이트(byte)로 구성된 파일 &lt;br /&gt;레코드(record)로 구성된 파일 : database의 파일 &lt;br /&gt;트리(tree) 정보를 저장하는 파일 : B+ 자료구조&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디렉토리 (directory, folder) : 파일 시스템에 있는 파일에 대한 정보를 포함하고 있는 파일&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단일 단계 파일 시스템&lt;/li&gt;
&lt;li&gt;계층적 파일 시스템&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-작업 디렉토리 (절대경로 = 작업 디렉토리 + 상대경로)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-링크&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;소프트링크(심볼릭 링크)&lt;/li&gt;
&lt;li&gt;하드링크&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&amp;nbsp;파일&amp;nbsp;시스템&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 시스템 : 컴퓨터에서&amp;nbsp;파일이나&amp;nbsp;데이터를&amp;nbsp;쉽게&amp;nbsp;발견&amp;nbsp;및&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;보관&amp;nbsp;또는&amp;nbsp;조직하는&amp;nbsp;체제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 디스크립터 테이블 - 열린 파일 테이블 - 가상 파일 시스템 - 파일 시스템 - 디스크 캐시 - 디스크 스케줄러 - 디바이스 드라이버&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Part 2 &lt;br /&gt;3.&amp;nbsp;파일&amp;nbsp;시스템&amp;nbsp;구조&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 메타데이터 : 데이터에 대한 데이터, 사용자가 직접 변경x, 파일 시스템의 무결성 보장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 리눅스의 EXT 파일시스템&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;부트 블럭 : 커널 적재시키기 위한 프로그램 저장&lt;/li&gt;
&lt;li&gt;수퍼 블럭 :&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그룹 기술자 테이블 :&amp;nbsp;&lt;/li&gt;
&lt;li&gt;블록 비트맵&lt;/li&gt;
&lt;li&gt;i-노드 비트맵&lt;/li&gt;
&lt;li&gt;i-노드 테이블&amp;nbsp;&lt;/li&gt;
&lt;li&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 마운트 : 하나의&amp;nbsp;파일&amp;nbsp;시스템을&amp;nbsp;다른&amp;nbsp;파일&amp;nbsp;시스템에서&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;편입시키는&amp;nbsp;것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.&amp;nbsp;파일&amp;nbsp;공간&amp;nbsp;할당&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보조기억장치에&amp;nbsp;파일에&amp;nbsp;대한&amp;nbsp;공간을&amp;nbsp;할당하고&amp;nbsp;회수하는&amp;nbsp;방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-연속할당&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-불연속 할당&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연결리스트(linked-list) 사용방법&amp;nbsp;&lt;/li&gt;
&lt;li&gt;테이블(table-based) 사용방법&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;FAT&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;인덱싱(indexing) 사용방법&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;size16&quot;&gt;5.&amp;nbsp;빈&amp;nbsp;공간&amp;nbsp;관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- bitmap 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 연결리스트 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Part 3 &lt;br /&gt;6. 접근 제어&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 임의 접근 제어(Discretionary Access Control)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소유자&amp;nbsp;또는&amp;nbsp;관리자가&amp;nbsp;사용자나&amp;nbsp;사용자&amp;nbsp;그룹에&amp;nbsp;대해&amp;nbsp;임의적으로&amp;nbsp;자율적으로&amp;nbsp;접근권한&amp;nbsp;부여 &lt;br /&gt;소유자 또는 관리자인 사용자의 접근권한 관리 -&amp;gt; 보안 관리자의 부담 축소&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;접근제어 행렬 (access control matrix) 기반 제어&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자별&amp;nbsp;파일에&amp;nbsp;대한&amp;nbsp;접근&amp;nbsp;허용여부&amp;nbsp;지정&lt;/li&gt;
&lt;li&gt;파일&amp;nbsp;및&amp;nbsp;사용자가&amp;nbsp;많아지면&amp;nbsp;적용&amp;nbsp;곤란&lt;/li&gt;
&lt;li&gt;저장하는데 용량을 많이 차지한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;접근제어 리스트(access control list, ACL) 기반 제어&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일별 접근 제어 리스트(ACL, access control list) 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;권한 리스트(capability list) 기반 제어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자별로 접근 권한 리스트 관리&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/borWkD/btsh1UgXCvp/jnoUK2Lsuk7dNdweRIryB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/borWkD/btsh1UgXCvp/jnoUK2Lsuk7dNdweRIryB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/borWkD/btsh1UgXCvp/jnoUK2Lsuk7dNdweRIryB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FborWkD%2Fbtsh1UgXCvp%2FjnoUK2Lsuk7dNdweRIryB0%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;1256&quot; height=&quot;688&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자 등급 (user class) 기반 제어&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 강제적 (mandatory) 접근 제어&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 역할 기반 (role-based) 제어&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;7. 백업 (물리적 백업, 논리적 백업) ,복구&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;8. 로그 구조 파일 시스템&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9. Flash 파일 시스템&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;12. 하드 링크와 소프트 링크의 차이점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소프트링크는 디렉토리 항목에 다른 파일의 경로이름 저장,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하드링크는 디렉토리 항목에 해당 파일의 저장장치에서의 위치정보 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;13. 파일 시스템 마운트가 무엇인지, 마운트를 하면 마운트 포인트에 있던 파일과 디렉토리에 어떤 일이 발생하는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;마운트는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;하나의&amp;nbsp;파일&amp;nbsp;시스템을&amp;nbsp;다른&amp;nbsp;파일&amp;nbsp;시스템에서&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;편입시키는&amp;nbsp;것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 시스템을 다른 파일 시스템에 마운트하게 되면, 마운트 포인트의 디렉토리의 기존 내용이 지워진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;14. 테이블 기반 불연속 파일 할당 방법과 인덱싱 기반 파일 할당 방법 비교&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 기반 불연속 파일 할당 방법은 파일 블록에 대한 포인터값을 저장하는 테이블 사용한다. 블록번호와 테이블 인덱스가 일치한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스 기반 파일 공간 할당 방법은 데이터 블록에 대한 포인터를 저장하는 인덱스 블록을 파일 별로 보유한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15.파일 시스템에서 빈 공간 관리 위해 사용되는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결리스트 사용 방법은 free list를 관리하는 것으로 빈 블록이 발생하면 free list 맨 끝에 추가하고 블록 할당 시 free list의 맨 앞에 있는 블록을 할당한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비트맵 사용 방법은 블록별로 1개의 비트를 할당하며 i번째 비트는 i번째 블록에 대응된&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;16. 접근 제어 행렬, 접근 제어 리스트, 권한 리스트 기반 접근 제어 비교&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모두 임의 접근 제어의 예이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접근 제어 행렬 사용자별 파일에 대한 접근 허용여부 지정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접근 제어 리스트는 파일별로 접근이 허용된 사용자 및 사용범위를 리스트로 관리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권한 리스트 기반 접근 제어는 사용자별로 파일들에 대한 접근 허용 범위를 리스트로 관리한다.&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>전공/운영체제</category>
      <author>vss121</author>
      <guid isPermaLink="true">https://vss121.tistory.com/128</guid>
      <comments>https://vss121.tistory.com/128#entry128comment</comments>
      <pubDate>Tue, 30 May 2023 22:00:27 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 관리, 네트워크</title>
      <link>https://vss121.tistory.com/125</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 사용자 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;런 레벨(Run level)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 시스템 관리를 용이하게 하기 위해 서비스의 실행을 단계별로 구분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- /etc/rc0.d ...&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;런레벨&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;시스템 종료&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;1, S, s&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;단일 사용자 모드&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;2&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;다중 사용자 모드&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;3&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;다중 사용자 모드 + 네트워크&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;4&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;5&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;6&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;시스템 재시작&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;사용자 관련 파일&lt;/span&gt;&lt;/blockquote&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;background-color: #f3c000;&quot;&gt;/etc/passwd&lt;/span&gt; (사용자 계정 관련)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 기본 항목 구성은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 로그인 계정 : 암호화된 비밀번호 : UID : 기본 GID : 정보(GECOS) : 홈 디렉토리 : 로그인 쉘이 저장되어 있는 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- cat /etc/passwd&lt;/p&gt;
&lt;pre id=&quot;code_1672756560882&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root:x:0:0:root:/root:/bin/bash
ykkim:x:1000:1000:Kim yk,,,:/home/ykkim:/bin/bash&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* x는 shadow 패스워드 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* uid 0은 root사용자&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;background-color: #f3c000;&quot;&gt;/etc/shadow&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용자 암호 관련 정보를 별도로 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- sudo cat &lt;span style=&quot;color: #666666;&quot;&gt;/etc/shadow&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1672756991961&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ykkim@ykkim-VirtualBox:/etc$ sudo cat /etc/shadow
root:!:19348:0:99999:7:::
ykkim:$y$j9T$0lqxMq9uQ3RWmG0mwRw.P1$tRcuANfdsKOVu562/3E/tUFduvoJpWw/vggGigPtfcC:19352:0:99999:7:::&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그인 이름 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암호화된 패스워드 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1970년 1월 1일을 기준으로 암호 최종 수정 날까지의 기간(일) :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패스워드를 변경한 후에 다시 변경이 가능한 날까지 남은기간(일) :, 암호 최소 유지 기간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변경해야만 하는 패스워드의 유효기간(일) :, 암호 최대 유지기간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암호 만료 경고 기간(일) :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계정 정지 기간이 도래하기 전 패스워드를 변경할 수 있는 남은기간(일) :, 암호 파기 기간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계정 만료 기간(일) :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예약항목&lt;/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;u&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;/etc/login.defs&lt;/span&gt;&lt;/u&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용자 계정의 설정 관련 기본값 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용자 생성 시 이 기준으로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cat&amp;nbsp;/etc/login.defs&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;background-color: #f3c000;&quot;&gt;/etc/group&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 그룹 관련 정보&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- cat /etc/group&lt;/p&gt;
&lt;pre id=&quot;code_1672758186251&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ykkim@ykkim-VirtualBox:~$ cat /etc/group
root:x:0:
sudo:x:27:ykkim,openpower&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 그룹명 : 그룹 암호 : GID(번호) : 그룹원 목록&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;background-color: #f3c000;&quot;&gt;/etc/gshadow&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 그룹 암호 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- sudo cat &lt;span style=&quot;color: #666666;&quot;&gt;/etc/gshadow&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1672758636380&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ykkim@ykkim-VirtualBox:~$ sudo cat /etc/gshadow
[sudo] password for ykkim:
root:*::&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 그룹명 : 그룹 암호 : 관리자 : 그룹멤버&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;/etc/skel/&lt;/span&gt; 디렉토리&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용자 계정 생성 시 디폴트로 생성되는 파일들 저장된 공간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(시스템 운영 정책에 따라/ 사용자 홈 디렉토리에 공통으로 배포해야 할 파일들을 저장하여 계정 생성시 복사)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ls -al /etc/skel/&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 관리 명령어&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;useradd 명령어&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용자 계정 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- root 권한 있어야 .. -&amp;gt; sudo&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;background-color: #9feec3;&quot;&gt;useradd [옵션] 새 로그인 ID&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 옵션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-u&amp;nbsp;UID&amp;nbsp;:&amp;nbsp;사용자&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;계정의&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UID&amp;nbsp;지정 &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-g&amp;nbsp;GID&amp;nbsp;:&amp;nbsp;사용자&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;계정의&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GID&amp;nbsp;지정 &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-G&amp;nbsp;GID&amp;nbsp;:&amp;nbsp;사용자&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;계정의&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2차&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;그룹의&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GID&amp;nbsp;지정 &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-d&amp;nbsp;디렉터리경로&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;사용자의&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;홈&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;디렉터리&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;지정 &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-e&amp;nbsp;유효기간(YYYY-MM-DD)&amp;nbsp;:&amp;nbsp;사용자의&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;계정&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;만기일&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;지정(EXPIRE&amp;nbsp;항목&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;설정) &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-f&amp;nbsp;비활성&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;일수&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;사용자&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;계정의&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;유효일&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;지정(INACTIVE&amp;nbsp;항목&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;설정) &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-s&amp;nbsp;쉘&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;로그인&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;시&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;사용할&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;기본&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;쉘&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;지정 &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #f89009;&quot;&gt;&amp;nbsp;-m&amp;nbsp;:&amp;nbsp;사용자의&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;홈&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;디렉터리&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;생성&lt;/span&gt; &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-c&amp;nbsp;설명&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;사용자의&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이름&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;등&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;부가적인&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;설명&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계정 생성 &lt;span style=&quot;background-color: #9feec3; color: #ee2323;&quot;&gt;sudo useradd -m user2&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&amp;nbsp;sudo&amp;nbsp;useradd&amp;nbsp;-m&amp;nbsp;-G&amp;nbsp;sudo&amp;nbsp;-s&amp;nbsp;/bin/bash&amp;nbsp;-c&amp;nbsp;&quot;Power&amp;nbsp;User&quot;&amp;nbsp;user3 &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계정 유무 확인 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;(sudo) ls -a /home/user2/&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계정 비번 변경 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;sudo&amp;nbsp;passwd&amp;nbsp;user2&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;switch user &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;su - user3&lt;/span&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;usermod 명령어&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용자 계정 정보 수정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;background-color: #9feec3;&quot;&gt;usermod [옵션] 로그인ID&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 옵션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;..............&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo usermod -u 1008 user2 ; UID를 1008로 변경&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;userdel 명령어&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용자 계정 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&lt;span style=&quot;background-color: #9feec3;&quot;&gt; userdel [옵션] 로그인ID&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;color: #f89009;&quot;&gt;-r : 사용자의 홈 디렉터리까지 삭제&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&amp;nbsp;sudo&amp;nbsp;userdel&amp;nbsp;-r&amp;nbsp;user2&lt;/span&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;groupadd&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo groupadd groupex&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;groupmod&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;groupmod -g 1008 groupex&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;gpasswd&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo gpasswd groupex ; 암호 변경&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;newgrp&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;newgrp groupex ; 소속 그룹을 다른 그룹으로 변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;id로 확인&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;groupdel&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo groupdel groupex&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;gt; 현재 로그인한&amp;nbsp;사용자가 속한 그룹을 알려줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;groups&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 지정한 사용자가 속한 그룹을 알려줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;groups 사용자&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;사용자 정보 관리 명령어&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UID ; 실제 사용 식별자 ; 로그인할 때 사용한 계정의 UID ; who am i&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;EUID ; 유효 사용 식별자 ; 현재 명령을 수행하는 UID ; Effective UID ; whoami&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;둘이 달라지는 경우&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;- 실행파일에 setuid가 설정되어 있는 경우&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;- su 명령을 사용하여 다른 계정으로 전환한 경우&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;who ; 현재 시스템 사용하는 사용자 정보 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;w ; 현재 시스템 사용하는 사용자 정보, 작업 정보 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;last ; 시스템에 로그인, 로그아웃 정보 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;groups [사용자계정] ; 사용자 계정이 속한 그룹 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/sudoers&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;chown ; 소유자, 소유그룹 변경&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo chown ykkim dir/&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo chown &lt;span style=&quot;color: #ee2323;&quot;&gt;-R&lt;/span&gt; ykkim.ykkim dir/&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;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그룹 관리 명령어&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;groupadd 명령어&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 그룹 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;background-color: #9feec3;&quot;&gt;groupadd [옵션] 그룹명&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp; 옵션&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-g gid : 그룹의 GID 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹 생성 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;sudo&amp;nbsp;groupadd&amp;nbsp;groupex&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹 확인 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;grep groupex /etc/group&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;groupmod 명령어&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 그룹 정보 수정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;background-color: #9feec3;&quot;&gt;groupmod [옵션] 그룹명&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;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-g&amp;nbsp;GID&amp;nbsp;:&amp;nbsp;그룹의&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GID&amp;nbsp;수정 &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-o&amp;nbsp;:&amp;nbsp;GID&amp;nbsp;중복&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;허용 &lt;br /&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-n&amp;nbsp;그룹명&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;그룹명&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;변경&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;gpasswd 명령어&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- /etc/group과 /etc/gshadow 파일 관리&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;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;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 모니터링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;uname ; 시스템 정보 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;uname -m ; 하드웨어 종류 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;uname -n ; hostname ; 호스트 이름 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;uname -a&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;/etc/hostname ; 호스트명 경로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo hostname 이름 ; 임시로 호스트명 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ip addr ; 네트워크 인터페이스 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;route ; 게이트웨이 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;/etc/resolv.conf ; DNS 주소 저장 경로&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;nslookup&lt;/span&gt; : DNS 서버와 대화식으로 질의 응답&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ping : 네트워크 장비에 ECHO_REQUEST 신호 전송&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;ping -c 3 naver.com&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;traceroute : 목적지까지 패킷이 거치는 경로 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;traceroute google.com&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;netstat&lt;/span&gt; : 네트워크 상태 정보 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;tcpdump&lt;/span&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;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>전공/리눅스</category>
      <author>vss121</author>
      <guid isPermaLink="true">https://vss121.tistory.com/125</guid>
      <comments>https://vss121.tistory.com/125#entry125comment</comments>
      <pubDate>Thu, 12 Jan 2023 23:17:53 +0900</pubDate>
    </item>
    <item>
      <title>vi 에디터</title>
      <link>https://vss121.tistory.com/124</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;리눅스 편집기&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vi&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 화면 단위 편집기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 모드형 편집기&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력모드(txt 입력) // 명령모드(편집 명령)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;vi 동작모드&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;949&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nDtI7/btrVZWVLWqp/k0kqEAizkM7mD43zOnxlC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nDtI7/btrVZWVLWqp/k0kqEAizkM7mD43zOnxlC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nDtI7/btrVZWVLWqp/k0kqEAizkM7mD43zOnxlC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnDtI7%2FbtrVZWVLWqp%2Fk0kqEAizkM7mD43zOnxlC1%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;1506&quot; height=&quot;949&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;949&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;blockquote data-ke-style=&quot;style2&quot;&gt;vi 시작&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vi&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vi test.txt&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;vi 종료&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot; rowspan=&quot;3&quot;&gt;마지막 행 모드&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;:q, q!&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;저장하지 않고 종료 (작업x, 작업o)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;:w [파일명]&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;:wq, wq!&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;저장 후 종료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;명령 모드&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;ZZ&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;저장 후 종료&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;blockquote data-ke-style=&quot;style2&quot;&gt;입력모드&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;입력모드로 전환하는 명령키&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;i&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;커서 앞에 입력 (현재 커서 자리)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;a&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;커서 뒤에 입력 (현재 커서의 다음 자리)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;o&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;커서 위치한 행의 다음 행에 입력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;I&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span&gt;커서 위치한 행의&lt;span&gt; 첫 컬럼에 입력&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;A&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span&gt;커서 위치한 행의&lt;span&gt; 마지막 컬럼에 입력&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span&gt;커서 위치한 행의&lt;span&gt; 이전 행에 입력&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령모드에서 커서 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;h&amp;gt; &amp;lt;j&amp;gt; &amp;lt;k&amp;gt; &amp;lt;l&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;larr;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;darr;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;uarr;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;rarr;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 173px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style6&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;^ 또는 0&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;커서를 현재 행의 처음으로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;$&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;커서를 현재 행의 마지막으로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;+ 또는 &amp;lt;Enter&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;H&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;M&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;L&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;w&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;b&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;e&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면 이동&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 102px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;ctrl&amp;gt; + u&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;ctrl&amp;gt; + d&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;ctrl&amp;gt; + b 또는 &amp;lt;page up&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;한 화면 위로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;ctrl&amp;gt; + f 또는 &amp;lt;page down&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;한 화면 아래로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;ctrl&amp;gt; + y&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;ctrl&amp;gt; + e&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행 이동&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;G (shift g)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;파일의 마지막 행으로 커서 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;lt;행 번호&amp;gt;G&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;지정한 &amp;lt;행 번호&amp;gt;로 커서 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;:&amp;lt;행 번호&amp;gt; &amp;lt;Enter&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;[마지막 행 모드] 지정한 &amp;lt;행 번호&amp;gt;로 커서 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;:$&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;[마지막 행 모드] 파일의 마지막 행으로 커서 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내용 수정&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;r&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;커서가 위치한 글자를 다른 글자로 수정 (명령모드 계속 유지)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;cw&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;s&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;cc&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;C&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;~&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내용 삭제&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복사하기, 잘라서 붙이기&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;yy&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;p&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;dd&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네임드 버퍼 (&amp;lt;-&amp;gt; 언네임드 버퍼)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;&quot;?yy&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;&quot;?p&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;? 부분에 숫자나 알파벳 한 글자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막 행 모드에서 복사 잘라내기 붙여놓기&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;1,$ 또는 %&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;전체 행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;1,.&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;1행부터 커서 행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;.,$&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;커서행부터 마지막행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;.-3&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;현재(0)행~-3행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;10,20&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;10행~20행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색하기&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 68px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;/문자열&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;아래 방향 검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;?문자열&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;위 방향 검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;원래 찾던 방향으로 다음 꺼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;N&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;반대 방향으로 다음 꺼&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&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;:s/뭐를/뭐로 : 커서 위치한 행에서 첫번째꺼만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:%s/뭐를/뭐로 : 파일 전체에서 첫번째꺼만 (:1,$s/&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:%s/뭐를/뭐로&lt;span&gt;/g&lt;span&gt; : 파일 전체에서&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:1,3s/뭐를/뭐로 : &amp;lt;범위&amp;gt;에서 첫 번째꺼만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:1,3s/뭐를/뭐로/g :&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;범위&amp;gt;에서&lt;span&gt;&amp;nbsp;&lt;/span&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;blockquote data-ke-style=&quot;style2&quot;&gt;vi 환경설정&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 홈 디렉토리의 .exrc 파일 수정 (마지막 행 모드)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 환경변수 EXINIT에 지정&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 136px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;set nu&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;행 번호 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;set nonu&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;set list&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;눈에 보이지 않는 특수문자 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;set nolist&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;set showmode&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;현재모드 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;set noshowmode&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;set&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;set한 모든 vi 환경설정 값 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;set all&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>전공/리눅스</category>
      <author>vss121</author>
      <guid isPermaLink="true">https://vss121.tistory.com/124</guid>
      <comments>https://vss121.tistory.com/124#entry124comment</comments>
      <pubDate>Thu, 12 Jan 2023 21:45:56 +0900</pubDate>
    </item>
  </channel>
</rss>