반응형

분류 전체보기 172

[파일처리] SSD - 플래시 메모리(Flash memory)

최근 하드디스크보다 많이 쓰이는 SSD(Solid State Drive)는 NAND Flash memory이다. 플래시 메모리의 장점은 다음과 같다. 빠르다 전력 소비가 적다 내구성이 높다 크기가 작다 무게가 가볍다 소리가 안 난다 NAND Flash Memory의 구조 플래시 메모리는 여러 개의 블록으로 구성되어 있고 각 블록은 여러개의 페이지로 구성되어 있다. 또한 페이지는 주 저장소인 섹터와 페이지 관리용 meta data를 저장하는 스페어로 구성되어 있다. 플래시 메모리는 소블록 플래시 메모리와 대블록 플래시 메모리로 나뉘는데 소블록 플래시는 거의 단종되어 주로 대블록 플래시를 사용한다. 소블록 플래시 메모리 - 16KB 크기의 블록들로 구성 - 각 블록은 32개의 페이지로 구성 - 각 페이지는 ..

파일처리 2022.04.13

[파일처리] 하드디스크의 구조 - 디스크 액세스 비용

하드디스크에 데이터를 읽거나 쓰는 행위를 디스크 액세스(Disk Access)라고 한다. 디스크 액세스 비용 Seek time - Arm이 데이터가 있는 실린더로 이동하는 시간 Rotational Delay - Head 밑에 데이터가 있는 섹터가 위치하도록 Platter가 회전하는 시간 Transfer time - 데이터의 총 길이만큼 Platter가 회전하면서 데이터를 읽고 쓰는 시간 - Transfer time = (총 전송 데이터 크기) / (한 트랙의 크기) * rotation time 디스크 액세스 비용 = Seek time + Rotational Delay + Transfer time 디스크 액세스 시간 계산 아래와 같은 스펙을 가진 하드디스크가 있을 때 256바이트 짜리 레코드 34000개가..

파일처리 2022.04.13

[파일처리] 하드디스크(Hard Disk)의 구조

하드디스크의 구조 (위에서 본 모습) (옆에서 본 모습) Platter - 데이터가 저장되는 곳, 즉 디스크를 말한다. - platter 여러 개가 겹쳐져있는 구조를 가진다. Spindle - 플래터를 회전시키는 역할을 한다. Arm - head가 원하는 곳을 읽을 수 있도록 이동시켜주는 역할을 한다. Head - arm 끝에 달려있는 장치로 플래터에 데이터를 읽거나 쓰는 역할을 한다. 플래터의 구체적인 단위 Sector - 트랙을 구성하는 최소 단위 = 가장 작은 저장 단위(보통 512byte) Track - 트랙은 섹터로 구성되며 섹터가 쭉 나열되어 있는 것 Cylinder - 같은 위치에 존재하는 트랙들의 모음(논리적 단위) Cluster - 연속된 섹터의 모음(논리적 단위) - 파일에 할당하는 최..

파일처리 2022.04.11

[파일처리] 파일처리 개요

파일이란 secondary memory(HDD, SSD 등)에 저장된 같은 형식을 가진 record들의 집합이다. 파일의 종류 Physical Files - 물리적 파일로 실제 디스크에 저장되며 OS가 관리하는 물리적인 파일 Logical Files - 논리적 파일로 프로그램 상에서 접근하는 파일 - file open 시 OS가 Physical file과 맵핑된 Logical file을 넘겨주어, 이 파일을 읽거나 쓰게 된다. 파일 구조(File Structure) 파일 구조란 데이터를 표현하는 representation과 그 데이터를 접근하는 operation의 조합이다. representation의 예시로는 C언어의 구조체 등이 있고 operation은 삽입, 삭제, 검색 등이 있다. 좋은 파일 구조..

파일처리 2022.04.11

[Linux] 리눅스의 파일 권한 (Permission)

리눅스의 파일 권한에는 세 가지 종류가 있다. 읽기(read) : 파일을 읽을 수 있는 권한 쓰기(write) : 파일을 수정하거나, 쓰거나, 지울 수 있는 권한 실행(execute) : 파일을 실행할 수 있는 권한 리눅스의 터미널 창에서 ls -l 명령어를 통해 파일의 권한을 확인할 수 있다. 권한은 총 10개의 문자로 구성되어 있고 네 개의 그룹으로 나뉜다. 1번째 문자 : 파일의 종류를 나타냄 - : 정규 파일 d : 디렉토리 l : 링크 2 ~ 4번째 문자 : 파일 주인의 읽기, 쓰기, 실행 권한 5 ~ 7번째 문자 : 파일 주인이 속한 그룹의 읽기, 쓰기, 실행 권한 8 ~ 10번째 문자 : 그 외 유저들의 읽기, 쓰기, 실행 권한 ex) 어떤 파일의 권한이 -rwxrw-r-- 이라면 1번째 문..

