danbibibi
article thumbnail
가상 메모리(Virtual Memory)
CS/운영체제 2023. 4. 30. 05:13

가상 메모리 등장 배경 가상 메모리 프로그램이 실행될 때 물리적 메모리(RAM)보다 큰 메모리 공간을 사용하도록 하는 기술 (물리적 메모리 크기의 한계를 극복) 기존에는 프로세스가 실행되는 코드 전체를 메모리에 로드해야 했고, 메모리 용량보다 더 큰 프로그램은 실행할 수 없었음 하지만 실제로는 코드의 일부에서만 대부분의 시간을 사용하고, 프로세스는 특정 순간에는 항상 작은 양의 주소 공간을 사용하기 때문에 이러한 방식은 매우 비효율적 가상 메모리(Virtual Memory)는 이러한 물리적 메모리 크기의 한계를 극복하기 위해 나온 기술 프로세스를 실행할 때 실행에 필요한 일부만 메모리에 로드하고 나머지는 디스크에 둠 (대게 page로 관리) 프로세스 전체가 물리적 메모리에 있는 것 '처럼' 수행, 즉 물..

article thumbnail
Memory Management (메모리 관리 전략)
CS/운영체제 2023. 4. 24. 02:43

메모리 관리 배경 프로그램은 반드시 메모리로 불러와야 실행할 수 있다! 💡CPU가 직접 접근할 수 있는 유일한 저장 공간 = Main Memory , registers Register → 1 CPU clock (or less) 에 접근 가능 (굉장히 빠른 저장 공간) Main memory → many cycles (*memory stall : main memory에 접근 하는 메모리 멈춤 시간) 중간에 cache(register 보다는 느리고, main memory 보다는 빠름!!)를 사용함으로써 메모리 접근 시간을 줄일 수 있다!! ( = 메모리 효율을 높일 수 있다!!) 💡 보조 기억장치(하드디스크) → 주 기억장치(메모리) → CPU 프로세스는 독립적인 메모리 공간(Stack, Data, Code,..

article thumbnail
식별관계 비식별관계
CS/데이터베이스 2023. 4. 17. 23:10

식별 관계 부모 테이블의 기본키를 자식테이블의 기본키로 이용하는 방법 반드시 부모테이블에 데이터가 존재해야 자식테이블에 데이터를 입력할 수 있음 (데이터 정합성 보장) 실선으로 표시 💡 데이터 정합성 (Data Consistency) : 어떤 데이터들이 값이 서로 일치하는 상태 💡 데이터 무결성 (Data Integrity) : 데이터 값이 정확한 상태 ex) 중복 데이터가 다 틀린 값으로 일치하는 경우 = 정합성 O, 무결성 X 비식별 관계 부모 테이블의 기본키를 자식테이블의 외래키로 이용하는 방법 부모테이블에 데이터가 없어도 자식테이블에 데이터를 입력할 수 있음 (데이터 정합성 보장 x) 점선으로 표시 💡 비식별 관계 장점 1. 구조 변경 용이 2. 부모 테이블과의 의존성 제거 3. 과도한 인덱스 제거

article thumbnail
Index, View, Transaction (인덱스, 뷰, 트랜잭션)
CS/데이터베이스 2023. 4. 12. 17:11

Index (인덱스) 테이블에서 데이터 조회 시 동작속도를 높여주는 자료구조 (컬럼의 값, 레코드 저장 주소) 를 key와 value의 쌍으로 저장 MYI (MySQL Index) 파일에 저장 Index 장점과 단점 장점 테이블 조회 시 속도와 성능이 향상 시스템의 전반적인 부하 감소 가능 💡 Index를 사용하면 좋은 경우 1. 규모가 큰 테이블 2. 삽입, 삭제, 수정 작업이 적은 경우 3. 데이터 중복도가 낮은 경우 4. WHERE, ORDER BY, JOIN 등이 자주 사용되는 경우 💡 데이터 중복이 많은 경우, INDEX 사용이 비효율적인 이유 ex) 이름, 나이, 성별 세 가지 컬럼을 갖고 있는 테이블 이름 - 다양한 경우의 수 나이 - INT 타입 성별 - 남, 녀 (2가지) 이 경우, 이름..

article thumbnail
Key (후보키, 기본키, 슈퍼키, 대체키, 외래키)
CS/데이터베이스 2023. 4. 12. 15:44

키 (Key) 란? : 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때, 튜플들을 서로 구분할 수 있는 기준이 되는 속성 Key 종류 후보키 (Candidate Key) 기본키로 사용할 수 있는 속성들 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합 하나의 릴레이션 내 중복된 튜플들이 있을 수 없으므로, 모든 릴레이션에는 반드시 하나 이상의 후보키 존재 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족 💡 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별 가능 💡 최소성 : 모든 레코드들을 유일하게 식별하는 데 꼭 필요한 속성만으로 구성 기본키 (Primary Key) 후보키 중에서 선택한 주 키 (Main Key) 한 릴레이..

