System calls: 시스템 콜, 시스템 호출소프트웨어 인터럽트의 한 종류 운영체제는 커널 모드와 사용자 모드로 나뉘어 구동CPU는 사용자 애플리케이션이 시스템을 손상시키는 것을 방지하기 위해 2가지 모드 제공CPU에 있는 Mode bit로 모드를 구분하여 0은 커
인터럽트: CPU 프로그램 실행 시 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요한 경우, 마이크로프로세서에게 알려 처리할 수 있도록 하는 것필요 이유: 입출력 연산이 CPU 명령 수행속도보다 현저히 느림 > CPU가 입출력 처리를 기다릴 시간이 없기 때
프로세스: 실행중에 있는 프로그램 의미 스케쥴링의 대상이 되는 작업/task과 같은 의미 운영체제가 자원을 할당하는 단위이기도 함최소 하나의 스레드 가짐: 스레드 단위로 스케쥴링하드디스크에 있는 프로그램을 실행하면 실행을 위해 메모리 할당이 이루어짐 > 할당된 메모리
프로세스 주소공간: 프로세스가 메모를 할당받으면 자신만의 방법으로 메모리를 관리하기 위해 이 공간을 어떤 구조로 관리함메모리는 한정되어 있음 > 프로세스는 메모리 절약 시도 영역:Stack 영역:지역변수 & 매개변수 저장함수의 호출과 함께 할당 (컴파일 타임)함수 호출
스케쥴러: 어떤 프로세스에게 자원을 할당하는지를 결정하는 운영체제 커널의 모듈장기 스케쥴러 (작업 스케쥴러)어떤 프로세스를 준비큐에 넣을 것인지 결정디스크에서 어떤 프로그램을 가져와 커널에 등록 (준비큐에 등록)할지 결정디스크에서 하나의 프로그램을 가져와 커널에 등록하
Context: 프로세스의 상태와 관련된 레지스터의 집합Context switching: 레지스터의 값을 교체하는 것싱글코어 CPU는 한번에 하나의 프로세스만 처리할 수 있음 그 프로세스가 동작하는 동안 레지스터의 값들은 모두 현재 실행중인 프로세스와 연관있음 > 다른
CPU 이용률, CPU utilization시간당 CPU를 사용한 시간의 비율프로세서를 실행상태로 항상 유지하려고 해야 함처리율, Throughput시간당 처리한 작업의 비율단위 시간당 완료되는 작업 수가 많도록 해야 함반환시간, Turnaround time프로세스가
임계 구역, Critical section: 여러 프로세스/스레드가 작업을 수행하면서 공유된 자원을 건드리게 될 수 있는데, 프로그램 코드 상에서 공유 자원에 접근하는 부분임계 구역에 여러 프로세스/스레드가 함부로 접근할 수 없도록 관리하는 방식: 세마포어, 뮤텍스 뮤
Deadlock: 두개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태상호배제, Mutual Exclusion: 자원은 한번에 한 프로세스만 사용가능함레이스 컨디션의 문제를 해결하기 위해 두 개 이상의 프로
컴파일: 소스를 기계어로 번역컴파일러: 고급언어로 작성된 프로그램을 기계어로 번역하는 것개발자가 고급언어로 프로그래밍한 코드를 CPU가 이해할 수 있게 변환해주는 것빌드: 컴파일을 포함해 프로그램을 실행 가능한 파일로 만들어주는 과정고급언어 > 어셈블리어 > 기계어 >
Inter-process Communication프로세스끼리 직접적으로 대화하지 않음 프로세스들이 서로 공간을 쉽게 접근하면 프로세스의 데이터/코드가 다른 프로세스에 의해 쉽게 바뀔 수 있음프로세스끼리 통신이 필요한 이유성능을 높이기 위해 어떤 로직을 하나의 프로세스로
Thread safe: 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수/변수/객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도
개념병렬 작업 처리 증가는 스레드 개수 증가로 직결. 스레드 생성/스케쥴링으로 인해 CPU가 바빠져 메모리 사용량 증가 애플리케이션 성능 저하 가능성병렬 작업의 폭증으로 인한 스레드의 폭증을 막으려면 스레드 풀 사용 필요 스레드 생성/수거에 대한 비용 방지 동작 원리
캐시 메모리: 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 범용 메모리 CPU에서는 CPU 고어(고속)와 메모리(CPU에 비해 저속) 사이에서 속도차에 따른 병목현상 완화 메인 메모리에서 자주 사용하는 프로그램과 데이터를 저장해둬 속도를
연속할당 방식: 프로세스를 메모리에 올릴 때 주소 공간을 분할하지 않고 물리적 메모리의 한 곳에 연속적으로 적재하는 방식고정 분할 방식: 물리적 메모리를 주어진 개수만큼의 영구적 분할로 미리 나눠두고 각 분할에 하나의 프로세스를 적재해 실행시킬 수 있도록분할의 크기는
프로세스가 원활하게 수행되기 위해서는 일정 수준 이상의 페이지 프레임을 물리적 메모리에 할당받아야 함프로세스가 동작하는데 필요한 최소한의 프레임을 받지 못하면 성능 문제 발생 Thrashing: 프로세스가 집중적으로 사용하는 페이지들의 집합이 메모리에 한꺼번에 적재되지
메모리: 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치주기억장치(내부 기억장치)와 보조 기억장치(외부 기억장치)로 분류주기억장치: 레지스터, 캐쉬 등보조 기억장치: SSD, HDD 등가상 메모리 등장 배경사용가능한 RAM 용량보다 가장 큰 실행 애플
프로그램을 실행하기 위해 코드를 디스크에서 메인 메모리로 적재하는 과정에서 단편화는 불가피함단편화가 잦으면 사용하지 못하는 메모리 공간이 많아져 낭비 최초 적합, 최적 적합, 압축 등으로 단편화를 해결할 수도 있지만 메모리 계산의 비용이 적은 페이징/세그멘테이션이 유용
페이지 테이블은 메인 메모리에 존재해서 CPU는 메인 메모리에 최소 2번은 접근해야 원하는 데이터를 얻을 수 있음1\. 페이지 테이블에 접근2\. 페이지 테이블을 기반으로 실제 메모리로 접근이 접근을 줄이고자 TLB 사용TLB(Translation Lookaside B
소프트웨어 기반 해결책이 최신 컴퓨터 아키텍쳐에서 작동하지 않을 수 있음 > 하드웨어적 해결 필요 메모리 베리어, 메모리 장벽메모리 모델: 컴퓨터 아키텍처가 응용 프로그램에게 메모리를 어떻게 제공하는가에 대한 모델강한 순서, strongly ordered: 한 프로세서
페이지 교체 알고리즘, Page Replacement Algorithm: 페이지 폴트 발생 시 backing store에서 해당 페이지를 찾아 빈 프레임에 로딩해야 하는데, 이 때 빈 프레임이 없을 경우 희생당할 프레임을 고르는 알고리즘목표: page-fault 발생
File Descriptor, FD: 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값리눅스/유닉스 계열의 시스템에서 프로세스가 파일을 다룰 때 사용하는 개념일반적으로 0이 아닌 정수값을 가짐프로세스가 실행 중에 파일을 열면 커널은 해당 프로세스의 file de
호출되는 함수의 작업 완료 여부를 신경쓰는지의 여부동기: 함수 A가 함수 B를 호출한 뒤, 함수 B의 리턴값을 계속 확인하면서 신경 씀비동기: 함수 A가 함수 B를 호출할 때 콜백 함수를 함께 전달해서, 함수 B의 작업이 완료되면 함께 보낸 콜백 함수를 실행함함수 A는
복잡도가 낮을수록 좋은 알고리즘알고리즘 성능을 평가하기 위한 척도시간 복잡도: 특정한 크기의 입력에 대해 알고리즘의 수행 시간 분석공간 복잡도: 특정한 크기의 입력에 대해 알고리즘의 메모리 사용량 분석 (RAM/하드디스크 메모리 등)시간과 공간은 반비례적 경향이 있는데
링크드 리스트: 노드를 연결시킨 자료구조데이터를 갖고 있는 데이터의 묶음장점길이가 가변적임 (배열의 단점 보완)불필요하게 공간을 차지하지 않음 (배열의 단점 보완)단점노드 탐색시 시간 복잡도 문제 배열: 연속된 메모리 공간에 존재링크드 리스트: 메모리 상 떨어져 있는
Last-in, First-out 방식top으로 정한 곳을 통해서만 접근 가능top은 가장 위의 자료 (가장 최근 들어온 자료)를 가르킴push: top을 통해 삽입하는 연산pop: top을 통해 삭제하는 연산(예) 웹 브라우저 방문기록, 역순 문자열 만들기, 실행 취
해시 테이블key: 고유값hash function의 inputhash function: key를 고정된 길이의 hash로 변경해주는 역할서로 다른 key가 hashing 후 같은 값이 나올 수 있음 > 해시 충돌해시 충돌은 발생확률이 낮을 수록 좋음해시 충돌이 균등하게
자료를 계층적으로(hierarchically) 저장하기 위한 자료구조노드와 링크로 구성모든 노드는 부모-자식 관계root node: 부모가 없는 노드 (구조상 가장 높은 곳의 노드)leaf node(단말 노드): 자식이 없는 노드edge: 부모와 자식을 잇는 선sibl
Priority Queue: 우선순위 개념을 도입한 큐큐인데 우선순위가 높은 데이터 먼저 삭제됨 - 배열/연결리스트/힙으로 구현 가능힙: 완전 이진 트리(Complete BT)의 일종종류: 최대 힙(Max heap), 최소 힙(Min heap)Max heap: 부모 노
Balanced Binary Search Tree, 균형 이진 탐색 트리: 왼쪽 서브트리와 오른쪽 서브트리의 height 차이가 1 이하인 이진트리노드의 삽입/삭제 시에도 높이 차이를 유지해야 함종류: Red-black 트리, AVL 트리트리의 모든 노드는 레드 or
특징크기 작은 배열에 적합O(1) 공간복잡도stable과정첫 원소부터 시작해서 다음 원소와 비교하여 swap다시 처음부터 하나씩 비교하며 swap더이상 swap할게 없을 때까지 반복특징작은 배열에 적합O(1) 공간 복잡도가장 작은 원소를 찾아 첫 인덱스의 값과 swap
그래프: 노드와 그 노드를 연결하는 간선을 모아 놓은 자료구조정점(vertex): 위치. aka 노드간선(edge/link/branch): 위치 간의 관계. 노드를 연결하는 선인접 정점(adjacent vertex): 간선에 의해 직접 연결된 정점정점의 차수(degre
그래프에서 최단거리 구하는 방법BFS/너비 우선 탐색시작 노드로부터 인접한 노드 먼저 방문모든 노드들의 최단 거리 계산용도: 두 노드 사이의 최단 경로/임의의 경로가 필요한 경우트리에서 사용 가능과정시작 노드 방문방문한 노드는 체크 (큐에 방문한 노드 삽입)큐에서 꺼낸
Spanning Tree (신장 트리): 그래프 내의 모든 정점을 포함하는 트리그래프의 최소 연결 부분 그래프최소 연결: 간선의 수가 최소n개의 정점을 갖는 그래프의 최소 간선 수는 n-1n-1개의 간선으로 연결하면 필연적으로 트리 형태가 됨즉, 그래프에서 일부 간선을
java.concurrent 패키지의 thread safe 자료구조: Hashtable, ConcurrentHashMap, AtomicInteger, BlockingQueuesynchronized 키워드 이용다수의 스레드가 하나의 자원을 접근하면 하나의 스레드만 작업을
Trie: 문자열 저장/탐색을 위한 트리 형태의 자료구조DFS으로 검색하면 단어 찾을 수 있음루트 노드: 비어있음나머지 노드: 집합에 포함된 문자열의 prefix부터 시작해서 서브트리로 문자열 형성리프 노드: 문자열의 끝을 나타냄장점: 문자열 탐색/삽입이 빠름삽입: O
이진 탐색: 데이터가 정렬된 배열에서 특정값을 찾아내는 알고리즘배열의 중간에 있는 임의의 값을 선택해 찾고자하는 값과 비교찾고자 하는 값보다 중간 값이 작으면 중간 값을 기준으로 좌측의 데이터 대상으로 다시 탐색찾고자 하는 값보다 중간 값이 크면 중간 값을 기준으로 우
탐욕법현재 상황에서 지금 당장 좋은것만 고르는 방법현재의 선택이 나중에 미칠 영향은 고려하지 않음최적의 답이 보장되지 않음용도애초에 완벽한 답이 필요 없을 때그리디 알고리즘이 최적의 답을 보장해줄 때Dynamic Programming하나의 큰 문제를 여러 개의 작은 문
컴퓨터의 4가지 핵심 부품: CPU, 메모리, 보조기억장치, 입출력장치Central Processing Unit (중앙처리장치): CPU내에 다음과 같은 여러 장치 존재산술논리연산장치 (Arithmetic Logic Unit/ALU)계산을 도맡아 수행제어 장치 (Con
웹 브라우저가 여태 서버에 요청한 적 없는 리소스를 가져오려고 할 때, 서버와 브라우저는 HTTP 요청과 응답을 주고 받는데, HTTP 응답에 포함된 Cache-Control 헤더에 받은 값으로 리소스의 생명주기가 결정된다서버의 Cache-Control 헤더의 값으로
출처: XESCHOOL사용자가 Controller를 조작한다Controller는 Model을 통해서 데이터를 가져온다Model에서 가져온 데이터를 바탕으로 View를 제어해서 사용자에게 전달한다데이터베이스, 초기 정의 상수, 초기화값, 변수 등데이터와 정보를 가공하는
Container란? 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함하는 소프트웨어 패키지. 운영체제를 가상화해서 어느 환경에서나 애플리케이션을 실행할 수 있음!Docker란? 애플리케이션을 개발, 배포 및 런하는 오픗 플랫폼. 컨테이너의 라이프사이클을 관리할
CI/CD (Continuous Integration/Continuous Deployment): 소프트웨어 개발 과정에서의 효율성과 신속성을 극대화하는 자동화된 프레임워크 제공지속적 통합, 지속적 전달, 지속적 배포: continuous integration, cont
사용자 증가 등으로 인해 서버를 늘려야 한다면 스케일 업과 스케일 아웃으로 해결할 수 있다서버는 동시에 처리할 수 있는 요청의 수에 한계가 있음사용자 수 증가 => 동시 요청 수 증가 => 서버의 처리 능력을 초과할 수 있음서버를 늘려서 늘어난 요청을 효과적으로 분산
슬라이싱으로 값을 할당하면 새로운 id가 부여되어 서로 영향을 받지 않는다
Web Server 웹서버는 웹사이트의 코드와 데이터를 호스팅하는 기술이다. 블로그, 헤더 이미지 등 정적인 콘텐츠를 호스팅한다. 브라우저에 입력하는 URL이 곧 이 웹서버의 주소 식별자고, 이 URL를 통해 브라우저는 웹서버와 통신한다. 브라우저는 URL을 사용해
디자인 패턴은 개발하면서 반복적으로 발생하는 문제들에 대한 해결책을 제시한다.선배 개발자도 현재 우리가 만난 문제와 똑같거나 비슷한 문제를 겪고, 해결하는 과정에서 이를 패턴으로 만들어간 것이다.디자인 패턴은 용도에 따라 분류할 수 있다: 생성, 행동, 구조객체 인스턴
인증은 사용자가 누구인지 확인한다. 인가는 사용자의 접근 권한을 확인한다.(예) 공항에서 여권을 보여주어 나를 인증할 수 있고, 탑승 게이트에서는 내 탑승권을 보여서 내 권한을 입증해야 탑승을 인가 받을 수 있다.OAuth는 인터넷 사용자들이 비밀 번호를 제공하지 않고