테마
CS 용어집
문서에서 점선 밑줄이 있는 용어를 누르면 이곳의 해당 항목으로 온다. 다 읽었으면 아래 읽던 문서로 버튼으로 돌아간다.
용어 410개
ㄱ
가상 메모리virtual memory
프로세스마다 실제 메모리 크기와 상관없는 독립된 주소 공간을 주고, 필요한 부분만 실제 메모리에 올리는 기법.
가상 주소virtual address
프로세스가 보고 쓰는 주소. MMU가 실제 메모리 위치인 물리 주소로 바꾼다.
가중치 그래프weighted graph
간선마다 거리·비용 같은 숫자(가중치)가 붙은 그래프.
간선edge
그래프에서 두 정점 사이의 연결.
개방 주소법open addressing
충돌이 나면 정해진 규칙으로 다른 빈칸을 찾아 넣는 해시 충돌 해결 방식.
거짓 공유false sharing
서로 다른 변수가 같은 캐시 라인에 있어서, 여러 코어가 번갈아 고칠 때마다 라인이 무효화돼 느려지는 현상.
경쟁 상태race condition
여러 실행 흐름이 공유 데이터에 동시에 접근해, 실행 순서에 따라 결과가 달라지는 상황.
고아 프로세스orphan process
부모가 먼저 끝나 버린 자식 프로세스. 리눅스에서는 init 같은 프로세스가 새 부모가 된다.
고정소수점fixed point
소수점 위치를 정해 두고 정수부와 소수부 자릿수를 고정해 실수를 저장하는 방식.
공간 복잡도space complexity
입력 크기가 커질 때 알고리즘이 쓰는 메모리가 얼마나 늘어나는지를 나타낸 것.
공개 키 암호화public-key encryption
공개 키로 잠근 것은 짝이 되는 개인 키로만 풀 수 있는 방식. 비대칭 키 암호화라고도 한다.
공유 메모리shared memory
여러 프로세스가 같은 물리 메모리 영역을 자기 주소 공간에 붙여 함께 읽고 쓰는 통신 방식.
공인 IP 주소public IP address
인터넷 전체에서 유일한 IP 주소. ISP를 통해 배정받는다.
교착 상태deadlock
둘 이상의 실행 흐름이 서로 상대가 가진 자원을 기다리느라 아무도 진행하지 못하는 상태.
군집화clustering
선형 탐사에서 찬 칸이 한 덩어리로 뭉쳐 그 근처 키의 탐사가 길어지는 현상.
권한 네임 서버authoritative name server
그 도메인의 실제 DNS 레코드를 가지고 최종 답을 주는 네임 서버.
균형 트리balanced tree
삽입·삭제 때 스스로 모양을 고쳐 높이가 O(log n)을 넘지 않게 유지하는 트리.
그래프graph
정점들과 정점 사이를 잇는 간선으로 이뤄진 자료구조. 지도·친구 관계·네트워크를 나타낸다.
기계어machine code
CPU가 바로 실행할 수 있는 0과 1로 된 명령어.
기본 게이트웨이default gateway
자기 네트워크 밖으로 나가는 패킷을 일단 넘기는 라우터.
기아starvation
우선순위가 낮은 작업이 계속 밀려 자원을 끝없이 받지 못하는 상태.
ㄴ
네임 서버name server
도메인 이름에 대한 DNS 정보를 가지고 질의에 답하는 서버.
네트워크 계층network layer
여러 네트워크를 건너 목적지까지 가는 주소와 경로를 맡는 층. IP가 이 층에서 동작한다.
노드node
연결 구조를 이루는 점 하나. 자료구조에서는 값 하나와 다른 원소로 가는 연결을 담는 단위이고, 네트워크에서는 연결된 기기 하나하나를 말한다.
누적 확인 응답cumulative acknowledgment
이 번호 앞까지는 빠짐없이 받았다고 알리는 ACK 방식. ACK 번호는 다음에 받을 바이트 번호다.
ㄷ
다익스트라 알고리즘Dijkstra's algorithm
가중치가 음수가 아닌 그래프에서 한 정점으로부터 다른 모든 정점까지의 최단 거리를 구하는 알고리즘.
단편화fragmentation
하나로 있어야 할 것이 잘게 쪼개지는 것. 메모리에서는 빈 공간이 흩어지거나 할당한 조각 안에 남는 공간이 생겨 여유가 있어도 쓰지 못하는 현상이고, IP에서는 패킷이 링크의 MTU보다 클 때 여러 조각으로 나누는 것이다.
대기 그래프wait-for graph
실행 흐름을 점으로 두고, 누가 누구의 자원을 기다리는지 화살표로 그린 그래프. 사이클이 있으면 교착 상태다.
대역폭bandwidth
네트워크가 단위 시간에 보낼 수 있는 최대 데이터 양. 보통 초당 비트(bps)로 적는다.
대칭 키 암호화symmetric-key encryption
암호화와 복호화에 같은 키 하나를 쓰는 방식. 빠르지만 키를 안전하게 나누는 문제가 있다.
데몬daemon
화면 없이 뒤에서 계속 실행되며 요청을 기다리는 프로그램.
데이터 링크 계층data link layer
같은 네트워크 안에서 바로 옆 장비에게 MAC 주소로 데이터를 넘기고 깨진 것을 걸러 내는 층.
데이터그램datagram
연결 없이 독립적으로 보내는 데이터 단위. UDP의 전송 단위를 주로 이렇게 부른다.
덱deque
앞과 뒤 양쪽에서 넣고 꺼낼 수 있는 큐. double-ended queue의 줄임말이다.
도메인 이름domain name
IP 주소 대신 사람이 기억하기 쉽게 붙인 example.com 같은 이름.
동일 출처 정책same-origin policy
브라우저가 프로토콜·호스트·포트가 모두 같은 출처의 응답만 스크립트가 읽게 하는 보안 규칙.
동적 배열dynamic array
칸이 모자라면 더 큰 배열을 새로 잡아 옮겨 담으며 크기가 자라는 배열. Java의 ArrayList, Python의 list가 이 방식이다.
디스크 블록disk block
파일 시스템이 디스크를 같은 크기(보통 4KB)로 나눠 번호를 붙인 한 칸. 파일 내용은 이 칸 단위로 저장된다.
디피-헬먼 키 교환Diffie-Hellman key exchange
양쪽이 공개 값만 주고받고, 각자 같은 비밀을 계산해 대칭 키를 만드는 방법.
ㄹ
라우터router
IP 주소를 보고 패킷을 다른 네트워크로 가는 다음 경로로 넘겨 주는 네트워크 계층 장비.
라우팅routing
패킷이 목적지까지 갈 경로를 정하는 일. 라우터는 라우팅 테이블을 보고 다음 장비를 고른다.
라우팅 테이블routing table
목적지 대역별로 어느 인터페이스·다음 라우터로 넘길지 적어 둔 표.
라운드 로빈round robin
대상에게 차례로 돌아가며 하나씩 배정하는 방식. CPU 스케줄링에서는 준비 큐의 프로세스에게 타임 슬라이스만큼씩 CPU를 주고, 로드 밸런싱에서는 요청을 서버들에 순서대로 나눠 보낸다.
라이브락livelock
서로 양보하고 재시도하기를 되풀이하느라 멈추지는 않았지만 아무도 진행하지 못하는 상태.
레드-블랙 트리red-black tree
노드에 빨강·검정 색을 칠하고 색 규칙을 지켜 높이를 O(log n)으로 유지하는 균형 이진 탐색 트리. Java TreeMap 등이 쓴다.
레지스터register
CPU(또는 장치 컨트롤러) 안에 있는 아주 작고 빠른 저장 칸. CPU 레지스터는 지금 계산 중인 값과 다음에 실행할 명령어 위치 등을 담는다.
로드 밸런서load balancer
들어오는 요청을 여러 서버에 나눠 보내 한 서버에 부하가 몰리지 않게 하는 장비나 소프트웨어.
로드-스토어 구조load-store architecture
메모리 접근을 적재(load)·저장(store) 명령어로만 하는 RISC식 설계.
루트 노드root node
트리의 맨 위에 있고 부모가 없는 노드.
루트 인증서root certificate
OS·브라우저에 미리 들어 있어 믿음의 출발점이 되는 최상위 CA의 인증서.
리버스 프록시reverse proxy
서버 쪽에 서서, 클라이언트 요청을 받아 뒤에 있는 실제 서버로 넘겨 주는 프록시.
리소스 레코드resource record
네임 서버가 이름마다 저장하는 DNS 정보 한 건. A·CNAME·MX 같은 종류가 있다.
리졸버resolver
클라이언트 대신 여러 네임 서버에 차례로 물어 도메인 이름의 IP 주소를 찾아 주는 DNS 서버.
리틀 엔디언little-endian
작은 자리 바이트를 낮은 주소에 먼저 저장하는 방식. x86·대부분의 ARM 환경이 쓴다.
리프 노드leaf node
자식이 없는 트리의 맨 끝 노드.
ㅁ
마운트mount
저장 장치의 파일 시스템을 기존 디렉터리 트리의 한 지점에 연결해 접근할 수 있게 하는 것.
마이크로 연산micro-operation
CPU가 복잡한 명령어를 내부에서 쪼갠 단순한 작업 단위.
마이크로커널microkernel
커널에는 최소 기능만 두고 드라이버·파일 시스템을 사용자 모드 프로세스로 내보낸 커널 구조.
멀티스레드multithreading
한 프로세스 안에서 스레드를 여러 개 두어 일을 나눠 처리하는 방식.
멀티코어multi-core
CPU 하나에 코어를 여러 개 넣은 구조.
메모리 계층memory hierarchy
레지스터·캐시·메인 메모리·저장 장치처럼 속도와 용량을 맞바꾼 저장소를 층층이 쌓은 구조.
메시지 전달message passing
커널이 데이터를 받아 보관했다가 받는 프로세스에 복사해 주는 통신 모델.
메시지 큐message queue
커널이 관리하는 대기열에 메시지 단위로 넣고 꺼내는 프로세스 간 통신 방식.
메타데이터metadata
파일의 크기·소유자·권한·시각처럼 내용이 아닌 파일 정보.
멱등성idempotency
같은 요청을 한 번 보내든 여러 번 보내든 서버 상태에 남는 결과가 같은 성질.
명령어 레지스터instruction register
지금 해석·실행 중인 명령어를 담아 두는 레지스터.
명령어 사이클instruction cycle
CPU가 명령어 하나를 처리하는 반복 과정. 메모리에서 가져오고(인출) 실행하는 단계를 되풀이한다.
모놀리식 커널monolithic kernel
파일 시스템·드라이버까지 대부분의 기능을 커널 모드의 한 프로그램에 담은 커널 구조.
무방향 그래프undirected graph
간선에 방향이 없어 양쪽으로 오갈 수 있는 그래프.
무상태stateless
서버가 이전 요청의 내용을 기억하지 않고, 요청 하나하나를 그 요청에 담긴 정보만으로 처리하는 성질.
문맥 교환context switch
CPU가 실행하던 프로세스나 스레드의 상태를 저장하고 다른 것의 상태를 불러와 실행을 바꾸는 일.
문자 인코딩character encoding
문자를 어떤 바이트로 바꿔 저장할지 정한 규칙.
물리 계층physical layer
0과 1을 전기·빛·전파 신호로 바꿔 선이나 공기로 실어 나르는 맨 아래층.
물리 주소physical address
실제 메모리 칩의 위치를 가리키는 주소.
뮤텍스mutex
잠금을 건 한 스레드만 임계 구역에 들어가게 하는 잠금 장치. 잠근 스레드가 직접 풀어야 한다.
미러링mirroring
같은 데이터를 두 디스크 이상에 똑같이 복사해 두는 것. 한쪽이 고장 나도 다른 쪽으로 읽는다.
ㅂ
바쁜 대기busy waiting
기다리는 동안 CPU를 놓지 않고 조건을 계속 확인하는 대기 방식.
바이트코드bytecode
특정 CPU가 아니라 가상 머신이 실행하도록 만든 중간 코드.
반복 질의iterative query
답을 모르는 네임 서버가 "다음은 이 서버에 물어보라"는 안내만 돌려주는 DNS 질의 방식. 리졸버가 이 안내를 따라간다.
반이중half-duplex
한쪽이 보내는 동안 다른 쪽은 받기만 하는 통신 방식.
반환 시간turnaround time
작업이 도착해서 끝날 때까지 걸린 전체 시간.
방향 그래프directed graph
간선에 방향이 있어 A→B로만 갈 수 있는 그래프.
방화벽firewall
정해 둔 규칙에 따라 패킷을 통과시키거나 막는 장비나 소프트웨어.
배열array
같은 크기의 칸을 메모리에 연속으로 붙여 둔 자료구조. 번호(인덱스)로 바로 칸을 찾는다.
버킷bucket
해시 테이블 배열의 칸 하나. 해시 값으로 정한 위치에 원소를 담는다.
벨레이디의 모순Belady's anomaly
FIFO 페이지 교체에서 프레임을 늘렸는데 오히려 페이지 폴트가 늘어나는 현상.
병합 정렬merge sort
배열을 반으로 나눠 각각 정렬한 뒤 합치는 O(n log n) 정렬.
부동소수점floating point
실수를 부호·지수·가수로 나눠 저장하는 방식. 아주 크거나 작은 수를 표현할 수 있지만 0.1처럼 2진수로 딱 떨어지지 않는 수는 근삿값이 된다.
분기 예측branch prediction
조건 분기가 어느 쪽으로 갈지 미리 추측해 그쪽 명령어를 먼저 처리하는 기법. 틀리면 처리한 것을 버린다.
분할 상환 분석amortized analysis
가끔 비싼 연산이 섞여도 여러 번의 연산 전체 비용을 횟수로 나눠 한 번당 평균 비용을 보는 분석.
브로드캐스트broadcast
같은 네트워크의 모든 기기에게 한꺼번에 보내는 전송.
브로드캐스트 도메인broadcast domain
브로드캐스트가 닿는 범위. 흔히 말하는 "같은 네트워크"이며 라우터가 나눈다.
비둘기집 원리pigeonhole principle
넣을 것이 칸보다 많으면 어떤 칸에는 두 개 이상 들어간다는 원리.
비선점no preemption
운영체제가 자원이나 CPU를 강제로 빼앗지 않는 것. 스케줄링에서는 실행 중인 프로세스가 스스로 내놓을 때까지 CPU를 주는 방식이고, 교착 상태에서는 남이 쥔 자원을 빼앗을 수 없다는 필요조건이다.
비순차 실행out-of-order execution
서로 관계없는 명령어는 프로그램 순서와 다르게 먼저 실행해 파이프라인이 쉬지 않게 하는 기법.
비연결형connectionless
상대와 연결을 맺지 않고 데이터 단위마다 따로 보내는 방식.
빅 엔디언big-endian
큰 자리 바이트를 낮은 주소에 먼저 저장하는 방식. 네트워크 전송 순서의 표준이다.
빅오 표기법Big-O notation
입력이 충분히 클 때 비용이 늘어나는 정도의 상한을 O(n)처럼 가장 큰 항만 남겨 적는 표기법.
빠른 재전송fast retransmit
중복 ACK 세 개를 받으면 타임아웃 전에 빠진 데이터를 바로 다시 보내는 것.
빠른 회복fast recovery
빠른 재전송 뒤 혼잡 윈도우를 처음부터 다시 키우지 않고 줄어든 임계값 근처에서 전송을 이어 가는 단계.
ㅅ
사설 IP 주소private IP address
내부 네트워크 전용으로 떼어 둔 IP 주소 대역(10/8, 172.16/12, 192.168/16). 인터넷으로 그대로 나갈 수 없다.
사용자 모드user mode
응용 프로그램이 실행되는 CPU 권한 단계. 하드웨어와 커널 메모리에 직접 접근할 수 없다.
사이클cycle
그래프에서 출발한 정점으로 다시 돌아오는 경로.
사전 요청preflight request
브라우저가 CORS 본 요청 전에 OPTIONS로 서버에 허용 여부를 먼저 묻는 요청.
상태 코드status code
HTTP 응답 첫 줄에 붙는 세 자리 숫자. 요청이 성공했는지, 실패했다면 왜인지를 알린다.
상호 배제mutual exclusion
한 실행 흐름이 임계 구역에 있으면 다른 흐름은 들어가지 못하게 하는 것.
서브넷subnet
하나의 IP 주소 대역을 더 작게 나눈 네트워크.
서브넷 마스크subnet mask
IP 주소 중 어디까지가 네트워크 부분인지 표시하는 값. 255.255.255.0은 앞 24비트가 네트워크 부분이라는 뜻이다.
서브트리subtree
트리의 한 노드와 그 아래 모든 자손으로 이뤄진 작은 트리.
선점preemption
운영체제가 실행 중인 프로세스에게서 CPU를 강제로 빼앗아 다른 프로세스에게 주는 것.
선형 탐사linear probing
개방 주소법에서 충돌이 나면 바로 다음 칸, 그다음 칸 순서로 빈칸을 찾는 방법.
세그멘테이션segmentation
코드·데이터·스택처럼 의미 단위로 크기가 다른 조각(세그먼트)으로 메모리를 나눠 관리하는 방식.
세마포어semaphore
정수 카운터로 공유 자원에 동시에 들어갈 수 있는 실행 흐름의 수를 제한하는 동기화 도구.
세션session
통신하는 양쪽의 주고받기를 한 흐름으로 묶어 관리하는 단위. 웹에서는 서버가 로그인 상태 같은 사용자 정보를 자기 쪽에 저장하고 브라우저에는 그 정보를 찾을 세션 ID만 주는 방식을 말하고, OSI 모델의 세션 계층은 이런 대화의 시작·유지·종료를 맡는다.
섹터sector
HDD 트랙을 나눈 가장 작은 읽기·쓰기 칸. 보통 512바이트나 4KB다.
소켓socket
프로그램이 다른 프로그램과 데이터를 주고받기 위해 운영체제에서 여는 통신 끝점. 네트워크 소켓은 IP 주소와 포트로, 같은 컴퓨터 안의 유닉스 도메인 소켓은 파일 경로 같은 이름으로 찾는다.
수신 윈도우receive window
받는 쪽이 헤더로 알려 주는 남은 버퍼 공간. 흐름 제어에 쓴다.
수정 비트dirty bit
페이지가 메모리에 올라온 뒤 내용이 바뀌었는지 표시하는 비트. 켜져 있으면 내보낼 때 디스크에 다시 써야 한다.
순방향 비밀성forward secrecy
나중에 서버 개인 키가 유출돼도 과거에 녹화된 암호 통신은 풀 수 없는 성질.
순서 번호sequence number
TCP가 보내는 데이터의 바이트마다 매기는 번호. 받는 쪽이 순서를 맞추고 중복을 걸러 낸다.
순환 대기circular wait
대기 관계를 따라가면 처음으로 돌아오는 고리가 생기는 것. 교착 상태의 필요조건 중 하나.
순회traversal
트리나 그래프의 모든 노드를 정해진 순서로 한 번씩 방문하는 것.
슈퍼스칼라superscalar
파이프라인을 여러 개 두어 한 클럭에 명령어를 여러 개 동시에 처리하는 구조.
스래싱thrashing
페이지 폴트가 너무 잦아 CPU가 일은 못 하고 페이지를 넣고 빼는 데 시간을 다 쓰는 상태.
스레드thread
프로세스 안에서 실제로 CPU를 받아 실행되는 흐름의 단위. 같은 프로세스의 스레드들은 메모리를 공유한다.
스와핑swapping
당장 쓰지 않는 프로세스나 페이지를 디스크의 스왑 영역으로 내보내고 필요할 때 다시 들여오는 것.
스왑 영역swap space
메모리에서 내보낸 페이지를 보관하는 디스크 공간.
스위치switch
프레임의 목적지 MAC 주소를 보고 해당 포트로만 전달하는 데이터 링크 계층 장비.
스케일 아웃scale-out
비슷한 서버를 여러 대로 늘려 용량을 늘리는 방식.
스케일 업scale-up
서버 한 대의 CPU·메모리를 더 좋은 것으로 바꿔 용량을 늘리는 방식.
스케줄러scheduler
다음에 어떤 프로세스·스레드에게 CPU를 줄지 고르는 커널의 부분.
스택stack
가장 나중에 넣은 것을 가장 먼저 꺼내는(후입선출) 자료구조. 프로세스 메모리 영역을 뜻할 때는 함수 호출마다 지역 변수와 돌아갈 위치를 쌓는 호출 스택 영역을 말한다.
스택 오버플로stack overflow
재귀가 너무 깊어지는 등 호출 스택이 정해진 크기를 넘쳐 프로그램이 죽는 오류.
스택 포인터stack pointer
호출 스택의 꼭대기 주소를 담는 레지스터.
스트라이핑striping
데이터를 조각내 여러 디스크에 나눠 쓰는 것. 동시에 읽고 써서 빨라진다.
스트림 다중화stream multiplexing
한 연결 안에서 여러 요청·응답을 작은 조각으로 섞어 동시에 주고받는 방식. HTTP/2의 핵심 기능.
스티키 세션sticky session
로드 밸런서가 같은 사용자의 요청을 늘 같은 서버로 보내는 방식. 고정 세션이라고도 한다. 보안 용어인 세션 고정 공격(session fixation)과는 다른 말이다.
스핀락spinlock
잠금이 풀릴 때까지 잠들지 않고 반복문을 돌며 계속 확인하는 잠금.
슬라이딩 윈도우sliding window
ACK를 받지 않고도 보낼 수 있는 데이터 범위를 정해 두고, ACK가 올 때마다 그 범위를 앞으로 밀어 가는 방식.
슬로 스타트slow start
TCP가 연결 초반에 보내는 양을 작게 시작해 ACK를 받을 때마다 빠르게 늘려 가는 혼잡 제어 단계.
시간 복잡도time complexity
입력 크기가 커질 때 알고리즘의 실행 시간이 얼마나 빨리 늘어나는지를 나타낸 것.
시그널signal
프로세스에게 어떤 사건(종료 요청·오류 등)이 생겼다고 알리는 짧은 비동기 알림.
시스템 버스system bus
CPU·메모리·입출력 장치를 잇는 공용 통로. 주소·데이터·제어 신호가 오간다.
시스템 콜system call
응용 프로그램이 파일 읽기·프로세스 생성처럼 커널만 할 수 있는 일을 요청하는 창구.
식사하는 철학자 문제dining philosophers problem
원탁의 철학자들이 양옆 포크를 두고 경쟁하는 상황으로 교착 상태를 설명하는 고전 예제.
신장 트리spanning tree
그래프의 모든 정점을 사이클 없이 잇는 간선 V−1개의 모음.
심볼릭 링크symbolic link
다른 파일의 경로를 내용으로 담은 특수 파일. 원본을 지우면 끊어진 링크가 된다.
쓰기 시 복사copy-on-write
복사를 미루고 원본을 함께 쓰다가, 어느 한쪽이 쓰기를 할 때 그 부분만 실제로 복사하는 기법.
ㅇ
안전 상태safe state
모든 프로세스를 어떤 순서로든 끝까지 실행시킬 수 있는 자원 할당 상태.
어셈블리어assembly language
기계어 명령어를 사람이 읽을 수 있는 짧은 단어(ADD·MOV 등)로 1:1 대응시킨 언어.
에이징aging
오래 기다린 작업의 우선순위를 조금씩 올려 기아를 막는 기법.
엔디언endianness
여러 바이트로 된 값을 메모리에 어떤 순서로 저장하는지에 대한 방식.
엣지 서버edge server
CDN에서 사용자 가까이에 사본을 두고 대신 응답하는 캐시 서버.
역캡슐화decapsulation
수신 측이 아래 계층부터 헤더를 한 겹씩 읽고 벗겨 위 계층에 넘기는 것.
연결 리스트linked list
각 노드가 값과 다음 노드의 주소를 들고 줄줄이 이어진 자료구조. 메모리에 흩어져 있어도 된다.
연산 코드opcode
기계어 명령어에서 무엇을 할지(더하기·옮기기 등)를 나타내는 부분.
오리진origin server
CDN이나 프록시 뒤에서 원본 콘텐츠를 가진 서비스 서버.
오버플로overflow
계산 결과가 정해진 비트 수로 담을 수 있는 범위를 넘치는 것. 값이 엉뚱하게 바뀐다.
오프셋offset
페이지 같은 단위의 시작점에서 몇 바이트 떨어져 있는지를 나타내는 값. 주소 변환 중에 바뀌지 않는다.
완전 이진 트리complete binary tree
마지막 층을 뺀 모든 층이 꽉 차 있고, 마지막 층은 왼쪽부터 채워진 이진 트리. 배열에 빈칸 없이 담을 수 있다.
요구 페이징demand paging
프로그램 전체를 미리 올리지 않고 실제로 접근한 페이지만 그때 메모리에 올리는 방식.
우선순위 큐priority queue
넣은 순서와 상관없이 우선순위가 가장 높은 것부터 꺼내는 자료구조. 보통 힙으로 만든다.
원자적 연산atomic operation
중간에 다른 실행 흐름이 끼어들 수 없이 한 번에 끝나는 연산.
원형 큐circular queue
배열의 끝과 처음을 이어 붙인 것처럼 써서, 앞에서 꺼낸 빈칸을 다시 쓰는 큐.
웨어 레벨링wear leveling
플래시 메모리 칸마다 쓰기 횟수 한계가 있으므로, 쓰기를 여러 칸에 고르게 퍼뜨려 수명을 늘리는 기법.
위상 정렬topological sort
사이클 없는 방향 그래프에서 모든 간선이 앞에서 뒤로 향하도록 정점을 한 줄로 늘어놓는 것. 선후 관계가 있는 작업 순서를 정할 때 쓴다.
유니온-파인드union-find
원소들이 어느 집합에 속하는지 빠르게 합치고 찾는 자료구조. 크루스칼 알고리즘의 사이클 검사에 쓴다.
유니캐스트unicast
한 대상에게만 보내는 전송.
유니코드Unicode
전 세계 문자에 고유 번호(코드 포인트)를 붙인 표준 문자 집합. UTF-8 등은 이 번호를 바이트로 바꾸는 방법이다.
유닉스 도메인 소켓Unix domain socket
같은 컴퓨터 안의 프로세스끼리 파일 경로 같은 이름으로 연결하는 양방향 소켓.
유효 비트valid bit
페이지가 지금 물리 메모리에 있는지 표시하는 PTE 비트. 꺼져 있으면 접근 시 페이지 폴트가 난다.
은행원 알고리즘Banker's algorithm
최대 필요량을 미리 받아 두고, 요청을 들어줘도 안전 상태일 때만 자원을 주는 교착 상태 회피 기법.
응용 계층application layer
계층 구조의 맨 위층. 웹·메일·DNS처럼 프로그램이 주고받는 메시지의 형식과 순서를 정한다.
이더넷Ethernet
유선 LAN에서 가장 널리 쓰는 물리·데이터 링크 계층 표준.
이름 있는 파이프named pipe
파일 시스템에 이름(FIFO)을 붙여 관계없는 프로세스도 열 수 있는 파이프.
이중 모드dual mode
CPU가 사용자 모드와 커널 모드 두 권한 단계를 나눠 실행하는 설계.
이중 연결 리스트doubly linked list
노드가 이전 노드와 다음 노드를 모두 가리키는 연결 리스트.
이중 해싱double hashing
개방 주소법에서 두 번째 해시 함수로 키마다 다른 간격을 정해 빈칸을 찾는 방법.
이진 세마포어binary semaphore
값을 0과 1로만 쓰는 세마포어. 소유권이 없어 뮤텍스와 다르다.
이진 탐색binary search
정렬된 데이터에서 가운데 값과 비교해 찾을 범위를 절반씩 줄여 가는 탐색. O(log n)이다.
이진 탐색 트리binary search tree
모든 노드에서 왼쪽 서브트리의 값은 전부 그 노드보다 작고, 오른쪽 서브트리의 값은 전부 그 노드보다 큰 이진 트리. 바로 아래 자식만 비교하는 규칙이 아니다.
이진 트리binary tree
모든 노드의 자식이 최대 두 개인 트리.
이진 힙binary heap
이진 트리 모양의 힙. 보통 배열에 담아 우선순위 큐를 만든다.
이차 탐사quadratic probing
개방 주소법에서 충돌 시 1², 2², 3²칸씩 점점 멀리 뛰며 빈칸을 찾는 방법.
익명 파이프anonymous pipe
이름 없이 만들어져, 파일 디스크립터를 물려받은 관련 프로세스끼리만 쓰는 파이프.
인접 리스트adjacency list
정점마다 이웃 정점 목록을 리스트로 들고 있는 그래프 표현.
인접 행렬adjacency matrix
정점 수 × 정점 수 크기의 2차원 배열에 두 정점이 이어졌는지를 적는 그래프 표현.
인증서certificate
서버의 공개 키와 도메인 정보를 담고 인증 기관이 서명한 전자 문서. 접속한 서버가 진짜인지 확인하는 데 쓴다.
인증서 체인certificate chain
서버 인증서에서 중간 CA를 거쳐 내장된 루트 인증서까지 서명으로 이어지는 사슬.
인터럽트interrupt
CPU가 하던 일을 잠시 멈추고 더 급한 일을 먼저 처리하게 하는 신호. 입출력 완료·타이머·오류 등이 일으킨다.
인터럽트 벡터interrupt vector
인터럽트 번호별로 처리 루틴의 주소를 모아 둔 표.
인터프리터interpreter
소스 코드를 한 줄씩 읽으며 바로 실행하는 프로그램.
임계 구역critical section
공유 자원에 접근하는 코드 구간. 한 번에 하나의 실행 흐름만 들어가야 한다.
ㅈ
자료구조data structure
데이터를 메모리에 어떤 모양으로 담고 어떻게 꺼낼지 정한 방법.
자원 할당 그래프resource allocation graph
누가 어떤 자원을 쥐고 무엇을 기다리는지 화살표로 그린 방향 그래프.
작업 집합working set
프로세스가 일정 기간 동안 자주 참조하는 페이지들의 집합.
장치 드라이버device driver
운영체제가 특정 장치 컨트롤러를 다룰 수 있게 해 주는 소프트웨어.
장치 컨트롤러device controller
입출력 장치에 붙어 CPU와 장치 사이의 통신을 맡는 하드웨어. 자체 레지스터와 버퍼를 가진다.
재귀recursion
함수가 자기 자신을 다시 호출해 문제를 더 작은 같은 문제로 나눠 푸는 방식.
재귀 질의recursive query
클라이언트가 리졸버에게 "최종 답을 찾아서 달라"고 보내는 DNS 질의.
재전송retransmission
보낸 데이터의 ACK가 제때 오지 않거나 손실이 의심될 때 같은 데이터를 다시 보내는 것.
재해싱rehashing
해시 테이블이 너무 차면 더 큰 배열을 만들고 모든 원소의 위치를 다시 계산해 옮기는 작업.
저널링journaling
파일 시스템을 바꾸기 전에 할 일을 로그(저널)에 먼저 적어, 도중에 전원이 나가도 일관된 상태로 복구하는 기법.
적재율load factor
해시 테이블의 전체 칸 수 대비 들어 있는 원소 수의 비율. 높아지면 충돌이 늘어난다.
적중률hit ratio
전체 접근 중 캐시 히트가 차지하는 비율. 높을수록 평균 접근 시간이 짧아진다.
전송 계층transport layer
호스트에 도착한 데이터를 알맞은 프로그램에 넘기고, 신뢰성·순서 같은 전달 방식을 정하는 층. TCP와 UDP가 여기에 속한다.
전위 순회preorder traversal
노드 자신을 먼저 방문하고 왼쪽, 오른쪽 서브트리 순서로 도는 순회.
전이중full-duplex
보내기와 받기를 동시에 하는 통신 방식.
전자 서명digital signature
개인 키로 만든 값으로, 공개 키로 검증하면 누가 만들었고 내용이 바뀌지 않았는지 확인할 수 있다.
점유 대기hold and wait
자원을 쥔 채로 다른 자원을 기다리는 것. 교착 상태의 필요조건 중 하나.
정점vertex
그래프에서 하나의 대상(도시·사람 등)을 나타내는 점.
제어 장치control unit
명령어를 해석해 ALU·레지스터·메모리에 무엇을 할지 신호를 보내는 CPU의 부품.
조건 변수condition variable
어떤 조건이 참이 될 때까지 스레드를 잠재웠다가, 다른 스레드가 신호를 주면 깨우는 동기화 도구.
좀비 프로세스zombie process
실행은 끝났지만 부모 프로세스가 종료 상태를 거둬 가지 않아 프로세스 표에 이름만 남은 프로세스.
주소 공간address space
프로세스 하나가 쓸 수 있는 메모리 주소의 전체 범위. 프로세스마다 따로 주어져 같은 주소라도 가리키는 실제 메모리가 다르다.
주소 지정 방식addressing mode
명령어의 피연산자 칸을 어떻게 해석해 실제 값을 찾을지 정한 규칙. 즉시·직접·간접·레지스터 방식 등이 있다.
중간자 공격man-in-the-middle attack
통신하는 두 쪽 사이에 끼어들어 양쪽인 척하며 내용을 엿보거나 바꾸는 공격.
중복 ACKduplicate ACK
같은 ACK 번호가 되풀이해 오는 것. 세 개가 오면 손실로 보고 빠른 재전송을 한다.
중위 순회inorder traversal
왼쪽 서브트리, 노드 자신, 오른쪽 서브트리 순서로 도는 순회. 이진 탐색 트리에서는 값이 오름차순으로 나온다.
지속 연결persistent connection
한 번 맺은 TCP 연결로 여러 HTTP 요청과 응답을 주고받는 방식. HTTP/1.1의 기본값.
지역성locality
프로그램이 최근에 쓴 데이터나 그 근처 데이터를 다시 쓰는 경향. 캐시가 효과를 내는 근거다.
지연 시간latency
요청이나 데이터가 출발해서 도착할 때까지 걸리는 시간.
진입 차수in-degree
방향 그래프에서 한 정점으로 들어오는 간선의 수.
ㅊ
참조 비트reference bit
페이지가 최근에 쓰였는지 하드웨어가 표시하는 비트. 클럭 알고리즘이 교체 대상을 고를 때 쓴다.
참조열reference string
프로세스가 접근한 페이지 번호를 차례로 늘어놓은 것. 교체 알고리즘의 폴트 수를 비교할 때 쓴다.
처리량throughput
단위 시간에 실제로 처리하거나 전달한 양.
체이닝chaining
같은 칸에 온 원소들을 그 칸에 매단 리스트로 이어 저장하는 해시 충돌 해결 방식.
체크섬checksum
데이터로 계산한 짧은 검사 값. 받는 쪽이 다시 계산해 전송 중 손상을 찾는다.
최선 노력best effort
전달하려 애쓰지만 도착·순서를 보장하지 않는 방식. IP의 전달 방식이다.
충돌 도메인collision domain
두 기기가 동시에 보내면 신호가 섞여 깨지는 충돌이 서로 영향을 미치는 범위. 스위치는 포트마다 나눈다.
ㅋ
카운팅 세마포어counting semaphore
초깃값 N만큼 동시 진입을 허용하는 세마포어.
캐시cache
한 번 가져온 데이터를 더 가까운 곳에 복사해 두고 다음 요청 때 다시 쓰는 저장소.
캐시 라인cache line
캐시가 메모리에서 데이터를 가져오고 저장하는 묶음 단위. 많은 CPU에서 64바이트다.
캐시 메모리cache memory
CPU와 메인 메모리 사이에 있는 작고 빠른 SRAM 메모리. 자주 쓰는 데이터를 복사해 두어 메모리까지 가는 횟수를 줄인다.
캐시 미스cache miss
찾는 데이터가 캐시에 없어서 더 느린 아래 계층까지 가야 하는 경우.
캐시 일관성cache coherence
코어마다 캐시가 따로 있을 때 같은 메모리 주소의 값이 코어끼리 어긋나지 않게 맞추는 것.
캐시 히트cache hit
찾는 데이터가 캐시에 있어서 바로 가져온 경우.
캡슐화encapsulation
송신할 때 각 계층이 위 계층 데이터 앞에 자기 헤더를 붙여 감싸는 것. 수신 측은 반대로 한 겹씩 벗긴다.
커널kernel
운영체제의 핵심 부분. 메모리에 늘 올라가 프로세스·메모리·파일·장치를 관리한다.
커널 모드kernel mode
커널이 실행되는 CPU 권한 단계. 모든 명령어와 메모리에 접근할 수 있다.
커넥션 풀connection pool
미리 맺어 둔 연결 여러 개를 모아 두고 빌려 쓴 뒤 돌려받아 다시 쓰는 방식. 연결을 새로 맺고 닫는 비용을 줄인다.
컴파일러compiler
소스 코드 전체를 미리 기계어나 중간 코드로 번역해 주는 프로그램.
코드 포인트code point
유니코드가 문자마다 붙인 고유 번호. U+AC00처럼 적는다.
코어core
CPU 안에서 명령어를 독립적으로 실행할 수 있는 처리 단위. 코어가 여러 개면 여러 명령 흐름을 동시에 실행한다.
쿠키cookie
서버가 응답 헤더로 브라우저에 저장시키고, 브라우저가 이후 요청마다 자동으로 다시 보내는 작은 데이터.
퀵 정렬quicksort
기준값으로 작은 쪽과 큰 쪽을 나눠 재귀로 정렬하는 방식. 평균 O(n log n), 최악 O(n²).
큐queue
먼저 넣은 것을 먼저 꺼내는(선입선출) 자료구조.
클럭clock
CPU 부품들이 박자를 맞춰 움직이게 하는 주기적인 신호. 초당 박자 수를 클럭 속도(Hz)라 한다.
클럭 알고리즘clock algorithm
페이지들을 원형으로 늘어놓고 시곗바늘처럼 돌며, 참조 비트가 꺼진 페이지를 내보내는 LRU 근사 교체 방식. 두 번째 기회(second-chance) 알고리즘이라고도 한다.
ㅌ
타임 슬라이스time slice
프로세스가 한 번에 CPU를 쓸 수 있도록 정한 시간 조각. 퀀텀(quantum)이라고도 한다.
타조 알고리즘ostrich algorithm
교착 상태가 드물다고 보고 아무 대처도 하지 않는 방식.
탐색 시간seek time
HDD의 헤드가 데이터가 있는 트랙까지 움직이는 데 걸리는 시간.
트랙track
HDD 원판 표면을 동심원으로 나눈 한 줄.
트랩trap
프로그램이 시스템 콜 등을 위해 일부러 커널로 들어가려고 일으키는 예외.
트리tree
노드들이 부모-자식 관계로 이어지고 사이클이 없는 계층 구조.
특권 명령어privileged instruction
입출력 장치 제어처럼 시스템 전체에 영향을 줘서 커널 모드에서만 실행할 수 있는 명령어.
ㅍ
파이프pipe
한 프로세스가 쓴 바이트를 다른 프로세스가 순서대로 읽는 한 방향 통신 통로.
파이프라이닝pipelining
앞 작업이 끝나기를 기다리지 않고 다음 작업을 겹쳐 흘려보내는 기법. CPU에서는 명령어 처리를 여러 단계로 나눠 겹쳐 처리하고, HTTP/1.1에서는 응답을 기다리지 않고 요청을 연달아 보낸다.
파이프라인pipeline
처리를 여러 단계로 나눠 이어 붙이고, 각 단계가 동시에 서로 다른 작업을 맡아 겹쳐 흘려보내는 구조.
파이프라인 해저드pipeline hazard
앞 명령어의 결과나 분기 방향을 기다려야 해서 파이프라인이 멈추거나 비워지는 상황.
파일 디스크립터file descriptor
프로세스가 연 파일·소켓·파이프를 가리키는 작은 정수 번호. 읽기·쓰기 시스템 콜에 이 번호를 넘긴다.
파일 시스템file system
디스크 블록을 이름 붙은 파일과 디렉터리로 보이게 해 주는 운영체제의 부분.
패리티parity
여러 데이터 조각으로 계산해 둔 검사용 값. 조각 하나가 사라져도 나머지와 패리티로 되살릴 수 있다.
패킷packet
네트워크로 보내기 위해 데이터를 잘게 나누고 주소 같은 제어 정보를 붙인 단위.
패킷 교환packet switching
데이터를 패킷으로 나눠 각각 네트워크로 보내고, 중간 장비가 패킷마다 경로를 골라 전달하는 방식.
페이지 캐시page cache
커널이 파일 내용을 메모리에 담아 두는 캐시. write()는 보통 여기까지만 쓰고 돌아온다.
페이지 테이블page table
각 가상 페이지가 물리 메모리의 어느 프레임에 있는지 적어 둔 표. 프로세스마다 하나씩 있다.
페이지 폴트page fault
접근하려는 페이지가 지금 물리 메모리에 없을 때 일어나는 예외. 운영체제가 디스크에서 그 페이지를 올린다.
페이지 프레임page frame
물리 메모리를 페이지와 같은 크기로 나눈 한 칸.
페이징paging
가상 주소 공간과 물리 메모리를 같은 크기의 조각(페이지·프레임)으로 나눠 조각 단위로 연결하는 메모리 관리 방식.
편향 이진 트리skewed binary tree
모든 노드가 한쪽 자식만 가져 한 줄로 늘어선 이진 트리.
평문plaintext
암호화하지 않은 원래 상태의 데이터. 중간에서 가로채면 내용을 그대로 읽을 수 있다.
포워드 프록시forward proxy
클라이언트 쪽에 서서, 클라이언트 대신 외부 서버에 요청하는 프록시.
포인터pointer
다른 데이터가 있는 메모리 주소를 담은 값.
포트port
통신이 드나드는 출입구. 전송 계층에서는 한 컴퓨터 안에서 어느 프로그램이 데이터를 받을지 구분하는 16비트 번호이고, 스위치·허브 같은 장비에서는 케이블을 꽂는 물리 단자를 말한다.
포화 이진 트리perfect binary tree
모든 층이 빈칸 없이 꽉 찬 이진 트리.
폰 노이만 구조von Neumann architecture
프로그램(명령어)과 데이터를 같은 메모리에 두고 CPU가 하나씩 꺼내 실행하는 구조. 오늘날 대부분의 컴퓨터가 이 방식이다.
폰 노이만 병목von Neumann bottleneck
명령어와 데이터가 CPU와 메모리 사이의 같은 통로를 지나, 메모리 속도가 전체 성능을 묶는 한계.
폴링polling
CPU가 장치의 상태를 주기적으로 계속 확인하며 일이 끝났는지 기다리는 방식.
프로그램 내장 방식stored-program
명령어도 데이터처럼 메모리에 저장해 두고 실행하는 방식. 메모리 내용만 바꾸면 다른 프로그램을 실행할 수 있다.
프로그램 카운터program counter
다음에 실행할 명령어의 메모리 주소를 담는 레지스터.
프로세스process
실행 중인 프로그램. 커널이 자기만의 메모리 공간과 자원을 따로 떼어 준다.
프로토콜protocol
통신하는 양쪽이 데이터의 형식과 주고받는 순서를 미리 맞춰 둔 약속.
프록시proxy
클라이언트와 서버 사이에서 요청과 응답을 대신 전달하는 중간 서버.
플래시 메모리flash memory
전원이 없어도 데이터가 남는 반도체 메모리. SSD·USB 메모리의 저장 소자다.
피연산자operand
명령어가 연산에 쓸 값이나 그 값이 있는 위치를 나타내는 부분.
ㅎ
하드 링크hard link
같은 inode를 가리키는 또 하나의 파일 이름. 원래 이름을 지워도 데이터가 남는다.
하드웨어 스레드hardware thread
코어 하나가 동시에 처리할 수 있는 명령어 흐름의 단위. 운영체제에는 논리 프로세서 하나로 보인다.
하버드 구조Harvard architecture
명령어용 메모리와 데이터용 메모리, 통로를 따로 두는 컴퓨터 구조.
하이퍼스레딩hyper-threading
인텔의 동시 멀티스레딩(SMT) 기술 이름. 코어 하나가 하드웨어 스레드 두 개의 명령어를 같은 박자에도 함께 처리해, 한 흐름이 기다리는 동안 쉬는 부품을 줄인다.
한정 대기bounded waiting
임계 구역에 들어가려고 기다리는 실행 흐름이 무한정 밀리지 않아야 한다는 조건.
해시 충돌hash collision
서로 다른 키가 같은 해시 값이나 같은 칸으로 가는 것.
해시 테이블hash table
키를 해시 함수로 숫자로 바꿔 배열 칸 위치를 정하고 그 칸에 값을 두는 자료구조. 평균 O(1)로 찾는다.
해시 함수hash function
임의의 입력을 정해진 크기의 값(해시 값)으로 바꾸는 함수. 같은 입력은 늘 같은 값이 나온다. 암호에 쓰는 해시 함수는 결과로 원래 입력을 되찾거나 같은 결과를 내는 다른 입력을 찾기가 매우 어렵게 만든다.
핸드셰이크handshake
본격적으로 데이터를 보내기 전에 양쪽이 몇 번 메시지를 주고받아 조건을 맞추는 절차.
허브hub
받은 신호를 연결된 모든 포트로 그대로 뿌리는 물리 계층 장비.
헤더header
데이터 앞에 붙는 제어 정보. 주소·길이·종류처럼 받는 쪽이 데이터를 처리하는 데 필요한 값을 담는다.
헬스 체크health check
로드 밸런서가 뒤쪽 서버가 살아 있는지 주기적으로 확인하는 요청.
호스트host
네트워크에 연결돼 사용자 프로그램이 돌아가는 끝단 기기. PC·스마트폰·서버 등이다.
호위 효과convoy effect
긴 작업 하나 뒤에 짧은 작업들이 줄줄이 기다려 평균 대기 시간이 길어지는 현상. FCFS에서 생긴다.
호출 스택call stack
함수를 호출할 때마다 지역 변수와 돌아갈 위치를 쌓고, 함수가 끝나면 꺼내는 메모리 영역.
혼잡 윈도우congestion window
보내는 쪽이 네트워크 상태를 추정해 스스로 정하는, 확인 없이 보낼 수 있는 양의 한도.
혼잡 제어congestion control
네트워크 중간이 막히지 않도록 보내는 쪽이 전송량을 스스로 줄이고 늘리는 것.
혼잡 회피congestion avoidance
혼잡 윈도우가 임계값을 넘은 뒤 RTT마다 1 MSS 정도씩만 늘리는 단계.
회선 교환circuit switching
통신 전에 양 끝 사이 경로의 전송 용량을 통째로 예약해 두고 쓰는 방식. 옛 전화망이 이렇게 동작했다.
회전 지연rotational latency
HDD에서 원하는 데이터 위치가 헤드 아래로 돌아올 때까지 기다리는 시간.
후속자inorder successor
중위 순회에서 어떤 노드 바로 다음에 오는 노드. 오른쪽 서브트리가 있으면 그 서브트리의 최솟값이고, 없으면 위로 올라가며 처음으로 왼쪽 자식 쪽에서 올라온 조상이다.
후위 순회postorder traversal
왼쪽, 오른쪽 서브트리를 먼저 돌고 노드 자신을 마지막에 방문하는 순회.
휘발성volatility
전원이 꺼지면 저장된 내용이 사라지는 성질. RAM은 휘발성, SSD·HDD는 비휘발성이다.
흐름 제어flow control
받는 쪽이 처리할 수 있는 만큼만 보내도록 보내는 속도를 맞추는 것.
힙heap
자료구조로는 부모가 자식보다 항상 크거나(최대 힙) 작은(최소 힙) 완전 이진 트리. 메모리 영역을 뜻할 때는 실행 중에 동적으로 할당하는 공간이다.
힙 정렬heapsort
최대 힙을 만든 뒤 루트를 끝으로 보내기를 반복하는 O(n log n) 정렬. 추가 메모리가 O(1)이다.
A
ACKAcknowledgement · 확인 응답
데이터를 잘 받았다고 상대에게 알리는 신호.
AESAdvanced Encryption Standard · 고급 암호화 표준
같은 키로 암호화·복호화하는 대칭 키 암호 방식의 표준.
AIMDAdditive Increase Multiplicative Decrease · 가산 증가 곱셈 감소
평소에는 조금씩 늘리고 손실이 나면 절반으로 줄이는 TCP 혼잡 제어의 기본 방식.
ALUArithmetic Logic Unit · 산술 논리 연산 장치
CPU 안에서 덧셈·뺄셈 같은 산술 연산과 AND·OR 같은 논리 연산을 실제로 수행하는 회로.
ARM
대부분의 스마트폰과 애플 M 시리즈 칩이 쓰는 명령어 집합 구조(ISA). 축소 명령어 집합(RISC) 계열이다.
ARPAddress Resolution Protocol · 주소 결정 프로토콜
같은 네트워크 안에서 IP 주소를 가진 기기의 MAC 주소를 알아내는 프로토콜.
ASCIIAmerican Standard Code for Information Interchange · 미국 정보 교환 표준 부호
영문자·숫자·기호 128개를 7비트 번호로 정한 초기 문자 코드.
AVL 트리AVL tree
모든 노드에서 왼쪽·오른쪽 서브트리 높이 차이가 1 이하가 되도록 회전으로 맞추는 균형 이진 탐색 트리. 만든 사람 이름(Adelson-Velsky, Landis)의 머리글자다.
B
B-Tree
노드 하나에 키를 여러 개 담고 자식도 여러 개 두어 높이를 낮게 유지하는 균형 트리. 디스크를 적게 읽어야 하는 데이터베이스 인덱스와 파일 시스템에 쓴다.
BFSBreadth-First Search · 너비 우선 탐색
시작점에서 가까운 정점부터 한 겹씩 넓혀 가며 방문하는 그래프 탐색. 큐를 쓴다.
BSTBinary Search Tree · 이진 탐색 트리
모든 노드에서 왼쪽 서브트리의 값은 전부 그 노드보다 작고, 오른쪽 서브트리의 값은 전부 그 노드보다 큰 이진 트리. 바로 아래 자식만 비교하는 규칙이 아니다.
C
CACertificate Authority · 인증 기관
서버의 공개 키가 그 도메인의 것이 맞다고 인증서에 서명해 보증하는 기관.
CASCompare-And-Swap · 비교 후 교환
메모리 값이 예상한 값과 같을 때만 새 값으로 바꾸는 일을 한 번에(원자적으로) 하는 CPU 명령. 잠금 없는 동기화의 바탕이다.
CDNContent Delivery Network · 콘텐츠 전송 네트워크
전 세계 곳곳의 캐시 서버에 콘텐츠를 복사해 두고 사용자와 가까운 서버가 응답하게 하는 네트워크.
CFSCompletely Fair Scheduler · 완전 공정 스케줄러
리눅스가 오래 기본으로 쓴 스케줄러. 각 작업이 CPU를 쓴 가상 시간을 재서 가장 적게 쓴 작업을 다음에 실행한다.
CIDRClassless Inter-Domain Routing · 클래스 없는 도메인 간 라우팅
192.168.0.0/24처럼 슬래시 뒤 숫자로 네트워크 부분의 비트 수를 적어 IP 주소 범위를 나누는 방식.
CISCComplex Instruction Set Computer · 복잡 명령어 집합 컴퓨터
명령어 하나가 여러 일을 하도록 명령어 종류와 길이를 다양하게 둔 설계 방식. x86이 대표적이다.
CORSCross-Origin Resource Sharing · 교차 출처 리소스 공유
브라우저가 다른 출처(도메인·포트)의 서버에 요청할 때, 서버가 응답 헤더로 허용 여부를 알려 주는 규칙.
CPU 버스트CPU burst
프로세스가 입출력 없이 CPU로 계산만 하는 한 구간. 스케줄링은 이 길이를 보고 순서를 정하기도 한다.
CRCCyclic Redundancy Check · 순환 중복 검사
데이터로 계산한 검사 값을 붙여, 받는 쪽이 다시 계산해 전송 중 비트 오류를 찾아내는 방식.
D
DAGDirected Acyclic Graph · 사이클 없는 방향 그래프
방향이 있고 사이클이 없는 그래프. 위상 정렬이 가능한 조건이다.
DFSDepth-First Search · 깊이 우선 탐색
한 방향으로 갈 수 있는 데까지 깊이 들어갔다가 막히면 되돌아오는 그래프 탐색. 스택이나 재귀를 쓴다.
DHCPDynamic Host Configuration Protocol · 동적 호스트 구성 프로토콜
네트워크에 들어온 기기에 IP 주소·게이트웨이·DNS 서버 정보를 자동으로 나눠 주는 프로토콜.
DMADirect Memory Access · 직접 메모리 접근
입출력 장치가 CPU를 거치지 않고 메모리와 직접 데이터를 주고받는 방식. CPU는 전송이 끝났다는 알림만 받는다.
DNSDomain Name System · 도메인 이름 시스템
example.com 같은 도메인 이름을 IP 주소로 바꿔 주는 전 세계 분산 이름 시스템.
DRAMDynamic RAM · 동적 램
주기적으로 다시 충전(리프레시)해야 데이터가 유지되는 RAM. 싸고 용량이 커서 주기억장치로 쓴다.
E
EEVDFEarliest Eligible Virtual Deadline First · 자격 있는 것 중 가상 마감 우선
리눅스 6.6부터 CFS를 대신하기 시작한 스케줄링 알고리즘. 몫보다 덜 받은 작업 가운데 가상 마감이 가장 이른 것을 고른다.
F
FCFSFirst-Come First-Served · 선입 선처리
준비 큐에 먼저 온 프로세스부터 CPU를 주는 스케줄링.
FCSFrame Check Sequence · 프레임 검사 순서
이더넷 프레임 끝에 붙는 4바이트 CRC 값. 값이 맞지 않으면 프레임을 버린다.
FIFOFirst In First Out · 선입선출
먼저 들어온 것이 먼저 나가는 순서 규칙.
FINFinish · 종료 요청
TCP에서 더 보낼 데이터가 없으니 이쪽 방향 연결을 끝내자고 알리는 플래그.
FTLFlash Translation Layer · 플래시 변환 계층
SSD 안에서 논리 주소를 실제 플래시 페이지 위치로 이어 주고, 덮어쓰기 대신 새 페이지에 쓰도록 관리하는 부분.
G
GPUGraphics Processing Unit · 그래픽 처리 장치
단순한 계산을 아주 많이 동시에 처리하도록 만든 프로세서. 그래픽과 인공지능 연산에 쓴다.
H
HOL 블로킹Head-of-Line blocking · 선두 차단
줄 맨 앞의 데이터가 늦어지면 뒤에 있는 데이터가 준비돼 있어도 함께 기다려야 하는 현상.
HTTPSHTTP Secure · 보안 HTTP
TLS로 암호화한 연결 위에서 HTTP를 주고받는 방식.
I
I/OInput/Output · 입출력
CPU·메모리 바깥의 장치(디스크·네트워크·키보드 등)와 데이터를 주고받는 일.
ICMPInternet Control Message Protocol · 인터넷 제어 메시지 프로토콜
목적지에 닿을 수 없음 같은 오류나 상태를 알리는 IP의 보조 프로토콜. ping이 이것을 쓴다.
inodeindex node · 색인 노드
유닉스 계열 파일 시스템에서 파일 하나의 메타데이터(크기·권한·데이터 블록 위치)를 담은 구조. 파일 이름은 들어 있지 않다.
IPInternet Protocol · 인터넷 프로토콜
IP 주소로 목적지를 정해 패킷을 네트워크 사이로 전달하는 네트워크 계층 프로토콜.
IPCInter-Process Communication · 프로세스 간 통신
서로 메모리가 분리된 프로세스끼리 데이터를 주고받는 방법. 파이프·공유 메모리·소켓 등이 있다.
IPv4Internet Protocol version 4 · 인터넷 프로토콜 4판
지금 널리 쓰는 IP 판. 주소가 32비트라 전부 합쳐 약 43억 개뿐이다.
IPv6Internet Protocol version 6 · 인터넷 프로토콜 6판
주소가 모자라는 문제를 풀려고 주소를 128비트로 늘린 새 IP 판.
ISAInstruction Set Architecture · 명령어 집합 구조
CPU가 알아듣는 명령어의 종류와 형식에 대한 약속. x86·ARM이 대표적이며, 같은 ISA를 쓰는 CPU끼리는 같은 기계어를 실행할 수 있다.
ISPInternet Service Provider · 인터넷 서비스 제공자
통신사처럼 가정·회사에 인터넷 연결을 제공하는 사업자.
J
JITJust-In-Time compilation · 실행 시점 컴파일
프로그램 실행 중에 자주 쓰는 코드를 그때그때 기계어로 컴파일해 빠르게 하는 방식.
JVMJava Virtual Machine · 자바 가상 머신
Java 바이트코드를 읽어 실행하는 가상 머신. CPU가 달라도 같은 바이트코드를 실행하게 해 준다.
JWTJSON Web Token · JSON 웹 토큰
사용자 정보와 만료 시각 등을 JSON으로 담고 서명을 붙인 토큰. 서버가 서명만 검증하면 사용자를 확인할 수 있어 세션 저장소 없이도 쓸 수 있다. 다만 만료 전에 강제로 무효화하려면 폐기 목록 같은 상태를 따로 관리해야 한다.
L
LANLocal Area Network · 근거리 통신망
집·사무실·건물처럼 가까운 범위의 기기들을 잇는 네트워크.
LFULeast Frequently Used · 최소 빈도 사용
사용 횟수가 가장 적은 항목을 먼저 내보내는 교체 규칙.
LIFOLast In First Out · 후입선출
가장 나중에 들어온 것이 가장 먼저 나가는 순서 규칙.
LRULeast Recently Used · 최근 최소 사용
가장 오랫동안 쓰이지 않은 항목을 먼저 내보내는 교체 규칙.
M
MAC 주소Media Access Control address · 매체 접근 제어 주소
네트워크 인터페이스 카드마다 붙은 48비트 물리 주소. 같은 네트워크 안에서 프레임을 누구에게 줄지 정할 때 쓴다.
MLFQMultilevel Feedback Queue · 다단계 피드백 큐
우선순위별 큐를 여러 개 두고, CPU를 오래 쓰는 프로세스는 아래 큐로 내려 짧은 작업이 먼저 처리되게 하는 스케줄링.
MMUMemory Management Unit · 메모리 관리 장치
CPU가 쓰는 가상 주소를 실제 메모리의 물리 주소로 바꿔 주는 하드웨어.
MSLMaximum Segment Lifetime · 최대 세그먼트 수명
세그먼트가 네트워크에 남아 있을 수 있는 최대 시간. TIME_WAIT은 이 값의 두 배를 기다린다.
MSSMaximum Segment Size · 최대 세그먼트 크기
TCP 세그먼트 하나에 실을 수 있는 데이터의 최대 크기.
MSTMinimum Spanning Tree · 최소 신장 트리
그래프의 모든 정점을 사이클 없이 잇는 간선 집합 중 가중치 합이 가장 작은 것.
MTUMaximum Transmission Unit · 최대 전송 단위
한 번에 링크로 보낼 수 있는 패킷의 최대 크기. 이더넷은 보통 1500바이트다.
N
NAPTNetwork Address Port Translation · 네트워크 주소·포트 변환
IP 주소와 포트 번호를 함께 바꿔, 여러 기기가 공인 IP 주소 하나를 나눠 쓰게 하는 NAT 방식.
NATNetwork Address Translation · 네트워크 주소 변환
공유기 같은 장비가 사설 IP 주소를 공인 IP 주소로 바꿔 주어, 여러 기기가 공인 IP 하나로 인터넷을 쓰게 하는 기술.
nginx
웹 서버이자 리버스 프록시·로드 밸런서로 널리 쓰는 오픈 소스 서버 프로그램.
NICNetwork Interface Card · 네트워크 인터페이스 카드
컴퓨터를 네트워크 선이나 무선에 연결해 주는 장치.
NVMeNon-Volatile Memory Express · 비휘발성 메모리 익스프레스
SSD를 PCIe로 직접 연결해 빠르게 쓰도록 만든 저장 장치 접속 규격.
O
OSIOpen Systems Interconnection · 개방형 시스템 상호 연결
네트워크 통신 기능을 7개 계층으로 나눠 설명하는 국제 표준 참조 모델.
P
PCBProcess Control Block · 프로세스 제어 블록
커널이 프로세스마다 만들어 두는 관리 정보 묶음. PID·상태·레지스터 값·메모리 정보 등을 담는다.
PCIePCI Express · 고속 확장 버스 규격
그래픽카드·NVMe SSD 같은 장치를 CPU 쪽에 빠르게 연결하는 확장 통로 규격.
PIDProcess ID · 프로세스 식별 번호
커널이 프로세스마다 붙이는 고유 번호.
POSIXPortable Operating System Interface · 이식 가능 운영체제 인터페이스
유닉스 계열 운영체제가 공통으로 제공할 시스템 콜·명령어 규격. 이 규격을 따르면 코드를 여러 운영체제에 옮기기 쉽다.
PTEPage Table Entry · 페이지 테이블 항목
페이지 테이블의 한 칸. 프레임 번호와 유효·보호·참조·수정 비트를 담는다.
Q
QUICUDP 기반 전송 프로토콜
UDP 위에서 연결 관리·재전송·암호화를 직접 하는 전송 프로토콜. HTTP/3가 이것을 쓴다.
R
RAIDRedundant Array of Independent Disks · 독립 디스크 중복 배열
여러 디스크를 하나처럼 묶어 속도나 안정성을 높이는 기술. 묶는 방식에 따라 RAID 0·1·5 등으로 나뉜다.
RAMRandom Access Memory · 임의 접근 메모리
실행 중인 프로그램의 명령어와 데이터를 담는 주기억장치. 전원이 꺼지면 내용이 사라진다.
RFCRequest for Comments · 인터넷 표준 문서
IETF가 인터넷 프로토콜 규격을 번호를 붙여 발행하는 문서. TCP는 RFC 9293처럼 부른다.
RISCReduced Instruction Set Computer · 축소 명령어 집합 컴퓨터
단순하고 길이가 같은 명령어만 두어 빠르게 여러 개를 처리하도록 한 설계 방식. ARM이 대표적이다.
ROMRead-Only Memory · 읽기 전용 메모리
전원이 꺼져도 내용이 남는 메모리. 부팅 초기에 실행할 펌웨어 같은 것을 담는다.
RSARivest–Shamir–Adleman
만든 세 사람 이름을 딴 공개 키 암호 방식. 큰 수를 소인수분해하기 어렵다는 점에 기댄다.
RSTReset · 연결 재설정
TCP 연결을 정상 종료 절차 없이 즉시 끊을 때 보내는 신호. 받은 쪽은 연결 오류로 본다.
RTORetransmission Timeout · 재전송 타임아웃
ACK를 기다리는 제한 시간. RTT 측정값으로 정하고, 넘기면 재전송한다.
RTTRound-Trip Time · 왕복 시간
패킷을 보내고 그 응답이 돌아올 때까지 걸리는 시간.
S
SJFShortest Job First · 최단 작업 우선
CPU 사용 시간이 가장 짧을 것으로 예상되는 프로세스부터 실행하는 스케줄링.
SMTSimultaneous Multithreading · 동시 멀티스레딩
코어 하나가 여러 명령어 흐름을 함께 처리해 쉬는 부품을 채우는 기술. 인텔 제품명은 하이퍼스레딩이다.
SRAMStatic RAM · 정적 램
리프레시 없이 전원만 있으면 데이터가 유지되는 RAM. DRAM보다 빠르지만 비싸서 캐시 메모리로 쓴다.
SRTFShortest Remaining Time First · 최소 잔여 시간 우선
남은 실행 시간이 가장 짧은 프로세스가 새로 오면 지금 실행 중인 프로세스를 멈추고 그쪽을 먼저 실행하는, SJF의 선점형 버전.
SSLSecure Sockets Layer · 보안 소켓 계층
TLS의 전신인 옛 암호화 프로토콜. 지금은 보안 결함 때문에 쓰지 않지만 이름은 관용적으로 남아 있다.
SYNSynchronize · 연결 요청
TCP에서 연결을 시작하자며 자기 시작 순서 번호를 알리는 플래그.
T
TCPTransmission Control Protocol · 전송 제어 프로토콜
연결을 맺고, 순서와 누락을 챙겨 데이터를 믿을 수 있게 전달하는 전송 계층 프로토콜.
TLBTranslation Lookaside Buffer · 변환 색인 버퍼
최근에 쓴 페이지 테이블 항목을 담아 두는 MMU 안의 작은 캐시. 주소 변환 때 메모리의 페이지 테이블까지 가지 않게 해 준다.
TLDTop-Level Domain · 최상위 도메인
도메인 이름의 맨 오른쪽 층. com·org·kr 같은 것.
TLSTransport Layer Security · 전송 계층 보안
통신 상대를 인증서로 확인하고 주고받는 데이터를 암호화하는 프로토콜. SSL의 후속이다.
TTLTime To Live · 생존 시간
데이터가 유효한 한도. IP 패킷에서는 거칠 수 있는 라우터 수, DNS에서는 결과를 캐시해 둘 수 있는 초 단위 시간이다.
U
UDPUser Datagram Protocol · 사용자 데이터그램 프로토콜
연결 없이 데이터그램을 보내기만 하는 가벼운 전송 계층 프로토콜. 순서·도착을 보장하지 않는다.
UTF-8Unicode Transformation Format 8-bit · 유니코드 8비트 변환 형식
유니코드 문자를 1~4바이트로 저장하는 인코딩. ASCII 문자는 1바이트 그대로라 호환성이 좋아 웹의 표준이 됐다.
V
VLANVirtual LAN · 가상 LAN
스위치 하나를 논리적으로 여러 네트워크로 나눠 브로드캐스트 범위를 가르는 기술.
W
WANWide Area Network · 광역 통신망
도시·국가처럼 멀리 떨어진 LAN들을 잇는 넓은 범위의 네트워크.
X
x86
인텔·AMD가 만드는 PC·서버 CPU가 쓰는 명령어 집합 구조(ISA). 복잡 명령어 집합(CISC) 계열이다.
0-9
16진수hexadecimal
0~9와 A~F 16개 기호로 수를 나타내는 방법. 2진수 네 자리를 한 자리로 줄여 쓸 수 있어 주소·바이트 값을 적을 때 쓴다.
2의 보수two's complement
음수를 나타내는 방법. 양수의 모든 비트를 뒤집고 1을 더하면 그 음수가 되며, 덧셈 회로 하나로 뺄셈까지 처리할 수 있다.
2진수binary number
0과 1 두 숫자만으로 수를 나타내는 방법. 컴퓨터는 모든 정보를 2진수로 다룬다.