article thumbnail
데이터베이스 정규화(Normalization)
CS/데이터베이스 2023. 3. 30. 10:58

정규화란? 관계형 데이터베이스의 설계에서 중복을 최소화하도록 데이터를 구조화하는 프로세스 = 속성들 간의 종속 관계를 분석하여 여러개의 관계(Relation)로 데이터를 분해하는 것 무결성(Integrity)을 유지할 수 있으며, DB 저장용량을 줄일 수 있음 정규화 목표 불필요한 중복 최소화 각종 이상 현상 방지 다양한 관점에서 Query 지원 무결성 제약조건 시행 간소화 데이터 베이스 구조 확장시 재디자인 최소화 💡 이상 현상 (Anomaly) 이란? : 테이블 내 불필요한 데이터 중복으로 인해, 테이블을 조작할 때 발생되는 데이터 불일치 현상 ▶ 삽입 이상 (insertion anomalies) : 원치 않는 데이터가 삽입되거나, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점 ▶ 삭제 ..

article thumbnail
Transport Layer (전송 계층)
CS/네트워크 2023. 2. 27. 00:59

Transport Layer (전송 계층) host안에 존재하는 많은 프로세스 중 목적지 프로세스로 전달하는 역할을 담당 전송 단위 : 세그먼트 (segment) - TCP / 데이터그램(datagram) - UDP 주소 : Port 번호 💡 Application Layer에서 Transport Layer에 바라는 서비스 Application Layer에 서비스 제공 (in TCP/IP 4 계층) 1. data integrity (data 유실 없이 전달) → TCP 제공 2. throughput ex) 최소 x bps이상 보장 → 제공 x 3. timing ex) 내가 보낸 메세지는 x ms 안에 도착하면 좋겠다 → 제공 x 4. security (보안) → 제공 x TCP, UDP Transport ..

article thumbnail
Application Layer ( 응용 계층 )
CS/네트워크 2023. 2. 27. 00:40

