컴퓨터가 이해하는 정보 2가지
1. 데이터
숫자,문자,이미지/동영상 같은 정적 정보
컴퓨터와 주고받는/ 내부에 저장된 정보 통칭
2. 명령어
컴퓨터는 명령어를 처리하는 기계로,
컴퓨터를 실직적으로 움직이는 것은 명령어이고
데이터는 명령어를 위한 일종의 재료이다.
→ 컴퓨터는 결과적으로 0과 1밖에 처리하지 못하기에 명령어는 0과 1로 이뤄져 있으며 이것을 기계어라고 한다. 그래서 개발자가 짠 소스코드는 명령어로 변환되는데, 이때 컴퓨터가 이해하는 명령어를 사람이 읽기 쉽게 고수준으로 변환해주는 언어를 어셈블리어(ex. push rbp 같은) 라고 한다.
컴퓨터의 4가지 핵심부품
- 메모리(주기억장치, RAM 을 가리킨다)
현재 실행되는 프로그램의 명령어와 데이터를 저장한다.
프로그램이 실행되려면 메모리에 저장돼 있어야 한다.
메모리에 저장된 값의 위치는 주소로 알 수 있다.
-CPU
메모리에 저장된 값을 읽어들이고, 해석하고, 실행하는 장치다.
CPU 내부에는 ALU(계산장치 / 계산을 위해 존재하는 회로모음/ 산술논리연산장치), 레지스터(임시저장장치), 제어장치가 있다.
* 제어장치
제어신호를 발생시키고 병령어를 해석하는 장치로, 컴퓨터 부품들을 관리하고 작동시키기 위한 전기신호를 보낸다. 여기서 전기신호의 역할을 살펴보면, 예를들어 메모리에 저장된 명령어를 읽고싶을때 '메모리읽기' 라는 전기신호를 쏴서 메모리를 읽어올 수 있다.
- 보조기억장치 (USB, SD카드, CD ROM, 하드디스크, SSD 등)
주기억장치인 RAM 같은 경우 휘발성 저장장치로, 전원이 꺼지면 저장된 내용이 모두 사라진다. 이 점을 보완하기 위해 보조기억장치가 생겼다. 전원이 꺼져도 보관될 프로그램을 저장하는 부품으로, 일반적으로 메모리에 비해 용량이 크고 가격 또한 메모리(RAM 하드웨어)에 비해 더 저렴하다.
-입력장치 (모니터, 키보드, 마우스 등)
컴퓨터 외부에 연결돼 컴퓨터 내부와 정보를 교환할 수 있는 부품
컴퓨터의 핵심부품들을 연결해주는 역할
1. 메인보드(마더보드)
컴퓨터의 핵심 부품들은 메인보드라는 판에 연결된다.
2. 시스템버스
핵심부품들이 정보를 주고 받을 수 있는 일종의 통로이다. 다양한 종류의 버스가 있으며, 컴퓨터 핵심부품을 연결하는 버스는 시스템버스다. 시스템 버스에는 주소를 주고받는 통로인 주소버스, 명령어와 데이터를 주고받는 통로인 데이터버스, 제어신호를 주고받는 통로인 제어버스가 있다.
시스템버스 : 메모리읽기
CPU가 메모리에 있는 정보를 읽기 위해선, 제어버스로 메모리 읽기라는 제어 신호를 보낸다. 그리고 주소 버스를 통해 읽고자 하는 메모리의 위치인 주소를 보낸다. 그럼 메모리는 제어버스와 주소버스로 받은 정보를 통해 신호의 요청사항을 인지하고 해당 정보를 전달한다. (이때, CPU 내의 작은 저장장치엔 레지스터에 받아온 명령어나 데이터가 저장되고, 이에 대해 연산을 실행하고 그것을 레지스터에 저장하는 것이 ALU.)
시스템버스 : 메모리쓰기
CPU가 메모리에 어떤값을 저장하고 싶을땐, 저장하고자 하는 데이터를 데이터버스로 보내고, 주소버스를 통해 위치도 보낸다. 그리고 제어버스를 통해 메모리쓰기 라는 제어신호를 보내면 메모리는 이 정보들을 인지하여 정보를 메모리에 저장한다.
운영체제
"내가 개발한 프로그램은 운영체제로 부터 어떤 도움을 받을까?"
운영체제는 사용자를 위한 프로그램이 아니라 프로그램을 위한 프로그램이다.
Windows, android, macOS, iOS, Linux 등은 모두 운영체제다. 운영체제를 이해하기 위해선 자원(시스템자원 / 리소스) 이란 개념을 알아야 하는데, 자연은 프로그램이 실행되기 위해 마땅히 필요한 요소로, 컴퓨터의 4가지 핵심부품을 포함한다. 운영체제는 이런 자원을 관리하고 프로세스(실행중인 프로그램)를 관리하는 특별한 프로그램이다. 즉, 운영체제 또한 프로그램이기에 메모리에 저장돼있는데 운영체제는 커널영역이라는 특별한 공간에 위치돼 실행되고, 나머지 응용프로그램들은 사용자 영역이라는 공간에 위치돼 실행된다.
운영체제의 역할
CPU관리, 프로세스관리, 메모리관리, 파일시스템관리(아직 다루지 않음) 등
- (메모리) 자원관리
프로그램 실행시 사용자 영역에 프로그램을 적재해주는 역할을 한다. 만약 실행하고자 하는 프로그램에 비해 메모리의 물리적 크기가 작은경우에도 컴퓨터는 메모리의 물리적 크기보다 큰 프로그램을 실행할 수 있는데, 이것은 페이징과 스와핑 기능을 공부하면 알수있다. (이 영상에선 다루지 않음)
- CPU 스케줄링
여러개의 프로그램이 아주 빠른 속도로 번갈아 실행되는데, 이 프로그램들이 실행되기 위해선 CPU가 필요하다. 즉, 어떤 프로세스 먼저 CPU에 할당할지 운영체제가 결정한다.
- 프로세스 동기화
수많은 프로그램들이 동시에 실행되는데, 운영체제가 이들의 실행을 관리해주는 것을 프로세스 동기화라고 한다.
- 시스템호출(콜)을 통한 자원보호
수많은 프로세스들이 실행을 위해 자원을 필요로 하는데, 이때 응용프로그램과 자원 사이에 위치한 운영체제가 문지기 역할을 한다. 즉, 프로세스들은 운영체제를 통해 자원에 접근하기에 자원이 유실되는 등의 상황이 생기지 않는다. 즉, 자원을 보호 할 수 있다.
'CS 공부 > [강의] 혼공 컴퓨터구조 + 운영체제' 카테고리의 다른 글
[8/17] CPU의 내부구성 (1) - ALU 와 제어장치 (0) | 2023.08.19 |
---|---|
[8/16] C 언어의 컴파일 과정 (0) | 2023.08.19 |
[8/15] 명령어의 구조 (0) | 2023.08.15 |
[8/14] 소스코드와 명령어 (0) | 2023.08.14 |
[8/11] 0과 1로 숫자와 문자 표현하기 (0) | 2023.08.11 |