<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>y_dev_h.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 26 Dec 2023 14:23:11 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>y_dev_h.log</title>
            <url>https://velog.velcdn.com/images/y_dev_h/profile/6859f9c2-9273-48af-9f93-b9cead4429d4/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. y_dev_h.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/y_dev_h" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[포스코x코딩온_웹개발자 풀스택 과정_1주차 day1 회고_프로그램 설치 및 git 기초 ]]></title>
            <link>https://velog.io/@y_dev_h/%ED%8F%AC%EC%8A%A4%EC%BD%94x%EC%BD%94%EB%94%A9%EC%98%A8%EC%9B%B9%EA%B0%9C%EB%B0%9C%EC%9E%90-%ED%92%80%EC%8A%A4%ED%83%9D-%EA%B3%BC%EC%A0%951%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0%EB%B8%94%EB%A1%9C%EA%B9%85-%EC%A3%BC%EC%A0%9C</link>
            <guid>https://velog.io/@y_dev_h/%ED%8F%AC%EC%8A%A4%EC%BD%94x%EC%BD%94%EB%94%A9%EC%98%A8%EC%9B%B9%EA%B0%9C%EB%B0%9C%EC%9E%90-%ED%92%80%EC%8A%A4%ED%83%9D-%EA%B3%BC%EC%A0%951%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0%EB%B8%94%EB%A1%9C%EA%B9%85-%EC%A3%BC%EC%A0%9C</guid>
            <pubDate>Tue, 26 Dec 2023 14:23:11 GMT</pubDate>
            <description><![CDATA[<h1 id="1-git">1. git</h1>
<p>1-1. Homebrew를 이용한 git 설치
1-2. git 명령어
1-3. git과 github 연동
1-4. github repository 생성
1-5. github repository clone 명령어 
1-6. add, commit, push </p>
<h1 id="2-vscode">2. VScode</h1>
<h1 id="3-블로깅">3. 블로깅</h1>
<hr>
<p>1-2. git 명령어
CLI = Command Line Interface
cd = change directory : 현재 작업 중인 디렉토리로 이동하는 명령어 
mkdir = make directory : 현재 디렉토리 생성하는 명령어 
ls = list segment : 현재 디렉토리에 있는 파일 목록을 확인할 때 사용
(~) 물결표시는 현재 홈디렉토리에 있다는 의미
규칙 : 폴더/파일 생성시 한글, 공백 사용 X= = 영어,숫자,언더스코어(_)사용</p>
<p>1-3. git과 github 연동</p>
<ul>
<li><p>git config 설정 
git config --global init.defaultBranch main : 기본 브랜치 이름 설정 명령어
git config --global user.name &quot;GitHub 닉네임&quot;
git config --global user.email &quot;GitHub 이메일&quot;
git config --global --list : 설정한 것들을 보여주는 명령어 </p>
</li>
<li><p>git repository clone 설정 </p>
</li>
</ul>
<hr>
<h1 id="소감">소감</h1>
<p>수업 끝나고 &#39;와.. 큰일났다.&#39;라는 생각뿐이었다.
화면에 띄워주시는 실습창도 맥이 아닌 윈도우로 진행되서 헷갈려서 혼이났다. 
터미널이라는 낯선 툴로 무언갈 하는데 &#39;이게 뭐지..?&#39;하는 당혹감이 2차 멘붕도 왔다만은 한숨 고르고 해결할 방법을 골몰해야한다. 모르면 모른다고 솔직히 토로하고 리더님들을 괴롭히는 수밖에 (?)</p>
<p>이렇게 정돈되지 않은 무논리한 포스팅을 해두는 마음조차 짐짐하지만 훗날 발전된 나와의 비교할 수 있는 기록이니 부끄러워하지말고 있는 그대로 남겨본다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[001 Hardware : 컴퓨터의 논리와 구조]]></title>
            <link>https://velog.io/@y_dev_h/001-Hardware-%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98-%EB%85%BC%EB%A6%AC%EC%99%80-%EA%B5%AC%EC%A1%B0</link>
            <guid>https://velog.io/@y_dev_h/001-Hardware-%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98-%EB%85%BC%EB%A6%AC%EC%99%80-%EA%B5%AC%EC%A1%B0</guid>
            <pubDate>Sun, 03 Dec 2023 11:35:39 GMT</pubDate>
            <description><![CDATA[<p>&quot;완성된 장치가 범용 컴퓨팅 기계가 되려면 산술 연산, 기억-저장, 제어, 운영자와의 연결을 담당하는 특정 주요 기관을 포함해야 한다.&quot;
아서 벅스, 허먼 골드스타인, 존 폰 노이만, 1946</p>
<h1 id="span-stylecolor537849컴퓨터란-무엇인가span"><span style="color:#537849">컴퓨터란 무엇인가?</span></h1>
<ol>
<li><p>논리적 구성(=기능적 구성)
어떤 부분들로 이루어져 있는지
무슨 역할을 담당하는지
어떻게 연결되는지 </p>
</li>
<li><p>물리적 구성
각 부분의 생김새
어떻게 만들어지는지 </p>
</li>
</ol>
<h1 id="span-stylecolor537849컴퓨팅-장치span"><span style="color:#537849">컴퓨팅 장치</span></h1>
<p>PC : IBM이 1981년 처음 판매한 IBM PC에서 이어져 내려오는 laptop or desktop computer</p>
<p>마이크로소프트 -&gt; 윈도우 운영체제 
애플 매킨토시(Machintosh) -&gt; 맥 운영체제 
크롬북 -&gt; 크롬 운영체제 </p>
<h1 id="span-stylecolor537849기능물리적-속성간-차이span"><span style="color:#537849">기능,물리적 속성간 차이</span></h1>
<p>어떤 사물의 기능, 물리적 속성 간의 차이=그것이 무엇을 하는지 내부적으로 어떻게 만들어지고 빨리 작동하는지의 차이를 인지하는 것은 중요</p>
<h2 id="span-stylecolor537849pc가-mac보다-시장-점유율이-높은-이유는span"><span style="color:#537849">PC가 Mac보다 시장 점유율이 높은 이유는?</span></h2>
<p>이유1. 가격적 우세
이유2. 폭넓은 하드웨어 확장 장치 및 소프트웨어 지원 
이유3. 관련 노하우 쉽게 얻을 수 있음 <del>(어떤 노하우?)</del></p>
<p>∴ 네트워크 효과 (net-work effect) 현상의 일례
네트워크 효과란? 사람들이 A를 더 많이 쓸수록 당신에게도 A의 효용이 더 커지며, 그 효과는 사용자의 수에 대략 비례함</p>
<p>Mac 사용자의 답변?</p>
<ol>
<li>널리 인지된 신뢰성</li>
<li>품질</li>
<li>미적가치 </li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[네트워크 용어 / OSI 7계층 모델 / 네트워크 기능 및 주소의 표현]]></title>
            <link>https://velog.io/@y_dev_h/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9A%A9%EC%96%B4-OSI-7%EA%B3%84%EC%B8%B5-%EB%AA%A8%EB%8D%B8-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B8%B0%EB%8A%A5-%EB%B0%8F-%EC%A3%BC%EC%86%8C%EC%9D%98-%ED%91%9C%ED%98%84</link>
            <guid>https://velog.io/@y_dev_h/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9A%A9%EC%96%B4-OSI-7%EA%B3%84%EC%B8%B5-%EB%AA%A8%EB%8D%B8-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B8%B0%EB%8A%A5-%EB%B0%8F-%EC%A3%BC%EC%86%8C%EC%9D%98-%ED%91%9C%ED%98%84</guid>
            <pubDate>Sat, 19 Aug 2023 08:02:23 GMT</pubDate>
            <description><![CDATA[<h2 id="네트워크-용어">네트워크 용어</h2>
<ol>
<li>시스템 : 내부 규칙에 따라 능동적으로 동작하는 대상 </li>
<li>인터페이스 : 시스템과 전송 매체의 연결 지점에 대한 규격</li>
<li>전송 매체 : 시스템끼리 데이터를 전달하기 위한 물리적 전송 수단</li>
<li>프로토콜 : 전송 매체를 통해 데이터를 교환할 때의 <strong>임의의 통신 규칙</strong></li>
<li>네트워크 : 프로토콜을 사용하여 데이터를 교환하는 시스템의 집합을 통칭</li>
<li>인터넷 : 전 세게 네트워크가 유기적으로 연결되어 동작하는 통합 네트워크 
공통 기능 : <strong>IP (Internet Protocol)</strong></li>
<li>표준화 : 서로 다른 시스템이 상호 연동해 동작하기 위한 통일된 연동 형식</li>
</ol>
<h2 id="시스템-기초-용어">시스템 기초 용어</h2>
<ol>
<li>노드 : 참여되어 있는 지점, 인터넷에 연결된 시스템의 가장 일반적인 용어</li>
<li>호스트 : 컴퓨팅 기능(=처리기능)이 있는 시스템</li>
<li>클라이언트 : 서비스 요청하는 시스템</li>
<li>서버 : 서비스를 제공하는 시스템</li>
</ol>
<p>3-1 클라이언트와 서버
텔넷=가상단말</p>
<h2 id="osi-7계층-모델의-필요성">OSI 7계층 모델의 필요성</h2>
<h3 id="표준">표준</h3>
<p>: 장비 제조 업체 간에 자유 경쟁 시장 체제가 이루어지고, 국내 및 국가 간 데이터 및 전기 통신 기술의 <strong>상호 간의 호환성과 연동성을 확보</strong>하기 위해 필요한 <strong>권고기준</strong></p>
<h3 id="표준의-구분">표준의 구분</h3>
<ul>
<li><p>사실 표준 
: 공인된 기관에서 승인된 것은 아니지만 폭넓게 사용됨으로써 표준으로 채택된 것
eg. TCP/IP (4계층)</p>
</li>
<li><p>법률 표준
: 공인된 기관(ISO:국제표준화기구)에 의해 제정된 표준
eg. OSI</p>
<h3 id="기술-기준">기술 기준</h3>
<p>: 국가별로 이용자 및 설비 보호, 서비스 품질 확보를 위해 정한 최소한의 기술 요건과 표준</p>
</li>
<li><p>기술 표준 중 법렬 등에 의해 필요한 최소 범위로 정하고, 의무적, 강제적 성격 가짐</p>
<h3 id="osi-참고-모델osi-7-layer">OSI 참고 모델(OSI 7 Layer)</h3>
</li>
<li><p>1977년에 ISO와 CCITT에서 표준화한 통신 프로토콜</p>
</li>
<li><p>개방형, 계층화된 상호 참조 모델</p>
</li>
<li><p>OSI 제정 이전에 컴퓨터 기기나 외부 입출력 장치를 개발하여 접속할 경우 여러 종류의 프로토콜을 모두 지원해야 하므로 상호 연동에 어려움이 많았음 </p>
<ul>
<li>OSI(Open System Interconnection)
7계층 모델은 현재 대부분 통신망에서 참조하고 있음
특히 TCP/IP의 형태로 발전하여 전 세계에서 활용하고 있는 표준 <h3 id="osi참조-모델-특징">OSI참조 모델 특징</h3>
</li>
</ul>
</li>
</ul>
<ol>
<li>계층간 구조
: 인접한 상하위 계층과 통신하여 완전한 상호 연동성 제공 </li>
<li>Virtual Connection
: end to end 단말간 가상(논리)회선 제공</li>
<li>Transpearent
: 송신/발신자 연결 시 같은 계층 간 데이터를 송수신하는 것으로 간주</li>
<li>Capsulation
: 상위 계층은 하위 계층의 헤더(=부가정보)라 불리는 캡슐로 쌓아서 하위로 전달</li>
</ol>
<h2 id="네트워크-기능">네트워크 기능</h2>
<h3 id="osi-7계층-모델">OSI 7계층 모델</h3>
<ol start="7">
<li>응용 계층 = Application Layer : 다양한 응용 환경 지원</li>
<li>표현 계층 = Presentation Layer : 데이터의 표현방법 (압축/암호화)</li>
<li>세션 계층 = Session Layer : 대화개념ㅇ르 지원하는 상위의 논리적 연결지원</li>
<li>전송 계층 = Transport Layer : 송수신 프로세스 사이의 연결 기능 지원</li>
<li>네트워크 계층 = Network Layer : 올바른 전송 경로 선택 (혼잡 제어 포함)</li>
<li>데이터 링크 계층 = Data Link Layer : 물리적 전송 오류 해결 (오류감지/재전송 기능)</li>
<li>물리 계층 = Physical Layer : 물리적 데이터 전송하는 역할 수행</li>
</ol>
<h3 id="프로토콜과-인터페이스">프로토콜과 인터페이스</h3>
<p>프로토콜 : 서로 다른 호스트에 위치한 동일 계층 끼리 통신규칙
인터페이스 : 같은 호스트에 위치한 상하위 계층 사이 규칙
서비스 : 하위 계층이 상위 계층에 제공하는 인터페이스</p>
<h3 id="인터넷-계층-구조">인터넷 계층 구조</h3>
<p>전송 계층 : IP 프로토콜
네트워크 계층 : TCP, UDP 프로토콜</p>
<h3 id="프로토콜-데이터-단위">프로토콜 데이터 단위</h3>
<ol>
<li>APDU : 응용 계층 데이터 단위</li>
<li>PPDU : 표현 계층 데이터 단위</li>
<li>SPDU : 세션 계층 데이터 단위</li>
<li>TPDU : 전송 게층의 데이터 단위</li>
</ol>
<ul>
<li>세그먼트 : TCP 프로토콜에서 사용</li>
<li>데이터그램 : UCP 프로토콜에서 사용</li>
</ul>
<ol start="5">
<li>NPDU : 네트워크 계층의 데이터 단위 (패킷)</li>
<li>DPDU : 데이터 링크 계층의 데이터 단위 (프레임)</li>
</ol>
<h2 id="네트워크-주소-표현">네트워크 주소 표현</h2>
<h3 id="구분자-특징">구분자 특징</h3>
<ul>
<li>유일성 
: 대상 시스템을 구분할 수 있도록 서로 다른 시스템이 같은 구분자를 갖지 않아야함</li>
<li>확장자 
: 시간이 흐르면 시스템 규모가 확장:사용되는 구분자의 양도 증가
시스템의 최대 수용 규모를 예측하여 구분자의 최대 한계를 설정</li>
<li>편리성 
: 시스템 내부 처리 구조 효율적 운용 
: 컴퓨터 시스템 내부에서 숫자로 처리, 구분자의 체계도 보통 숫자 구성
: 배치, 검색 등 원활하게 수행할 수 있어야하므로 일반인이 이해하기 힘든 형태 띔</li>
<li>정보의 함축
: 응용 환경에 적절히 대응할 수 있는 정보를 함축적으로 포함해야함</li>
</ul>
<h3 id="주소와-이름">주소와 이름</h3>
<ul>
<li>주소
: 시스템을 구분하는 구분자
: 내부에서 처리되는 숫자 기반</li>
<li>이름 
: 숫자로 된 주소와 함께 사용자의 이해와 편리성을 도모하는 기호로 된 구분자
: 이름:주소=1:1, 이름만으로 시스템에 접근 가능해야함</li>
</ul>
<h4 id="ip-address">IP Address</h4>
<p>: 인터넷에서 네트워크 계층의 기능을 수행하는 IP 프로토콜이 호스트를 구분하기 위해 사용하는 주소 체계</p>
<ul>
<li>32비트의 이진 숫자로 구성</li>
<li>보통 8비트씩 네 부분으로 나누어 십진수로 표현
eg. 11010011 11011111 11001001 00011110 -&gt; 211.223.201.30</li>
</ul>
<p>: 임의 할당이 아닌 특정 규칙에 따라 인접한 숫자를 그룹으로 묶어 관리 : 라우터가 패킷의 경로를 선택할 때 중요한 기준
: 유일성 보장을 위해 국제 표준화 기구가 전체 주소를 관리하고 할당</p>
<ul>
<li>IPv6 <ul>
<li>현재 32비트로는 확장성 문제가 생겨 128비트로 늘려 8비트씩 여섯부분으로 끊어내는 새로운 프로토콜</li>
<li>현 체계는 IPv4</li>
</ul>
</li>
</ul>
<h4 id="주소와-이름-1">주소와 이름</h4>
<ul>
<li>호스트 이름 </li>
</ul>
<h4 id="주소-정보-관리">주소 정보 관리</h4>
<ol>
<li>도메인 이름 
: Dmain Name 
: 일반 사용자가 호스트를 지칭할 때 사용하는 호스트 이름</li>
<li>DNS 
: Domain Name System 
: 주소와 이름 정보를 자동으로 유지 관리하고 분산 데이터 베이스 시스템
: 분산 데이터베이스 시스템을 사용해 체계적 관리</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[계층적 기억장치]]></title>
            <link>https://velog.io/@y_dev_h/%EA%B3%84%EC%B8%B5%EC%A0%81-%EA%B8%B0%EC%96%B5%EC%9E%A5%EC%B9%98</link>
            <guid>https://velog.io/@y_dev_h/%EA%B3%84%EC%B8%B5%EC%A0%81-%EA%B8%B0%EC%96%B5%EC%9E%A5%EC%B9%98</guid>
            <pubDate>Fri, 18 Aug 2023 06:11:07 GMT</pubDate>
            <description><![CDATA[<h1 id="기억장치-액세스">기억장치 액세스</h1>
<p>기억장치에 어떤 정보를 쓰거나 읽는 동작 </p>
<h1 id="엑세스-방법에-따른-유형">엑세스 방법에 따른 유형</h1>
<ol>
<li>순차 엑세스 
: 저장된 정보를 처음부터 순서대로 액세스하는 방식
eg. 자기 테이프</li>
<li>직접 엑세스
: 엑세스할 위치 근처로 직접 이동한 다음, 순차적 검색을 통해 최종 위치에 도달하는 방식
eg. 디스크, cd-rom</li>
<li>임의 엑세스
: 주소에 의해 직접 기억장소를 찾아 액세스하며, 어떤 기억 장소든 액세스하는 시간이 동일
eg. 반도체 기억장치</li>
<li>연관 액세스 
: 저장된 내용의 특정 비트들을 비교하여, 일치하는 내용을 액세스
eg. 연관 기억장치</li>
</ol>
<h1 id="액세스-방법에-따른-기억장치의-종류">액세스 방법에 따른 기억장치의 종류</h1>
<h1 id="기억장치-제조-재료에-따른-유형">기억장치 제조 &#39;재료&#39;에 따른 유형</h1>
<ol>
<li>반도체 기억장치 
: 반도체 물질인 실리콘(Si)칩을 이용한 기억장치 </li>
<li>자기 표면 기억장치
: 자화 물질로 코팅된 표면에 정보를 저장하는 기억장치
eg. 디스크, 자기 테이프</li>
</ol>
<h1 id="데이터-저장하는-성질에-따른-유형">데이터 저장하는 &#39;성질&#39;에 따른 유형</h1>
<ol>
<li><p>휘발성 기억장치
: 전원 공급이 중단되면 내용이 지워지는 기억장치 
eg. RAM</p>
</li>
<li><p>비휘발성 기억장치
: 전원 공급에 관계없는 영구 저장장치
eg. ROM, 디스크, CD-ROM</p>
</li>
<li><p>삭제 불가능 기억장치
: 삭제 불가능 기억장치 
eg. ROM</p>
</li>
</ol>
<h1 id="성능-결정-요소">성능 결정 요소</h1>
<h2 id="1-기억장치-시스템을-설계하는데-있어서-고려해야할-주요-특성">1. 기억장치 시스템을 설계하는데 있어서 고려해야할 주요 특성</h2>
<p>1-1 용량 (capacity)
1-2 액세스 속도 </p>
<h2 id="2-메모리-용량">2. 메모리 용량</h2>
<p>2-1 전송 단위 (Unit of Transfer)
: CPU가 한 번의 기억장치 액세스에 의해 읽거나 쓸 수 있는 비트수</p>
<ul>
<li>주기억장치의 경우 : 단어 (Word) 단위</li>
<li>보조기억장치의 경우 : 블록 (512바이트 or 1K바이트) 단위</li>
</ul>
<p>2-2 주소 지정 단위 (Addressable Unit)
: 바이트 단위 or 단어 단위, 주소 비트 수 A와 주소지정 단위 수 N과의 관계
2의 A승 = N </p>
<h2 id="3-액세스-시간">3. 액세스 시간</h2>
<p>3-1 액세스 시간 (Access Time)
: 주소와 쓰기/읽기 신호가 도착한 순간부터 데이터 액세스가 완료되는 순간까지의 시간
: 임의 액세스인 경우 = 모든 기억장치들에 대해 엑세스 시간 동일 but 순차적,직접 액세스의 경우는 데이터가 저장된 위치에 따라서 액세스 시간이 달라짐. (seek time, transfer time으로 나뉨)</p>
<p>3-2 기억장치 사이클 시간 (Memory Cycle Time)
: 어떤 기억장치의 액세스를 시작하는 순간부터 다음 액세스를 다시 시작할 수 있을 때까지의 시간 간격 
: 액세스 시간 + 데이터 복원시간 (Data Restoration Time)</p>
<ul>
<li>반도체 기억장치, 디스크의 경우 데이터 복원시간 = 0</li>
<li>읽기 동작 후에 정보가 파괴되는 저장장치인 경우 그것을 복원시키는 데 걸리는 시간을 복원 시간이라함 </li>
</ul>
<h2 id="4-액세스-속도">4. 액세스 속도</h2>
<p>4-1 데이터 전송률 (Data Transfer Rate)
: 기억장치로부터 초당 액세스 되는 비트수 = 전송속도
(1/액세스 시간)* (한번에 읽혀지는 데이터 비트수)
eg. </p>
<h1 id="계층적-기억장치-시스템">계층적 기억장치 시스템</h1>
<p>: 기억장치의 성능 대 가격비(Perfoermansce /Cost Ration)를 향상시키기 위하여 한 시스템 내에 다양한 종류의 기억장치들을 사용하는 방식 </p>
<h2 id="기억장치-설계에-있어-중요한-요소들">기억장치 설계에 있어 중요한 요소들</h2>
<p>: 용량/속도/가격</p>
<h2 id="기억장치-특성간-관계">기억장치 특성간 관계</h2>
<ul>
<li>액세스 속도 높아질수록, 비트당 가격 높아짐</li>
<li>용량 커질수록, 액세스 속도 낮아짐</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[OS 운영체제 개요]]></title>
            <link>https://velog.io/@y_dev_h/OS-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B0%9C%EC%9A%94</link>
            <guid>https://velog.io/@y_dev_h/OS-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B0%9C%EC%9A%94</guid>
            <pubDate>Tue, 08 Aug 2023 12:02:25 GMT</pubDate>
            <description><![CDATA[<h1 id="운영체제">운영체제</h1>
<p>: 컴퓨터의 사용자와 하드웨어 사이에서 <u>중개자</u> 역할을 해주는 프로그램</p>
<ul>
<li><p>협의의 운영체제 = 커널 
: 운영체제의 핵심 부분
: 항상 메모리에 상주하는 부분</p>
</li>
<li><p>광의의 운영체제 
: 커널 뿐 아니라 주변 독립적인 시스템 유틸리티 포함</p>
</li>
</ul>
<h1 id="운영체제-목적">운영체제 목적</h1>
<p>: 컴퓨터 시스템 자원 효율적 관리</p>
<ul>
<li>하드웨어 자원 : 프로세서, 기억장치, 입출력장치 등의 효율적 관리<ul>
<li>사용자간 형평성 있는 자원 분재 :형평성</li>
<li>주어진 자원으로 최대 성능 도출 : 효율성</li>
</ul>
</li>
<li>사용자 및 운영체제 자신의 보호</li>
<li>소프트웨어 자원: 프로세서, 파일, 메시지 관리
: 편리하게 사용할 수 있는 환경 제공<ul>
<li>운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상 제공</li>
<li>하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행</li>
</ul>
</li>
</ul>
<h1 id="운영체제-분류">운영체제 분류</h1>
<p>동시 작업 가능 여부 / 사용자 수 / 처리 방식</p>
<h2 id="동시-작업-가능-여부">동시 작업 가능 여부</h2>
<ol>
<li>단일 작업 (single tasking)
: 한번에 하나의 작업 처리 </li>
<li>다중 작업 (multi taskiing)
:동시에 두 개 이상의 작업처리 </li>
</ol>
<h2 id="사용자-수">사용자 수</h2>
<ol>
<li>단일 사용자 (single user)</li>
<li><u>다중 사용자 (multi user) </u></li>
</ol>
<h2 id="처리-방식">처리 방식</h2>
<ol>
<li>일괄처리 (batch processing)</li>
</ol>
<ul>
<li>바로바로 되는 게 아니라 작업 요청의 일정량을 모아서 한꺼번에 처리</li>
<li>작업이 완전히 종료될 때까지 기다려야 함</li>
</ul>
<ol start="2">
<li><u>시분할 (time sharing)</u></li>
</ol>
<ul>
<li>우리가 주로 사용</li>
<li>여러 작업 수행 시 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용</li>
<li>일괄 처리 시스템에 비해 짧은 응답시간 가짐 : interactive한 방식</li>
</ul>
<p>3-1. 실시간  (realtime OS)</p>
<ul>
<li>특수한 목적을 가진 컴퓨터에서 사용</li>
<li>정해진 시간 안에 어떤 일이 반드시 종료됨이 보장되어야하는 실시간 시스템을 위한 OS</li>
<li>eg. 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
3-2. 실시간 시스템 개념 확장</li>
<li>hard realtime system 경성 실시간 시스템</li>
<li>sofe realtime system 연성 실시간 시스템 : 데드라인이 있지만 치명적인 영향을 끼치지는 않는 것</li>
</ul>
<h2 id="용어-정리">용어 정리</h2>
<ul>
<li><p>Multitasking </p>
</li>
<li><p>Multiprogramming : 여러 프로그램이 메모리에 올라가 있음을 강조</p>
</li>
<li><p>Time sharing : CPU의 시간을 분할해 나누어 쓴다는 의미 강조</p>
</li>
<li><p>Multiprocess 
: 컴퓨터에서 여러 작업을 동시에 수행하는 것을 의미함</p>
</li>
<li><p>✨ Multiprecessor : 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어 있음을 의미 (고성능 컴퓨터)</p>
</li>
</ul>
<h2 id="운영체제-예시">운영체제 예시</h2>
<ol>
<li>유닉스 : for 대형컴퓨터</li>
</ol>
<ul>
<li>코드 대부분 C언어로 작성 : assembly 언어라 어려움을 보완</li>
<li>높은 이식성 </li>
<li>최소한의 커널 구조 : 핵심적인 기능만 넣어둠</li>
<li>복잡한 시스템에 맞게 확장 용이</li>
<li>소스코드 공개 : 지금은 비공개</li>
<li>프로그램 개발 용이 </li>
</ul>
<ol start="2">
<li>윈도우 : for 개인용 컴퓨어 (PC)
2-1. DOs (Disk Operating System)</li>
</ol>
<ul>
<li>MS사에서 1981년 IBM-PC를 위해 개발</li>
<li>단일 사용자용 운영체제, 메모리 관리 능력 한계
2-2. MS Windows</li>
<li>MS사의 다중 작업용 GUI기반 운영체제</li>
<li>Plug &amp; Play, 네트워크 환경강화</li>
<li>DOS용 응용 프로그램과 호환성 제공</li>
<li>불안정성</li>
<li>풍부한 지원 소프트웨어</li>
</ul>
<h1 id="cpu-스케줄링">CPU 스케줄링</h1>
<h2 id="1-fcfs-first-come-first-served">1. FCFS (First-Come First-Served)</h2>
<p>: 순서대로 CPU 쓰게끔하는 것 = 공평하지만 효율적이지않음
: 그럼 이 과정을 효율적으로 하기 위해서는? 
<img src="https://velog.velcdn.com/images/y_dev_h/post/0bf61bdb-e77c-4f3a-96df-d33581d8d2fc/image.png" alt=""></p>
<h2 id="2-sjfshortest-job-first">2. SJF(Shortest-Job-First)</h2>
<p>: 금번 CPU 사용시간이 가장 짧은 프로세스를 제일 먼저 스케줄
: SJF는 minimum average waiting time 보장 
<img src="https://velog.velcdn.com/images/y_dev_h/post/5dbb2289-1b6c-4ea4-8eda-10c051c47e9a/image.png" alt=""></p>
<p>: Problem </p>
<ul>
<li>Starvation(기아현상) 발생 가능</li>
</ul>
<h2 id="3-round-robin-rr">3. Round Robin (RR)</h2>
<p>: 각 프로세스는 동일 크기의 CPU 미리 할당시간을 가짐 : CPU 번갈아 사용하게 됌
: 할당시간이 끝나면 인터럽트가 발생하여 프로세스는 CPU를 빼앗기고 CPU 큐의 제일 뒤에 줄을 섬
: n개 프로세스가 CPU 큐에 있는 경우</p>
<ul>
<li>어떤 프로세스도 (n-1)*할당시간 이상 기다리지 않음</li>
<li>대기시간이 프로세스의 CPU 사용시간에 비례 : 본인이 사용하려는 양에 비례하게끔 기다리게 됌
<img src="https://velog.velcdn.com/images/y_dev_h/post/444740e8-0c26-49de-bc3d-a254f9a6717e/image.png" alt=""></li>
</ul>
<h2 id="메모리-관리">메모리 관리</h2>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/7c3373fb-cd17-4401-b34d-905e5a61d896/image.jpeg" alt=""></p>
<h3 id="lru">LRU</h3>
<p>: 가장 오래 전 참조한 페이지를 삭제 </p>
<h3 id="lfu">LFU</h3>
<p>: 참조횟수(=사용횟수)가 가장 적은 페이지 삭제</p>
<h1 id="디스크">디스크</h1>
<p>: 디스크에 저장된 정보를 디스크 헤드가 이동함을서 정보 리딩</p>
<h2 id="디스크-접근-시간-access-time-구성">디스크 접근 시간 (Access time) 구성</h2>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/bb58b907-1af1-4b60-8d39-9eaba9428ee8/image.png" alt=""></p>
<ul>
<li>탐색시간 (Seek time) 
: 헤드를 해당 트랙(실린더)으로 움직이는데 걸리는 시간</li>
<li>회전지연 (Rotational latency)
: 헤드가 원하는 섹터에 도달하기 까지 걸리는 시간</li>
<li>전송시간 (Transfer time)
: 데이터 실제 전송시간 <h2 id="디스크-스케줄링-disk-scheduling">디스크 스케줄링 (Disk Scheduling)</h2>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/321d9bc6-002f-459b-aac8-cc11b24ee0ab/image.jpeg" alt=""></p>
<p>: seek tiem(~seek distanse) 최소화가 목표</p>
<ol>
<li><p>FCFS</p>
</li>
<li><p>SSTF (Shortest Seek Time First)
: starvation 문제 있음</p>
</li>
<li><p>SCAN
: 헤드가 디스크 한쪾 긑에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청 처리
: 다른 한쪽 끝에 도달하면 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동</p>
</li>
</ol>
<h2 id="저장장치-계층구조와-캐싱">저장장치 계층구조와 캐싱</h2>
<h2 id="플래시-메모리">플래시 메모리</h2>
<h3 id="플래시-메모리-1">플래시 메모리</h3>
<p>: 반도체장치 (하드디스크:마그네틱)
: NAND형(스토리지) 주로 사용됌, NOR형(임베디드 코드 저장용)</p>
<h3 id="플래시-메모리-특징">플래시 메모리 특징</h3>
<ul>
<li>Nonvolatile</li>
<li>Low power comsumption</li>
<li>Shock resistance </li>
<li>Small size</li>
<li>Lightweight</li>
<li>쓰기 횟수 제약</li>
<li>시간 지나면 전하량 빠져나감 : 정보리딩이 안될 수 있음<h3 id="플래시-메모리-사용-형태">플래시 메모리 사용 형태</h3>
</li>
<li>휴대푠, PDA등 임베디드 시스템 구성용</li>
<li>USB용 메모리 스틱</li>
<li>디지털 카메라 등의 SD카드, Smart Media card</li>
<li>모바일 장치 뿐 아니라 대용량 시스템에서 SSD (Solid State Drive)란 이름으로 하드디스크 대체 시도</li>
</ul>
<h2 id="운영체제-종류">운영체제 종류</h2>
<ul>
<li>서버용, pc용</li>
<li>공개 소프트웨어 = 오픈 소스코드 
why 오픈 소스코드로 했나? 시장논리에는 맞지않은데</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[크루스칼 알고리즘(Kruskal Algorithm) : 최소 비용 신장 트리]]></title>
            <link>https://velog.io/@y_dev_h/%ED%81%AC%EB%A3%A8%EC%8A%A4%EC%B9%BC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98Kruskal-Algorithm-%EC%B5%9C%EC%86%8C-%EB%B9%84%EC%9A%A9-%EC%8B%A0%EC%9E%A5-%ED%8A%B8%EB%A6%AC</link>
            <guid>https://velog.io/@y_dev_h/%ED%81%AC%EB%A3%A8%EC%8A%A4%EC%B9%BC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98Kruskal-Algorithm-%EC%B5%9C%EC%86%8C-%EB%B9%84%EC%9A%A9-%EC%8B%A0%EC%9E%A5-%ED%8A%B8%EB%A6%AC</guid>
            <pubDate>Sat, 05 Aug 2023 14:26:42 GMT</pubDate>
            <description><![CDATA[<h4 id="출처--동빈나-크루스칼-알고리즘"><a href="https://blog.naver.com/ndb796/221230994142">출처 : 동빈나 크루스칼 알고리즘 </a></h4>
<h1 id="크루스칼-알고리즘-kruskal-algorithm">크루스칼 알고리즘 (Kruskal Algorithm)</h1>
<ul>
<li><u>가장 적은 비용으로 모든 노드 연결</u> = 최소 비용 신장 트리를 만들기 위한 대표 알고리즘 </li>
<li>여러 도시가 있을 때 각 도시 도로를 이용해 연결하고자 할 때 비용을 최소한으로 하고자 할 때 실제로 적용되는 알고리즈 </li>
</ul>
<h1 id="용어-정리">용어 정리</h1>
<ul>
<li>노드 = 정점 = 도시 : 그래프에서 동그라미에 해당
= 간선 = 거리= 비용 : 그래프에서 선에 해당</li>
</ul>
<p>아래 그래프에서의 노드 갯수 : 7개, 간선 갯수 : 11개!
<a href="blob:https://velog.io/63ed3397-5608-450c-a82a-abc02c099859">업로드중..</a></p>
<h1 id="크루스칼-알고리즘-핵심--간선을-거리가-짧은-순서대로-그래프에-포함">크루스칼 알고리즘 핵심 : 간선을 거리가 짧은 순서대로 그래프에 포함</h1>
<ul>
<li><p>모든 노드를 최대한 적은 비용으로 &#39;연결만&#39; 시키면 되기 때문에 모든 <strong>간선 정보를 오름차순</strong>으로 정렬한 뒤에 <u>비용이 적은 간선부터 차근히 그래프에 포함</u>시키면 됌
<img src="https://velog.velcdn.com/images/y_dev_h/post/0c2ce1f4-e89f-4b73-b207-f979d02c1c79/image.png" alt=""></p>
</li>
<li><p>노드 1부터 노드 7까지 연결된 모든 간선 정보를 저장한 것 </p>
</li>
<li><p>노드 6,7은 간선정보 없는데 이유는 이미 다른 노드들의 간선 정보에 모두 포함 되어 있기 때문임 </p>
</li>
<li><p>간선이 총 11개 존재
<img src="https://velog.velcdn.com/images/y_dev_h/post/35d9c5dd-ff84-43d4-a3d3-cf54a57895d1/image.png" alt=""></p>
</li>
<li><p>위와 같이 모든 간선을 <u>&#39;거리(비용)&#39;을 기준으로 오름차순 정렬</u> </p>
</li>
<li><p>이제 다음 알고리즘에 맞게 그래프 연결하면 가장 적은 비용으로 모든 노드 연결한 그래프인 &#39;최소 신장 트리&#39; 완성</p>
</li>
</ul>
<ol>
<li>정렬된 순서에 맞게 그래프에 포함</li>
<li>포함시키기 전에는 사이클 테이블 확인 </li>
<li>사이클을 형성하는 경우 간선에서 제외</li>
</ol>
<h2 id="사이클">사이클</h2>
<ul>
<li><p>그래프가 서로 연결되어 사이클을 형성</p>
</li>
<li><p>최소 비용 신장 트리에서는 사이클이 발생하면 안됌
<img src="https://velog.velcdn.com/images/y_dev_h/post/2a17d303-eeb9-4125-9a96-ab7e33867545/image.png" alt=""></p>
</li>
<li><p>사이클 발생하는 여부는 지난 시간 : Union-Find알고리즘을 그대로 적용하면 됌</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[다익스트라(Dijkstra) 알고리즘 : 최단 경로 알고리즘 ]]></title>
            <link>https://velog.io/@y_dev_h/%EB%8B%A4%EC%9D%B5%EC%8A%A4%ED%8A%B8%EB%9D%BCDijkstra-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%B5%9C%EB%8B%A8-%EA%B2%BD%EB%A1%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</link>
            <guid>https://velog.io/@y_dev_h/%EB%8B%A4%EC%9D%B5%EC%8A%A4%ED%8A%B8%EB%9D%BCDijkstra-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%B5%9C%EB%8B%A8-%EA%B2%BD%EB%A1%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</guid>
            <pubDate>Sat, 05 Aug 2023 14:07:12 GMT</pubDate>
            <description><![CDATA[<p><a href="https://youtu.be/611B-9zk2o4">youtube:동빈나_Dijkstra Algorithm</a></p>
<h1 id="다익스트라dikstra알고리즘">다익스트라(Dikstra)알고리즘</h1>
<ul>
<li>다이나믹 프로그래밍을 활용한 대표적인 <u>최단경로(Shortest Path) 탐색 알고리즘</u></li>
<li>흔히 인공위성 GPS 소프트웨어 등에서 가장 많이 사용 </li>
<li>특정한 정점에서 다른 모든 정점으로 가는 최단 경로를 알려줌 
but 이때 음의 간선을 포함할 수 없음 (물론 현실에서는 음의 간선이 존재하지 않기 때문에 <u>다익스트라는 현실 세계에 사용하기 매우 적합한 알고리즘 중 하나)</u></li>
<li>다익스트라 알고리즘이 다이나믹 프로그래밍 문제에도 해당하는 이유? &#39;최단거리는 여러 개의 최단 거리로 이루어져있기 때문&#39;
= 작은 문제가 큰 문제의 부분 집합에 속해있다고 볼 수 있음</li>
<li>기본적으로 다익스트라는 <u>하나의 최단 거리를 구할 때 그 이전까지 구했던 최단 거리 정보를 그대로 사용함</u></li>
</ul>
<h1 id="다익스트라-알고리즘-예제">다익스트라 알고리즘 예제</h1>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/de60b423-768e-459a-88b7-6804079d653a/image.jpeg" alt=""></p>
<ul>
<li>1과 당장 붙어있는 노드인 2,3,4까지 최단 거리를 각각 3,6,7로 산정 가능</li>
<li>why? 컴퓨터는 당장 하나씩 밖에 계산하지 못하기에 </li>
<li>eg. 1에서 3까지 가는 최소 비용 = 6 </li>
</ul>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/5c38999e-1913-4eb8-9dd8-197385830b6a/image.jpeg" alt=""></p>
<ul>
<li>이후 다음과 같이 다음 노드인 2를 처리하게 되었다고 가정</li>
</ul>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/45576aa2-62a0-4fd1-9892-fd07c2b131b8/image.jpeg" alt=""></p>
<ul>
<li>위와 같이 나중에 컴퓨터는 경로 1 -&gt; 3의 비용이 6인데 1-2-3이 총 비용 4로 더 저렴하다는 걸 알게 됌</li>
<li>이 때 현재까지 알고 있던 3으로 가는 최소 비용 6을 새롭게 4로 갱신
∴ <u>&#39;현재까지 알고 있던 최단 경로를 계속해서 갱신&#39;함</u></li>
</ul>
<p>구체적인 작동 과정</p>
<ol>
<li>출발 노드를 설정</li>
<li>출발 노드를 기준으로 각 노드의 최소 비용을 저장</li>
<li>방문하지 않은 노드 중에서 가장 비용이 적은 노드를 선택</li>
<li>해당 노드를 거쳐서 특정한 노드로 가는 경우르 고려하여 최소 비용 갱신</li>
<li>끝날때까지 위 과정 3번 ~ 4번 반복</li>
</ol>
<h1 id="예시">예시</h1>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/d2467fe4-9a1d-42c3-adf0-3c66c93de8ee/image.jpeg" alt=""></p>
<ul>
<li>위와 같은 그패프는 실제로 컴퓨터 안에서 처리할 때 <strong>이차원 배열 형태로 처리</strong>해야 함</li>
<li>아래 표의 의미 : 특정 행에서 열로 가는 비용 eg. 1행 3열의 값 5 : 1번 노드에서 3번 노드로 가는 비용이 5라는 의미
eg. 1노드-&gt;1노드 : 자신이므로 <br>1노드-&gt;2노드 : 2 <br>현재 5노드와 6노드는 1노드와 바로 연결되어 있지않기 때문에 : 무한
<img src="https://velog.velcdn.com/images/y_dev_h/post/9c42d89f-c1e3-4622-9086-8e43ea50b69e/image.png" alt=""></li>
</ul>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/29083a85-7b85-4492-b55f-7623b1df84a3/image.jpeg" alt=""></p>
<ul>
<li>노드 1을 선택한 상태, 이와 연결된 세 개의 간선 확인한 상태 </li>
<li>1번 노드에서 다른 정점으로 가는 최소 비용은 다음과 같음</li>
<li>배열을 만든 뒤에는 이 최소 비용 배열을 계속해서 갱신할 것임 </li>
<li>현재 방문하지 않은 노드 중에서 가장 비용이 적은 노드는 4번 노드
<img src="https://velog.velcdn.com/images/y_dev_h/post/c864a452-24e4-429f-9dd4-49153b743fc3/image.png" alt="">
∴  위 배열 상태를 고려하여 4번 노드가 선택되었음 : 4번 노드를 거쳐서 가는 경우를 모두 고려하여 최소 비용 배열 갱신</li>
</ul>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/ca6ac5ce-3124-4414-8c66-325ae3098016/image.jpeg" alt=""></p>
<ul>
<li>기존 5로 가는 최소 비용은 무한이었음 but 4를 거쳐서 5로 가는 경우 비용이 2이므로 최소 비용 배열 갱신</li>
<li>also 4를 거쳐 3으로 가는 경우는 비용이 4이므로 기존보다 더 저렴하므로 최소 비용 배열 갱신 
<img src="https://velog.velcdn.com/images/y_dev_h/post/3c21ce78-8eb5-4778-83f4-d9931d3597d3/image.png" alt=""></li>
</ul>
<h1 id="c언어-소스코드-구현">C언어 소스코드 구현</h1>
<pre><code>
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[database 1) 데이터 베이스 본질 / file VS database ]]></title>
            <link>https://velog.io/@y_dev_h/database-1-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%B3%B8%EC%A7%88-file-VS-database</link>
            <guid>https://velog.io/@y_dev_h/database-1-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%B3%B8%EC%A7%88-file-VS-database</guid>
            <pubDate>Fri, 04 Aug 2023 11:03:28 GMT</pubDate>
            <description><![CDATA[<p><a href="https://youtu.be/-VRfO2hlf54">출처 : 생활코딩_DATABASE1</a></p>
<h1 id="file">file</h1>
<ul>
<li>배우기 쉬움</li>
<li>어디에서나 사용 가능</li>
<li>이메일을 통해 간편하게 전송가능 </li>
<li>but 성능, 보완, 편의성에 한계를 가지고 있음
이를 보완하기 위해서 고안된 전문화된 software = database</li>
</ul>
<h1 id="데이터베이스-본질">데이터베이스 본질</h1>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/03612477-720b-411f-aeeb-656326bf32ea/image.png" alt=""></p>
<h2 id="crud">CRUD</h2>
<p>Create
Read
Update
Delete</p>
<hr>
<h1 id="file-vs-database">file VS database</h1>
<p>스프레드시트에서 적용
이 정보들을 자동화할 수 있나</p>
<table>
<thead>
<tr>
<th align="left"><center>id</center></th>
<th><center>title</center></th>
<th align="center"><center>created</center></th>
<th align="right"><center> author</center></th>
<th align="right"><center>profile</center></th>
<th align="right"><center> </center></th>
</tr>
</thead>
<tbody><tr>
<td align="left">1</td>
<td>MySQL is..</td>
<td align="center">01/01/18</td>
<td align="right">egoing</td>
<td align="right">developer</td>
<td align="right"></td>
</tr>
<tr>
<td align="left">2</td>
<td>Oracle is..</td>
<td align="center">01/03/18</td>
<td align="right">egoing</td>
<td align="right">developer</td>
<td align="right"></td>
</tr>
<tr>
<td align="left">3</td>
<td>MongoDB is..</td>
<td align="center">01/10/18</td>
<td align="right">duru</td>
<td align="right">data engineer</td>
<td align="right"></td>
</tr>
<tr>
<td align="left">4</td>
<td>PostgreSQL is..</td>
<td align="center">01/12/18</td>
<td align="right">taeho</td>
<td align="right">data engineer</td>
<td align="right">developer</td>
</tr>
<tr>
<td align="left">5</td>
<td>Cassandra</td>
<td align="center">01/ 20/18</td>
<td align="right">egoing</td>
<td align="right">developer</td>
<td align="right"></td>
</tr>
</tbody></table>
<p>file-&gt;Spreadsheet-&gt;Database</p>
<hr>
<h1 id="wrapping">Wrapping</h1>
<pre><code>줄바꿈 태그 : &lt;br&gt; 
-  줄바꿈이라는 시각적 의미만 가짐으로 &lt;/br&gt; 닫는 태그 필요 없음 
- &lt;br&gt;태그 여러번 쓰면 &lt;p&gt;&lt;/p&gt;와 같은 시각적 표현가능

단락 표현 : &lt;p&gt; &lt;/p&gt; 
- 정해져있는 여백만큼 멀어지기에 시각적 자유도 떨어짐

위쪽 태그사이 여백=margie : &lt;p&gt; &lt;/p style&quot;margine-top:45px;&quot;&gt; 
</code></pre><p><img src="https://velog.velcdn.com/images/y_dev_h/post/d596e43c-2d93-4302-ad7f-25dc2b18edba/image.png" alt="">
<a href="https://www.advancedwebranking.com/seo/html-study/">advancedwebranking.com/html/</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DB 개념]]></title>
            <link>https://velog.io/@y_dev_h/DB-%EA%B0%9C%EB%85%90</link>
            <guid>https://velog.io/@y_dev_h/DB-%EA%B0%9C%EB%85%90</guid>
            <pubDate>Fri, 04 Aug 2023 06:26:09 GMT</pubDate>
            <description><![CDATA[<p>출처 : <a href="https://youtu.be/aL0XXc1yGPs">링크텍스트</a> [youtube : 쉬운코드]</p>
<h1 id="1-db">1. DB</h1>
<ul>
<li>전자적(electronically:데이터가 컴퓨터에 저장)으로 저장되고 사용되는 관련있는 데이터들(related:같은 서비스안에서 생성되는 데이터)의 조직화된 집합(organized collection)</li>
</ul>
<hr>
<h1 id="2-dbms">2. DBMS</h1>
<h2 id="2-1-dbms-정의">2-1 DBMS 정의</h2>
<ul>
<li>database management systems</li>
<li>사용자에게 +DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템</li>
<li>eg. PostgreSQL, MySQL, ORACLE Database, Microsoft SQL Server</li>
</ul>
<h2 id="2-2-metadata--catalog">2-2 metadata = catalog</h2>
<ul>
<li>DB를 정의하다 보면 부가적 데이터 발생 = metadata(=data about data, 데이터를 설명키위한 데이터)</li>
<li>database를 정의하거나 기술하는 data </li>
<li>eg.데이터 유형, 구조, 제약조건, 보안, 저장, 인덱스, 사용자 그룹 etc</li>
<li>metadata 또한 DBMS를 통해서 저장/관리된다</li>
</ul>
<hr>
<h1 id="3-database-systemdbs--database">3. database system:DBS = database</h1>
<h2 id="3-1-database-system-정의">3-1 database system 정의</h2>
<ul>
<li>database + DBMS + 연관된 applications</li>
<li>줄여서 database라고도 부름 
therefore, database(데이터자체) VS database system 문맥상 구분해야한다</li>
</ul>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/f71e6a89-2afb-4d40-a9fe-b0ad542de669/image.png" alt=""></p>
<h2 id="3-2-query">3-2 Query</h2>
<ul>
<li>db에 접근해서 원하는 데이터 가져오거나 수정하는 요청</li>
</ul>
<h1 id="4-data-models">4. data models</h1>
<ul>
<li>DB의 구조(structure)를 기술하는데 사용될 수 있는 개념들이 모인 집합</li>
<li>DB구조* 를 <strong>추상화</strong>해서 표현할 수 있는 수단을 제공 (*DB구조 : 데이터 유형, 데이터 관게, 제약사항 etc)</li>
<li>data model은 여러 종류 존재하며 추상화 수준과 DB구조화 방식이 상이함</li>
<li>DB에서 읽고 쓰기 위한 기본적 동작(operations)도 포함</li>
</ul>
<h1 id="5data-models-분류">5.data models 분류</h1>
<h2 id="5-1-conceptual-data-models">5-1 conceptual data models</h2>
<ul>
<li>일반 사용자(개발/비개발자)들이 쉽게 이해할 수 있는 개념들로 이뤄진 모델</li>
<li>추상화 수준 높음 </li>
<li>비즈니스 요구사항을 추상화하여 기술할 때 사용<h2 id="5-2-entity-relationship-model">5-2 entity-relationship model</h2>
<img src="https://velog.velcdn.com/images/y_dev_h/post/1c155913-416b-4e97-8ca7-7be25b56ea3a/image.png" alt=""></li>
</ul>
<h2 id="5-3-logical-data-model">5-3 logical data model</h2>
<ul>
<li>이해하기 어렵지 않으면서도 *디테일하게 DB를 구조화 할 수 있는 개념들 제공 </li>
<li>*디테일 : 데이터가 컴퓨터에 저장될 때의 구조와 크게 다르지 않게 DB 구조화를 가능케함)</li>
<li>특정 DBMS나 storage에 종속되지 않는 수준에서 DB구조화 할 수 있는 모델 : 어느정도 추상화 되어있음을 의미</li>
</ul>
<h3 id="logial-data-models-종류">logial data models 종류</h3>
<ul>
<li>relational data modal (주로 사용)</li>
<li>object data model</li>
<li>object-relational data model</li>
</ul>
<h2 id="5-4-physical-data-models">5-4 physical data models</h2>
<ul>
<li>컴퓨터에 데이터가 어떻게 파일 형태로 저장되는지를 기술 할 수 있는 수단 제공</li>
<li>data format, data orderings, *access path etc ( *access path : 데이터 검색을 빠르게 하기 위한 구조 eg) index) </li>
</ul>
<hr>
<h1 id="6-database-schema">6. database schema</h1>
<ul>
<li>data model을 바탕으로 database의 구조를 기술(description)한 것</li>
<li>schema는 database를 설계할 때 정해지며, 한번 정해진 후에는 자주 바뀌지 않음</li>
</ul>
<h1 id="7-database-state">7. database state</h1>
<ul>
<li>database에 있는 실제 데이터는 자주 바뀔 수 있다</li>
<li>특정 시점 database에 있는 데이터를 database state 혹은 snapghot 혹인 database에 있는 현재 instance의 집합이라고 한다</li>
</ul>
<h1 id="8-three-schema-architecture">8. three-schema architecture</h1>
<ul>
<li>database system을 구축하는 architecture중 하나</li>
<li>user application으로 부터 물리적(physical) database를 분리시키는 목적=물리적 구조 변화 할때 user app에는 영향을 안끼치기 위해서 three schema architecuture 사용 : 각 레벨을 독립시켜 어느 레벨에서의 변화가 상위 레벨에 영향 주지 않기 위함 </li>
<li>eg. internal schema변화 생겨도 conceptual schema도 바꿔줄 필요 없음,단 둘사이 maping만 변경해주면 됌</li>
<li>internal schema 변화생겨도 conceptual schema는 바뀌지 않게 하는 건 상대적으로 쉬움</li>
<li>BUT conceptual schema가 바뀌어도 external schema를 바뀌지 않게하는 건 상대적으로 어려움 </li>
<li>therefore, 대부분 DBMS가 three level을 완벽하게 혹은 명시적으로 나누지는 않음 </li>
<li>각 스키마(three level schema)는 데이터 베이스를 표현하는 것이지, 실제 데이터가 존재하는 곳은 internal level에만 존재 </li>
</ul>
<h2 id="8-1-external-schemasuser-view-at-external-or-view-level">8-1 external schemas(user view) at external (or view) level</h2>
<ul>
<li>external level에 정의 되어있는 external schema</li>
<li>=external view = user views</li>
<li>특정 유저들이 필요로하는 데이터만 표현 (유저별로 필요로하는 데이터 상이)</li>
<li>그 외 알려줄 필요 없는 데이터는 숨김</li>
<li>logical data model을 통해 표현
<img src="https://velog.velcdn.com/images/y_dev_h/post/43430055-40f6-4463-bbfd-d8d702e6b638/image.png" alt=""></li>
</ul>
<h2 id="8-2-conceptual-schemas-at-conceptual-level">8-2 conceptual schemas at conceptual level</h2>
<ul>
<li>초기에는 internal, external 밖에 없었기에 문제 발생 : 유저별 필요로하는 데이터 상이 -&gt; internal level에서 중복 데이터 발생 -&gt; 관리 어려워짐을 해결하기 위해 등장한 conceptual schemas</li>
<li>전체 database에 대한 구조를 기술</li>
<li>물리적인 저장 구조에 관한 내용은 숨김 대신 논리적으로 전체구조 기술</li>
<li>entities, data types, relationships, user operations, constraints에 집중</li>
<li>logicla data model을 통해서 기술</li>
</ul>
<h2 id="8-3-internal-schemas-at-internal-level">8-3 internal schemas at internal level</h2>
<ul>
<li>물리적 저장장치 (stored database)에 가장 가깝게 위치</li>
<li>물리적으로 데이터가 어떻게 저장되는지 physical datamodel을 통해 표현 </li>
<li>data storeage, data structure, access path(index) 등 실체가 있는 내용 기술
<img src="https://velog.velcdn.com/images/y_dev_h/post/89c01e02-2476-4583-b735-0345aa74a94d/image.png" alt=""></li>
</ul>
<hr>
<h1 id="9-database-language">9. database language</h1>
<h3 id="9-1-data-definition-language-ddl">9-1 data definition language (DDL)</h3>
<ul>
<li>대부분 conceptual schema를 정의하기 위해 사용되는 언어</li>
<li>internal schema까지 정의할 수 있는 경우도 있음 BUT 대부분 파라미터를 통해서 정의함</li>
<li>DDL이 모든 언어를 커버한다</li>
</ul>
<h3 id="9-2-storage-definition-language-sdl">9-2 storage definition language (SDL)</h3>
<ul>
<li>internal schema를 정의하는 용도로 사용되는 언어</li>
<li>요즘은 relational DBMS에서는 SDL이 거의 없고 파라미터 등의 설정으로 대체</li>
</ul>
<h3 id="9-3-view-diefinition-language-vdl">9-3 view diefinition language (VDL)</h3>
<ul>
<li>external schema를 정의하기 위해 사용되는 언어</li>
<li>대부분 DBMS에서는 DDL이 VDL역할까지 수행</li>
</ul>
<h3 id="9-4-data-manipulation-language-dml">9-4 data manipulation language (DML)</h3>
<ul>
<li>database에 있는 data를 활용하기 위한 언어</li>
<li>data 추가, 삭제, 수정, 검색 등 기능을 제공하는 언어</li>
</ul>
<h3 id="9-5-통합된-언어">9-5 통합된 언어</h3>
<ul>
<li>오늘날 DBMS는 DML, VDL, DDL이 따로 존재하기 보다는 통합된 언어로 존재 </li>
<li>대표적 예 : relational database language :SQL</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[relational database개념과 key]]></title>
            <link>https://velog.io/@y_dev_h/DB-%EA%B4%80%EA%B3%84-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EA%B3%BC-%EA%B4%80%EA%B3%84-%EB%AC%B4%EA%B2%B0%EC%84%B1-%EC%A0%9C%EC%95%BD%EC%A1%B0%EA%B1%B4</link>
            <guid>https://velog.io/@y_dev_h/DB-%EA%B4%80%EA%B3%84-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EA%B3%BC-%EA%B4%80%EA%B3%84-%EB%AC%B4%EA%B2%B0%EC%84%B1-%EC%A0%9C%EC%95%BD%EC%A1%B0%EA%B1%B4</guid>
            <pubDate>Fri, 04 Aug 2023 02:55:25 GMT</pubDate>
            <description><![CDATA[<h1 id="0-relational-data-medel">0. relational data medel</h1>
<h2 id="set">set</h2>
<ul>
<li>서로 다른 elements를 가지는 collection</li>
<li>하나의 set에서 elements의 순서는 중요치 않음 </li>
<li>eg. {1,3,11,4,7,}</li>
</ul>
<h2 id="relation-in-mathmatics">relation in mathmatics</h2>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/bc052283-616f-4312-87b9-f7606679caa4/image.png" alt=""></p>
<h3 id="cartesian-product-a-x-b--ab-ㅣ-a-∈-a-and-b-∈-b">cartesian product A X B = {(a,b) ㅣ a ∈ A and b ∈ B}</h3>
<p>= 모든 pair의 집합 = (1,p) (1,q) (1,r) (2,p) (2,q) (2,r)  </p>
<h3 id="binary-relation--set-2ea">binary relation = set 2ea</h3>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/5826bc33-e24b-4c77-8918-d0f28b8ccd5e/image.png" alt=""></p>
<p>= 3개 pair은 A,B에 대한 Cartesian product의 부분집합 </p>
<h3 id="set-n-ea">set n ea</h3>
<p><img src="https://velog.velcdn.com/images/y_dev_h/post/ee04ff9c-8ceb-49e8-bdef-c514b31d5c5a/image.png" alt=""></p>
<p>= n개의 집합에 대한 Cartesian product의 부분집합 </p>
<h2 id="relaiton-in-mathematics--span-stylecolordarkbluerelational-data-modelspan">relaiton in mathematics &amp; <span style="color:darkblue">relational data model</span></h2>
<h3 id="relational-data-model">relational data model</h3>
<pre><code>eg. student relation
Domain 정의
student_ids : 학번집합, 7자리 integer 정수
human_names : 사람 이름 집합, 문자열
university_gardes : 대학교 학년 집합 {1,2,3,4}
major_names : 대학교 전공 이름 집합
phone_numbers : 핸드폰 번호 집합 
phone_numbers : 비상 핸드폰 번호 집합</code></pre><p><img src="blob:https://velog.io/aefea129-c03b-429a-95bc-79cb24a8a8d5" alt="업로드중.."></p>
<p>각 도메인마다 attribute name 설정 : for 목적, 역할 구분  </p>
<h2 id="주요-개념">주요 개념</h2>
<ul>
<li>domain : Set of atomic values (=더이상 나눠질 수 없는 값)</li>
<li>domain name </li>
<li>attribute : domain이 Relation에서 맡은 역할이름</li>
<li>tuple : 각 attribute의 값으로 이루어진 리스트, 일부 값은 Null 일 수 있다</li>
<li>Relation : set of tuples </li>
<li>relation name : relation의 이름</li>
</ul>
<h1 id="1-키key의-개념">1. 키(Key)의 개념</h1>
<ul>
<li>DB에서 튜플을 고유하게 식별할 수 있도록 하는 속성 혹은 속성 집합</li>
<li>데이터를 검색하거나 정렬할 때 기준이 되는 유일하게 구분되는 속성</li>
<li>수퍼키(Super key), 후보키(Candidate key), 기본키(Primary key), 외래키(Foreign key) etc</li>
</ul>
<h2 id="1-1-이상anomaly현상">1-1 이상(anomaly)현상</h2>
<ul>
<li>데이터가 중복 저장되면 릴레이션 조작 시 예기치 못한 현상 발생</li>
</ul>
<h1 id="2-키의-종류">2. 키의 종류</h1>
<h2 id="2-1-수퍼키-super-key">2-1 수퍼키 (Super key)</h2>
<ul>
<li>릴레이션에서 같은 튜플이 발생하지 않는 키를 구성할 때, 속성의 집합으로 구성하는 것을 말함</li>
<li>릴레이션을 구성하는 모든 튜플에 대해 유일성(유일하게 식별)은 만족시키지만, 최소성(식별시 꼭 필요한 속성으로만 구성)은 만족시키지 못함<pre><code>eg. 
Player(id, name, team_id, back_number, birth_date)의 superkey는
{id, name, team_id, back_number}</code></pre></li>
</ul>
<h2 id="2-2-후보키-candidate-key--minimal-superkey">2-2 후보키 (Candidate key) = minimal superkey</h2>
<ul>
<li>한 attribute라도 제거하면 unique하게 tuples를 식별할 수 없는 super key</li>
<li>릴레이션을 구성하는 속성들 중, 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성</li>
<li>수퍼키와 공통점 : 릴레이션에 있는 각 튜플을 고유하게 식별할 수 있어야함 </li>
<li>수퍼키와 차이점 : <strong>최소한의 속성으로 구성된 유일성을 갖는 속성</strong><pre><code>eg.
PLAYER(id, name, team_id, back_number, birth_date)의 candidate key는 
{id}
{tean_id + back_number} 각각 유니크하게 식별할 수 없음</code></pre></li>
</ul>
<h2 id="2-3-기본키-primary-key--pk">2-3 기본키 (Primary key : PK)</h2>
<ul>
<li><p>relation에서 tuples를 unique하게 식별하기 위해 선택된 candidate key</p>
</li>
<li><p>한 릴레이션에서 특정 튜플을 유일하게 구별할 수있는 속성</p>
</li>
<li><p>제약조건1) Not Null = 무결성 = Null값 가질 수 없음 
제약조건2) Not duplication = 동일 중복값 가질 수 없음
제약조건3) Unique = 고유성 </p>
</li>
<li><p>cf. Null 값? 아무것도 없는 특수한 데이터</p>
<pre><code>eg. PLAYER (id, name, team_id, back_number, birth_date)의 primary key는
{id}를 가지고 tuple를 식별하겠다 하면 {id}=primary key 
{team_id, back_num}의 조합으로 tuple들을 식별하겠다 하면 {team_id, back_num}=primary key
</code></pre></li>
</ul>
<p>But 보통 PK 선택할때는 attribute 숫자가 적은걸로 고름
So 이 값에서 <del>primary key = {id}</del></p>
<pre><code>
## 2-4 대체키 (Alternate key) = 보조키 = Unique key
- primary key가 아닌 candidate keys
- 후보키가 둘 이상일 때 기본키로 선택되지 않은 나머지 후보키 
eg. 사원번호를 기본키로 정의했다면 주민번호가 대체키
- Correlation of key
![](https://velog.velcdn.com/images/y_dev_h/post/2d00c12d-8c4d-4acc-bfef-ee0054359e58/image.jpeg)


## 2-5 복합키 (Composite primary key)
- 하나의 칼럼이 후보키의 역할을 하지 못함
- 두 개 이상의 칼럼이 합쳐져야 후보키의 역할 하는 경우 

## 2-6 외래키 (Foreign key) 
- 다른 relation의 PK를 참조하는 attribute set
- 상호 관련 있는 테이블들 사이에 데이터 일관성을 보장해주는 수단
- 두개의 테이블을 연결해주는 다리역할
- 한 테이블의 컬럼이 다른 테이블의 기본키 참조하는 경우 사용</code></pre><p>eg. PLAYER (id=PK, , name, team_id, back_num, birth_date)와 TEAM(id, name, manager)가 있을 때 foreign keysms PLAYER의 {team_id}</p>
<pre><code>
외래키는 한 테이블의 컬럼이 다른 테이블의 기본키를 참조하는 경우 사용
</code></pre>]]></description>
        </item>
    </channel>
</rss>