2025. 3. 24. 23:45ㆍ개발
(전처리기, 컴파일러, 어셈블러, 링커)를 합쳐서 컴파일 시스템이라 부름
전처리기 : 본래의 C프로그램을 #문자로 시작하는 디렉티브에 따라 수정하여, .i로 끝나는 새로운 C프로그램으로 든다.
컴파일 단계: 텍스트 파일 .i 를 텍스트파일인 .s 파일로 번역하고 한단계의 저수준인 어셈블리어로 번역되어 출력파일을 생성한다.
어셈블리 단계: 어셈블러가 .s 파일을 기계어 인스트럭션으로 번역하고 이들을 재배치 가능 목적프로그램의 형태로 묶어서 .o라는 목적 파일에 그 결과를 저장한다.
링크 단계 : 이전의 목적파일을 링커가 묶어 하나의 실행파일로 만들고 시스템의 의해 실행된다.
시스템의 하드웨어 조직
버스(buses) : 시스템 내를 관통하는 전기적 배선군, 컴포넌트간에 바이트 정보를 전달함
입출력 장치 : 시스템과 외부세계와의 연결을 담당 ex) 키보드, 마우스, 모니터등
메인메모리 : 메인 메로리는 프로세서가 프로그램을 실행하는 동안 데이터와 프로그램을 모두 저장하는 임시저장 장치, 메인 메모리는(DRAM칩), 한개의 프로그램을 구성하는 각 기계어 인스트럭션은 다양한 바이트 크기를 갖는다.
프로세서 : 메인 메모리에 저장된 인스트럭션들을 해독하는 엔진이다. pc가 가리키는 메모리로 부터 인스트럭션을 읽어오고, 이 인스트럭션에서 비트들을 해석하여 이스트럭션이 지정하는 간단한 동작을 실행함
적재(Load) : 메인 메모리 → 레지스터 값을 덮어쓰는 방식으로 저장
저장(Store) : 레지스터 → 메인메모리
작업(Operate) : 각 레지스터값을 ALU(연산기능) 연산후 레지스터에 저장
점프(Jump) : 인스트럭션 중 하나의 워드를 추출하여 pc에 덮어쓰기
프로그램의 간단한 실행 과정
명령을 키보드에서 읽는 과정 :
입출력 장치 → I/O 브릿지 → bus interface → 레지스터 파일 → ALU(계산) → bus interface -> I/O 브릿지 → 메인 메모리
직접 메모리 접근 방식:
디스크 → 디스크 컨트롤러 → I/O 브릿지 → 메인메모리
출력 스트링을 메모리에서 화면으로 기록하는 과정:
메인 메모리 → I/O 브릿지 → bus interface → 레지스터 파일 → bus interface → I/O 브릿지 → 어댑터 → 디스플레이
'개발' 카테고리의 다른 글
| 동적 메모리 할당(Malloc) 심화 및 구현 1-2 (0) | 2025.04.30 |
|---|---|
| 동적 메모리 할당(Malloc) 심화 및 구현 1-1 (0) | 2025.04.28 |
| 정글에서 0주차(정글 익명 게시판 토이 프로젝트) (1) | 2025.03.15 |
| JWT , Refresh 토큰 (0) | 2024.04.22 |
| 사이드 프로젝트 - 미스테리 스케치 (0) | 2024.03.11 |