- SSD는 HDD와 다르게 기계적인 움직임이 없으며(disk arm을 움직여 데이터를 읽는 등) 단순히 트랜지스터들로 이루어져 있다. - random-access memory(DRAM)과는 다르게 SSD는 전원이 꺼져도 정보를 가지고 있는다. - flash메모리( 특히 NAND-based flash)는 1980년대에 Fujio Masuoka에 의해 만들어졌다. 특징점 - To write to a given chunk of it(flash page), you first have to erase a bigger chunk(flash block). - writing too often to a page will cause it to wear out flash기반 SSD 생각해볼 점들 - erase의 비용을 싸..
Reference: Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 9th Edition』 2.1 Operating-System Services 1. 사용자 인터페이스 (UI) - 거의 모든 운영체제는 사용자 인터페이스를 가진다. - CLI(Command-Line Interface): 텍스트 명령어 사용 (터미널 같이) - Batch Interface: 명령어들과 디렉티브가 입력된 파일이 실행됨 - GUI(Graphical User Interface): 가장 보편화됨/ 메뉴를 고르고, 선택을 하고, 텍스트 입력을 위해 키보드 입력을 할 수 있음 (윈도우 화면 생각하면 편함) 2. 프로그램 실행 (Program ex..
Reference: Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 9th Edition』 1.1 What Operating Systems Do - 컴퓨터 시스템은 크게 4가지로 분류된다: 하드웨어, 운영체제, 응용 프로그램, 유저 1. 하드웨어: CPU(central processing unit), 메모리, I/O 장치 2. 응용 프로그램: 워드 프로세서, 스프레드 시트, 컴파일러, 웹브라우저 등 3. 운영체제: 하드웨어를 제어하고 다양한 응용 프로그램간 사용을 조종 - 컴퓨터 시스템은 하드웨어, 소프트웨어, 데이터로 구성되었다 볼 수 있다 - 운영체제는 다른 프로그램들이 유용한 일을 하도록 환경만을 제공한다 1...
매 선택에서 가장 최적인 답을 선택하여 적합한 결과를 도출하자는 모토를 가지는 알고리즘 설계 기법 근시안적으로 해를 구할 당시에 가장 최적인 해를 구함 그리디 알고리즘은 동적 계획법(Dynamic Programming) 보다 효율적이지만 동적 계획법처럼 반드시 최적의 해를 구해준다는 보장은 없음 예제 모음 ▼ 더보기 https://somewheretogo.tistory.com/93 [백준 알고리즘] 11047번 동전 0 (Python) N, K = map(int, input().split()) a = [] for i in range(N): a.append(int(input())) cnt = 0 for i in reversed(a): if K == 0: break if (K // i) >= 1: cnt +..
리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조 특징 - FIFO(First In First Out, 선입선출): 가장 먼저 삽입된 자료가 가장 먼저 삭제된다. - 시작과 끝을 표시하는 2개의 포인터가 있다. (front, rear) - Front: 가장 먼저 삽입된 자료의 기억 공간을 가리키는 포인터로, 삭제 작업을 할 때 사용 - Rear: 가장 마지막에 삽입된 자료가 위치한 기억공간을 가리키는 포인터로, 삽입 작업시 사용 큐의 연산 - enQueue(item): 큐안에 데이터를 추가한다. - deQueue(): 큐 안의 데이터를 제거한다. - peek(): 큐의 front데이터를 반환한다. - isEmpty(): 스택이 비어있으면 true를 반환..
리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료구조 특징 - LIFO(Last In First Out, 후입선출) : 가장 나중에 삽입된 자료가 가장 먼저 삭제된다. - 스택의 모든 기억공간이 꽉 채워져 있는 상태에서 데이터가 삽입되면 오버플로우가 발생하며, 더 이상 삭제할 데이터가 없는 상태에서 데이터를 삭제하면 언더플로우가 발생한다. - Top: 스택으로 할당된 기억 공간에 가장 마지막으로 삽입된 자료가 기억된 위치를 가리키는 요소 - Bottom: 스택의 가장 밑바닥 스택의 연산 - push(item): 스택의 맨 윗부분에 원소를 추가한다. - pop(): 스택의 맨 윗부분의 원소를 제거한다. - peek(): 스택의 맨 윗부분의 원소를 반환한다. - isEmpty(): 스택이 비..
퀵정렬 간단정리 1. 불안정 정렬에 속하며, 다른 원소와의 비교로 정렬을 수행하는 비교정렬이다. 2. 분할정복 알고리즘의 하나이다. 3. 최선의 경우 O(nlogn)의 시간복잡도를 보이지만, 최악의 경우 O(n^2)의 시간 복잡도를 보인다. 4. 속도가 빠르고 추가 메모리 공간을 필요로 하지 않는다는 장점이 있다. 5. 정렬된 리스트에 대해서는 퀵정렬의 불균형 분할에 의해 수행시간이 오래 걸린다. 과정 1. 리스트 안의 요소를 선택하고 이를 피벗(pivot)이라 한다. 2. 리스트를 순회하면서 피벗을 기준으로 피벗보다 작으면 피벗의 왼쪽에, 피벗보다 크다면 피벗의 오른쪽으로 옮긴다. 3. 피벗을 제외한 왼쪽 리스트와 오른쪽 리스트를 다시 정렬한다. (재귀) 4. 부분 리스트의 크기가 1이하가 되면 종료한..