컴퓨터왕 9

Upper Bound와 Lower Bound

정렬되어 있는 리스트에서 특정 위치를 찾기 위해 사용하는 알고리즘 Binary Search를 약간 변형한 형태 Upper Bound: 특정 숫자보다 큰 숫자들 중 가장 작은 숫자의 인덱스 반환 Lower Bound: 특정 숫자보다 같거나 큰 숫자들 중 가장 작은 숫자의 인덱스 반환 int upperBound(List list, int target) { if (list == null || list.size() == 0) return -1; int l = 0, r = list.size() - 1; while (l < r) { int mid = (l + r) / 2; if (list.get(mid) target ? l : -1; } int lowerBound(List list, int target) { if ..

인터럽트

인터럽트 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀하여 계속 처리하는 것 인터럽트의 종류 외부 인터럽트 CPU의 하드웨어 신호에 의해 발생 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생 ex) 전원 이상, 기계 착오, 외부 신호, 입출력 등 내부 인터럽트 Trap이라고 부르며, 잘못된 명령이나 데이터를 사용할 때 발생 ex) 0으로 나누기, 오버플로우. => Exception 소프트웨어 인터럽트 (SVC 인터럽트) 프로그램 처리 중 명령의 요청에 의해 발생한 것 ex) 사용자가 프로그램을 실행시킬 때 발생 인터럽트 발생 처리 과정 주 프로그램 실행 인터럽트 발생 복귀 주소 저장 ..

Key

검색, 정렬 시 tuple을 구분할 수 있는 기준이 되는 attribute Candidate Key - 후보키 tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합 기본키로 사용할 수 있는 속성들 2가지 조건을 만족해야 함 유일성: key로 하나의 tuple을 유일하게 식별할 수 있음 최소성: 꼭 필요한 속성으로만 구성 Primary Key - 기본키 후보키 중 선택한 Main key Null 값을 가질 수 없음 동일한 값이 중복될 수 없음 Alternate Key - 대체 키 후보키 중 기본키를 제외한 나머지 키 Super Key 유일성은 만족하지만 최소성은 만족하지 못하는 키

HTTP와 HTTPS

HTTP 웹 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약 주로 HTML 문서를 주고 받는 데에 쓰임 Connectionless: 클라이언트가 요청을 서버에 보내고 서버가 적절한 응답을 클라이언트에 보내면 바로 연결이 끊김 Stateless: 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않음 HTTPS 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전의 프로토콜 소켓 통신에서 일반 텍스트를 사용하는 대신에, 웹 상에서 정보를 암호화 하는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화함 데이터의 적절한 보호를 보장! 장) 안전 단) 웹 서버에 부하 발생 가능성, 느림, 추가비용 HTTPS의 원리 - 공개키 알고리즘 방식 암호화, 복호화 할 수 있는 서..

OSI 7 Layer

Physical repeater, 케이블, 허브 등 데이터를 전기적인 신호로 변환해서 주고 받는 기능을 진행하는 공간 데이터를 전송하는 역할만 진행 전송 단위: Bit Data Link node-to-node 스위치, 이더넷 등 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할 CRC 기반의 오류 제어와 흐름 제어 필요 주소 값은 물리적으로 할당 받음 네트워크 카드가 만들어질 때부터 MAC 주소가 정해져 있음 전송 단위: Frame Network 라우터, IP 데이터를 목적지까지 안전하고 빠르게 전달하는 기능을 담당 Transport Layer가 요구하는 서비스품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공 라우터를 통해 이동할 경로를 찾아 IP 주소를 지정하고, 해당..

프로세스와 스레드

프로세스 VS 스레드 차이점 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 자원의 효율성 증대 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있음 프로세스 간의 Context Switching 시 단순히 CPU 레지스터 교체 뿐만 아니라 RAM과 CPU 사이의 캐시 메모리에 대한 데이터까지 초기화되므로 오버헤드가 큼 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 감소 처리 비용 감소 및 응답 시간 단축 프로세..

스레드

스레드 프로세스 안에서 실행되는 여러 흐름 단위 스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유함 멀티스레드 하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것 스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해줌 멀티스레드 장점 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소 전역 변수와 정적 변수에 대한 자료 공유가 가능 처리 비용 감소 및 응답 시간 단축 프로세스 간의 통신(IPC)보다 스레드 간의 통신의 비용이 적음 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠름 멀티스레드 단점 안전성 문제 하나의 스레드가 데이터 공간을 망가뜨리면 모든 스레드가 작동 불능 상태가 됨 공유 메모리를 갖기 때문 Critica..

프로세스

프로세스 메모리 상에서 실행 중인 프로그램 스레드는 프로세스 안에서 실행되는 여러 흐름 단위, 프로세스마다 최소 1개의 스레드(메인 스레드)를 포함 멀티 프로세스 하나의 컴퓨터에 여러 CPU를 사용, 하나 이상의 프로세스들을 동시에 처리 (병렬) 장점 안전성: 메모리 침범 문제를 OS 차원에서 해결 단점 각각 독립된 메모리 영역을 갖고 있어 작업량이 많을수록 오버헤드 발생 증가 Context Switching으로 인한 성능 저하 프로세스 주소 공간 프로그램이 CPU에 의해서 실행될 때 프로세스가 생성되고 메모리에 프로세스 주소 공간이 할당 됨 코드 영역 - 프로그램 소스 코드를 저장하는 영역 데이터 영역 - 전역 변수 저장 (초기화된 데이터) 스택 영역 - 함수, 지역 변수 저장 (임시 메모리 영역) 힙..

운영체제란

운영체제 (Operating System) 하드웨어를 관리하고, 응용 프로그램과 하드웨어 사이에서 인터페이스 역할을 하며 시스템의 동작을 제어하는 시스템 소프트웨어 커널 (Kernel) 메모리에 올라온 OS의 부분, 좁은 의미의 OS라고도 함 소프트웨어가 컴퓨터 시스템에서 수행되기 위해서는 메모리에 적재 되어야 함 OS도 하나의 SW로서 메모리에 적재되어야 실행할 수 있음 OS는 규모가 크기 때문에 전부가 메모리에 적재되진 않고 필요한 부분만 적재됨 (필요할 때마다 그때그때 메모리에 적재됨) 운영체제의 기능 프로세스 관리 프로세스, 스레드 / 스케줄링 / 동기화 / IPC 통신 운영체제에서 작동하는 응용 프로그램을 관리함 CPU를 점유할 프로세스 결정과 CPU 할당, 공유자원 접근과 통신등을 관리 저장장..