컴공 전공 공부

[3] 시스템프로그래밍 -FILE IO(2) 본문

시스템 프로그래밍

[3] 시스템프로그래밍 -FILE IO(2)

HUFS_COMPUTERPROGRAMER 2022. 6. 11. 17:28

*System Calls

-kernel에 직접적인 접근

Library Calls

- kernel에 접근할 수 있는 하나의 계층을 더 둠

 

*inode: 각각의 file system의 file은 하나의 inode를 가지고 있다.

-파일 시스템 매체에서 파일을 구분하기 위해 쓰는 것

 

*inode contents: inode 하나가 하나의 파일이 된다.

-file name

-file type

-file owner id

-access permission

-creation/modified time: 파일 수정 및 생성 시간

-file size

-file data block addr .table :실제 파일이 disk의 어디에 저장되어 있는지

 

*FILE types

-regular file: 일반파일(text, binary files, images, audio files)

-directory file : 자신이 갖고 있는 파일의 list 정보를 가지고 있음

-FIFO file(pipe)

-special files

:Character special files- 접근을 할 수 있는 매개체 , 통로(keyboard,mouse) /Block special files - 큰 용량의 데이터를 주고받는 것들(HDD file systems)

-symbolic link files: 다른 파일을 우회하여 접근할 수 있는 파일(접근 경로)

 

*File descripter:  a process can open 1024 files : 너무 많은 파일에 접근할 시 더이상 접근할 수 없다. user마다 열 수 있는 파일 개수를 제한시킴.

 

*FILE OPEN

*FILE ACCESS MODE

*FILE CLOSE

*FILE CREATION

*FILE SEEKING

->새롭게 지정된 offset 값 반환

 

*FILE READING

1.(읽어서 저장될 BUFFER 공간 마련된 후) 데이터를 읽어옴

2.버퍼 포인터로 전달

3.실제 읽은 데이터를 byte 형태로 받아 개수를 반환

 

*FILE WRITING

1.read 와 반대로 미리 쓸 데이터가 buffer에 기록되어야 함

2.버퍼 포인터를 넘겨줌

3.쓸 데이터 양을 byte 크기로 써줌

->쓴 데이터의 byte 개수만큼 반환이 됨

 

*Duplication of file descriptor

: 동일한 파일에 대해 중복된 파일 descripter를 만들 수 있는 system call api

 

*LINK

1. Symbolic link: 원본 파일에 대해서 파일의 이름에다가 link를 걸음->실제적 내용이 아님

-path만 가지고 내용이 없어 target file이 지워진다면 symbolic link는 파일 접근 방법이 없어짐

2.Hard link: 원본 파일을 file system에서의 inode를 가리키는 정보를 가진 파일 생성

-inode를 가리켜 해당 원본 file이 update 되더라도 정보가 저장되며, 지워지더라도 남아 정보 접근 가능

 

*chmod 0755 testfile 

0 : setuid(4),setgid(2), sticky bit(1) 특수권한 모두 다 0으로 설정

sticky bit(1) - 특정 directory에서 모든 user이 생성가능하며, 접근 가능하게 함.

7 : 소유자 접근 권한rwx

5 : 그룹 소유자 접근 권한 r-x

5 : 기타 사용자 접근 권한 r-x

 

*Process 's creator

-getuid: user id를 가져옴

-getgid: group id를 가져옴

-geteuid: effective user id를 가져옴(file owner's id)

 

*File access permission

 

 

*umask() - changes the default permission

:파일의 기본 permission 설정을 할 수 있게 함

$umask 0022 ->a new file permission is set to 0644 :설정하고 싶지 않은 값을 넣어줌

 

*Ownership change

chown- 특정 파일에 대한 소유주 설정/ 디렉토리 권한 설정

lchown- 일반 file의 경우 동일하게 동작하지만symbolic 파일은 파일 자체에 대한 소유주 결정함

fchown- 경로의 파일에 대한 권한

 

*readlink() - 해당 링크의 원보파일 이름을 알아내는 것

 

*File information retrieval

stat - pathname으로 주어진 경로이름에 해당하는 파일에 대한 정보를 둘째 인수인 buf 구조체를 통해 얻는다.

fstat - 파일 디스크립터 filedes에 대해 이미 열려 있는 파일에 대한 정보를 조회한다.

lstat – 지정된 파일이 심볼릭 링크(Symbolic link)이면 그 링크가 가리키는 파일이 아니라

             그 링크 자체에 대한 정보를 돌려준다.

 

 

'시스템 프로그래밍' 카테고리의 다른 글

[2]File IO: Standard I/O Library  (0) 2022.06.11