C, C++ & Linux 2022.04.07

[C & Linux] 파일 디스크립터(file Descriptor) & 파일 입출력 관련 시스템콜 함수

파일 디스크립터(File Descriptor) Linux/Unix에서 파일은 데이터를 읽을 수 있거나 데이터를 쓸 수 있는 모든 객체를 말한다. 일반적인 정규 파일부터 디렉토리, 소켓, 파이프, 터미널 등등 모든 디바이스도 파일로 취급한다. Linux/Unix에서 프로세스가 이 파일들을 바이트 단위의 입출력으로 다룰 수 있게 하고, 커널 내부의 자료 구조들과의 연결 통로 역할을 하게 하는 것이 파일 디스크립터이다. 프로세스가 실행 중에 파일을 open하면 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당해준다. 그다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터 값을 이용해서 파일을 지칭할 수 있는 것이다. 기본적으로 할당되는 파일디스크립..

C, C++ & Linux 2022.04.07

[Linux] 리눅스 기본 명령어

ls 현재 위치의 파일 목록 조회 ls -l : 파일의 상세정보 표시 ls - a : 숨김 파일 표시 cd 디렉토리 이동 cd [디렉토리 경로] : 이동하려는 디렉토리로 이동 cd (~) : 홈 디렉토리로 이동 ~ 생략 가능 cd / : 최상위 디렉토리로 이동 cd .. : 상위 디렉토리로 이동 touch 0바이트 파일 생성, 파일의 날짜와 시간을 수정 touch [filename] : filename이라는 이름의 파일을 생성 touch -c filename : filename의 시간을 현재 시간으로 갱신 mkdir 디렉토리 생성 mkdir [dirname] : dirname이라는 이름의 디렉토리 생성 mkdir [dir1] [dir2] : 한 번에 여러 개의 디렉토리 생성 cp 파일 복사 cp [fil..

C, C++ & Linux 2022.03.08

[알고리즘 이론] 최단 경로 알고리즘(2) - 플로이드 워셜 알고리즘

최단 경로 문제 최단 경로 알고리즘은 가장 짧은 경로를 찾는 알고리즘이다. 최단 경로 문제의 상황은 다음과 같이 다양하다. 한 지점에서 다른 한 지점까지의 최단 경로 한 지점에서 다른 모든 지점까지의 최단 경로 모든 지점에서 다른 모든 지점까지의 최단 경로 최단 경로 문제는 보통 그래프를 이용해 표현하는데 각 지점은 그래프에서 노드로 표현되고, 지점 간 연결된 도로는 그래프에서 간선으로 표현된다. 또한 실제 코딩 테스트에서는 최단 경로를 모두 출력하는 문제보다는 단순히 최단 거리를 출력하도록 요구하는 문제가 더 많이 출제된다. 따라서 포스팅에서도 최단 경로가 아닌 최단 거리를 출력하는 코드를 구현할 것이다. 컴퓨터공학과 학부 수준에서 사용하는 최단 거리 알고리즘은 다익스트라 최단 경로 알고리즘, 플로이드..

[알고리즘 이론] 최단 경로 알고리즘(1) - 다익스트라 최단 경로 알고리즘

최단 경로 문제 최단 경로 알고리즘은 가장 짧은 경로를 찾는 알고리즘이다. 최단 경로 문제의 상황은 다음과 같이 다양하다. 한 지점에서 다른 한 지점까지의 최단 경로 한 지점에서 다른 모든 지점까지의 최단 경로 모든 지점에서 다른 모든 지점까지의 최단 경로 최단 경로 문제는 보통 그래프를 이용해 표현하는데 각 지점은 그래프에서 노드로 표현되고, 지점 간 연결된 도로는 그래프에서 간선으로 표현된다. 또한 실제 코딩 테스트에서는 최단 경로를 모두 출력하는 문제보다는 단순히 최단 거리를 출력하도록 요구하는 문제가 더 많이 출제된다. 따라서 포스팅에서도 최단 경로가 아닌 최단 거리를 출력하는 코드를 구현할 것이다. 컴퓨터공학과 학부 수준에서 사용하는 최단 거리 알고리즘은 다익스트라 최단 경로 알고리즘, 플로이드..

[BOJ] 2579 - 계단 오르기

https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net n = int(input()) data = [0] * 300 for i in range(n): data[i] = int(input()) dp = [0] * 300 dp[0] = data[0] dp[1] = data[0] + data[1] dp[2] = max(data[0] + data[2], data[1] + data[2]) for i in range(3, n): dp[i] = max(dp[i - 2] + d..

알고리즘/BOJ 2022.02.18
반응형