inflearn logo
강의

Course

Instructor

Become a computer science major by memorizing broadly and shallowly

User mode and Kernel mode, and even virtualization!

인터페이스로 File을 사용한다는 것

Resolved

176

goooooooodjob

1 asked

0

 안녕하세요 강의 잘 듣고 있습니다. 감사합니다.

강의에서 Hello World가 화면에 출력하는 예시를 들어 설명하신 부분에서 Device file 이라는 인터페이스를 통해서 User Process와 Kernal이 상호작용한다고 하셨습니다.

 

이때, Device File에 무엇을 읽고 쓴다는 것은 Memory 나 Disk에 적재하는 과정이 될 거 같다는 생각이 듭니다. 맞을까요?

아래는 영상에서 설명한 예시에서 제가 생각한 과정입니다.

  1. Device File 에 "Hello world" 출력하라는 명령을 쓰기 위해 User -> Kernal -> H/W(Memory or Disk)

  2. "Hello World" 출력하기 위해서 Kernal -> H/W (영상에서 설명하신 부분)

총 두 번 일어나는 것이 맞는건가요?

뭔가 현대에는 최적화가 잘 되어서 1번으로 끝낼 수 있게 구성이 되어 있을 거라고 생각이 들긴 합니다.


*구글링으로 찾아본 내용

리눅스 파일의 종류엔 3가지가 존재

  1. 일반 파일: 데이터를 담을 수 있음

  2. 디렉토리 파일: 일반 파일을 담을 수 있음

  3. 특수 파일 (Socket, Device File, Named Pipe)

영상에서 언급해주신 Device File 은 특수파일에 해당
Device File은 특수파일의 하위 집합으로 character device file, block device file 두가지 타입이 있음.
특수 파일은 일반 파일과 달리 단순 운영체제와의 인터페이스로 데이터를 저장하는 행위는 하지 않음.

그럼 왜 파일이라고 하는건가? 일단, 리눅스는 "모든게 파일이다." 라는 철학을 갖고 있음. 그렇다면 왜 모든 걸 파일로 정의했는가?
=> 다양한 자원을 하나의 일관된 인터페이스로 추상화하여, 파일을 읽고 쓰는 방식으로 모든 자원(디스크, 장치, 네트워크 등)을 다룰 수 있도록 하기 위함

질문을 드렸지만, 궁금해서 구글링을 해서 찾아 아래 부분에 찾은 내용을 정리했습니다.
제가 찾은 내용이 좀 틀렸다면 정정해주시면 감사하겠습니다!



 

운영체제

Answer 1

0

nullnull8537

우선 질문한 내용은 일부 수정이 필요하겠습니다.

  1. Device File에 "Hello world" 출력
    이 부분은 Device file에 "Hello world"라는 bit stream을 write하는 것 입니다.

  2. 이는 장치마다 다를 수 있습니다.

사용자 모드 응용 프로그램이 특정 장치로 정보를 전달하는 과정은 장치 파일에 대한 쓰기로 가능합니다. 이 과정에서 Buffered I/O가 이루어진다면 메모리가 필요합니다. 그리고 다시 커널 드라이버에서 실제 하드웨어로 정보가 전달되도록 하기 위해 또 다른 메모리가 필요하다면 같은 내용을 한 번 더 복사하게 될 수 있습니다.

검색엔진에서 찾아본 내용과 더불어 함께 생각해보시기 바랍니다. 참고로 '모든 것이 파일' 이라는 개념은 윈도우라 해서 크게 다르지 않습니다. 참고하시기 바랍니다. 😄

0

goooooooodjob

Buffered I/O 잘 배웠습니다. 감사합니다!

선생님 질문이있습니다.

0

69

2

"한글 한 글자를 저장하는 데 2바이트가 필요하다" 에서 궁금한 점이 있습니다

0

162

2

원자성과 동기화에 대한 사소한? 질문 있습니다.

0

64

1

전가산기에 대한 질문이 있습니다!

0

92

2

format 시 0-0트랙 섹터에 관해

0

89

2

앞으로의 공부 질문

0

113

1

정규표현식 학습에 대한 조언 부탁드립니다.

0

200

2

메모리 용량에 관하여

0

139

1

파일 시스템 관련 질문입니다.

0

156

2

자료 구조

0

258

2

강의의 대한 추가질문

0

213

2

컴퓨터가 글자를 다루는 방법 -> 코드체계 질문

0

206

2

진법변환 개념정리

0

593

2

컴퓨터가 사진을 다루는 법에 대해 질문입니다.

1

200

2

컴퓨터가 곱셈 하는 방법

0

337

2

1비트 1바이트 1킬로바이트

0

403

1

캐시 메모리

0

201

1

[외워야 할 단위 체계와 숫자] 비트 체계와 용량 관련 질문 있습니다.

0

415

2

[컴퓨터가 글자를 다루는 방법] 숫자와 캐릭터 바이너리가 같다면...

0

374

2

CPU 연산체계에 대해서 궁금한 점이 있습니다.

0

319

2

shell에 관련하여 질문드립니다.

0

281

2

가상메모리 관련 질문있습니다.

0

306

2

선생님 안녕하세요

0

318

1

수업방식

0

364

1