[SW정글 8일차] hello 프로그램을 실행할 때 무슨 일이 일어나요?

rg.log·2022년 9월 26일
0

SW 사관학교 JUNGLE

목록 보기
3/31

비슷한 유형으로는 주소창에 www.google.com 검색하면 무슨 일이 일어나나요?

내가 본 건 구글 로고와 밑에 input을 받을 수 있는 검색창이 뜨는 모습이었다.
이 질문은 주소창에 url을 검색하고 엔터를 누른 후 구글 로고 검색창이 나오기까지의 과정 즉, web의 구동방식을 물어보는 질문이다.

hello 프로그램을 실행할 때 무슨 일이 일어나요?

  1. shell에 ".hello" 를 입력하면 각각 문자를 레지스터에 읽어들인 후, 메인 메모리에 저장한다.
  2. enter를 입력하면 shell에서는 명령 입력이 끝마쳤다는 것을 인지하고, 파일 내의 코드와 데이터를 복사하는 인스트럭션(명령)을 실행한다.
    2-1. DMA(직접 메모리 접근)을 이용해 데이터(hello 파일 속 "hello, world\n")는 프로세서를 거치지 않고 디스크에서 메인 메모리로 이동된다.
  3. 메인 메모리에 hello 목적 파일의 코드와 데이터가 적재되면, 프로세서는 hello 프로그램의 main 루틴의 기계어 인스트럭션을 실행하기 시작한다.
    3-1. 해당 인스트럭션들로는 string 형식으로 된 "hello, world\n"를 메인 메모리로부터 레지스터 파일로 복사한 후 디스플레이 장치에 전송하여 화면에 글자들이 표시된다.

해당 과정을 이해하면서 찾아본 용어 정리

  • 엔진
    다른 프로그램들을 위해서나, 특정 프로그램 내부에서 해당 프로그램 위해 핵심적이고 본질적인 기능을 수행해 주는 프로그램

  • bus interface
    메인 메모리에 올라와 있는 프로그램이 bus를 통해 CPU로 들어오면 bus interface에서 해당 통신 방식을 이해시켜주고, 미리 실행하고 있는 연산이 있다면 register set에 저장해둔다. 이를 Control Unit에서 명령어를 해독 (decode) 후, ALU로 이동해서 연산(실행) 한다.

  • I/O 장치들은 직접 system bus에 접근할 수 없다. 다양한 I/O들의 길이와 속도가 다양하기 때문에 device controller를 거쳐서 전달하게 된다.

  • DMA(Direct Memory Access) : 직접 메모리 접근
    특정 하드웨어의 하위 시스템이 CPU와 독립적으로 메인 메모리에 접근할 수 있게 해준다. 왜냐하면,
    만약 모든 메모리 접근 연산이 CPU에 의해서만 이뤄진다면, 입출력 장치가 메모리 접근을 원할 때마다 interrupt에 의해서 CPU의 업무가 방해받아 CPU 사용 효율성이 떨어지기 때문이다. 해서 DMA로 CPU 발생 intterupt 빈도를 줄여주어 CPU를 좀 더 효율적으로 관리 및 입출력 연산 빠르게 수행하도록 하기에 요즘 OS에 많이 사용되고 있다.

  • 로컬 버퍼
    device controller에는 장치로부터 들어오고 나가는 데이터를 임시 저장하기 위한 작은 메모리가 있다. disk나 keyboard에서 데이터를 읽어올 때, controller가 로컬 버퍼에 데이터를 임시 저장한다. 그 후 메모리에 전달된다. 해서 device controller는 CPU에서 내린 명령들 + 로컬 버퍼로 구성되어 있다고 볼 수 있다.

  • 목적 파일 / 실행 파일

    • 목적 파일(object file) : 기계가 계산 순서를 이해하는 수준의 프로그래밍 파일이다. 하지만 프로그래밍 실행이 불가한 이유는 소스파일 작성시 실수한 무수한 문법 오류가 튀어나와 이를 디버깅하고, 컴파일하고, 컴퓨터로부터 ok 사인을 받기까지 무한 반복해야하기 때문이다.
    • 실행 파일(executable file) : 링크 작업(목적파일 + 라이브러리 파일들) 이 끝나면 생성되는 파일로, 이를 실행하면 프로그램 결과물을 출력할 수 있다.

팀원들이랑 파트를 분배하여 서로에게 강의해 주었던 내용을 적어보았다. 옆자리에서 서로 알려주는 것과는 또 다른 느낌이었고, 서로 공부하고 알려주는 내용들이 합쳐져 더 깊이 이해되는 부분도 있고, 잘 알려주기 위해서 각 잡고 딥하게 공부하게 되는 모습도 생겨서 효율적인 공부 방법으로 느껴졌다.

0개의 댓글