2011년6월24일_고수준/저수준파일입출력(임시제목)

 

★ 선생님과 커뮤니케이션 중요! –> 수업(강의)수준을 올리자!!
    경청하자!   (논어(어록)과 같이 대화(쌍방)로 깨달음.
★ 먼저 자신의 잘 못을 반성하고 사과를 한 후 자신을 개조.
★ 피해의식을 없애자!




주 메모리상의 20Bytes크기의 구조체A를 보조 메모리인 HDD에 기록할 때,
20Bytes외에 header와 tail이 붙는다. tail은 필수가 아니나 header는 꼭 붙는다.

파일도 변수처럼 symbol table을 그릴 수 있다.

type name address
struct A 100
exe A S3 T3 ㅁ

보조기억장치에 기록된 A라는 파일의 확장자(타입)은 exe이고 실행파일이다.
그 위치는 3번 섹터 3번 트랙이다.


malloc : Memory ALLOCation
FAT : File Allocation Table
NTFS : New Technology File System

메모리할당은 메모리에 변수를 할당하여 시작주소를 알려주는 것이고,
파일할당테이블도 마찬가지로 파일의 내용이 있는 곳의 주소를 테이블로 잘 정리해 놓은 것이다.
NTFS의 NT는 windows NT에서 NT와 같은 뜻이고,
과거 DOS는 UNIX에서 많은 기능을 뺀 OS로 개인사용자를 이용한 OS였다.
그 때 사용하기 시작했던 FAT는 보안기능이 없고 사용자에 따른 권한이 없었으나,
windows NT로 넘어오면서 사용자계정이 생기고 파일에 대한 보안설정이 필요하였다.
그래서 NTFS를 사용하게 되었다. (?)

FAT보다 NTFS가 항목이 훨씬 많다.

● File Format : Data가 디스크에 기록되는 구조.
   ① windows : PE방식
   ② linux : 뭘까?

● 삭제명령을 내리면, 유저명령 –> 명령해독기 –> 커널 –> 파일지움.
● 프로그램이 파일 열기 요청 –> 운영체제가 거부 –> NULL반환.
★ 운영체제가 컴퓨터의 모든 자원을 통제

● C언어는 운영체제에 맞춰야 최적화.  windows에 맞추면 리눅스에선 최적화가 되지 않을 수 있다.
● JAVA는 JVM(가상머신)이 있어 운영체제에 맞출 필요없어 편하다.
   jdk : JAVA개발툴  (sdk를 S/W개발툴이라 부른다.)
   jre : JAVA실행환경


Application    
     |
   JVM
     |
운영체제
     |
드라이버
     |
하드웨어

JAVA언어로 짜여진 어플리케이션은 JVM에서 실시간 번역되어 운영체제 위에서 실행되고,
C언어로 짜여진 어플리케이션은 JVM과 같은 해독기가 필요없이 운영체제 위에서 실행된다.


● 고수준파일입출력방식 : 버퍼사용해 버퍼가 차면 디스크에 기록을 수행하여 효율적이다. (fscanf, fprintf)
● 저수준파일입출력방식 : 버퍼를 사용하지 않고 바로 기록하여 속도가 빠르나 비효율적이다. (read, write)

DMA : CPU를 거치지 않아 주변장치와 메모리간에 빠른 데이터전송이 가능함.

임베디드C p.321설명 부터 문서작성시작해야함.