201228 개발일지(21일차) - 컴퓨터 시스템 정리 : 1장 컴퓨터 시스템으로의 여행(2)

고재개발·2020년 12월 28일
0

Computer System

목록 보기
2/13

지난 정리에 이어 1장 나머지 부분을 정리할 예정이다. 아마 총 4회로 나눠질 예정이다.

hello 프로그램의 실행

  • 1단계
    1. 쉘 프로그램에서 "./hello"를 입력한다.
    2. 각 문제를 레지스터에 불러들인 후 main memory에 쉘에 작성돼있는 ".hello"를 저장한다.
  • 2단계
    1. 키보드에서 엔터를 누르면 쉘은 명령 입력 끝으로 안다.
    2. 그러면 입력된 'hello'인 실행파일을 디스크에서 메인 메모리로 로딩한다.
    3. 이 기법은 직접메모리접근(DMA)으로 데이터가 CPU를 거치지 않고 디스크에서 바로 메인 메모리로 이동한다.
  • 3단계
    1. hello 목적파일의 코드와 데이터가 메모리에 적재된 후, CPU는 hello 프로그램의 main 루틴의 기계어 인스트럭션을 실행하기 시작한다.
    2. "hello, world\n" 문자열을 메모리로부터 레지스터 파일로 복사한다.
    3. 그 후, 디스플레이 장치로 전송하여 화면에 글자들이 표시된다.

캐시(캐시 메모리)는 왜 필요할까?

위의 프로그램 실행 과정을 보면, 정보를 한 곳에서 다른 곳으로 이동시키는 일에 많은 시간을 보낸다는 것이다.
캐시(캐시 메모리)라고 부르는 저장장치를 고안하여, 빠른 작업을 할 수 있도록 한다. 캐시에는 cpu가 단기간에 필요로 할 가능성이 높은 정보를 임시로 저장한다.
아래 저장장치 계층구조를 보면, 이해에 도움이 될 것이다.

여기서 프로그래머로서 알아야 할 가장 중요한 내용은, 캐시를 활용하여 자신의 프로그램 성능을 개선할 수도 있다는 점이다.

저장장치 계층구조

당연한 얘기일 수 있지만 저장 용량이 커질수록 속도는 느려지고, 용량 크기당 비용이 싸진다.

출처 : (https://velog.io/@emplam27)

여기서 알아야 할 점은 계층구조 바로 위에 있는 저장장치는, 바로 아래의 저장장치의 캐시 메모리 역할을 한다는 점이다.

운영체제(Operation System)

쉘 프로그램이 hello 프로그램을 로드하고 실행했을 때와 메시지를 출력할 때 프로그램은 키보드나 디스플레이, 디스크나 메인 메모리를 직접 엑세스하지 않고 운영체제(Operation System)가 제공하는 서비스를 활용한다. 운영체제는 아래 그림처럼 하드웨어와 소프트웨어 사이에 위치한 소프트웨어 계층으로 생각할 수 있다. 응용프로그램이 하드웨어를 제어하려면 언제나 운영체제를 통해서 해야 한다.
운영체제는 아래 두 개의 주요 목적을 가진다.

  1. 제 멋대로 동작하는 응용프로그램들이 하드웨어를 잘못 사용하는 것을 막는다.
  2. 응용프로그램들이 단순하고 균일한 메커니즘을 활용하여 복잡하고, 매우 다른 저수준의 하드웨어 장치들을 조작할 수 있도록 도와준다.(위 그림은 운영체제의 2가지 주요 목적을 추상화를 통해 달성하고 있다. Files는 입출력장치의 추상화 / Virtual memory는 입출력장치+메인메모리의 추상화 / Processes는 프로세서+메인메모리+입출력장치의 추상화 결과다.

+ 운영체제 중요한 내용이 많아 다음 포스팅에 이어서!

오늘의 용어 정리

  • 직접메모리접근(DMA) : Direct Memory Access의 약자로, 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인 메모리와 접근하게 해주는 컴퓨터 시스템 기능이다.
    작업이 끝나면, DMA Controller가 CPU에게 작업이 끝났다고 인터럽트를 보내준다.
    이와 반대 개념으로 PIO(Programmed Input/Output)라는 개념이 있다.
profile
고재개발

2개의 댓글

comment-user-thumbnail
2020년 12월 30일

그럼 카카오톡 캐시데이터 지워요 말아요? ㅋㅋㅋㅋㅋㅋ 카톡용량 15기가입니다만,

1개의 답글

관련 채용 정보