새소식

인기 검색어

컴퓨터공학/운영체제

11장 파일 시스템 관리

  • -

Q1 : 파일 입출력 시에 응용프로그램, 운영체제, 디스크 장치가 각각 사용하는 주소에 대해 설명하고 주소 변환이 어디서 이루어지는지 설명하라. 여기서 운영체제는 CHS 물리 주소를 사용하지 않고 논리 블록 주소만 사용한다. 이렇게 함으로써 얻어지는 장점은 무엇인가?

 

A1 : 응용프로그램은 파일 내 바이트 주소를 사용하고 운영체제는 논리 블록 주소를 사용하며 디스크 장치는 디스크 물리 주소를 사용한다. 응용프로그램에서 운영체제에게 바이트 주소를 알려주면 운영체제는  바이트 주소를 논리 블록 주소로 변환하고 논리 블록 주소를 디스크장치에게 전달해주면 디스크 장치는 논리 블록 주소를 CHS 물리 주소로 변환한다. 운영체제가 논리 블록 주소만 사용하는 이유는 저장매체의 종류나 하드웨어 특징에 관계없이 구현가능하기 때문이다.

 

 

Q2 : fread() 함수의 호출에서 시작하여 파일 블록이 읽혀오는 과정을 단계별로 간단히 나열하면서 설명하라.

 

A2 : fread가 호출되면 라이브러리에 fread가 호출되고 라이브러리에 있는 버퍼를 확인한 후 버퍼에 값이 없다면 시스템 호출을 통해 파일 입출력 커널 코드를 호출하여 파일의 바이트 주소를 논리 블록 주소로 변환하여 파일이 어느 블록에 있는지 찾은 후 블록들을 저장하는 버퍼 캐시를 확인하여 값이 있다면 라이브러리 버퍼로 리턴하고 값이 없다면 디스크 디바이스 드라이버에게 논리 블록 주소를 전달하여 물리 블록 주소로 변환한뒤 해당하는 디스크 블록을 읽은 후 디스크 캐시에게 전달하여 DMA장치를 통해 버퍼 캐시로 전달해주고 인터럽트를 발생시켜 버퍼캐시에 저장되어있는 값을 버퍼에 복사한다.

 

 

Q3 : 파일 시스템 메타 정보와 파일 메타 정보에는 어떤 것들이 있는지 나열하고, FAT 파일 시스 템과 Unix 파일 시스템에서 이들이 각각 어디에 저장되어 있는지 설명하라.

 

A3 : 파일  시스템 메타 정보는 파일 시스템 전체 크기와 현재 사용크기, 저장 장치에 구축된 파일 시스템의 비어있는 크기 및 비어있는 블록들의 리스트가 저장되어있고 파일 메타 정보에는 파일 이름, 크기, 파일이 만들어진 시간, 수정된 시간, 파일에 가장 최근에 액세스한 시간, 파일을 만든 사용자, 파일 속성, 파일이 저장된 위치가 저장되어있다. FAT파일 시스템은 디렉터리에 Unix파일 시스템은 수퍼블록에 파일 시스템 메타 정보가 i-node에 파일 메타 정보가 저장된다.

 

 

Q4 : 32비트 운영체제에서 i-node를 사용하여 파일 블록들의 위치를 저장할 때, 블록의 크기가 4KB인 경우, 하나의 파일의 최대 크기는 얼마까지 가능한가?

 

A4 : 4TB + 4GB + 4MB + 48KB

 

 

Q5 : FAT 파일시스템에서 FAT 테이블의 한 항목의 크기가 32비트이고 블록의 크기가 4KB라고 하 면, 파일 시스템의 최대 크기는 얼마인가?

 

A5 :  2^32 * 2^12 = 2^44 = 16TB

 

 

Q6 : 운영체제 커널에 내에 있는 버퍼 캐시는 여러 면에서 좋은 점과 나쁜 점이 있다. 이들을 각각 설명하라.

 

