검색어 입력폼

[유닉스프로그래밍]파일을 거꾸로 복사하는 프로그램

저작시기 2007.11 |등록일 2008.03.24 파일확장자압축파일 (zip) | 13페이지 | 가격 3,000원

소개글

파일의 내용을 거꾸로 복사하는 프로그램(reverse copy program)

1.
본 자료는 UNIX 프로그래밍 프로젝트를 수행한 것입니다.
원본 파일을 뒤집어서 타겟 파일로 카피하는 프로그램입니다.

2.
본 자료는 다음의 내용을 포함하고 있습니다.
- 소스 파일
- 프로그램 명세서
- VISIO를 이용하여 그린 플로우차트

3.
유닉스프로그래밍이란 과목에서 수행한 프로젝트이며,
만점을 받은 자료입니다.
관련 과제를 하시는 분께 도움이 될 듯 하네요.

목차

없음

본문내용

■ Program Specification

0. 전체 프로그램 설명 및 흐름
- Flow Chart를 참조.

1. 사용한 데이터 구조
① 1 바이트씩 뒤집어서 기록하므로 char형 배열 두 개를 사용.
- 하나는 buf로 원본 파일로부터 파일을 읽어들일 때 사용.
- 다른 하나는 temp_buf로 buf를 뒤집어서 기록할 때 사용.
② buf와 temp_buf의 크기는 stat 시스템 호출을 통해 얻은 st_blksize로 결정한다. (가장 효율적인 I/O를 위해)

2. 함수 설명
- Source Code에 있는 주석을 참조.

3. 처리 알고리즘 설명
① 기본 아이디어
- 메모리 I/O는 디스크 I/O보다 훨씬 빠르다.
⇒ 바이트 단위로 뒤집는 것은 메모리 내에서 수행해야 빠르다.
- 디스크는 블록 단위로 I/O를 수행한다.
⇒ 가장 효율적인 I/O 블록 사이즈를 stat system 호출을 통한 st_blksize로 알아내고
⇒ 이 크기만큼 buf와 temp_buf를 동적 할당해준다.
② 처리 방법
ⅰ. 일단 st_blksize를 stat 호출을 통해 알아내어, 이것을 블록 사이즈로 지정한다. (이는 buf와 temp_buf의 배열 크기가 되며, 또한 이 크기만큼 read와 write 시스템 호출을 수행하게 된다.)
ⅱ. 파일의 크기를 lseek 시스템 호출을 통해 알아내고 나눗셈 연산과 나머지 연산을 이용해서 블록의 개수와 한 블록을 다 채우지 못하는 나머지 크기를 알아낸다.

(나머지 부분 write)
ⅲ. lseek을 이용해 원본 파일의 끝에서부터 ⅱ에서 구한 나머지 크기만큼 buf로 읽어들인다.
ⅳ. buf로 읽어들인 내용을 바이트 단위로 뒤집어서 temp_buf에 저장한다.
ⅴ. temp_buf를 타겟 파일에 write한다.

(블록별 write)
ⅵ. lseek을 이용해 원본 파일의 뒤쪽부터 순차적으로 블록 크기만큼 buf로 읽어들인다.
ⅶ. buf로 읽어들인 내용을 바이트 단위로 뒤집어서 temp_buf에 저장한다.
ⅷ. temp_buf를 타겟 파일에 write한다.
ⅸ. 블록 개수만큼 ⅵ, ⅶ, ⅷ를 수행한다.
다운로드 맨위로