728x90

전체 글 260

[운영체제] 스케줄러

스케줄러 프로세스를 스케줄링하기 위한 Queue에는 3가지가 존재함 1) Job Queue : 현재 시스템 내에 있는 모든 프로세스들의 집합 2) Ready Queue : 현재 메모리 내에 있으면서 CPU를 할당받아 실행되기를 기다리는 프로세스들의 집합 3) Device Queue : Device I/O작업을 대기하고 있는 프로세스의 집합. 각각의 Queue에 프로세스를 넣고 빼는 스케줄러도 3가지가 존재함 장기 스케줄러 / 단기 스케줄러 / 중기 스케줄러 장기 스케줄러 (Long-term scheduler / Job scheduler) 메모리의 크기는 한정되어 있는데 많은 프로세스가 한번에 메모리에 올라오는 경우, 대용량 메모리(일반적으로 디스크)에 임시 저장. 이 pool에 저장된 프로세스 중 어떤 ..

[운영체제] 프로세스와 스레드의 차이

프로세스 프로세스는 실행중인 프로그램으로 운영체제로 부터 주소공간, 파일, 메모리등의 자원을 할당받는 개체. 프로그램은 실행파일이 메모리에 로드될 때 프로세스가 됨. 프로세스는 코드섹션, 데이터 섹션, 스택섹션, 힙섹션, 프로그램 카운터를 포함. 프로세스 제어 블록(PCB) 프로세스마다 하나씩 존재하며 프로세스에 대한 중요한 정보를 저장. (TCB라고 불리기도 함) 운영체제는 프로세스를 관리하기 위해 프로세스 생성시 고유한 PCB를 함께 생성. 프로세스는 CPU 자원을 할당 받아 작업을 처리하다가도 프로세스 전환이 필요하면 진행중이던 작업의 진행상황을 PCB에 저장하고 CPU자원을 반환함. 그 후 다시 CPU를 할당받게 되면 PCB에 저장되었던 내용을 불러와 이전의 작업을 이어서 함. PCB에 저장되는 ..

[백준 10830 - C++] 행렬 제곱 : 분할 정복

https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. 입력 첫째 줄에 행렬의 크기 N과 B가 주어진다. (2 ≤ N ≤ 5, 1 ≤ B ≤ 100,000,000,000) 둘째 줄부터 N개의 줄에 행렬의 각 원소가 주어진다. 행렬의 각 원소는 1,000보다 작거나 같은 자연수 또는 0이..

[백준 1493 - C++] 박스 채우기 : 분할 정복

https://www.acmicpc.net/problem/1493 1493번: 박스 채우기 세준이는 length × width × height 크기의 박스를 가지고 있다. 그리고 세준이는 이 박스를 큐브를 이용해서 채우려고 한다. 큐브는 정육면체 모양이며, 한 변의 길이는 2의 제곱꼴이다. (1×1×1, 2×2×2, www.acmicpc.net 문제 세준이는 length × width × height 크기의 박스를 가지고 있다. 그리고 세준이는 이 박스를 큐브를 이용해서 채우려고 한다. 큐브는 정육면체 모양이며, 한 변의 길이는 2의 제곱꼴이다. (1×1×1, 2×2×2, 4×4×4, 8×8×8, ...) 세준이가 가지고 있는 박스의 종류와 큐브의 종류와 개수가 주어졌을 때, 박스를 채우는데 필요한 큐브..

[데이터베이스] 비 관계형 데이터베이스 (NoSQL)

