• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    해결됨

1강에서 메모리와 cpu는 언제 사용되나요?

23.07.24 16:10 작성 조회수 197

0

안녕하세요 강의 듣다가 궁금한 점이 있어서 질문 드립니다.

 

hello world를 출력 했을때의 과정으로

디바이스 -> 드라이버 -> 구성요소 -> 디바이스파일 -> 프로세스 순으로 올라갔다가

다시 내려오는 것으로 동작 과정을 설명해주셨는데 여기서 cpu와 메모리는 언제 쓰여지나요?

 

이전 강의에서 프로그램을 실행하면 프로세스가 생성되서 메모리에 공간을 할당받고

cpu가 접근해서 요청에 필요한 데이터를 받아 연산을 실행하고 다시 메모리에 돌려준다고

하셨는데 어떻게 연결해야할지 모르겠습니다.

 

검색해보면서 과정을 정리해봤는데 이게 맞는지 봐주시면 감사하겠습니다.

 

  1. hello world를 출력하고 싶다면 컴퓨터에 비디오 카드 디바이스가 연결되어 있어야 한다. (필요한 다른 디바이스는 있다고 가정

     

  2. 비디오 카드 디바이스의 데이터를 커널 영역(커널 모드에서 접근 가능한 메모리 영역)의 디바이스 드라이버가 받아 변환해준다.

     

  3. 변환한 데이터를 커널 영역의 그래픽 엔진 시스템 소프트웨어가 받아준다. 디바이스마다 시스템 소프트웨어가 다르다. <- 이거 맞는 이야기인가요?

     

  4. 비디오 카드 디바이스 드라이버는 자신을 추상화한 인터페이스(디바이스 파일. 파일의 형태이다.)를 유저 모드에 제공해준다.

     

  5. 이제 hello world를 출력했다. 그러면 os는 프로세스를 생성하고 저장장치의 프로그램으로부터 필요한 데이터를 복사해 메모리로 가져온다.

     

  6. 그리고 프로세스에 메모리 공간을 일정부분 할당해준다.

     

  7. cpu가 명령(hello world를 출력 명령)을 수행하기 위해 유저 모드로 프로세스가 할당된 메모리 주소와 디바이스 파일에 접근해 필요한 데이터를 받아 연산 후 실행한다.

     

  8. 이때 인터럽트를 받으면 잠시 멈추고 해당 인터럽트 명령을 실행 완료하고 원래 하던 작업으로 돌아와 다시 시작한다.

     

  9. 실제 출력을 위해 커널 모드로 그래픽 엔진이 할당받은 시스템 메모리에 접근해 연산 결과를 넘기고 그래픽 엔진은 이를 디바이스 드라이버에 넘기고, 디바이스 드라이버는 디바이스로 넘겨 디바이스가 출력을 수행하게 된다.

 

 

답변 2

·

답변을 작성해보세요.

1

각 장치들에 해당하는 구성요소가 아니라 OS를 이루는 구성요소에 대한 장치 혹은 장치 드라이버가 제공되는 것입니다. 가령 비디오 장치를 통해 모니터로 출력이 이루어지지만 사실 이것은 어떻게 생각하면 동영상입니다. 만일 이 동영상을 USB 드라이브로 저장해준다면 그래픽 엔진이라는 OS 구성요소가 USB 장치 드라이버 및 파일 시스템 드라이버와 연결될 것입니다.

그리고 실행은 조금 복잡합니다. 이 주제만으로도 OS책의 몇 챕터가 나옵니다. 그 긴 내용을 단순 무식하게 요약하면 '연산'이 됩니다. 이어서 메모리고 값이 복사 되는 것은 연산의 결과로 이해 할 수 있겠습니다.

1

CPU는 전체 과정에서 다 사용됩니다. 그것을 장치가 일부 해주면 보통 '가속'이라는 말을 붙여줍니다. 그리고 3번에서 장치마다 드라이버 소프트웨어가 다른 것입니다. 그리고 입/출력 요청은 프로세스가 합니다.

그러니까 프로세스가 실행되는 것이 첫 번째가 되어야 하며
Hello world 문자열 정보를 파일에 쓰면
인터페이스 장치 파일이 수신한 정보를 구성요서에 넘기고
구성요소(보통 그래픽 엔진)는 비디오 장치 드라이버에게 넘기고
장치 드라이버는 H/W에 정보를 넘겨 제어하고
모니터로 출력 됩니다.

참고하시기 바랍니다.

pansakr님의 프로필

pansakr

질문자

2023.07.24

답변 감사합니다.

궁금한게 몇가지 더 있는데 '구성 요소' 라는것이 무엇인지 잘 모르겠습니다.

강의에 보면 비디오 카드는 구성요소 부분이 그래픽 엔진이라고 설명하셨고

hdd는 파일 시스템이라고 하셨는데요

각각의 장치들마다 해당하는 커널 영역의 소프트웨어를 os가 제공해주는건가요?

 

그리고 프로세스가 실행한다는 뜻이 cpu가 요청 데이터를 받아 연산후 다시 메모리에 돌려준다는 뜻인가요?

이후 프로세스가 받은 연산 결과를 가지고 인터페이스에 쓰고 이것이 구성 요소로 내려가는 순서로 진행되는 것인가요?