개발하는데에 있어 컴퓨터의 구성요소와 작동 원리를 몰라도 프로그래밍 언어의 문법만 알면 프로그램을 개발하는데 문제는 없다. 하지만 실력있는 개발자가 되려면 반드시 알아야 할 기본 지식이다.
개발 환경에서는 문제가 없었는데 서버 환경에서는 문제가 생긴다던가 하는 상황이 번번하게 발생한다.
이럴때 컴퓨터 구조를 이해하고 있다면 빠르게 트러플 슈팅이 가능할 것이다.
개발한 프로그램이 어떤 환경에서 어떻게 작동하는지 정확히 이해 할 수 있어야한다.
이러한 것은 프로그래밍 언어의 문법만 알아서 알 수가 없다.
개발을 할 때 성능, 용량, 비용까지 고려하며 개발하는 개발자가 되기 위해는 이것을 잘 알아야 한다.
컴퓨터 구조 지식은 크게 두개로 나눌 수 있다.
하나는 '컴퓨터가 이해하는 정보' 이고 또 하나는 '컴퓨터의 네가지 핵심 부품' 로 정리 할 수 있다.
컴퓨터가 이해하는 정보인 데이터와 명령어에 대한 특징
컴퓨터의 네가지 핵심 부품과 특징
컴퓨터의 뇌 라고 말할 수 있는 중앙처리 장치를 구성하는 중요한 세가지 요소와 특징
ALU
계산만을 위해 존재하는 부품이다.
레지스터
프로그램을 실행하는 데 필요한 값을 빠르게 가져오기 위해 있는
CPU 내부의 작은 임시 저장 장치이다.
여러 개의 레지스터가 존재하고 각 이름과 역할을 가지고 있다.
제어장치
제어 신호 라는 전기 신호를 보내고 명령어를 해석하는 장치이다.
여기서 신호란 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호이다.
스케줄링 : 프로세서(core)는 수많은 프로세스를 시분할 해서 관리한다.
운영체제에 따라 스케줄링 방식은 다르다.
간단한 CPU 동장 방식
1. 제어장치가 메모리에 저장된 명령어를 읽기 위해 제어 신호를 보낸다.
2. 메모리는 저장된 명령어를 CPU에 건네주고 이 명령어는 레지스터에 저장된다.
3. 제어장치는 명령어 읽어 명령어를 해석하여 실행한다.
현재 실행되는 프로그램의 명렁어와 데이터를 저장하는 부품이다.
주소를 통해 값을 효율적으로 찾을 수 있다.
전원이 꺼지면 저장된 내용을 잃는다.
프로세스 : 프로그램이 실행되는것을 말한다.
메모리 관리 교체 알고리즘
메모리는 저장공간에 대한 관리가 핵심이다.
프로그램의 모든 데이터를 메모리에 올릴 수 없기 때문에 일부는 메모리에 일부는 보조 기억장치로 내려보낸다. 이런식으로 어떤 프로그램의 어떤 데이터를 적재 시킬지가 관리 대상이 된다.
하드디스크, SSD, USB, DVD와 같은 저장 장치이다. 전원이 꺼져도 저장된 내용을 잃지 않는다.
CPU가 저장된 데이터를 가져오는 비용은
레지스터 < 주기억장치 < 보조기억장치 순으로 크다.
용량도
레지스터 > 주기억장치 > 보조기억장치 순으로 크다.
마이크, 스피커, 프린터, 마우스처럼 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치를 의미한다.
이러한 부품들은 모두 메인보드에 연결되어 시스템 버스로 정보를 주고 받는다.
시스템 버스
- 주소 버스 : 주소를 주고받는 통로
- 데이터 버스 : 명렁어와 데이터를 주고받는 통로
- 제어 버스 : 제어 신호를 주고 받는 통로