1. 컴퓨터 시스템 이해
컴퓨터 시스템 구성 (現 사용방식은 내장방식 즉 노이만형 컴퓨터 시스템)
Hardware (기계장치)
[ CPU ] : 연산기능 O / 제어기능 O / 기억기능 X
"CPU가 빠르다 -> 명령 해석 속도가 빠르다"
연산기능: ALU (Arithmetic Logic Unit, 연산장치, ★CPU의 핵심★)
- 산술연산: + - * / 등
- 관계연산: < > = 등
- 논리연산: AND / OR
제어기능: CU (Control Unit, 제어장치)
- 명령해석 (이를 토대로 ALU가 연산)
- 연산결과에 대한 제어신호 관리
기억기능 X => CPU 만으로는 컴퓨터 작동 X, 모든 내용을 메모리에서 가져옴
(접근할 때 반드시 주소지정)
CPU Core : ALU + CU (ex ; 듀얼코어 => ALU x 2 + CU x 2)
- x86 계열 - 개인용 PC, 서버 (x86: 32bit data bus, x86_64: 64bit data bus)
- ARM 계열 - 임베디드 용
Bus System
- CPU - 메모리 간 통신 수행경로
- 해당 크기에 따라 메모리 최대크기 결정
- Address Bus: 메모리 주소 지정
- Data Bus: 데이터 이동통로, CPU 종류 결정 시 사용 크기
- Control Bus: 제어신호 이동통로
[ Memory ]
"CPU와 메모리가 있어야만 컴퓨터 작동!"
-역할: 프로그램 코드 및 데이터 저장
Memory 구성 소자
ROM (Read Only Memory): 읽기 전용, 비휘발성, 느린 속도, only 보관목적 (실제사용 시 RAM에 복사하여 사용)
- Mask ROM: 기록 X
- PROM (1번만 기록) / EPROM (여러번 기록 가능) / EEPROM (여러번 기록 가능 2, ex; Flash Memory - 전자적으로 지우는게 가능하나 RAM 대체용으로 쓰기에는 비용 비싸고 느림) : 기록 O
RAM (Random Access Memory): 자유로운 읽기/쓰기, 휘발성 (일시저장 O but 영구보관 X)
- SRAM (Static): 속도 빠르나 비쌈; 주로 캐시메모리 용도
- DRAM (Dynamic): PC에서 주로 사용
CPU와 메모리만 연결됨 (CPU - I/O 장치연결 X)
[ I/O Device ]
메모리와 연결 -> 메모리-I/O장치 간 속도차 (메모리 >> CPU >>>>> I/O 장치) 줄이기 위해 메모리 영역에 각 I/O 장치를 위한 공간 (I/O Buffer)를 설정하여 관리
- Input 전용 장치: 키보드(표준입력장치-stdin), 마우스, 마이크, 카메라
- Output 전용 장치: 모니터(표준출력장치-stdout 및 표준에러표시장치-stderr), 스피커, 프린터
- Input / Output 전용 장치:
- HDD / SSD (보존기억장치, 2차 메모리)
- 프로그램/데이터 보관 목적
- OS, App, Data 등 저장
- HDD는 가격/용량에서 장점, SSD는 속도에서 장점
- Touchscreen (표준 X)
- 표준장치가 아니면 I/O 장치 사용 위한 별도 프로그램 필요 => "Device Driver"
Software (컴퓨터 프로그램; 명령의 집합)
프로그램 실행 순서
- 명령을 메모리에 저장
- CPU에 의하여 명령 해석
- 해석된 명령에 대한 데이터 처리
- 명령처리 결과를 메모리에 저장 or I/O 장치를 이용한 입출력처리
[ System SW ]
HW 제어 및 사용자 인터페이스
운영체제 (OS = Operating System, ★★★가장 핵심★★★)
종류
-MS Windows: 유료, x86 계열에서 작동
-Linux: 무료, x86/ARM 계열에서 모두 작동, 오픈소스
-MacOS: 유료, UNIX 계열 BSD 기반 OS
운영방식
-CLI (Command Line Interface) / CUI (Character User Interface)
: 명령 입력 방식에 의한 OS사용, 세심한 환경관리 가능
-GUI (Graphic User Interface)
: 그래픽으로 표시, 마우스 기반으로 OS 사용
구성
-kernel : HW 제어
-User Interface (Shell) : 사용자-커널 간 인터페이스
[ Application SW ]
End-user가 원하는 기능을 제공하는 일반 App
2. 프로그래밍 이해
프로그래밍: Application 또는 Library를 만드는 과정
프로그래밍을 위한 구성 요소 (개발환경)
- 프로그래밍 언어
-컴파일형 언어: 일괄번역 기능 사용, 빠른 실행속도 (C, C++, JAVA, C# 등)
-인터프리터형( ≒ 스크립트형) 언어: 개발에서 실행까지 빠른 단계와 쉬운 문법 but 느린 실행속도 (Python, Javscript, Node.js 등)
- 프로그래밍 언어로 작성한 코드를 실행가능한 형태로 만드는 프로그램 (개발자를 위한 infra 구축 대상)
-컴파일러: 컴파일형 언어로 실행형태로 변경
-인터프리터: 인터프리터형 언어를 실행
- 프로그램 코드 작성 환경 (개발자를 위한 infra 구축 대상)
-소스 코드 에디터: 메모장, Visual Studio Code 등
-통합 개발 환경(IDE, Integrated Development Environment): 소스코드 작성, 컴파일/인터프리팅, 실행, 디버깅을 하나의 프로그램으로 수행
- ex) 비주얼 스튜디오, Pycharm, Eclipse 등
- 실행 프로그램 디버깅 환경 (개발자를 위한 infra 구축 대상)
- 디버거: 버그(bug) 수정을 위한 프로그램
3. 운영체제 이해
운영체제(OS, Operating System): 컴퓨터 시스템 운영 역할을 담당하는 System SW
구성:
운영체제 구성 유형
- 물리적인 컴퓨터 시스템에 직접 설치
-기본 형태
-단독 사용 목록
-하나의 OS만 사용가능
- 가상 컴퓨터 시스템에 설치
-가상 컴퓨터: SW적으로 구성한 컴퓨터, CPU / Memory / IO장치는 물리적 장치 공유
-여러 OS를 동시에 사용하고 싶을 때 구성 가능
-가상 PC SW 사용을 위해서는 x86 계열에서는 Hypervisor 기능 활성화 필요
=> BIOS 설정을 통해 확인
- Cloud 환경의 가상 컴퓨터 시스템에 설치
-가상 컴퓨터 환경에서 원하는 OS 환경설정 구성
-가상 컴퓨터 환경의 위치는 Cloud 서비스 업체의 서버에 위치, 사용자는 인터넷으로 접속하여 사용
-Cloud 서비스 업체의 서비스를 통하여 원하는 OS 환경 구성 및 사용