Application Layer ( 응용 계층 ) 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행 ex ) web, email 등 전송 단위 : 메세지 (message) HTTP (Hypertext Transfer Protocol) : 웹 상에서 클라이언트는 HTTP프로토콜을 이용하여 웹에 있는 object들을 볼 수 있고 필요한 동작들을 요청할 수 있음 Application layer protocol, TCP 이용 (port# 80) "HTTP is stateless" : request가 오면 response하고 끝! (서버는 클라이언트의 예전 정보 기억 X) 💡 HTTP 통신 1) 클라이언트는 서버에 대한 TCP connection(port 80)을 열어 놓음 2) 서버는 ..

article thumbnail
Binary Search (Lower Bound, Upper Bound)
CS/알고리즘 2023. 2. 23. 21:38

Binary Search 배열에서 원하는 값의 위치를 O(log N) 만에 찾는 방법 ⇔ 순차탐색 O(N) 배열 내 원소가 정렬된 경우에만 사용 가능 정렬되지 않은 배열의 경우, 찾고자 하는 숫자의 개수가 적다면 순차탐색이 빠를 수 있음 아래는 찾고자 하는 값이 없는 경우 -1을, 있는 경우에는 해당 위치를 반환해주는 Binary Search 코드이다. up/down 게임과 유사한 방식으로 원하는 값의 위치를 찾아가는 것을 볼 수 있다. int binary_search(int target){ int low=1, mid, high=n; while(low

article thumbnail
next_permutation 구현
CS/알고리즘 2023. 2. 16. 17:58

Next Permutation next permutation ! 말 그 대로 다음 순열을 찾는 방법이다. = 현재 순열의 상태에서 크기순으로(사전 순) 다음에 올 수 있는 순열을 생성 구현에 들어가기 전에 기억 할 것 첫 순열 = 오름차순 마지막 순열 = 내림차순 → 모든 수가 내림차순으로 정렬되어 있다면, 순열을 모두 만들어 낸 것이고, 따라서 종료 조건이다! 그렇다면, Next Permutation을 어떻게 구현할까? 1. 뒤에서부터 역방향으로 탐색하면서 교환위치( i-1 , 오름차순이 깨지는 부분)을 찾는다. 💡 오름차순이 깨지는 부분이 교환 위치인 이유 자 예를 들어 ` int a = {1, 4, 9, 8, 3, 2,1}; ` 배열이 있다고 하자. a[2] ~ a[6] 은 모두 내림차순으로 정렬되..

article thumbnail
MySQL 정리
CS/데이터베이스 2023. 2. 13. 01:24

MySQL 세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스 관리 시스템 다양한 운영체제에서 사용할 수 있으며, 여러 가지의 프로그래밍 언어를 지원 크기가 큰 데이터 집합도 빠르고 효과적으로 처리할 수 있음 널리 알려진 표준 SQL 형식을 사용 MySQL 응용 프로그램을 사용자의 용도에 맞게 수정할 수 있음 키워드와 구문에서 대소문자를 구분하지 않음 DB 서버마다 독립적인 스토리지를 할당하는 방식을 사용 MySQL 장점 용량 & 처리 : 적은 용량 차지(1MB RAM), 매우 적은 오버 헤드, 빠른 처리 속도로 대용량 데이터 처리에 용이 접근성 : 다른 데이터 관리 툴에 비해 구조가 간단하여 사용이 쉬움 지원 : 다양한 프로그래밍 언어와 통합 가능, 거의 모든 운영체제에서 사용을 지원 유연성 :..

article thumbnail
OSI 7 Layer
CS/네트워크 2023. 2. 8. 00:48

OSI 7 계층 OSI = Open Systems Interconnection Reference Model 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것 하위 계층 → 상위 계층에 서비스 제공 왜 ? ✔️ 통신이 일어나는 과정을 단계별로 파악하기 위해! ✔️ 통신 과정에서 문제가 발생할 경우, 다른 단계를 건드리지 않고, 해당 단계만 고치면 됨! 💡 OSI 7Layer : 네트워크 전송 시 데이터 표준을 정리 💡 TCP/IP 4계층 : 정리한 이론을 실제로 사용하는 인터넷 표준 1 Layer - Physical Layer ( 물리 계층 ) 전기 신호의 전송만을 담당 송수신 데이터가 무엇인지, 어떤 에러가 있는지 등은 신경쓰지 않음 장비 : 통신 케이블, 리피터, 허브 등 전송 단위 : 비트 (Bi..

article thumbnail
DBMS (데이터베이스 관리 시스템)
CS/데이터베이스 2023. 1. 12. 09:12

DBMS (Database Management System) : 어떤 조직에 대한 모든 정보를 가지고 있는 시스템으로, 데이터를 체계적으로 저장, 관리, 운영할 수 있도록 잘 조직화한 것 서로 관련된 데이터들의 집합, 데이터에 접근하기 위한 프로그램의 집합 (DB) + 데이터와 프로그램을 쉽고 편리하게 사용할 수 있는 환경 ( = DBMS) ( * DBMS는 DB에 정보를 저장하고, 또 이를 검색하기 위한 편리하고 효율적인 환경을 제공) DBMS 목적 DBMS 이전에는 파일 시스템을 이용해 데이터를 관리 이 경우, 데이터 중복, 비일관성, 고립, 무결성 등의 문제가 발생 ! → 이러한 문제를 해결하기 위해 DBMS 등장! DBMS 특징 데이터의 독립성 물리적 독립성 : 응용 프로그램이 물리적 스키마(크기..

article thumbnail
DeadLock (교착 상태)
CS/운영체제 2023. 1. 12. 00:35

DeadLock 일련의 프로세스들이 서로가 가진 자원을 기다리며 block 되어 더 이상 진행이 될 수 없는 상태 ( * LiveLock : 스레드가 정체된 상태는 아니지만 계속 시도해도 진행이 안되는 경우 ) Deadlock Characterization : deadlock이 일어나기 위한 4가지 필요조건으로, deadlock이 일어난 경우 아래 조건을 모두 만족한다! 1. Mutual exclusion (상호 배제) : 단독으로 사용해야하는(공유가 불가능한) 자원이 적어도 하나 존재 2. Hold and wait (점유 대기) : 어떤 자원을 획득한 상태에서 다른 자원을 기다리는 상태 3. No preemption (비선점) : 본인인 스스로 더 이상 진행되지 않음에도 불구하고 가지고 있던 자원을 놓..

article thumbnail
프로세스 동기화 (Synchronization)
CS/운영체제 2022. 12. 28. 00:12

동기화 vs 비동기화1. 동기화(Synchronous) 동시에 일어나서, 결과가 그 자리에서 주어짐설계가 매우 간단하고 직관적결과가 주어질 때까지 아무것도 못하고 대기해야 함2. 비동기화(Asynchronous)동시에 일어나지 않아서, 결과가 그자리에서 주어지지 않음동기화보다 복잡함결과가 주어지는데 시간이 걸리지만, 그 동안 다른 작업을 할 수 있어서 자원을 효율적으로 사용할 수 있음 Race Condition: 여러 프로세스들이 동시에 데이터에 접근할 때 어떤 순서로 접근하느냐에 따라 결과 값이 달라질 수 있는 상황 공유 데이터의 동시 접근(Concurrent access)은 데이터의 불일치 문제를 발생시킬 수 있음Race condition을 막고, 일관성을 유지하기 위해 협력 프로세스 간의 실행 순서..