๐Ÿ–ฅ๏ธSW Engineer

    [ADV_db]Chap 1. ๋ฌผ๋ฆฌ์  ์ €์žฅ ์žฅ์น˜ ์‹œ์Šคํ…œ-2

    # ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ NOR Flash NAND Flash ์ฃผ๋กœ ์ €์žฅ์žฅ์น˜๋กœ ์‚ฌ์šฉ๋œ๋‹ค NOR Flash ๋ณด๋‹ค ์‹ธ๋‹ค Read ํ•œ ๋ฒˆ ์‹คํ–‰๋  ๊ฒฝ์šฐ Page(๋ณดํ†ต 4kb)๋งŒํผ ์ฝ์–ด์˜จ๋‹ค. ์“ฐ๊ธฐ๋ณด๋‹ค ๋น ๋ฅด๋‹ค. ์ˆœ์ฐจ์  ์ ‘๊ทผ๊ณผ ์ž„์˜ ์ ‘๊ทผ์˜ ํฐ ์ฐจ์ด๊ฐ€ ์—†๋‹ค. ๋””์Šคํฌ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๊ณ , Write๋‚˜ Erase๋ณด๋‹ค๋„ ๋น ๋ฅด๋‹ค. Write ํ•œ๋ฒˆ ์“ฐ์—ฌ์ง„ ๊ณณ์€ ๋ฎ์–ด์“ฐ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— Erase๊ฐ€ ์‹คํ–‰๋œ ํ›„ ๋‹ค์‹œ ์“ธ ์ˆ˜ ์žˆ๋‹ค. Erase ์ฝ๊ณ  ์“ฐ๋Š” ๊ณผ์ •์€ ๋ชจ๋‘ Page๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด ์ง€์ง€๋งŒ, ์ง€์šฐ๋Š” ๊ณผ์ •์€ 128-256๊ฐœ ์ •๋„์˜ Page๋กœ ์ด๋ฃจ์–ด์ง„ Block ๋‹จ์œ„๋กœ ์ง„ํ–‰๋œ๋‹ค. ์ง€์šฐ๋Š” ํšŸ์ˆ˜๋Š” ์ œํ•œ๋˜์–ด ์žˆ์–ด ์ด๋ฅผ ๋„˜์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠน์ • ๋ธ”๋ก๋งŒ Erase๊ฐ€ ๋งŽ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก Wear-Leveling์ด๋ผ๋Š” ํ‰๋“ฑํ™” ์ž‘์—…์„ ํ•œ๋‹ค. ์ฝ..

    [ADV_db]Chap 1. ๋ฌผ๋ฆฌ์  ์ €์žฅ ์žฅ์น˜ ์‹œ์Šคํ…œ

    # ์ €์žฅ ์žฅ์น˜ ๊ฐœ์š” Volatile Primary storage ๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ๋žœ๋ค ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ Non-Volatile ๋ธ”๋ก ๋‹จ์œ„์˜ ์—ฐ์†์ ์ธ ์ ‘๊ทผ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. Secondary storage(on-line storage) ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ Magnetic-disk Tertiary storage(off-line storage) Optical storage Tape storage ์ €์žฅ์žฅ์น˜๋ฅผ ๊ณ ๋ฅด๋Š” ์š”์†Œ ์Šคํ”ผ๋“œ ๊ฐ€๊ฒฉ Reliability(์ €์žฅ ์‹ ๋ขฐ์„ฑ) # ์ €์žฅ ์ธํ„ฐํŽ˜์ด์Šค ํ‘œ์ค€ ๋””์Šคํฌ ์ธํ„ฐํŽ˜์ด์Šค SATA SAS NVme SAN NAS # ํ•˜๋“œ ๋””์Šคํฌ ๋งค์ปค๋‹ˆ์ฆ˜ Platter๋ณ„๋กœ 50K-100K๊ฐœ ์ •๋„์˜ Track์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Track๋ณ„๋กœ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์ธ ..

    [๋ฐฑ์ค€]7568-๋ฉ์น˜

    https://www.acmicpc.net/problem/7568 7568๋ฒˆ: ๋ฉ์น˜ ์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ์˜ ๋ฉ์น˜๋ฅผ ํ‚ค์™€ ๋ชธ๋ฌด๊ฒŒ, ์ด ๋‘ ๊ฐœ์˜ ๊ฐ’์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ๊ทธ ๋“ฑ์ˆ˜๋ฅผ ๋งค๊ฒจ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ์˜ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ x kg์ด๊ณ  ํ‚ค๊ฐ€ y cm๋ผ๋ฉด ์ด ์‚ฌ๋žŒ์˜ ๋ฉ์น˜๋Š” (x, y)๋กœ ํ‘œ์‹œ๋œ๋‹ค. ๋‘ ์‚ฌ๋žŒ A ์™€ B์˜ ๋ฉ www.acmicpc.net num = int(input()) size = [] for _ in range(num): x,y = map(int,input().split()) size.append([x,y]) for i in range(num): count=0 for j in range(num): if((size[i][0] < size[j][0]) and (size[i][1] < size[j][1])): count..

    [๋ฐฑ์ค€]10866 - ๋ฑ

    https://www.acmicpc.net/problem/10866 10866๋ฒˆ: ๋ฑ ์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์˜ ์ˆ˜ N (1 ≤ N ≤ 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ช…๋ น์ด ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ •์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋ฌธ์ œ์— ๋‚˜์™€์žˆ์ง€ www.acmicpc.net from collections import deque import sys lines = int(input()) deque = deque() for _ in range(lines): inp = sys.stdin.readline().split() if(inp[0] == "push_front"): deque.appendleft(inp[1]) elif(inp[0] == "push_back..

    [๋ฐฑ์ค€]2775-๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ

    https://www.acmicpc.net/problem/2775 times = int(input()) for _ in range(times): floor = int(input()) unit = int(input()) stats = [i+1 for i in range(unit)] for i in range(1,floor+1): for j in range(1,unit): stats[j] = stats[j-1]+stats[j] print(stats[-1])

    [๋ฐฑ์ค€]11866-์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ

    https://www.acmicpc.net/problem/11866 11866๋ฒˆ: ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ 0 ์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net size,interval = map(int,input().split()) result = [] interval = interval -1 l = [i+1 for i in range(size)] cur = 0 while(len(l) != 0): ncur = cur + interval if(ncur = len(l)): while(ncur >= len(l)): n..