들어가기전에
컴퓨터 구조와 운영체제에 대하여 좀 더 자세하게 들여다 보는 시간을 가져봤다.
강의를 보며 나의 주관적인 생각이 들어가 정리한것임으로 반드시 '내가 적은것이 맞다' 라는 것이 아니므로 읽어보시고 이상한부분이 있다면 저에게 알려주시거나 꼭 다른곳도 검색해서 찾아보기를 바랍니다.
목차
1. 학습 주제
2. 주요 메모 사항 소개
3. 공부하며 어려웠던 내용
학습 주제.1 운영체제 中
프로세스 관리와 스케줄링
싱글 스레드 프로세스(single-threaded process)
멀티 스레드 프로세스(multithreaded process)
동시성 (Concurrency)
- Thread와 Thread사이에 전환하는 문맥전환(Context Switches) 이 커질 수 있기에
- 동시성을 가지는 일들을 처리하는 데에는 동기화(synchronization)가 필요하며, 운영체제의 매우 중요한 임무 중 하나
스케줄링 (Scheduling) : 어느 순간 어느 작업을 수행할 것인지 결정하는 문제
효율성(efficiency) 과 공정성(fairness) 사이의 이해득실 관계
스케줄링 알고리즘 : FCFS (First-come, first-served scheduling)
대기 시간 (waiting time) | A1= 0, A2= 14, A3= 17 |
평균 대기 시간 (average waiting time) | (0 + 14 + 17) / 3 = 7 |
평균 응답 시간 (average response time) | (14 + 17 + 20) / 3 = 17 |
만약, 도착 순서가 A2, A3, A1 순으로 가정한다면
대기 시간 (waiting time) | A1= 4, A2= 0, A3= 2 |
평균 대기 시간 (average waiting time) | (4 + 0 + 2) / 3 = 2 |
평균 응답 시간 (average response time) | (2 + 4 + 20) / 3 = 8.6 |
최적성 보장 스케줄링 알고리즘들
SJF(Shortest Job First): 지금 시작할 수 있는 작업들 중, 작업량이 가장 적은 것을 선택하여 스케줄링
SRTF(Shortest Remaining Time First): 매 순간, 남아 있는 작업량이 가장 적은 것을 선택하여 스케줄링
▼ 평균 응답 시간 측면에서 최적의 알고리즘 장점
- 수학적으로 증명가능
- 금방 끝낼 수 있을 작업을 우선 처리가능
단점: 방법에 대해 공정한지
학습 주제.2 운영체체 中
메모리와 입출력 관리
프로세스: CPU 시간에 대한 추상화
- 각 프로세스는 자신에게 CPU 시간이 전체 중 일부가 주어지는 것으로 가상 가능
가상메모리: 메모리 공간에 대한 추상화
- 각 프로세스는 전체 주소 공간을 모두 자신에게 할당된 메모리로 사용할 수 있는 것으로 가상 가능
파일시스템: 입출력 장치들을 일관된 인터페이스로 추상화
- 각 프로세스는 실제 입출력 장치의 동작 방식과는 다르게 파일을 조작하는 것과 같은 방법을 통해 서로 다른 장치의 입출력을 이용 가능
메모리 계층 구조와 가상메모리
레지스터 : CPU 안에 있으며, 하드웨어에 의하여 제어 가능
캐시 메모리 : CPU 안 또는 매우 가까이 있으며, 하드웨어에 의하여 제어 가능
주 기억 장치 (메인 메모리) : CPU 와 메모리 버스로 연결되어 있으며, 하드웨어에 의하여 제어 가능
보조 기억 장치 (스토리지) : 운영체제와 하드웨어의 협력에 의하여 주 기억 장치에 대한 가상화를 제공
가상메모리 (virtual Memory)
가상메모리란? 적은 메모리로 여러개의 프로세스를 실행시키기 위한 시스템
알아볼것들 : 페이징 시스템, 페이징 시스템 구조, 페이지 테이블, 페이지 디렉토리
페이지가 모든 메모리에 들고 있을 수 없기때문에 요구 페이징 (Demand paging)를 사용
- 운영체제에서 사용되는 가상 메모리 관리 기법중 하나이다.
- 프로세스가 실행되는 동안 필요한 페이지만 메모리에 올리고, 필요하지 않은 페이지는 디스크에 저장하여 메모리를 절약하는 방법이다.
학습 주제.3 운영체체 中
데이터 구조화와 관계형 데이터베이스
데이터베이스란? 여러 사용자와 응용 시스템들이 사용 목적은 다르지만, 공통의 데이터를 서로 공유하여 사용할 수 있도록 통합하여 저장 및 관리하는 모임이다.
통합 데이터 - 연관성 있는 데이터, 중복 부분의 최소화
저장 데이터 - 자기 디스크 등 컴퓨터로 접근 가능한 매체에 기록
운영 데이터 - 조직의 존재 목적이나 기능을 수행하는 데 필수인 데이터
공용 데이터 - 여러 사용자와 여러 응용 시스템으로부터 공유 접근 가능
데이터베이스 특징
실시간 접근성 (real-time accessibility) - 사용자나 응용 시스템에서 요구하는 질의에 대하여 데이터를 실시간으로 처리한 뒤 바로 응답할 수 있어야 한다.
동시 공유 (concurrent sharing) - 여러 사용자와 응용 시스템이 동시에 (서로 다른 목적) 원하는 데이터에 접근할 수 있어야 한다.
지속적인 변화 (continuous evolution) - 새로운 데이터의 삽입, 삭제, 수정, 갱신 등의 작업을 통해 항상 최신의 데이터를 정확하게 유지하고 있어야 한다.
내용에 의한 참조 (content reference) - 데이터의 위치에 상관 없이 사용자가 원하는 내용으로 참조할 수 있어야 한다.
데이터베이스 구성 요소
개체 (entity)와 그들이 가지는 속성 (attribute), 개체 사이의 관계 (relation)
데이터베이스 이용으로 얻는 장점들
데이터 중복 최소화, 데이터 무결성, 데이터 일관성, 데이터 독립성, 데이터 표준화, 데이터 보안 유지
관계형 데이터베이스 (Relational DB): 개체와 개체 사이의 관계를 표현하기 위해서 2차원의 표 (table) 를 사용한다.
키 (Keys): 기본키(Primary Key), 외부키(Foreign Key)
▼ 키 제약조건
- 참조무결성 - 참조할 수 없는 외래키(외부키) 값을 가질 수 없다.
- 개체 무결성 - 기본키에 속하는 속성은 비어 있을 수 없다.
관계형 대수 연산 (Relational Algebra): 관계형 데이터베이스에서 릴레이션을 대상으로 하여 릴레이션을 만들어 내는 수학적 연산의 집합으로 이것을 조합하여 데이터베이스 내의 데이터 조작이 가능하다.
트랜잭션 (Transaction): 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
▼ 트랜잭션이 가지는 (만족해야 하는) 속성: ACID
- 원자성 (Atomicity): 하나의 트랜잭션은 모두 실행되거나 전형 실행되지 않아야 한다.
- 일관성 (consistency): 트랜잭션의 실행 전 후에 데이터베이스 상태가 일관되어야 한다.
- 독립성 (isolation): 여러 트랜잭션이 병렬 실행되는 경우에도 서로 간섭하지 않도록 격리되어야 한다.
- 영구성 (durability): 완료된 트랜잭션의 실행 결과는 데이터베이스에 영구 보전되어야 한다.
ORM (Object-Relational Mapper): 관계형 데이터베이스의 테이블과 객체지향 프로그램의 클래스 사이를 연결 가능하다.
▼ ORM 활용으로 얻는 이점
1. SQL 문장이 아닌 클래스의 메서드를 이용한 데이터베이스 접근/조작 가능
2. 코드의 재사용성, 유지보수가능성, 리팩토링 용이성 향상
3. DBMS 에 대한 종속성 감소
▼ ORM 의 한계점
1. 객체와 릴레이션 사이의 불일치에 기인하여 발생하는 비효율성이다.
One-to-One Relationship:
Many-to-Many Relationship:
벡터 데이터베이스와 유사도 검색
▼ 비정형 데이터(Unstructured Data) 정의
- 설계된 모델이나 구조로 구성되지 않은 데이터이다.
- 질적인 것으로 분류되며, 인간 또는 기계에 의하여 생성한다.
▼ 비정형 데이터의 예
- 리치 미디어: 오디오 또는 비디오 데이터, 보안 감시 데이터, 지리 공간 데이터, 날씨 데이터 등
- 사물 인터넷 (IoT) 데이터: 장치의 티커 또는 센서 데이터 등
- 텍시트 데이터: 이메일, 문자 메시지, 인보이스, 레코드 및 생산성 애플리케이션 통신 데이터 등
- 과학적 데이터: 기계가 생성한 우주 탐사 또는 지진 보고서 등
- 의료 데이터: MRI, X선 및 CT 스캔 등의 의료 데이터와 영상 정보 등등
▼ 비정형 데이터 처리의 어려움
- 방대한 볼륨: 기존 데이터의 80% 분량을 차지하며, 지속적으로 많은 데이터가 생성되고 있다.
- 다양성: 다양한 데이터 유형으로 구성되어 있어 저장과 상호 참조에 연관한 어려움이 발생한다.
- 품질: 일관성이 보장되지 않으며, 오류 및 불일치 등 즉, 노이즈가 항상 존재하는 면이 있다.
- 보안 및 개인정보 보호: 중요하거나 민감한 데이터가 포함되어 있을 수 있으며, 이를 정교하게 판단하고 보안성을 유지하는 것이 어렵다.
- 통합: 사전에 정의된 데이터 모델이 없어서 전체적인 뷰를 위해서 정형 데이터와 통합하는 것이 복잡하다.
비정형 데이터를 관리하기 위한 벡터 데이터베이스를 활용한다.
벡터: 데이터 객체를 수치화하여 표현한 것이다.
벡터 데이터베이스란? 벡터를 고차원 포인트로 저장하고 검색하는 기능을 제공한다.
▼ 벡터 데이터베이스의 활용 (4가지)
1. AI/ML 응용
● 의미 정보 검색 및 장기 기억을 통하여 AI 기능을 향상 시킬 수 있다.
2. 유사도 기반 추천 시스템
● 선택된 아이템과 유사한 아이템을 검색하여 상품/콘텐츠 추천 알고리즘에 적용가능하다.
3. NLP(Natural Language Processing; 자연어처리) 응용
● 텍스트 임베딩을 통하여 자연어 이해 및 생성에 적용
4. 이미지 인식 및 검색 응용
● 유사하거나 일치하는 이미지를 검색하기 위하여 특성 벡터를 추출하고 이것을 데이터베이스화
▼ 벡터 임베딩(Vector Embedding)
- 주제, 단어, 이미지 또는 기타 데이터를 숫자로 표현한 것
- 대규모 언어 모델(LLM) 및 기타 AI 모델에 의하여 생성되는 것이 일반적
- 각 벡터 임베딩 사이의 거리를 계산하여 검색 엔진이 벡터 간의 유사성을 정의할 수 있다.
- 벡터 임베딩을 색인하고 질의하는 방식의 벡터 데이터베이스를 이용하여 데이터 저장 및 검색을 실행한다.
자연어 처리 분야에서 가장 잘 알려진 벡터 임베딩의 예로써 워드 임베딩(Word Embeddings)
▼ 워드 임베딩(Word Embeddings)란?
- 각 단어를 고유한 벡터로 표현하여 단어 간의 관계와 의미를 파악한다.
- 많은 양의 문서를 분석하여 단어들 사이의 통계적 유사성을 도출하여 벡터 공간을 구성한다.
유사도 검색 방법의 예
▼ LSH (Locality-Sensitive Hashing)
1. 유사도가 높은 입력값들이 "높은 확률로" 같은 버킷(bucket)에 해시되도록 하여 낮은 시간 복잡도로 유사한 벡터를 찾을 수 있도록 하는 기법이다.
1-1 고차원 벡터 공간을 여러 개의 해시 버킷으로 분할하는 해시 함수이다.
1-2 데이터 클러스터링 및 유사도 검색에 활용 가능하다.
2. Audio/Video fingerprinting 등에 널리 이용된다.
▼ ANNOY (Approximate Nearest Neighbours Oh Yeah)
최근접 이웃을 탐색함에 있어 정확도를 다소 포기하고 시간 비용을 크게 절감하는 근사 검색 기법을 일컫는다.
1-1 벡터 공간에서 임의의 두 점을 선택하고, 이 두 점 사이의 초평면으로 벡터 공간 분할
1-2 분할된 공간에 포함된 점 (벡터; 데이터 포인트) 들의 개수를 노드로 하는 이진 트리를 생성
1-3 각 노드에 포함된 점들의 개수가 K 개 미만이 될 때까지 위 과정을 반복하여 최종 검색 트리 완성
1-4 쿼리 입력 (벡터) 을 검색 트리에서 검색한 뒤 해당 부분 공간에서 최근접 이웃을 검색
NoSQL 데이터베이스의 종류
1. Key-Value
● 키와 값의 쌍을 기본 집합 데이터로 간주하고 저장, 수평적 확장이 용이하고 속도가 빠름
● Memcached, Redis, Amazon DynamoDB 등
2. Document
● 키와 도큐먼트 (계층적 형태의 객체)의 형태로 데이터 저장, json 또는 xml 형태의 결과를 이용
● MongoDB, CouchDB 등
3. Column-Family
● 함께 접근되는 연관된 데이터들을 함께 저장하여 대규모 데이터를 다루는 데 적합한 이용 방식 제공
4. Graph
● Social media 응용 등에서 객체들 사이의 관계를 저장 및 빠르게 검색하기 위하여 이용
NoSQL 데이터베이스의 활용
1. RDBMS 를 대체할 것으로 예상하지는 않음
2. ACID 트랜잭션의 지원이 필수가 아닌 시스템에서는 응용이 확대될 전망
● Facebook, Twitter 등의 소셜 네트워크 서비스에서 게시글들을 저장하는 데 이용한
● MongoDB, CouchDB 등
3. Column-Family
● 함께 접근되는 연관된 데이터들을 함께 저장하여 대규모 데이터를 다루는 데 적합한 이용 방식 제공
4. Graph
● Social media 응용 등에서 객체들 사이의 관계를 저장 및 빠르게 검색하기 위하여 이용
학습 주제.4 운영체체 中
컴퓨터 통신망 기초
디지털 데이터 통신 종류
아날로그(Analog): 자연 상태에서 나타나는 연속적인 값을 정보로 표현 예: 전화(유선), FM라디오
디지털(Digital): 0 과 1 의 조합으로 부호화된 신호로 정보를 표현 예: 이동전화, IPTV
디지털 데이터 통신의 이점
1. 매체를 다중화하여 대역폭 활용도를 높일 수 있다.
2. 정보의 암호화가 용이하다.
3. 정보의 손실이 적다.
● 통신 잡음에 대하여 강건성이 높음
● 신호 지연 및 손실에 대한 보완이 가능
● 자가 오류 정정이 가능한 기법 도입이 가능
데이터 전송 방식의 분류
▼ 동기식 전송
● 타이밍 제어 신호와 데이터 신호를 동기화
● 고속 통신에 유리
▼ 비동기식 전송
● 하나의 통신선을 이용하여 제어 비트와 데이터 비트 전송
● 하드웨어 비용이 낮은 편
전송 방향에 따른 분류
단방향 (simplex) 전송
● 한 방향으로만 데이터 전송 가능
● 예) 방송, 키보드 입력, 화면 출력
반이중 (half duplex) 전송
● 양방향 전송이 가능하지만, 동시에는 전송 불가능
● 예) fax, 휴대용 무전기 등
전이중 (full deplex) 전송
● 동시에 양방향 데이터 전송 가능
● 예) 전화, 일반적인 데이터 네트워크 등
회선 접속 방식에 따른 분류
점대점 방식 (point-to-point configuration)
● 서로 다른 두 장치가 전용 회선을 이용하여 연결
● 예) Bluetooth
다지점 방식 (multipoint configuration)
● 하나의 통신 회선에 여러 개의 장치가 연결
● 예) 이더넷 (Ethernet)
망 구성 범위에 따른 분류
LAN (Loacl Area Network) - 근거리 통신망
● 집, 사무실, PC방 등 주로 단일한 네트워크로 구성
MAN (Metropolitan Area Network) - 도시 지역 통신망
● 여러 LAN 을 연결한 도시 하나 정도의 네트워크 단위
WAN (Wide Area Network) - 광역 통신망
● 근거리 통신망을 벗어나는 경우 모두 WAN 영역으로 보는 견해
● MNA 은 LAN 이 모여 이루어진 것이고 WAN 은 MAN 이 모여 이루어진 것이라는 견
OSI 7-계층 모델
표준 프로토콜을 사용하여 다양한 시스템이 통신할 수 있도록 국제표준화기구 (OSI) 에서 제정한 개념 모델
계층 1: Physical
매체: Coaxial, Fibre Optic, UTP, Radio, Repeater
리피터 (Repeater)
● 동일 LAN 상에서 거리를 연장하거나 접속 시스템의 수를 증가시키기 위해 사용
● 신호의 감쇄, 잡음 등에 의하여 원래의 신호가 훼손되는 것을 막기 위함
스위칭 허브 (Switching Hub)
● 연결 장치간 스위칭 역할을 수행
● 하나의 LAN을 여러 병렬회선 형태로 세그먼트화
브릿지 (Bridge)
● 복수의 LAN을 서로 연결하기 위하여 이용
● 전체 네트워크의 노드 수 및 거리 확장
이더넷 (Ethernet) - IEEE 802.3
● 모든 장치는 고유의 MAC 주소를 가짐
- 예) b8:8d:12:55:4d:9b
● 데이터 전송에 있어 발생하는 충돌 (collision)을 감지하고 제어하는 기법을 정의
와이파이 (Wi-Fi) - IEEE 802.11
● 이더넷과 동일한 형태의 MAC 주소를 사용
● 주로 2.4 GHz, 5GHz 의 주파수를 가지는 무선통신을 이용
이더넷의 다중 접근 제어
CSMA/CD (Carrier-Sense Multiple Access with Collision Detection)
● 노드 (또는 호스트) 는 데이터 전송 이전에 회선이 사용 중인지 점검
● 회선이 사용 중이면 임의의 시간만큼 기다린 뒤 다시 시도
● 회선이 사용 중이 아님이 확인되면 데이터 전송 시작
● 데이터 전송 중 충돌이 검출되면 충돌 발생 사실을 모든 노드에게 통보
● 충돌이 발생하면 임의의 시간 동안 대기한후 다시 시도
무선 랜의 다중 접근 제어
CSMA/CA (Carrier-Sense Multiple Access with Collision Avoidance)
● RTS (Request To Send) 와 CTS (Clear To Send)를 이용하여 어느 순간이든 허락된 한쌍의 노드들 사이에만 데이터 전송(매체 이용)이 이루어지도록 함
흐름 제어 (Flow Control)
슬라이딩 윈도우 (Sliding Window) 프로토콜
● 송신측에서는 매 프레임에 순차 번호를 매김
● 순차 번호 및 오류 검출 코드 등을 프레임에 표기하고 순서대로 전송
● 수신측에서는 매 프레임에 대한 응답 (ACK)프레임으로 회신
● 슬라이딩 윈도우 - 송신측에서 응답을 받지 않고도 연속하여 전송할 수 있는 프레임 개수에 대한 제한
오류 검출 (Error Detection)
1. 패리티 비트 (Parity Bit)
● 가장 간단한 형태의 오류 검출 코드
해당 이미지 출처: 네이버블로그/땜스전자연구소/패리티비트란 무엇인가?
2. 체크섬 (Checksum)
● 가장 간단한 형태의 오류 검출 코드로 송신된 자료 무결성을 보호하는 간단한 방법
해당 이미지 출처: 티스토리/꼬져스/에러검출(parity bit, checksum, CRC) | 작성자 도래지오
주요 메모 사항 소개
프로세스 스케줄링
어느 순간 어느 작업을 수행할 것인지 결정하는 문제
벡터 데이터베이스
데이터 전송 방식
유사도 검색 방법
OSI 7-계층 모델
표준 프로토콜을 사용하여 다양한 시스템이 통신할 수 있도록 국제표준화기구 (OSI) 에서 제정한 개념 모델
공부하면서 어려웠던 내용
CS 기초 단어의 낯설음
이렇게 기록은 하였지만, 단어자체가 낯설다보니 쉬이 이해가 되질 않았다.
다시한번 정리함과 동시에 하나씩 정보를 찾아가며, 부족한 정보를 채워나아가야하겠다...!
'클라우딩 어플리케이션 엔지니어링 TIL' 카테고리의 다른 글
[클라우딩 어플리케이션 엔지니어링 TIL] TIL(Today I Learned) - Day6 (0) | 2024.04.24 |
---|---|
[클라우딩 어플리케이션 엔지니어링 TIL] TIL(Today I Learned) - Day5 (0) | 2024.04.24 |
[클라우딩 어플리케이션 엔지니어링 TIL] TIL(Today I Learned) - Day3 (0) | 2024.04.18 |
[클라우딩 어플리케이션 엔지니어링 TIL] TIL(Today I Learned) - Day2 (0) | 2024.04.17 |