본문 바로가기

[운영체제]프로세스 스케줄링 스케줄러 프로세스를 스케줄링하기 위한 Queue 종류 Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 현재 메모리 내에 있으면서 CPU에 할당되어 실행되기를 기다리는 프로세스의 집합 Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합 스케줄러 종류 장기스케줄러(Long-term scheduler or job scheduler) 대용량 메모리(하드디스크, SSD)에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 ready queue 로 보낼지 결정 메모리와 디스크 사이의 스케줄링을 담당 단기스케줄러(Short-term scheduler or CPU scheduler) CPU 와 메모리 사이의 스케줄링을 담당 Ready..
[DB] Connection pool(커넥션풀)이란? Connection Pool(커넥션풀) Database에서 데이터를 얻어 오기 까지 가장 느린 부분은 웹 서버에서 DB서버에 처음 연결 후 Connection 객체를 생성하는 부분 웹 애플리케이션은 HTTP 요청에 따라 Thread를 생성하고 DB 서버로부터 데이터를 얻어옴 DBCP(Database Connection Pool)를 이용하면 DB Connection 객체를 생성하는 부분에 대한 비용과 시간을 줄이고, 네트워크 연결 부하 감소 Connection pool은 Connection을 여러 개 생성해 두어 저장해 놓은 공간(캐시), 또는 이 공간의 Connection을 필요할 때 꺼내 쓰고 반환하는 기법을 뜻함 롤백 기능은 connection 객체에서만 가능함, 브라우저의 각 요청마다 개별 db c..
데이터 바인딩(정적 바인딩, 동적바인딩, 단방향, 양방향 바인딩) 바인딩 어떤 구성요소의 성격이나 값을 확정하는 것, 주로 변수의 자료형, 호출되는 함수의 이름의 타입이 결정되는 과정 정적바인딩과 동적바인딩 정적바인딩(static binding) 자료형이 있는 컴파일 언어(C 등)가 컴파일 되어 기계어로 처리 되기 전에 이루어지는 과정 어떤 변수의 자료형과 함수이름등이 존재 해야하고 이러한 변수, 함수의 정적 바인딩이 문제 없이 처리되면 컴파일 오류가 없이 컴파일이 되고, 실행 파일이 생성 동적바인딩(dynamic binding) 컴파일 타임이 아닌 런타임(실행중에)때 자료형이 결정되는 언어 즉, 인터프리터언어에서 주로 처리되는 방법 따로 컴파일이라는 과정이 없으므로 실행과정 중에 문법적인 오류가 발생할 수 있음 단방향과 양방향바인딩 데이터 바인딩 이란 두 데이터 혹은..
[자료구조]해시테이블, hash function Hash Table Key와 Value를 1:1로 연관지어 저장하는 자료구조 (연관배열 구조) 왜 필요한가?(장점) 예를 들어 key : 이름, value : 전화번호의 자료를 저장할 때 특정 이름으로 전화번호를 찾으려면 배열에서는 선형탐색(O(n))을 해야 함 해시테이블을 이용하면 특정 이름(키)로 자료를 찾을 때 O(1)로 찾을 수 있음 배열의 인덱스를 사용하기 때문에 빠른 검색, 삽입, 삭제 (O(1)) 작동 방식 특별한 알고리즘을 이용하여 저장할 데이터와 연관된 고유한 숫자를 만들어 낸 뒤 이를 인덱스로 사용 Key -> Hash Function -> Hash Function 결과 = Hash 예를 들어 크기 5인 해시테이블에 자료를 저장할 때 키 -> 해시함수 -> 해시값 % 5 를 이용해 인덱..
[DB] 데이터베이스 sharding, clustering, replication 공통점, 데이터 베이스를 여러개로 만드는 것 데이터베이스 서버 - 데이터베이스 스토리지 Clustering(클러스터링) 서버가 죽을 경우를 대비하여 서버를 여러개로 만드는 것 성능 향상, 하나가 죽어도 다른 하나로 운영하면 됨 하나의 스토리지를 공유해 병목현상이 생길 수 있음 Active, Active / Active, Stand by : 비용이 저렴하지만 standby -active 전환시 시간이 걸림 Replication Master db, Slave db : 스토리지까지 복제 Salve db를 read 용으로 써서 부하를 분산시키는 용도로 사용하기도 함 Sharding(샤딩) 데이터가 많아져 검색이 느려질 때 테이블을 로우 단위로 나눠 샤드로 나누어 저장 어떻게 분산할 것인지, 어떻게 읽을 것인지 ..
[운영체제]리눅스 파일시스템과 메모리관리 리눅스 파일시스템 파일이란? 컴퓨터에서 의미 있는 정보를 담은 논리적인 단위, 실행파일과 데이터파일로 나뉨 파일시스템 : 파일들을 관리하기 위한 시스템 파일의 할당 블록 : 하드디스크와 데이터를 주고받을 때 사용되는 논리적인 단위보통 4kb) 메타데이터(inod 블록으로 저장), 데이터 파일의 접근, 파일의 경로, 파일의 이름 디렉토리도 파일의 일종 링크 : 다른 디렉토리에서 같은 파일에 접근, 심볼릭 링크(원본파일 경로 저장, 윈도우 바로가기), 하드링크(원본과 구분이 어려움) 파일의 보호 : Access control List, 접근권한 비트(9비트로 관리)→소유자,그룹,기타, rwxr-xr—, 111101100, 754 파일의 일관성 fsck, file system checker- 복구가 불가능한 ..
[자료구조]배열과 연결리스트 Array vs Linked List 배열은 고정된 양의 데이터를 임시로 저장해두고 수시로 데이터에 접근하는 경우에 유용하게 사용될 수 있으며, 연결리스트는 데이터의 추가와 삭제가 빈번하게 일어나거나, 복잡한 형태의 자료구조를 만들 때 유리하다. 배열 논리적 저장 순서와 물리적 저장 순서가 일치해 인덱스(index)로 해당 원소(element)에 접근할 수 있다. 인덱스 값을 알고 있으면 Big-O(1)로 접근할 수 있다. 하지만 원소를 삭제, 삽입시, 배열의 연속적인 특징은 깨진다. 따라서 삭제 및 삽입시 해당 인덱스보다 큰 인덱스를 갖는 원소들을 이동해야하고 이 경우의 시간 복잡도는 O(n)가 된다. 데이터의 삽입 또는 삭제 등의 연산이 빈번하게 발생하여 데이터의 수가 다이나믹하게 변하게 되는 자료구..
자바스크립트 비동기 처리 -callback, promise, async/await 콜백(Callback) 인자로 받아들인 함수를 다시 호출하는 기능을 callback 즉 시간이 오래걸리는 작업이 있을 때 이 작업이 완료된 후에 처리해야 할 일을 콜백으로 지정하면 해당 작업이 끝났을 때 미리 등록한 작업을 실행하도록 할 수 있음 callback hell : 콜백함수가 늘어나면 늘어날 수록 코드의 깊이가 늘어나 더이상 헤어날 수 없다는 자조성 용어 코드 관점에서 콜백함수는 중첩으로 들여쓰기(nesting)가 반복되어 가독성이 떨어짐 각 콜백함수에서 에러 핸들링을 해주어야 함, 에러처리를 하지 않으면 어디서 에러가 발생한지 알기 어려움 콜백의 문제 신뢰성 : 콜백은 제어권의 주체가 바뀜, 콜백 내부에서 예외처리는 가능해도 비동기요청-콜백함수 흐름은 제어가 어려움 이에 Promise가 등장,..