기술면접30 [데이터베이스] MongoDB란 [MongoDB] C++로 작성된 오픈소스 문서지향적 크로스 플랫폼 데이터베이스입니다. 뛰어난 확장성과 성능을 보여줍니다. [NoSQL] 기존의 RDBMS의 한계를 극복하기 위해서 만들어진 데이터 저장소입니다. RDBMS에 있는 JOIN나 정규화가 없습니다. [문서(Document)란?] Document란 RDBMS의 record와 비슷한 개념입니다. 한 개 이상의 key-value 짝으로 이뤄져 있습니다. JSON 형식과 굉장히 비슷한 구조로 보입니다. 도큐먼트는 동적 스키마를 가지고 있습니다. 같은 Collection의 Document끼리라도 다른 스키마를 가지고 있을 수 있습니다. 예시 _idsms 12bytes의 값으로 RDBMS의 기본키 역할을 합니다. 첫 4bytes는 현재 timestamp,.. 2022. 3. 2. [운영체제] CPU 스케줄링 CPU Scheduler, Scheduling Algorithm CPU Scheduling 단기 스케쥴링이라고도 한다. 단기 스케쥴러(CPU Scheduling)을 리마인드 해보자 메모리와 CPU 사이의 스케쥴링을 담당하는 것으로 어떤 프로세스를 실행(Running) 상태로 전환할 지 결정하는 것이다. 선점과 비선점 선점 (Preemptive) : 자리 뺏기 가능, 누가 앉아서 먼저 자리에 앉아서 작업하고 있는데 그게 끝나든 안끝나든 상관없이 자리를 뺏어서 내 작업 실행하기 즉, 새치기 가능한 방식 비선점 (Non-Preemptive) : 절대 안뺏기는 방식 즉, 새치기 절대 불가능 CPU Scheduing Algorithm First-Come, First-Served (FCFS) 먼저 온 놈 먼저 처리.. 2022. 3. 2. [운영체제] 데드락 교착상태 개념과 조건 교착상태의 개념과 조건 교착상태(Deadlock)란? 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태. 한정된 자원을 여러 곳에서 사용하려고 할 때 발생한다. 교착상태 발생의 4가지 조건 교착상태가 발생하기 위해서는 다음의 네가지 조건이 충족되어야 하는데, 이 네가지 조건중 하나라도 충족되지 않으면 교착상태가 발생하지 않는다. 상-점-비-환 상호배제 : 자원은 한 번에 하나의 프로세스만 사용할 수 있어야 한다. 점유대기 : 이미 자원을 사용중인데, 다른 프로세스가 사용중인 자원을 사용하기 위해 대기하고 있는 상태의 프로세스가 존재해야 한다. 즉, 미리 줄 서있어야 한다. 비선점 : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없다. 즉, 새치기 금지! 환형대기(순환대기).. 2022. 3. 2. [운영체제] 스케줄러 Scheduler Scheduler 스케쥴러란? 시스템이 실행하고자 할 때 CPU를 프로그램에게 할당하는 과정 프로세스(작업) 실행을 위한 일종의 계획표다. 계획표의 종류는 3가지이다. Scheduling Queue(스케쥴링 큐)란? 스케쥴링을 위한 큐. 즉, 프로세스를 관리하기 위한 큐 Job Queue (Batch Queue): 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 현재 메모리 내에 존재하면서 CPU를 점유해서 실행되기를 기다리는 프로세스의 집합 Device Queue : Device I/O(Input, Output) 작업을 대기하고 있는 프로세스의 집합 스케쥴러의 종류 장기 스케쥴러, Job Scheduler *degree of multiprogramming의 제어 디스크와 메모리 사.. 2022. 3. 2. [운영체제] 사용자 수준 스레드와 커널 수준 스레드 사용자 수준 스레드와 커널 수준 스레드 쓰레드는 뭐니? 프로세스 내 작업의 단위를 말함 하나가 될 수도 있고, 여러개(멀티쓰레드)가 될 수도 있음! 커널은 뭐니? 컴퓨터와 전원을 켜면 운영체제는 이와 동시에 수행된다. 또한, 소프트웨어가 컴퓨터 시스템에서 수행되기 위해서는 메모리에 그 프로그램이 올라가 있어야 한다. 마찬가지로 운영체제 자체도 소프트웨어이기 때문에 전원이 켜짐과 동시에 메모리에 올라가야 한다. 하지만, 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심함 → 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다. 이 때 메모리에 상주하는 운영체제의 부분을 커널이라.. 2022. 3. 2. [운영체제] Thread-safe란? Thread-safe 멀티 스레드 환경에서 여러 스레드가 같은 공유자원에 접근할때 의도한 대로 동작하는 것 Thread-safe하다라고 표현한다. 공유 자원 접근에 대한 임계 영역을 동기화로 제어해야 한다. - 상호배제라고 부른다. 동기화 방법은 뮤텍스, 세마포어가 있다. 2022. 2. 28. [운영체제] 캐시 메모리 매핑, 교체, 지역성 캐시 메모리란 주기억장치에서 자주 사용하는 프로그램 or 데이터를 저장해 속도를 빠르게 하는 메모리 주기억장치와 캐시 기억 장치 사이에서 정보 옮기는 행위를 사상(매핑)이라고 함 매핑의 3가지 방법 직접 매핑: 메인 메모리를 여러 구역으로 분할하여 캐시 슬롯과 매핑 장점: 절차가 단순하고 신속 단점: 높은 캐시 미스율 연관 매핑: 메인 메모리의 각 블록이 캐시 어느 슬롯이던 적재 가능 장점: 지역성 높은 접근 시 캐시 적중률이 높다. 단점: 구현이 어려워 구현 비용이 상승한다. 집합 연관 매핑: 캐시와 메모리가 M대 1로 대응한다. 장점: 앞의 두 가지 매핑 방법의 장점을 수용 단점: 구현 비용이 비쌈 캐시 메모리 교체 알고리즘의 종류 Random - 교체될 페이지를 임의 선정 - 오버헤드가 적음 FIF.. 2022. 2. 28. [운영체제] 멀티 프로세스와 멀티스레드 멀티 스레드 멀티 스레드 한 프로세스 내에서 여러 스레드를 두는 것 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 스택을 제외한 자원을 공유하기 때문에 자원의 효율성 증대 프로세스 생성 비용보다 스레드 생성 비용이 적다. 프로세스 간 컨텍스트 스위칭 시 오버헤드가 크지만 스레드는 메모리를 공유하기 때문에 자원 소모가 적다. 처리 비용 및 응답 시간 단축 프로세스 간 통신(IPC)보다 스레드 간의 통신 비용이 적다. 스레드 간의 전환 속도가 훨씬 빠르다. 멀티 스레드 사용 시 주의할 점 힙 영역을 공유하기 때문에 힙 영역 자원 사용 시 동기화 필수 동기화를 위한 락이 과도하게 사용되면 성능이 저하된다. 일부 스레드가 종료되면 프로세스 전체가 종료될 수 있다. 2022. 2. 25. [운영체제] 프로세스와 스레드 차이 프로세스와 스레드의 차이 프로세스 현재 실행 중인 프로그램 메모리 위에 적재되어 cpu의 할당을 받을 수 있다. 동적 메모리인 힙을 할당받을 수 있다. 프로세스의 구조 text(code): 일반적인 코드 data: 변수 및 초기화된 데이터 stack: 임시 데이터(함수 호출 및 로컬 변수 등) heap: 코드 내에서 동적으로 생성되는 데이터 프로세스는 다른 프로세스의 자원에 접근할 수 없다. 역할에 따른 구분 사용자 프로세스 사용자 코드를 수행하는 프로세스 커널 프로세스 모든 메모리와 프로세스의 명령에 액세스할 수 있는 프로세스 실행 순서 제어 및 다른 프로세스의 접근 제어 사용자 프로세스 생성 프로세스의 상태 변화 New: 프로그램이 메인 메모리에 할당 Ready: 프로그램 초기화 등 모든 준비를 마친.. 2022. 2. 25. 운영체제 10장 가상메모리 페이지 교체 알고리즘 가상 메모리 물리 메모리의 한계를 극복하기 위한 기술 Demanding Paging 백업 공간을 두고 프로세스가 요구하는 필요한 페이지만 메모리 위에 올리는 것이다. 백업 공간과 메모리 사이의 스와핑이 발생하기 때문에 페이지 부재 시 지연이 발생한다. Prepaging 미리 사용될 것 같은 페이지를 메모리에 올려두는 방식이다. 그러나 페이지 부재가 발생할 때 많은 지연이 발생하게 된다. Page Fault 페이지 부재는 CPU가 접근하려는 페이지가 메모리 위에 없는 경우이다. 처리 과정 해당 페이지 확인 valid bit==0이면 cpu에 인터럽트 신호를 보내고 내부의 해당 ISR(인터럽트 서비스 루틴)- 인터럽트 핸들러가 관리하는 인터럽트 발생시 행동 루틴 - 로 간다. 디스크를 탐색해 페이지를 찾는다.. 2022. 1. 19. 운영체제 9장 정리 - 메모리 관리 메모리 관리 스와핑 일시적으로 메모리가 부족한 프로세스를 백업 저장소로 스왑하고 여유가 있을 때 메모리로 불러와 지속적인 실행이 가능하게 하는 것입니다. 하드 디스크를 통한 스왑 방식이기 때문에 상대적으로 속도가 느린 단점이 있습니다. 논리 주소와 물리 주소와의 차이 논리 주소는 물리적 주소와 매핑하는 주소로 CPU에 의해 생성된다. 물리 주소는 메모리 주소 레지스터에 의해서 실질적 할당되는 주소 체계이다. 논리주소를 물리적 주소로 매핑할 때 MMU를 활용한다. 고정 파티션과 가변 파티션의 차이 고정 파티션은 고정된 저장 공간을 가지는 것이며 가변 파티션은 초기 분할 이후에도 원하는 방식으로 분할할 수 있다. 그러나 고정 파티션은 메모리 사용이 비효율적이게 돼 내부 단편화가 발생할 수 있다. 불균일 사이.. 2022. 1. 19. 운영체제 8장 정리 데드락 DeadLock 교착상태 Dead Lock 교착상태 교착 상태란 다른 프로세스가 자원을 계속 해서 점유하고 기다리는 프로세스가 자원을 요구하는 과정에서 무한정으로 대기하는 것을 말합니다. 데드락 충족 조건 1. 상호 배제 자원을 여러 프로세스가 이용하려 할 때 2. 점유 대기 프로세스가 하나의 자원을 점유하면서도 다른 프로세스에 할당된 자원을 점유하려 할 때 대기를 안 할때 3. 비선점 다른 프로세스가 자원을 선점해서 빼았지 않을 때 4. 순환 대기 점유 대기 상태의 프로세스가 서로가 될 때 데드락의 해결 방법 1. 데드락 예방 상호 배제 - 하나의 자원은 하나의 프로세스만 이용하게 한다. 점유 대기 - 선점 스케줄링 방식의 프로세스가 자원 할당을 요청할 때 어떤 것이라도 자원을 놓을 수 있어야 한다. 비선점 - 공유 자원을 프.. 2022. 1. 19. 이전 1 2 3 다음