1.4 프로세서는 메모리에 저장된 인스트럭션을 읽고 해석한다

2025. 3. 20. 19:59·CS:APP

컴파일된 실행가능한 목적파일 은 실행하기 위하여 쉘이라는 응용프로그램에 그 이름을 입력한다

  • 쉘은 사용자로부터 명령어를 입력받아 처리하는 프로그램
  • 프롬프트를 출력하고 명령어 라인을 입력받아 그 명령을 실행
  • 명령어 라인이 내장 쉘 명령어가 아닐 경우 그 파일을 로딩해서 실행
  • 자체 명령어가 아니기 때문에 외부프로그램을 실행하고 종료를 기다림

쉘 명령어

  • 내장 쉘 명령어(Built-in Commands)
    • 쉘 자체에 내장되어있는 명령어, - 쉘 자체에 내장되어 있는 명령어로, 별도의 파일 없이 내부의 코드로 바로 처리
  • ex) cd(디렉토리 변경), echo, export, alisas 등
  • 사용자가 입력하면, 쉘은 새 프로세스를 생성하지 않고 내부 함수를 호출, 명령수행
  • 외부 명령어 (External Commands)
    • 쉘에 내장되어 있지 않은 명령어로, 실행 파일 형태로 저장되어 있음.
      • ls, grep, cp 등 유틸리티 명령어가 이에 해당
    • 사용자가 입력하면, 쉘은 해당 명령어를 실행 파일의 이름으로 인식하고, 시스템 경로에 등록된 디렉토리에서 해당 파일을 찾아 새로운 프로세스를 생성하여 실행
    • 쉘과 별도의 메모리 공간에서 실행되며, 쉘 내부 상태에 직접 영향주지않음

1.4.1 시스템의 하드웨어 조직

  • 용어 설명
    • 인스트럭션 집합 구조 (Instruction set architecture)
      • ISA는 CPU가 실행할 수 있는 기계어 명령어들의 집합과, 이 명령어들이 작동하기 위한 하드웨어 자원의 구조와 동작방식을 정의한 설계 규격
      • 즉, 개발자와 컴파일러, 하드웨어 설계자가 CPU와 소프트웨어 간 인터페이스를 이해하고 활용할 수 있도록 해주는 일종의 계약(contract)
        • 하드웨어 자체 동작 뿐 아닌 소프트웨어가 하드웨어를 어떻게 제어하고 활용할지를 명시하여 시스템의 설계와 개발간 중요한 역할을 함
      • 주요 요소
        • 명령어 집합 : CPU가 인식하고 실행할 수 있는 모든 기계어 명령어들의 목록과 그 형식, 기능을 정의
        • 레지스터 집합 : CPU 내부에 존재하는 다양한 레지스터(ex. 일반 목적 레지스터, 특수 목적 레지스터 등)의 수, 크기, 역할을 규정
        • 메모리 주소 지정 방식 : 명령어에서 메모리 위치를 어떻게 참조하는지(직접 주소 지정, 간접 주소 지정, 인덱스 방식 등) 다양한 주소 지정방식을 정의
        • 데이터 형식 : 정수, 부동 소수점, 문자 등 CPU가 지원하는 데이터 타입 및 그 크기를 규정
        • 입출력 메커니즘 : CPU와 주변 장치 간의 데이터 교환 방식, 인터럽트 처리 방법 등을 포함
    • 수식/논리 처리기 (ALU; Arithmetic Logic Unit)
      • CPU 내 산술 및 논리 연산을 담당
        • 산술 연산 : 덧셈, 뺄셈, 곱셈, 나눗셈 등 수치 계산 수행
        • 논리 연산 : AND, OR, NOT, XOR 등 비트 단위 논리 연산을 처리하여 조건 판단과 제어 흐름에 기여

  • 버스 (Buses)
    • 시스템 내를 관통하는 전기적 배선군
    • 워드 word 라고 하는 고정 크기의 바이트 단위로 컴포넌트 간 데이터를 전송
      • 바이트 수는 시스템마다 다른 시스템 변수임 (대부분은 4바이트;32비트, 또는 8바이트;64비트)
  • 입출력 장치 (I/O)
    • 도표 내의 Mouse, Keyboard, Display, Disk
    • 각 입출력 장치는 I/O bus와 Controller, Adapter를 통해 연결
      • Controller는 디바이스 자체가 칩셋이거나 마더보드에 장착
      • Adapter는 마더보드 슬롯에 장착되는 카드
  • 메인 메모리
    • 데이터와 프로그램을 모두 저장하는 임시 저장장치이다
      • 물리적구성 : DRAM(Dynamic Random Access Memory) 칩들
      • 논리적구성 : 0부터 시작해서 고유의 인덱스를 보유한 연속적인 바이트들의 배열
        • 각 기계어 인스트럭션은 다양한 바이트 크기를 보유
          (short 2byte, int,float 4byte, long,double 8byte…)
  • 프로세서 (Processor)
    • CPU라고도 하며, 메인 메모리에 저장된 인스트럭션들을 실행(해독)하는 엔진
    • 프로세서 중심에는 워드 크기의 저장장치(Register)인 프로그램 카운터(PC)가 있다
      • CPU는 클럭 사이클에 따라 작동하는데, 매 사이클마다 PC는 메인 메모리의 한 주소를 가리키게됨
      • 전원이 끊어질 때 까지 매 사이클에 가리킨 주소의 인스트럭션들을 반복적으로 실행하고, PC값이 다음 위치를 가리키도록 함
    • 인스트럭션 집합구조(ISA) 로 정의되는 모델을 따라 작동하는 것처럼 보인다
      • 인스트럭션은 규칙적인 순서(여러단계를 수행함으로써)로 실행
      • 프로세서는 PC가 가리키는 메모리로부터 인스트럭션을 호출, 해석 및 실행, PC를 다음 위치로 업데이트
      • 이는 연속적일 수도 있고, 그렇지 않을 수도 있다.
      • 메인 메모리 ↔ 레지스터 파일 ↔ 수식/논리 처리기(ALU)를 순환
        • 작업 예시
          • 적재(Load) : 메인 메모리 → 레지스터 한 바이트 또는 워드를 이전 값에 덮어쓰는 방식으로 복사
          • 저장(Store) : 레지스터 → 메인 메모리 한 바이트 또는 워드를 이전 값에 덮어쓰는 방식으로 복사
          • 작업(Operate) : 두 레지스터의 값을 ALU로 복사, 두 개의 워드로 수식연산 수행, 결과를 덮어쓰기 방식으로 레지스터에 저장
            • 두 개의 레지스터(복사) → ALU(수식연산 수행) → 레지스터(덮어쓰기)
          • 점프(Jump) : 인스트럭션(한개의 워드 추출) → PC(덮어쓰기)
    • 레지스터 파일은 고유의 이름을 가진 워드 크기의 레지스터 집합으로 구성
    • ALU는 새 데이터와 주소 값을 계산

