운영체제

[ 컴퓨터 구조와 운영 체제 ] - 혼자 공부하는 컴퓨터 구조 + 운영체제(책)

algml0703 2023. 5. 31. 21:27
반응형

Q) 컴퓨터 구조를 배워야 하는 이유?

컴퓨터 구조를 알면 성능, 용량, 비용을 고려한 개발이 가능해지고, 자신이 작성한 코드가 어떻게 작동하는지에 대한 심도 깊은 이해가 가능해진다.

컴퓨터 구조와 운영체제란 무엇인가?

컴퓨터 구조

컴퓨터는 명령어를 처리하는 기계라고 할 수 있으며, 컴퓨터가 이해할 수 있는 언어를 기계어라고 한다.

컴퓨터는  기본적으로 중앙처리장치(CPU: Central Processing Unit), 기억장치(Memory), 입력 장치, 출력 장치 4가지의 주요 부품으로 이루어져 있고, 이 4가지의 주요 부품은 메인 보드에 의해 연결된다.

* 기계어
기계어는 컴퓨터가 이해할 수 있는 언어로, 0과 1로 이루어진 저급 프로그래밍 언어이다.(이때 저급이란 것은 컴퓨터에 가까운 언어일수록 저급 언어라하며 사람이 이해하기 쉬운 언어일수록 고급 언어라고 한다.)

* 어셈블리어
저급 프로그래밍 언어에 가까우며, 컴퓨터를 실질적으로 동작시키는 명령어로 이루어져 있다. 기계어와 1대 1로 대응되는 어휘와 문법을 가지고 있다.

기본적으로 개발자가 작성한 고수준 언어로 된 소스코드는 컴파일러를 통해 어셈블리어로 변환되고, 어셈블리어는 다시 기계어로 변환되는 과정을 거쳐 컴퓨터에 의해 실행된다.

ex) 기계어와 어셈블리어 예시

예를 들어 x86 아키텍처에서 MOV AL, 0 명령어는 레지스터 AL에 0을 저장하라는 의미이며, 이를 기계어로 변환하면 10110000이 된다.

* 메인보드
메인보드는 핵심 부품을 연결해서 정보를 주고 받는데, 이 때 부품 간 정보를 주고 받는 통로를 버스라고 하며, 가장 중심이 되는 통로를 시스템 버스라고 한다. 

중앙처리장치(CPU: Central Processing Unit)

실질적으로 컴퓨터 명령어들을 수행하는 역할을 담당하는 장치로, 연산과 제어를 담당한다. CPU는 산술연산(덧셈, 뺄셈 등)과 논리연산(AND, OR 등)을 수행하는 산술논리장치, 데이터를 일시적으로 저장하는 역할을 담당하는 레지스터, 명령어를 해석하고 동작을 제어하는 제어장치 등으로 이루어진다.

1) 산술논리장치(ALU: Arithmetic Logic unit: 산술논리장치)
데이터들을 가져와 연산을 수행하고, 그 결과를 저장한다. 계산을 위해 존재하는 회로들의 모음을 ALU 라고 한다. (더불어 ALU 내부에는 가산기, 보수기 등이 존재한다.)
2) 레지스터(임시기억장치, Register)
cpu 내부에 존재하는 작은 임시 저장장치로, 연산을 수행하기 위해 데이터나 주소 값을 일시적으로 저장하는 역할을 한다.(여러개가 존재한다.)
3) 제어장치(CU: Control Unit)
제어 신호를 내보내고, 명령어를 해석하는 장치로, 각종 장치의 동작을 제어하는 기능을 수행한다. 제어장치가 받아들이는 정보를 클럭이라고 한다. 제어 장치는 클럭 이외에도 명령어 레지스터를 통해 명령어와 플래그 레지스터를 통해 플래그 정보를  읽어들인다. 또한 제어 장치는 제어 신호를 통해 CPU 내부의 레지스터나 ALU, CPU 외부의 메모리 또는 입출력 장치에 각종 정보를 내보내기도 한다.

* 제어장치가 레지스터에 보내는 정보는 특정 데이터를 레지스터에 저장해라, 이동해라 등과 같은 특정한 작업을 수행하라는 정보 위주이며ALU에는 수행할 연산을 제시하는 정보를 전달한다. 또한 CPU 외부의 메모리에는 메모리를 읽어라 메모리를 써라 등의 신호를 내보내며, 입출력 장치에는 입출력 장치를 읽어라 입출력 장치를 써라 등의 정보를 전달한다.

* 제어신호 : 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호를 발생시키고, 명령어를 해석하는 장치이다.
ex) 메모리 읽기 신호, 메모리 쓰기 신호

ALU는 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호(즉 수행할 연산)를 받아들인다. 결과값은 레지스터에 저장해두었다가 내보낸다. (플래그 레지스터에는 연산결과에 대한 부가 정보를 담게 된다. 연산 결과가 레지스터의 크기보다 너무 큰 경우에도 그에 대한 정보가 플레그 레지스터에 담기게 되고, 이를 오버플로우 플래그라고 한다.)

플래그 레지스터에 저장되는 정보로는 부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그, 슈퍼바이저 플래그 등이 있다.

* 오버플로우 플래그 : 오버 플로우 발생 여부를 나타내며, 오버플로우가 발생한 경우 오버플로우 플래그는 1, 발생하지 않은 경우 0이 된다.

