CA & OS

Clear·2023년 11월 15일
0

메모리 영역

  • Code Area
    읽기 영역 (Text Area) 제어문 , 함수 , 상수

  • Data Area
    전역 · 정적 변수 , BSS 는 초기화되지 않는 전역변수

  • Heap Area
    사용자가 관리하는 동적할당 공간

  • Stack Area
    지역변수 , 매개변수
    함수 종료시 쓰레드에 해당하는 변수 해제

컴파일 과정 순서

  • 전처리 (.i)
    외부에 선언된 소스코드 , 라이브러리 포함
    주석제거
    매크로 치환 적용

  • 컴파일 (.s)
    전처리된 소스코드파일 어셈블리어 변환
    언어문법 검사
    정적영역 메모리 할당

  • 어셈블리 (.o)
    어셈블리어 파일 -> 오브젝트 파일 변환

  • 링킹 (.exe)
    오브젝트 파일 · 프로그램에 사용되는 라이브러리 링크 => 하나의 실행파일 변환

인출 사이클 레지스터

  • PC
    메모리에서 가져올 명령어 주소 저장
    특별한 경우 제외 순차적 주소 값 증가

  • MAR
    PC 에서 주소 값을 받아 메모리 접근
    제어장치의 제어신호화 함께 메모리 접근

  • MBR
    MAR 에서 접근한 메모리 명령어 · 데이터 저장

  • IR
    MBR 에서 저장된 명령어 · 데이터 해석

인터럽트

CPU 가 진행하고 있던 작업을 중단시키는 상황

  • 동기 인터럽트
    CPU 가 직접 작업 중단

  • 비동기 인터럽트
    입출력 장치에서 인터럽트 요청신호 호출 ↓
    FLag Register 의 IF 활성화 여부에 따라 인터럽트 결정 ↓
    현재 작업 스택에 백업후 인터럽트 백터 확인 ↓
    해당 장치의 인터럽트 서비스 루틴 실행 ↓
    백업한 작업 재개

명령어 파이프라이닝

명령어가 처리되는 과정을 순차적으로 처리하는 기법

  • 데이터 헤저드
    데이터가 의존적일 때 둘중 하나의 명령어가 처리되지 못하는 상황
  • 컨트롤 헤저드
    분기로 인한 PC 의 갑작스러운 변환 쓸모 없는 명령어 발생
  • 스트럭쳐 헤저드
    서로 다른 명령어가 같은 자원 접근

비순차적 명령어

명렁어들이 순차적으로 실행되지 않는 기법

  • 순서가 바뀌어도 진행에 영향을 주지 않는 명령어 우선 처리
    명령어 처리 딜레이 로스가 발생하지 않도록 함

CISC · RISC

  • CISC
    가변길이 명령어
    복잡하고 다양한 기능 제공 메모리 관리 효율적
    명령어의 크기 · 실행 시간이 일정하지 않음.
    파이프라이닝 불리

  • RISC
    명령어의 종류 축소 · 규격화된 명령어 제공
    작성되는 명령어 증가
    한 클럭 내외 실행
    파이프라이닝 유리

RAM 의 종류

  • DRAM
    일정시간 이후 데이터 소멸을 막기 위한 재활성화
    소비전력 · 비용 ↓
    집적도 ↑
    대용량 설계 유리
    주기억 장치 사용

  • SRAM
    데이터 유지
    속도 ↑
    집적도 ↓
    소비전력 · 비용 ↑
    캐시메모리 사용

캐시 메모리

CPU 에서 사용될 것으로 예측되는 데이터 미리 확보후 CPU 에서 제공하는 메모리 공간

  • 코어 내에서 개별 메모리 할당 L1 · L2 캐시
  • 코어 외에서 각 코어 캐시 메모리 공유 L3 캐시
  • 한번 접근한 곳에 접근 할 가능성 시간지역성
  • 접근한 메모리와 인정한 공간에 접근할 가능성 공간지역성

컴파일 언어 · 인터프리터 언어

  • 컴파일 언어
    소스 코드 전체 검사 -> 저급 언어 변환 -> 실행 파일 생성

  • 인터프리터 언어
    코드를 한줄 씩 저급 언어 변환후 실행 컴파일 시간 · 실행 파일 생성 x
    실행 때 마다 인터프리터 과정 반복 수행
profile
GameProgrammer

0개의 댓글