TIL 221113 [CS]

강지훈·2022년 11월 12일
0

컴퓨터의 구성

https://gyoogle.dev/blog/computer-science/computer-architecture/%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98%20%EA%B5%AC%EC%84%B1.html

캐시 메모리(Cache Memory)
속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리
CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킨다.

속도라는 장점을 얻지만, 용량이 적기도 하고 비용이 비싼 점이 있다.

패리티 비트
정보 전달 과정에서 오류가 생겼는 지 검사하기 위해 추가하는 비트를 말한다.

전송하고자 하는 데이터의 각 문자에 1비트를 더하여 전송한다.

Linked List
연속적인 메모리 위치에 저장되지 않는 선형 데이터 구조
(포인터를 사용해서 연결된다)
각 노드는 데이터 필드와 다음 노드에 대한 참조를 포함하는 노드로 구성

왜 Linked List를 사용하나?
배열은 비슷한 유형의 선형 데이터를 저장하는데 사용할 수 있지만 제한 사항이 있음

배열의 크기가 고정되어 있어 미리 요소의 수에 대해 할당을 받아야 함

새로운 요소를 삽입하는 것은 비용이 많이 듬 (공간을 만들고, 기존 요소 전부 이동)

#장점
동적 크기

삽입/삭제 용이

#단점
임의로 액세스를 허용할 수 없음. 즉, 첫 번째 노드부터 순차적으로 요소에 액세스 해야함 (이진 검색 수행 불가능)

포인터의 여분의 메모리 공간이 목록의 각 요소에 필요

프로세스 & 스레드
프로세스: 프로그램을 메모리 상에서 실행중인 작업
스레드: 프로세스 안에서 실행되는 여러 흐름 단위

기본적으로 프로세스마다 최소 1개의 스레드 소유 (메인 스레드포함)

프로세스는 자신만의 고유 공관과 자원을 할당 받아 사용
스레드는 다른 스레드와 공간, 자원을 공유하면서 사용

멀티 프로세스
하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것

장점 : 안전성 (메모리 침범 문제를 OS 차원에서 해결)

단점 : 각각 독립된 메모리 영역을 갖고 있어, 작업량 많을 수록 오버헤드 발생. Context Switching으로 인한 성능 저하

데드락 (DeadLock, 교착상태)
두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지
못하는 상태 무한히 다음 자원을 기다리게 되는 상태
시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생한다.)

은행원 알고리즘: 안전상태를 유지할 수 있는 요구만을 수락하고 불안전 상태를 초래할 사용자의
요구는 나중에 만족될 수 있을 때까지 계속 거절

세마포어: 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법

임계구역: 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분

뮤텍스: 임계 구역을 가진 스레드들의 실행시간이 서로 겹치지 않고 각각 단독으로 실행되게 하는 기술

Database

Candidate key(후보키): 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합

2가지 조건 만족
유일성: key로 하나의 튜플을 유일하게 식별할 수 있음
최소성: 꼭 필요한 속성으로만 구성

Primary Key (기본키)
후보키중 선택한 Main Key
Null 값을 가질 수 없음
동일한 값이 중복될 수 없음

Alternate Key(대체키)
후보키 중 기본키를 제외한 나머지 키 = 보조키

Super Key(슈퍼키)
유일성은 만족하지만, 최소성은 만족하지 못하는 키

Foreign Key(외래키)
다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합

SQL 과 NOSQL 의 차이

SQL(관계형 DB)
SQL을 사용하면 RDBMS에서 데이터를 저장,수정,삭제 및 검색 할 수 있음
관계형 데이터베이스에는 핵심적인 두 가지 특징이 있다.

데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다
데이터는 관계를 통해 여러 테이블에 분산된다

스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다.

NoSQL (비관계형 DB)
스키마도 없고, 관계도 없다!

정규화 (Normalization)
가장 큰 목표는 테이블 간 중복된 데이터를 허용하지 않는 것

HTTP & HTTPS
HTTP: 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약

HTTP는 텍스트 교환이므로, 누군가 네트워크에서 신호를 가로채면
내용이 노출되는 보안 이슈가 존재한다.
이런 보안 문제를 해결해주는 프로토콜이 HTTPS

HTTPS
인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해 클라이언트와 서버가
자원을 주고 받을 때 쓰는 통신 규약
HTTPS는 텍스트를 암호화한다.

profile
never stop

0개의 댓글