CAP (Consistency, Availability, Partition Tolerance) 이론 1) 일관성(Consistency) 다중 클라이언트에서 같은 시간에 조회하는 데이터는 항상 동일한 데이터임을 보증하는 것. NoSQL을 사용하는 경우 느슨한 스키마로 인해 일관성이 느슨하게 처리되어 동일한 데이터가 나타나지 않을 수 있음. 느슨하게 처리된다는 것 = 데이터의 변경을 시간의 흐름에 따라 여러 노드에 전파하는 것 NoSQL이 분산 노드 간의 데이터 동기화를 위해 사용하는 방법들 - 동기식 방법: 클라이언트에 응답하기 전 모든 노드에 데이터를 저장. 응답시간 느림 but 데이터의 정합성 보장 - 비동기식 방법: 메모리나 임시파일에 기록하고 클라이언트에 먼저 응답한 다음 특정 이벤트 또는 프로세스..

[데이터베이스] 관계형 DB와 비관계형 DB

관계형 데이터 베이스 - 데이터는 엄격한 데이터 스키마에 따라 데이터베이스 테이블에 저장됨. - 데이터는 관계를 통해서 연결된 여러 테이블에 분산 됨. 엄격한 스키마 데이터는 테이블에 저장되며, 각 테이블은 명확하게 정의된 구조가 있어 그를 준수하지 않는 데이터는 추가될 수 없다. 장점 - 데이터의 무결성 보장 - 데이터의 중복 최소화 - 데이터 베이스 추가 전 유효성 검사를 통해 품질 향상 가능. - VIEW를 통한 보안 설정으로 허가된 사용자들만이 데이터에 접근하게 할 수 있음. 단점 - 관계를 맺고 있어 JOIN문이 많은 복잡한 쿼리문이 생길 수 있음. - JOIN이 많은 복잡한 쿼리문이 생성된 경우 수정이 매우 번거로움. - 수평적 확장이 어렵고 수직적 확장만 주로 가능해 데이터 처리량 성장에 한..

[데이터베이스] Statement vs PreparedStatement

Statement와 PreparedStatement의 가장 큰 차이점은 캐시의 사용 여부이다. SQL의 실행 단계 1) 쿼리문 분석 2) 컴파일 3) 실행 Statement Statement의 경우 쿼리문 수행시 위의 1)~3)의 과정을 모두 거치게 된다. 따라서 매 쿼리문을 수행할 때 마다 컴파일을 해줘야하기 때문에 실행 시간이 증가하게 된다. Prepared Statement Prepared statement의 경우 컴파일이 이미 되어 있어 statement에 비해 실행시간이 적게 걸린다. 이러한 이점으로 인해 쿼리 반복 작업을 수행하는 경우 이를 사용하는것이 좋다. 또한 SQL injection 공격등의 문제를 보완해준다. CS 면접 대비를 위해 아래 깃허브를 기반으로 작성 되었습니다. github..

[백준 5904 - C++] Moo 게임 : 분할 정복

https://www.acmicpc.net/problem/5904 5904번: Moo 게임 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m o o o www.acmicpc.net 문제 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m o o o o m o o m o o o m o o m o o o o o Moo 수열은 다음과 같은 방법으로 재귀적으로 만들 수 있다. 먼저,..

[백준 1074 - C++] Z : 분할 정복

https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서 www.acmicpc.net 문제 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서 왼쪽 위에 있는 칸이 하나가 아니라면, 배열을 크기가 2N-1 × 2N-1로 4등분 한 후에 재귀적으로 순서대로 방문한다. 다음 예는 22 × 22 크기의 배열을 방문한 순서이다..

[데이터베이스] 트랜잭션 (Transaction)

트랜잭션이란? 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산. 작업의 완전성을 보장한다. 하나의 논리적인 기능을 수행하는 작업의 단위로 논리적인 작업 셋을 모두 완벽하게 처리하지 못할 경우에는 원래 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능. 트랜잭션과 Lock Lock은 동시성을 제어하기 위한 개념이고 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. Lock은 여러 커넥션이 동시에 동일한 자원을 요청할 때 순서대로 한 시점에 하나의 커넥션만 변경하게 해준다. 트랜잭션의 경우 하나의 논리적인 작업셋 중 몇개의 쿼리가 있던 상관없이 논리적인 작업셋 자체에 100% 적용되거나 아무것도 적용..

728x90
반응형