하드웨어 => 시스템 소프트웨어 => 응용 소프트웨어(시스템 소프트웨어에 비해 매우 다양함)
소프트웨어란?
- 프로그램(좁은 의미의 SW)은 컴퓨터가 일을 처리하기 위해, 컴퓨터가 이해할 수 있는 언어로 작성한 명령어들의 집합
시스템 소프트웨어
- 컴퓨터 하드웨어를 움직이는 소프트웨어
- 응용소프트웨어를 실행하기 위한 플랫폼 역할을 하는 소프트웨어
하드웨어
- 정보/데이터의 전송 및 처리가 실제 일어나는 물리적인 실체들
컴퓨터 시스템의 개념적 구성 요소 (기능)
- 기억할 수 있는 장치가 있음.(RAM(주 기억 장치), 하드디스크(보조 기억 장치))
컴퓨터 HW의 기본 구성요소(1)
- 중앙처리장치(Central Processing Unit: CPU)
- 프로세서(processor)라고도 불림.(멀리 프로세서 머신도 존재, cpu가 여러개)
- 컴퓨터 시스템에 부착된 모든 장치(HardWare)의 동작을 제어하고 명령을 실행('뇌'같은 존재)
- 기본적인 구성요소: 제어장치 + 연산장치 + 레지스터 + CPU 내부버스
- 레지스터: CPU의 메모리? CPU의 저장소 => CPU 가까이에 위치(내부에 존재)
- CPU 내부버스 : 구성 요소들이 왔다갔다 하는 길을 제공
- 메모리에서 명령어를 갖고 와서 명령어대로 실행하는 작업을 빠르게 반복(Fetch + Execution)
- CPU의 명령어 사이클
- CPU가 한 개의 명령어를 실행하는 데 필요한 전체 처리 과정 => 프로그램을 실행하는 순간부터 전원을 끄거나, 회복 불가능한 오류가 발생하여 중단될 때까지 반복
- 인출 사이클(Fetch cycle): CPU가 기억장치로부터 명령어를 읽어오는 단계
- 실행 사이클(execution cycle)
- 명령어를 해독하고 실행하는 단계
- 인출 사이클때보다 작업량이 더 많아서, 오늘날 컴퓨터는 실행 사이클을 다수의 단계로 분할
- 전송 연상: CPU내 레지스터와 메모리 사이에 데이터를 교환
- 처리 연산: 산술논리장치를 사용하여 데이터를 조작
- 제어 연산: 프로그램의 실행 순서를 제어
- 입출력 연산: CPU 내 레지스터와 I/O장치 간에 데이터를 이동
- 기억장치 1) 주기억장치(main memory)
- CPU 가까이에 위치하여, CPU가 처리할 프로그램과 데이터를 '일시적으로' 저장.
- 반도체 기억장치 칩들로 구성
- 가격이 높고, 저장할 때 면적을 많이 차지
- Random Access Memory: 고속 액세스 가능
- 전원공급이 중단되면 기억된 내용이 지워지므로, 일시적 저장만 가능(휘발성 메모리)
- 2) 보조저장장치(auciliary storage devic)
- 2차 기억장치(secondary memory) 로 읽기
- 용량: 보조기억장치 > 메인 메모리 > 캐시 메모리 > 레지스터
- 속도 & 가격: 보조기억장치 < 메인 메모리 < 캐시 메모리 < 레지스터
- 입.출력 장치(I/O device)
- 사용자와 컴퓨터간의 대화를 위한 입력 및 출력장치
- 유.무선 통신 네트워크 인터페이스 장치
- 시스템 버스 (System Bus)
- ROM(Read-Only Memory): 데이터를 읽을 수만 있는 '비휘발성' 메모리
- 전원이 끊어져도 기록된 내용이 보관(<-> RAM과 반대)되며, 수정 불가
- 전원이 꺼졌을 때 없어지면 안되는 시스템 프로그램(예시: Booting)을 전자회로에 기록
- Booting: 보조기억장치에 저장된 OS(SW)를 주메모리에 올리는 과정
- 전원을 켰을 때, CPU가 수행할 명령어가 저장되어있어야 할 주메모리인 RAM은 비어있음
- ROM에 Bootloader (Bootstrap loader)이란 프로그램을 저장해놓음 (Firmware)
컴퓨터 정보의 표현과 저장
-
컴퓨터 정보는 2진수 비트(bit)들로 표현
-
진범: 유한한 심볼로 큰 숫자를 표현하는 방법
- 10진법: 0~9, 10개의 심볼로 숫자를 표현
- 2진법: 0과 1로 숫자 표현
-
고급 언어(high-level language)
- 영문자/숫자로 구성되어 사람이 이해하기 쉬운 언어
- 고급언어 프로그램을 어셈블리어 또는 기계어 프로그램으로 번역하는 SW
-
어셈블리 언어(assembly language)
- 고급 언어와 기계어 사이의 중간 언어
- 어센블러(assembler)로 번역시, 기계어와 일대일 대응
-
기계어(machine language)
- 컴퓨터 하드웨어가 이해할 수 있는 언어
- 2진 비트들로 구성
-
시스템 소프트웨어
- 컴퓨터 하드웨어와 응용 소프트웨어 사이에서 플랫폼 역할을 하는 소프트웨어
- 운영체제(OS): 컴퓨터 자원을 관리하고 응용 프로그램의 실행 환경을 제공하는 SW
- 디바이스 드라이버(Device Driver): 컴퓨터에 연결된 주변 기기를 제어하는 모듈(SW)
- 컴파일러, 인터프리터: 고급언어로 작성된 프로그램을 컴퓨터가 이해할 수 있는 저급언어로 변환하는 SW
- 링커(linker): 여러 개로 분할, 작성된(목적) 프로그램 또는 라이브러리 루틴을 결합하여, 실행 가능한 하나의 프로그램으로 연결하는 SW
- 로더(loader): 디스크와 같은 저장장치에 보관된 프로그램을 읽어 메일 메모리에 적재한 후 실행 가능한 상태로 만드는 SW
-
어셈블리(기계어) 명령어 형식(instruction format)
- 연산 코드(op code)
- CPU가 수행할 연산을 지정해 주는 비트들
- 연산 코드의 비트 수는 가능한 연산의 수 (bit=3이면 연산의 최대 수는 2의3승인 8개 이다.)
- 피연산자(오퍼랜드, operand)
- 연산에 쓰일 데이터 혹은 데이터가 저장되어 있는 기억장치 주소
- 오퍼랜드의 비트 수는 기억장소의 크기
컴퓨터의 기본적 기능
- 프로그램 실행(load & execute)
- CPU가 주기억장치로부터 프로그램 코드를 읽어들여 실행
- 데이터 저장(store)
- 프로그램 실행 결과로서 얻어진 데이터를 주기억장치에 저장
- 데이터 이동 (move)
- 디스크/CD-ROM에 저장되어 있는 프로그램과 데이터 블록을 기억장치로 이동
- 데이터 입력/출력 (with I/O device)
- 사용자가 키보드를 통하여 보내는 명령이나 데이터를 읽어들임(입력)
- CPU가 처리한 결과값이나 기억장치의 내용을 프린터로 출력
- 제어 (contorl by signal)
- 프로그램이 순서대로 실행되도록 또는 필요에 따라 실행 순서를 변경하도록 조정하며, 각종 제어 신호들을 발생
컴퓨터의 발전과 성능
-
최초의 컴퓨터: 파스칼의 계산기(덧셈, 뺄셈 가능)
-
Leibniz의 기계: 덧셈과 뺄셈 및 곱셈, 나눗셈 가능
-
Difference Engine(미분기관)
-
Analytical Engine
- 19세기 초, 어떤 수학 연산도 자동적으로 수행할 수 있는 일반목적용 계산기계
- 에이다 러브레이스: 최초의 프로그래머
- 프로그램의 실행 순서 변경 가능
- 논리적 설계 및 초기 제작으로 끝