A6 : 디스크 장치에서 응용프로그램으로 파일 데이터가 도착하는데 많은 시간이 걸리지만 동일한 파일 블록이 여러번 액세스되는 경우나 여러 스레드에 의해 동일한 파일이 공유되는 경우 파일 입출력 성능을 향상시킨다.

 

 

Q7 : 파일 디스크립터란 어떤 것인가? 정수인가 주소인가? 그러면 파일 디스크립터 0, 1, 2의 용도 는 무엇인가?

 

A7 : 열린파일마다 매겨진 고유한 정수번호이다. 0은 표준 입력, 1은 표준 출력, 2는 표준 오류 장치를 가르킨다. 표준 입력은 키보드, 표준 출력과 표준 오류 장치는 디스플레이 장치를 가르킨다.

 

 

Q8 : int fd = open("/etc/code/os.c", O_RDONLY)이 실행되는 과정을 커널 내 자료 구조들의 변 화와 함께 번호를 매겨가면서 그려라. open()은 어떤 경우에 실패하는가?

 

A8 : 파일이 존재하지 않거나, 현재 프로세스의 접근권한이 잘못되어있을 경우 파일을 여는데 실패한다.

 

Q9 : 8번문제와 같이 파일을 열었을 대, write(fd, buf, 100)이 실행될 때 write() 시스템 호출이 실패한다. write()하는 과정 중 어떤 과정에서 실패로 판정되는가?

 

A9 : fd값을 이용하여 오픈파일 테이블의 항목을 알아내는 과정에서 열기모드를 검사하여 쓰기가 가능함을 확인하는 과정에서 실패한다.

 

 

Q10 : 복합문제 1번을 풀어라. 다음은 FAT 파일 시스템에서 FAT 테이블을 보여준다. 이것으 참고하여 다음 질문에 답하라.

(1) exam.txt 파일의 첫 번째 블록이 53번 디스크 블록에 할당되어 있다면 exam.txt 파일이 적 재된 디스크 블록들을 순서대로 나열하라.

 

A : 53-> 2 -> 124 -> 54 -> 320

 

(2) 블록 크기가 1KB라면 exam.txt 파일의 크기에 가장 적절한 것은?

① 1KB

② 4KB

③ 4.5KB

④ 53KB

 

A : 3번

 

Q11 : 복합문제 3번을 풀어라. 유닉스 파일 시스템에서 /usr/dev/source/app.c 파일을 읽으려고 한다. 다음 질문에 답하라.

 

(1) 이 파일을 읽기 위해 운영체제는 몇 개의 i-node를 읽어야 하는가? 읽어야 하는 i-node를 순서대로 나열하라.

 

A : / -> /usr -> /usr/dev -> /usr/dev/source -> /usr/dev/source/app.c    5개.

 

(2) 디스크 블록은 최소 몇 개를 읽어야 하는가?

 

A : 최소 5개

 

(3) i-node와 디스크 블록들이 읽혀지는 순서를 기술하라.

 

A : /의 i-node -> /의 디스크 블록 -> /usr의 i-node -> /usr의 디스크 블록 -> /usr/dev의 i-node -> /usr/dev의 디스크 블록 -> /usr/dev/source의 i-node -> /usr/dev/source의 디스크 블록 -> app.c의 i-node -> app.c파일

 

 

(4) /usr/dev/source/app.c 파일이 읽혀지는 과정을 생각해볼 때, 운영체제가 i-node 테이블을 메모리에 적재해 두고 사용하는 이유는 무엇인가

 

A : 파일을 읽거나 쓸때 여러개의 i-node를 거치는데 그럴때마다 i-node 리스트가 저장되어 있는 하드디스크에 접근하기 위해 시스템 호출을 사용하여야 하기 때문이다.

'컴퓨터공학 > 운영체제' 카테고리의 다른 글

프로세스(Process)  (1) 2024.01.05
10장 가상 메모리  (0) 2023.05.28
9장 페이징 메모리  (0) 2023.05.28
7장 교착상태  (0) 2023.05.28
6장 스레드 동기화  (0) 2023.05.28
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.