CPU의 명령 실행주기 명령어 처리란? - 하나의 명령어 실행이 끝난 후, 다음 명령어의 수행이 시작돼 끝날때까지 걸리는 시간을 말한다 - 한 명령이 실행되고 다음 명령의 인출이 시작되는 주기이다 이런 실행주기를 Instrucktion Cycle 이라고 하고 이에는 4계의 단계가 있다. 기능 부가설명 FETCH(인출) 메모리에서 명령을 읽어 명령어 레지스터에 저장한다 -> 다음 명령어를 실행하기 위해 카운터(PC)를 증가시킨다. INDIRECT(간접) 명령어를 수행하기 전에 실제 데이터가 저장된 주기억장치의 유효주소를 한번 더 읽어 옴 간접주소 방식을 사용할때 실행 EXECUTION(실행) 인출한 명령어를 해독, 제어신호를 발생시켜 명령어 실행 INTERRUPT(인터럽트) 실행 사이클이 끝나고 인터럽트 ..
일단 먼저 본론으로 들어가기 전에 시스템이란 하드웨어, 소프트웨어의 결합체다. 그리고 하드웨어의 구성 요소에는 메모리, 프로세서(CPU), 주변장치, 시스템 버스 등으로 구성돼 있는데 이 중 중앙처리 장치에 대해 알아보려고 한다. 중앙처리장치 - 프로세서(CPU) CPU 는 운영체제와 가장 밀접한 장치로서 컴퓨터의 모든 장치의 동작을 제어하고 연산을 수행한다. 또한 4대 주요 기능으로는 연산,제어,기억,해석이 있다. 그렇다면 이런 CPU는 어떻게 구성돼있을까? -> 크게 레지스터, ALU, 시스템 버스로 이루어져 있는데 먼저 레지스터 부터 보겠다. 레지스터 용도에 따른 분류 전용 레지스터 범용 레지스터 정보 변경 가능 여부에 따른 분류 사용자 가시 레지스터 사용자 불가시 레지스터 저장하는 정보의 종류에 ..
알아볼 명령어 pwd, ls, touch, mkdir, cd, cat, rm, rmdir A. pwd pwd 는 현재 디렉토리 위치를 출력해준다. B. ls ls 는 기본적으로 디렉토리 내용을 출력해주는 명령어로 기본 구조는 ls [옵션] [위치] 입니다. 1. ls -a : 디렉토리의 숨겨진 파일을 포함하여 모두 출력 2. ls -l : 디렉토리의 세부사항까지 출력 3. ls -R : 현재 디렉토리의 하위 디렉토리파일까지 함께 출력 C. cd cd 는 파일을 이동하는 명령어로 cd [이동할 위치] 형식으로 사용합니다. 현재 디렉토리 안에서 하위 디렉토리의 파일이름을 입력하거나 절대경로와 상대경로를 통해서 이동도 가능합니다. 1. cd ~ : home 디렉토리로 이동 2. cd ../ : 상위 디렉토리로..
스택프레임이란? 스택프레임이란 함수마다 가지는 별도의 스택 공간으로 메모리 스택은 높은 주소에소 낮은 주소로 내려간느 스택 구조를 지닙니다. 또한 rsp가 아니 rbp를 이용하여 디버깅할때 스택 내의 지역 변수, 파라미터, 복귀 주소에 접근하는 기법을 말합니다. (( rsp, rbp 레지스터에 대한 내용은 전 글 어셈블리어 레지스터에 정리돼있습니다. )) 스택 프레임의 레지스터 구성 rbp, rsp , sfp, rip,ret 등이 있습니다. 전 글에 정리돼 있지않는 레지스터만 설명하도록 하겠습니다. sfp : 함수 에필로그에서 rbp가 push 할 때 이전 rbp 값을 저장해놓는 장소. ret : 함수 호출 다음에 실행할 코드의 주소를 담고 있는 있는 값입니다. ret는 pop rip,jmp rip로 구..
레지스터란 CPU 내에서 데이터를 일시적으로 저장하는 작고 빠른 저장 장소(기억 장치)로 다양한 종류가 있다. 범용레지스터 먼저 레시스터들 중 범용레지스터란 말 그대로 용도를 특별히 정해두지않고 다양하게 쓸 수 있는 레지스터를 뜻한다. 범용레지스터에는 8개(x64 에서는 16개)의 종류가 있고 운영체제에 따라 이름이 조금씩 변하는데 16bit일 경우 : ax,bx,cx,dx ~ 32bit일 경우 : eax,ebx,ecx,edx ~ 64bit일 경우 : rax,rbx,rcx,rdx ~ 이런식으로 표기하게 된다. x64의 구조로 레지스터들의 역할을 알아보겠다. rax : 함수가 실행된 후 리턴값을 저장합니다. → 반환되기 전까지 범용 레지스터로 자유롭게 사용된다. rcx,rdx,r8,r9 : 범용 레지스터들..