Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- PHP 웹페이지 만들기
- hackerrank
- Python
- 자료구조 복습
- The Loard of BOF
- WarGame
- c++
- 백준
- C언어
- Sookmyung Information Security Study
- CSS
- HTML
- 파이썬
- SWEA
- 풀이
- 기계학습
- 숙명여자대학교 정보보안동아리
- 머신러닝
- Javascript
- lob
- c
- siss
- 드림핵
- 숙명여자대학교 정보보안 동아리
- 웹페이지 만들기
- BOJ Python
- 생활코딩
- XSS Game
- BOJ
- hackctf
Archives
- Today
- Total
혜랑's STORY
[2020-2학기 리눅스 8주차] : 이론 본문
#파일 시스템
- 파일 시스템 보기
$ df 파일시스템* -> 파일 시스템에 대한 디스크 사용 정보를 보여준다. |
=> 예시
$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/root 51606140 7570736 41413964 16% / tmpfs 1030972 676 1030296 1% /dev/shm /dev/sda1 495844 29048 441196 7% /boot /dev/mapper/home 424544656 3577668 399401344 1% /home |
- / : 루트 파일 시스템 현재 16% 정도 사용
- /dev/shm : 시스템의 가상 공유 메모리를 위한 파일 시스템
- /boot : 리눅스 커널의 메모리 이미지와 부팅을 위한 파일 시스템
- /home : 여러 사용자들의 홈 디렉터리를 위한 파일 시스템
- 디스크 사용량 보기
$ du [-s] 파일명* -> 파일 혹은 디렉터리의 사용량을 보여준다. 파일을 명시하지 않으면 현재 디렉터리 내의 모든 파일들의 사용 공간을 보여준다. |
- 파일 시스템 구조
- 부트 블록(Boot block) : 파일 시스템 시작부에 위치하고 보통 첫 번째 섹터를 차지
- 슈퍼 블록(Super block) : 전체 파일 시스템에 대한 정보를 저장
- i-리스트(i-list) : 각 파일을 나타내는 모든 i-노드들의 리스트
- 데이터 블록(Data block) : 파일의 내용(데이터)을 저장하기 위한 블록들
#파일 상태 정보와 i노드
- 파일 상태(file status) : 파일에 대한 모든 정보. (블록 수, 파일 타입, 사용 권한, 링크 수 등)
- stat 명령어
$ stat [옵션] 파일 -> 파일의 자세한 상태 정보를 출력한다. |
- i-노드(i-node)
파일 상태 정보 | 의미 |
파일 크기 | 파일의 크기(K 바이트 단위) |
파일 종류 | 파일의 종류를 나타낸다. |
접근권한 | 파일에 대한 소유자, 그룹, 기타 사용자의 읽기/쓰기/실행 권한 |
하드 링크 수 | 파일에 대한 하드 링크 개수 |
소유자 및 그룹 | 파일의 소유자 ID 및 소유자가 속한 그룹 |
최종 접근 시간 | 파일을 최후로 접근한 시간 |
최종 수정 시간 | 파일을 생성 혹은 최후로 수정한 시간 |
데이터 블록 주소 | 실제 데이터가 저장된 데이터 블록의 주소 |
- 블록 포인터 : 데이터 블록에 대한 포인터; 파일의 내용을 저장하기 위해 할당된 데이터 블록의 주소
-> 하나의 i-노드 내의 블록 포인터
- 직접 블록 포인터 10개
- 간접 블록 포인터 1개
- 이중 간접 블록 포인터 1개
#디렉토리
- 파일 시스템 내에서의 디렉터리 구현
- 디렉터리도 일종의 파일로 다른 파일처럼 구현된다.
- 디렉터리도 다른 파일처럼 하나의 i-노드로 표현된다.
- 디렉터리의 내용은 ㄷ렉터리 엔트리(파일이름, i-노드 번호)
#링크의 구현
- 링크 : 기존 파일에 대한 또 하나의 새로운 이름. (하드 링크 / 심볼릭 링크)
$ ln [-s] 파일1 파일2 -> 파일1에 대한 새로운 이름(링크)로 파일2를 만들어 준다. (-s 옵션을 심볼릭 링크) $ln [-s] 파일1 디렉터리 -> 파일1에 대한 링크를 지정된 디렉터리에 같은 이름으로 만들어 준다. |
- 하드 링크(hard link) : 기존 파일에 대한 새로운 이름이라고 생각할 수 있다. 실제로 기존 파일을 대표하는 i-노드를 가리켜 구현한다.
- 하드링크의 구현
- 심볼릭 링크(symbolic link) : 다른 파일을 가리키고 있는 별도의 파일이다. 실제 파일의 경로명을 저장하고 있는 일종의 특수 파일이다. 이 경로명이 다른 파일에 대한 간접적인 포인터 역할을 한다.
#파일 입출력
- 시스템 호출(system call) : 유닉스 커널에 서비스를 요청하기 위한 프로그래밍 인터페이스.
- C 언어의 파일 종류
- 텍스트 파일(text file) : 사람들이 읽을 수 있는 문자들을 저장하고 있는 파일. 텍스트 파일에서 "한 줄의 끝"을 나타내고 있는 표현은 파일이 읽어 들여질 떄, C내부의 방식으로 변환된다.
- 이진 파일(binary file) : 모든 데이터는 있는 그대로 바이트의 연속으로 저장. 이진파일을 이용하여 메모리에 저장된 변수 값 현태 그대로 파일에 저장할 수 있다.
- 파일 열기
- 파일을 사용하기 위해서는 반드시 먼저 파일 열시(fopen)를 해야한다. 파일 열기를 하면 FILE 구조체에 대한 포인터가 리턴된다. FILE 포인터는 열린 파일을 지정한다.
- 함수 fopen()
FILE *fopen(const char *filename, const char *mode); -> 파일 열기를 한다. 열린 파일을 나타내는 FILE 포인터를 반환한다. 오류가 발생하면 NULL을 반환한다. |
- fopen() : 텍스트 파일 열기
모드 | 의미 | 파일이 없으면 | 파일이 있으면 |
"r" | 읽기 전용 | NULL 반환 | 정상 동작 |
"w" | 쓰기 전용 | 새로 생성 | 기존 내용 삭제 |
"a" | 추가 쓰기 | 새로 생성 | 기존 내용 뒤에 추가 |
"r+" | 읽기와 쓰기 | NULL 반환 | 정상 동작 |
"w+" | 읽기와 쓰기 | 새로 생성 | 기존 내용 삭제 |
"a+" | 추가를 위한 읽기와 쓰기 | 새로 생성 | 기존 내용 뒤에 추가 |
- 스트림과 FILE 구조체
- 스트림 : 파일이 열리면 스트림(stram)이라고 한다.
- FILE 구조체 : 열린 파일의 현재 상태를 나타내는 필드 변수들
- 표준 입출력 스트림
표준 입출력 스트림 | 설명 | 가리키는 장치 |
stdin | 표준입력에 대한 FILE 포인터 | 키보드 |
stdout | 표준출력에 대한 FILE 포인터 | 모니터 |
stderr | 표준 오류에 대한 FILE 포인터 | 모니터 |
- 파일 닫기 : 파일을 열어서 사용한 후에는 파일을 닫아야 한다.
int fclose(FILE *fp); -> fp가 가리키는 파일을 닫는다. (성공하면 0, 오류일떄는 -1을 반환한다.) |
- 파일 입출력 함수
표준 입출력 함수 | 표준 파일 입출력 함수 | 기능 |
getchat() | fgetc(), getc() | 문자단위로 입력하는 함수 |
putchar() | fputc(), putc() | 문자단위로 출력하는 함수 |
gets() | fgets() | 문자열을 입력하는 함수 |
puts() | fputs() | 문자열을 출력하는 함수 |
scanf() | fscanf() | 자료형에 따라 자료를 입력하는 함수 |
printf() | fprintf() | 자료형에 따라 자료를 출력하는 함수 |
'2020 SISS 21기 활동 > 2학기 리눅스' 카테고리의 다른 글
[2020-2학기 리눅스 9주차] : 이론 (0) | 2020.11.29 |
---|---|
[2020-2학기 리눅스 8주차] : 실습 (0) | 2020.11.22 |
[2020-2학기 리눅스 7주차] : 실습 (0) | 2020.11.15 |
[2020-2학기 리눅스 7주차] : 이론 (0) | 2020.11.14 |
[2020-2학기 리눅스 6주차] : 이론 (0) | 2020.11.07 |