[ 프 어 실01 ] 메모리, CPU, Process
메모리, CPU, Process
1. 프로그램이 메모리에 load되어야 한다. ( OS가 메모리 공간을 제공 )
2. CPU가 메모리에 있는 프로그램(수 많은 명령어들의 모임)을 실행
3. 메모리에 load되어 CPU를 할당받고 실행되고 있는 프로그램을 Process라 한다.

1. 프로그램이 메모리에 load되는 과정

1-1.
개발자의 프로그램 코드를
컴퓨터가 해석 가능한 기계어로 바꿈( 어셈블러, 컴파일러, 인터프리터 등 )
1-2.
여러 개의 코드와 데이터를 모아서 연결하여
실행가능한 한개의 파일로 만듦
1-3.
프로그램을 메모리에 Loading( 물리적, 논리적으로 배치 )함

물리적 주소( Physical address )
메모리의 물리적 위치를 식별
메모리주소레지스터(MAR)에 주어지는 주소
논리적 주소( Logical address, 가상주소 )
cpu입장에서의 메모리 주소, 프로그램 실행중에 cpu가 생성함
논리 주소는 실제 주소(실제 메모리 위치)에 액세스하는 데 사용됨
사용자가 볼 수 있음( 사용자는 실제 주소를 직접 볼 수 없음 )
2. CPU가 메모리에 있는 프로그램( 수 많은 명령어들의 모임 )을 실행
명령( Instruction )
cpu가 인식하고, 기능을 수행할 수 있는 최소단위
예) 데이터 전송(LOAD,STORE, ... ) , 연산(ADD,AND,OR, ... ) , 제어(JUMP,CALL, ... ) 등등
각 명령은 일련의 마이크로 코드(microcode)로 표현된다.
예) Load -> 1F00, Store -> 1F01, …

cpu는 제조사, 목적 등에 따라 각기 다른 명령집합(Instruction Set)을 보유
명령어 사이클( Instruction Cycle, Machine Cycle )
CPU가 하나의 명령(instruction)을 처리하기 위해 수행하는 일련의 단계

1. 호출(fetching)
: Control Unit이 메모리로부터 실행에 필요한 명령이나 데이터를 가져와 Register에 저장함
2. 해독(decoding)
: CPU의 명령어 집합중에 어떤 명령을 수행할지 결정
3. 실행(executing)
: 명령을 microCode로 변환하여 차례로 수행 (실제, 덧셈, 뺄셈, 비교 등이 행해짐)
4. 저장(storing, 항시 필요한 작업은 아님 )
: 실행이 끝난 명령의 결과 데이터를 다시 메모리에 저장함
프로세서 아키텍처( 32bit , 64bit )

CPU가 데이터 처리, 명령 수행하는 방식
32bit 아키텍처
레지스터의 크기가 32bit
( 한 번에 32bit의 데이터를 처리 )
주소버스와 데이터 버스가 32bit이기 때문에 최대 2^32(약 4GB)의 주소 공간을 표현
( 최대 4GB의 메모리 주소 공간을 지원 )
3. 메모리에 load되어 CPU를 할당받고 실행되고 있는 프로그램인 Process

Process별로 독립된 메모리 공간을 사용함


스레드(Thread)
프로세스가 할당받은 자원을 이용하는 실행의 단위
하나의 프로세스가 생성되면 하나의 스레드가 같이 생성되는데 이를 메인스레드라 함.
스레드는 프로세스 내에서 각각 Stack만 따로 할당을 받고 Code, Data, Heap 영역을 공유함