분류 전체보기
-
[OS] 메모리 스왑(스와핑) #swapOS 2021. 11. 26. 09:59
[OS] 메모리 스왑(스와핑) #swap 안녕하세요? 장장스입니다. 오늘은 메모리 스와핑에 대해 정리해보겠습니다! 스와핑 (swapping) 메모리에 올라온 프로세스의 주소 공간 전체를 디스크의 스왑 영역(swap area)에 일시적으로 내려놓는 것을 말한다. 이때 스왑 영역은 백킹스토어(backing store)라고 부르며, 디스크 내에 파일 시스템과는 별도로 존재하는 일정 영역을 말한다. 잠깐❗ 스와핑이라는 개념은 프로세스가 종료되어 그 주소 공간을 디스크로 내쫓는 것이 아니라, 특정한 이유로 수행 중인 프로세스의 주소 공간을 일시적으로 메모리에서 디스크로 내려놓는 것을 의미한다. 역할 그렇다면 스와핑의 역할은 무엇일까? 스와핑은 다중 프로그래밍의 정도(degree of multiprogramming..
-
[DB] 트랜잭션의 장애와 복구database/DB Concept 2021. 11. 25. 12:36
트랜잭션의 장애와 복구 트랜잭션 장애와 복구 트랜잭션 동작 시 장애가 발생하면 어떻게 해야 할까. 보통 로그를 통한 복구를 진행하게 된다. 복구 방법으로 REDO 복구와 UNDO 복구가 있다. DBMS는 어떻게 복구를 해야할지 판단한 후 REDO와 UNDO를 통해 복구를 진행하게 된다. DBMS의 페이지 버퍼 데이터베이스 시스템은 보통 비휘발성 저장 장치인 디스크에 데이터를 저장하며 전체 데이터베이스의 일부분을 메인 메모리에 유지한다. DBMS는 데이터를 고정 길이의 페이지(page)로 저장하며, 디스크에서 읽거나 쓸 때에 페이지 단위로 입출력이 이루어진다. 메인 메모리에 유지하는 페이지들을 관리하는 모듈을 보통 페이지 버퍼(page buffer) 관리자 또는 버퍼 관리자라고 부르는데, DBMS의 많은 ..
-
[OS] 주소 바인딩OS 2021. 11. 24. 09:58
[OS] 주소 바인딩 안녕하세요? 장장스입니다. 오늘은 주소 바인딩에 대해 정리해보겠습니다. 주소 바인딩 프로그램이 메모리에 적재되면 해당 프로세스의 독자적인 주소 공간이 생성됩니다. 이 주소를 논리적 주소(logical address) 혹은 가상 주소(virtual address)라고 합니다. 논리적 주소는 프로세스마다 독립적으로 할당되며 0부터 시작합니다. 물리적 주소(physical address)는 실제 물리적 메모리에 올라가는 위치를 말합니다. CPU가 기계어 명령을 수행하기 위해 논리적 주소를 통해 메모리 참조를 하게 되면 해당 논리적 주소가 물리적 메모리의 어느 위치에 매핑되는지 확인해야 합니다. 이렇게 프로세스의 논리적 주소를 물리적 메모리 주소로 연결시켜주는 작업을 '주소 바인딩'이라고 ..
-
[DB] 트랜잭션database/DB Concept 2021. 11. 23. 19:25
# A친구의 통장 잔액은 300,000원 일때, UPDATE account SET balance = balance - 500000 WHERE name = 'A'; [DB]트랜잭션 트랜잭션이란 데이터베이스 트랜잭션은 일반적으로 데이터베이스의 모든 변경 사항을 나타냅니다. 트랜잭션은 논리 또는 작업의 단일 단위이며 때로는 여러 작업으로 구성됩니다. 데이터베이스의 일관된 모드에서 수행되는 모든 논리적 계산을 트랜잭션이라고 합니다. 트랜잭션은 왜 필요할까? 친구에게 빌린 돈 10,000원을 이체했습니다. 그런데 예기치 못한 오류가 발생해 버렸습니다. 제 계좌에서는 10,000원이 출금되어 나갔는데 친구 계좌에는 입금이 되지 않았습니다. 이러한 상황이 발생하지 않도록 중간에 거래가 실패하면 처음의 상태로 되돌려야..
-
[OS] CPU 스케줄링OS 2021. 11. 22. 09:56
CPU 스케줄링 안녕하세요? 장장스입니다. 오늘은 CPU 스케줄링을 정리해 볼게요! CPU 스케줄러 CPU 스케줄러는 준비(ready) 상태에 있는 프로세스들 중 어떠한 프로세스에게 CPU를 할당할지 결정하는 운영체제의 코드입니다. 그렇다면 CPU 스케줄러는 어떻게 작동할까요❓ 프로세스가 CPU를 할당 받고 기계어 명령을 수행하다가 타이머 인터럽트가 발생하면 CPU 스케줄러가 호출됩니다. 그러면 CPU 스케줄러는 준비 큐(ready queue)에서 CPU를 기다리는 프로세스 중 하나를 선택해 CPU를 할당하게 됩니다. 위와 같은 경우 말고도 CPU 스케줄링이 필요한 다양한 경우들이 있습니다. 1. 실행(run)상태에 있던 프로세스가 I/O 요청 등에 의에 봉쇄(blocked)상태로 바뀌는 경우 2. 실행..
-
[OS] 뮤텍스(Mutex) vs 세마포어(Semaphore)OS 2021. 11. 19. 18:36
뮤텍스(Mutex)와 세마포어(Semaphore) 안녕하세요? 장장스입니다. 오늘은 기술면접에서 물어본다고 하는(?) 뮤텍스와 세마포어에 대해 정리하겠습니다. 언제 등장해? 교착상태(deadlock)에 대해 들어보셨다면 이 글을 읽을 준비가 되신겁니다. 교착상태는 제한된 자원을 두고 프로세스나 스레드가 작업을 하지 않고 무한 대기에 빠지게 되는 것을 말합니다. 교착상태가 발생하기 위해서 다음과 같은 4가지 조건이 필요합니다. 상호 배제 점유 대기 비선점 순환 대기 이 중 상호 배제 조건을 해결하기 위한 방법이 뮤텍스(Mutex)와 세마포어(Semaphore)입니다. 뮤텍스(Mutex) 뮤텍스는 mutual과 exclusion의 합성어로, 여러 스레드를 실행하는 환경에서 자원에 대한 접근에 제한을 강제하기..
-
[백준] 2143 두 배열의 합 #JAVA #이분탐색Algorithm Solving/BAEKJOON 2021. 11. 18. 20:39
[백준] 2143 두 배열의 합 #JAVA 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] arrA, arrB; int[] subArrA, subArrB; StringTokenizer stA,stB; long total = 0; // 21억개를 초과하는 경우가 존재 int T = Integer.parseInt(br.readLine()); int N = Integer.parseInt(br.readLin..
-
[자료구조] 힙(heap) #javaDataStructures 2021. 11. 17. 17:51
힙(heap) 자료구조 안녕하세요? 장장스입니다. 오늘은 힙자료구조에 대해 알아보겠습니다. 힙 (heap) 힙은 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리를 기반으로 한 자료구조입니다. 힙에는 최대 힙(max heap)과 최소 힙(min heap)이 있습니다. 부모 노드가 자식 노드보다 크면 최대 힙, 반대이면 최소 힙입니다. 가장 큰 숫자가 뿌리에 있게 하려면 최대 힙, 가장 작은 숫자로부터 시작하려면 최소 힙을 사용하면 됩니다. 최대 힙 (max heap) max heap은 root에 가장 큰 값이 오는 heap 입니다. 최소 힙 (min heap) min heap은 root에 가장 작은 값이 오는 heap 입니다. 힙 추가 그렇다면 새로운 데이터를 추가하거나 제거는 어..
-
[자료구조] 트리(Tree)DataStructures 2021. 11. 16. 16:12
트리(Tree) 안녕하세요? 장장스입니다. 오늘은 Tree 자료구조에 대해 알아보겠습니다. 트리 (Tree) 가계도처럼 노드를 나무 형태로 연결한 구조를 트리라고 합니다. 트리에 있는 각각의 요소는 노드입니다. 위 사진에서처럼 노드는 부모, 자식 형태로 이어집니다. 뿌리 (root): 트리의 시작 부분입니다. 뿌리를 통해 들어가서 트리를 탐색합니다. 잎 (leaf): 자식이 딸려있지 않은 부분입니다. 노드라고 부르기도 합니다. 간선 (edge): 두 노드를 연결하는 선입니다. 뿌리로부터의 간선의 수에 따라 level을 나눕니다. 트리의 높이, 깊이, 레벨 트리 자료구조에 대해 이야기하다 보면 높이, 깊이, 레벨에 대해 언급이 됩니다. 차이점에 대해 알아봅시다 높이(height): 루트에서 가장 먼 잎(노..