강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của goooooooodjob
goooooooodjob

câu hỏi đã được viết

Trở thành chuyên gia kỹ thuật máy tính bằng cách ghi nhớ rộng và nông

User mode, Kernel mode và cả ảo hóa!

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

Đã giải quyết

Viết

·

173

·

Đã chỉnh sửa

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 두가지 타입이 있음.
특수 파일은 일반 파일과 달리 단순 운영체제와의 인터페이스로 데이터를 저장하는 행위는 하지 않음.

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

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



 

운영체제

Câu trả lời 1

0

nullnull8537님의 프로필 이미지
nullnull8537
Người chia sẻ kiến thức

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

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

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

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

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

goooooooodjob님의 프로필 이미지
goooooooodjob
Người đặt câu hỏi

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

Hình ảnh hồ sơ của goooooooodjob
goooooooodjob

câu hỏi đã được viết

Đặt câu hỏi