* 부호 플래그 : 음수인지, 양수인지 여부를 나타내며, 음수인 경우 부호 플래그가 1이고, 양수인 경우 부호 플래그는 0이 된다.

기억장치(Memory)

현재 실행되는 프로그램의 명령어와 데이터를 저장한다. 현재 실행 중인 프로그램 및 데이터를 일시적으로 저장하는 역할을 하는 주기억장치인 RAM(Random Access Memory)과 영구적인 데이터 저장을 담당하는 보조기억장치로 이루어집니다. 보조기억장치에는 하드디스크와 SSD가 존재하며 컴퓨터의 전원이 꺼지면 데이터가 사라지는 휘발성 메모리인 RAM과 달리 전원이 꺼져도 데이터를 보존합니다.(프로그램 실행을 위해서는 메모리에 명령어와 데이터가 저장되어 있어야 한다.) 보조기억장치는 주기억장치의 기억 용량을 보조하거나 데이터를 영구 저장하기 위해 존재한다. 예를 들면 실행되지 않는 프로그램 정보는 보조기억장치에 저장되어 있다가 해당 프로그램이 실행될 때에 주기억장치로 정보가 올라가 실행된다.

주기억장치는 RAM과 ROM으로 이루어진다.

* RAM(Random Access Memory)
컴퓨터의 전원이 꺼지면 데이터가 사라지는 휘발성 메모리이다. CPU에서 직접 접근하는 저장 장치로, RAM의 크기는 프로그램의 수행 속도에 영향을 준다.
* ROM(Read Only Memory)
컴퓨터의 전원이 꺼져도 데이터가 유지되며, 읽기 전용으로, 컴퓨터 실행을 위해 요구되는 기본적인 운영 체제 기능 등을 내장 시키기 위해 사용된다.

입력장치・출력장치

컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품으로, 사람과 컴퓨터 사이의 상호작용을 가능하게 해주는 도구이다. 키보드, 마우스, 스캐너, 터치스크린 등은 입력장치에 속하며, 모니터, 프린터, 스피커 등은 출력 장치에 속한다.

메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음, 버스는 컴퓨터의 부품끼리 정보를 주고받는 일종의 통로이다. 그 중에서도 시스템 버스는 컴퓨터의 핵심 부품을 연결하여 준다.

시스템 버스(System Bus)

시스템 버스는 주소버스, 데이터 버스, 제어 버스로 이루어진다.
1) 주소 버스
기억 장치 또는 외부 장치에 읽거나 쓸 데이터의 주소가 전달되는 통로이다.
2) 데이터 버스
명령어와 데이터 등 긴 데이터를 주고 받는 통로이다.
3) 제어 버스
연산 및 데이터의 이동을 위한 제어 신호를 주고받는 통로이다.

ex) cpu가 메모리에 존재하는 정보를 읽기 위해서는 주소 버스를 통해서 읽고자 하는 '주소'를 보내고, 제어 버스를 통해 메모리 '읽기'라는 제어 신호를 보내게 된다. 해당 제어 버스를 통해 신호를 받은 메모리는 1번지 읽기를 원하는 구나를 인식하게 된다.
메모리 쓰기의 경우 cpu가 특정 값을 저장하려고 할 때 저장하려는 값을 데이터 버스를 통해 전달하고, 주소 버스를 통해 값을 저장할 주소를 보내고, 제어 신호를 제어 버스를 통해 보내게 된다.
( 제어버스를 통해 메모리 읽기 라는 제어신호를 메모리에 보내고, 주소 버스를 통해서는 읽으려고 하는 메모리의 주소를 보낸다. 예를 들어 메모리 쓰기 의 경우 저장할 주소, 메모리 쓰기, 저장할 데이터가 각각 저장할 주소의 경우 주소 버스를 통해, 메모리 쓰기인 경우 제어 버스를 통해, 저장할 데이터의 경우 데이터 버스를 통해 전달된다. )

 

명령 실행 처리 과정

https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl  영상 캡쳐
https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl  영상 캡쳐
https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl  영상 캡쳐

 

소스코드 기계어 변환 과정

고급언어에는 컴파일 방식과 인터프리터 방식이 존재한다.. 컴파일 언어로 작성된 소스 코드의 경우에는 컴파일러를 통해 컴파일 과정을 거쳐 고급언어로 작성된 소스코드가 저급 언어로 변환되어 목적 코드가 생성된다. 인터프리터 언어의 경우에는 코드 한 줄 한 줄 작성시 바로 인터프리터에 의해 변환된다. 컴파일언어는 소스코드 전체를 한 번에 목적코드로 변환하는 방식이고, 인터프리터언어는 소스 코드 한 줄 씩 바로 바로 변환하는 방식이다.

출처

https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl 

 

[컴퓨터 공학 기초 강의] 혼자 공부하는 컴퓨터 구조+운영체제

강민철 저자님과 함께하는 『혼자 공부하는 컴퓨터 구조+운영체제』 강의입니다. 다른 입문서에서는 알려주지 않았던 진짜 컴퓨터 공학 지식을 만나보세요! 👨‍🏫 누구를 위한 강의인가요? -

www.youtube.com

 

시스템 버스: http://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=037631-2 

 

반응형