컴퓨터 구조는 크게 CPU - 메모리 - 디스크로 구성되는데 이를 폰노이만 구조라고 한다.
CPU는 계산을 담당하는 프로세서로 대표적으로 실제 연산을 하는 ALU 라는 연산장치와 레지스터라는 기억장치, 이를 제어하는 명령 제어 장치로 구성된다.
CPU의 속도는 hz. 메모리나 디스크도 속도가 있긴 하지만 CPU의 속도가 성능에 더 연관성이 높다. 레지스터에 데이터가 들어가서 특정 계산을 하고 계산 결과를 다른 레지스터에 반납하고 결과값을 참조하는..
메모리와 디스크는 둘 다 저장소인데 메모리는 CPU와 디스크 사이의 임시 저장공간이다.
디스크에는 파일 단위 프로그램이 저장되어 있는데 요즘은 그런 프로그램의 크기가 크다. 그런 프로그램은 결국 어떤 명령어의 집합, 결국 그 명령어들이 수행되어서 프로그램이 구동되는 것. 그러려면 CPU에 해당 명령어들이 전달되어야 하는데 이를 한번에 올릴 수 없으니 일부만 메모리에 적재하고 개중 순서에 따라 CPU 에 올라간다.
개발자들이 프로그래밍하며 작성한 코드를 컴퓨터는 바로 이해할 수 없다. 이를 컴파일 과정을 통해 컴퓨터가 이해할 수 있는 실행파일로 만들어야 하고, 이 실행파일이 디스크에 저장된다. 이 실행파일은 코드부와 리소스부로 구성되는데, 이를 실행할 때 이 코드부의 일부가 메모리로 전달되고, 관련 리소스를 참고한다. 그렇게 실행되어 모인 것은 명령어의 집합이고, 그 명령어 중 일부가 CPU로 올라가서 해당 명령어를 처리한다. 파일로 저장된 프로그램이 메모리로 올라가는 순간을 프로세스라고 하고, 이는 프로그램이 실행되고 있다고 말한다.
프로세스와 프로세서는 다르다. 프로세서는 CPU 다. 컴퓨터는 여러개의 프로그램을 실행하므로 많은 프로세스가 있는데 프로세서가 하나일 경우를 가정한다면, 해당 프로세스에게 한번씩 기회를 준다. 하나씩 처리를 한다.
프로세스가 여러개라면 특정 시간을 배분받아서 순서대로 실행되는데 이 시간 배분을 시분할이라고 하고, 프로세스에게 얼만큼 시간을 줄지 어떤 것을 먼저할지에 대한 관리를 스케줄링이라고 한다.
CPU의 스케줄링은 아주 중요한데, 가장 선호하는 방식은 선점형 스케줄링이다. 프로세스 중 우선순위가 높은 것을 먼저 해주는 방식이다. 그 외에 요청한 순서대로 처리하는 방식도 있다.
메모리는 저장공간 관리가 핵심이다. 디스크로 갈 수록 저장공간에 대한 코스트가 낮아지지만, CPU 로 갈수록 비싸진다.
프로그램의 모든 데이터를 메모리에 올릴 수 없으므로 일부를 올렸다 내렸다 하는데, 이때 어떤 프로세스에 어떤 데이터를 적재시킬지 관리해야 한다. 그것이 메모리 관리이고, 교체 알고리즘이다.
이렇게 CPU 스케줄링, 메모리, 디스크를 관리하는 일을 운영체제가 한다. 여러 프로그램이 동시에 최적의 성능을 내도록 구동한다.
추가 용어 정리
CU - Control Uni, 명령 제어장치. 입력된 명령어를 해독해 cpu 내부 움직임 총괄. 주로 데이터를 메모리에서 ALU 로 옯기는 명령과 다시 메모리로 옯기는 명령 내림
ALU - Arithmetic Logic Unit, 산술연산장치. CU로부터 명령을 받아 cpu 로 들어온 데이터들을 산술연산, 논리연산 함.
Register - cpu 내부 저장장치로 주 기억장치인 램보다 빠른 속도로 cpu 에 정보를 제공. 용도에 따라 종류가 다양한데, 메모리에 인출될 명령어 주소를 가진 레지스터, 연산 결과를 임시 저장하는 레지스터, 현재 실행되고 있는 명령어를 기억하는 레지스터등이 있다.