1.4.2 hello 프로그램의 실행

 

  • hello 입력 시 각각의 문자를 레지스터에 읽어들인 후 메모리에 저장
    • Keyboard (”hello” 입력) → I/O bridge → Bus interface → Register file → I/O bridge → Main memory

  • Enter키를 눌러 명령 입력을 마칠 때 파일 내의 코드와 데이터를 복사하는 인스트럭션을 실행, hello(실행파일)를 디스크에서 메인메모리로 로딩
    • 로딩되는 데이터 내에는 최종 출력문자 str “hello, world\n”이 포함

  • hello 목적파일의 코드와 데이터가 메모리에 도착, 프로세서는 hello 프로그램의 기계어 인스트럭션 실행
    • 인스트럭션 : “hello, world\n” 스트링을 메모리 → 레지스터 파일(복사) → 디스플레이 장치(전송)
728x90

'CS:APP' 카테고리의 다른 글

GCC는 C를 어떻게 기계어로 짜깁기할까? - CS:APP 3.2 요약과 인사이트  (0) 2025.04.07
암달의 법칙 (Amdahl's law)  (0) 2025.04.07
캐시와 저장장치의 상관관계  (0) 2025.03.21
1.2 프로그램은 다른 프로그램에 의해 다른 형태로 번역된다  (0) 2025.03.20
1.1 정보는 비트와 컨텍스트로 이루어진다 (ASCII, Text/non-Text file, Context)  (0) 2025.03.17
'CS:APP' 카테고리의 다른 글
  • 암달의 법칙 (Amdahl's law)
  • 캐시와 저장장치의 상관관계
  • 1.2 프로그램은 다른 프로그램에 의해 다른 형태로 번역된다
  • 1.1 정보는 비트와 컨텍스트로 이루어진다 (ASCII, Text/non-Text file, Context)
ahpicl64
ahpicl64
in the clouds
  • ahpicl64
    구름
    ahpicl64
  • 전체
    오늘
    어제
    • 분류 전체보기 (95)
      • WIL (4)
      • Jungle (36)
      • AWS (2)
      • SQL (2)
      • CS:APP (17)
      • Algorithm (10)
      • K8s (7)
      • 자료 구조 (10)
      • Spring (4)
      • React (0)
      • 운영체제 (1)
      • 기타등등 (2)
      • 이야기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    python
    트러블슈팅
    DevOps
    어셈블리
    CloudFront
    컴퓨터시스템
    k8s
    AWS
    DB
    queue
    EC2
    github actions
    S3
    부하테스트
    CSAPP
    Spring
    알고리즘
    IAM
    Spring boot
    자료구조
  • 02-21 18:10
  • hELLO· Designed By정상우.v4.10.3
ahpicl64
1.4 프로세서는 메모리에 저장된 인스트럭션을 읽고 해석한다
상단으로

티스토리툴바