- 시스템 소프트웨어
- 사용자 또는 응용 프로그램의 요구에 따른 컴퓨터 하드웨어 자원의 제어 및 관리를 담당한다.
- 운영체제(OS), 언어처리기, 유틸리티 프로그램 등으로 구성된다.
- 운영체제:
- 좁은 의미의 시스템 소프트웨어
- 컴퓨터 시스템의 자원(HW/SW)을 관리
- 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공(하드웨어를 직접 쓰기는 대단히 불편하므로)
- e.g.) MS Windows, LINUX
- 운영체제 제작자는 그 운영체제가 사용될 ISA를 알고 있어야 함
- 운영체제:
-
- 언어처리기: 컴파일러, 어셈블러 등을 가리킴
- 유틸리티 프로그램: 운영체제와 함께 컴퓨터에 설치되는 프로그램
- Machine Dependent
- 여기서 Machine은 CPU를 의미한다.
- Machine마다 기계어의 조합을 어떤 식으로 이해할 것인 지가 미리 약속되어 있다는 의미이다. 즉, 시스템 소프트웨어는 해당 CPU에서 돌아가는 기계어를 알고 있어야 한다.
- ISA(Instruction Set Architecture) Dependent
- 응용 프로그램(Application)
- 시스템 소프트웨어와 대비되는 개념을 가진다.
- 사용자의 개별 목적에 따른 프로그램이다.
- Machine Independent
- 즉, 기계어에 대한 지식이 요구되지 않는다.
- Instruction Set Architecture(ISA)
- 머신(CPU)마다 실행될 기계어(instruction)가 정의되어 있는 set을 의미한다.
- e.g.) 0101은 더하라는 의미임을 사전에 정의해두어 CPU가 0101이라는 기계어를 만났을 때 해당 명령어를 수행하도록 한다. 따라서 하드웨어는 ISA를 알고 있어야 한다.
- OS, 컴파일러(고급언어->어셈블러->기계어 변환 수행하는 언어처리기), 어셈블러도 마찬가지로 ISA를 알고 있어야 한다. 반면, Application은 ISA로부터 자유롭다.
- 위의 그림에서 볼 수 있듯이 ISA는 하드웨어와 소프트웨어의 interface역할을 한다.
- 아래와 같은 소프트웨어 제작자는 해당 ISA에 맞게 HW 또는 SW를 작성해야 한다.
- machine language programmer(기계어로 프로그램을 작성하는 사람 - 요즘은 거의 안함)
- operating system designer(운영체제를 설계하는 사람)
- compiler writer(컴파일러를 만드는 사람: 고급언어 입력을 어떤 기계어로 바꿔야 할 지 알고 있어야 함)
- hardware designer(하드웨어를 설계하는 사람: 하드웨어에 0101이란 값이 들어왔을 때 어떤 작업을 수행해야할 지 작성해야 함)
- 머신(CPU)마다 실행될 기계어(instruction)가 정의되어 있는 set을 의미한다.
- 컴퓨터 하드웨어가 먼저 만들어진 후 그에 맞게 동작하는 OS, Compiler/Assembler 가 만들어진 것일까, 아니면 OS와 Compiler/Assembler가 특정 기계어에 맞게 동작되도록 제작되고 이에 맞는 HW가 만들어진 것일까? 닭이 먼저일까 달걀이 먼저일까?
- 정답은 조금 허무하게도 둘 다 아니다. 사실은 기계어 명령에 대한 약속인 ISA가 가장 먼저 만들어진다. ISA를 참고해서 HW와 SW(OS, Compiler/Assembler) 모두를 만드는 것이다.
- 컴퓨터의 내부 구조
- CPU의 구조
- ALU(산술 논리 연산 장치): add, sub, and, or
- Register: 연산의 input/output 등을 임시로 저장하는 장치
- Control Unit
- Memory
- CPU의 구조
- ISA에 포함되어 있는 것:
- Instruction
- Register
- Memory
- ISA에 포함되지 않는 것:
- 기계어를 실행하는 방법 - Sequential(순차 수행) or Pipelining(병렬 수행)
- cf) Pipelining의 장점: 빠르다.
- Cache Memory
- memory보다 좀 더 빠름. memory에서 가져와야 할 값이 cache안에 있다면 더 메모리에서 가져오는 것보다 더 빠르게 가져오는 것이 가능
- 하지만 cache memory는 기계어를 정의하는 데 사용되지 않는다. (기계어 입장에서 투명한 계층)
- I/O device
- 기계어를 실행하는 방법 - Sequential(순차 수행) or Pipelining(병렬 수행)
- 정보 단위 용어
- bit
- n bits는 2^n가지 정보를 표현할 수 있음
- bit = binary digit
- byte
- 8bits
- 1개의 영문자를 기억하는 최소 단위
- word
- 컴퓨터 내부의 데이터 처리 및 전송의 단위
- 1K(Kilo) = 2^10 = 1,024
- 1M(Mega) = 2^20 = 1,048,576
- 1G(Giga) = 2^30= 1,073,741,824
- 1T(Tera) = 2^40 = 1,009,511,627,776
- bit
'System SW' 카테고리의 다른 글
[2.3] MIPS Instruction Set Architecture III - 논리연산 & Data Transfer 연산 (0) | 2022.10.12 |
---|---|
[2.2] MIPS Instruction Set Architecture II - 비트 포맷 및 산술 연산 (0) | 2022.10.12 |
[2.1] MIPS Instruction Set Architecture - 레지스터 및 메모리 모델 (0) | 2022.10.12 |
[3.2] Procedure Call in MIPS II (0) | 2022.10.02 |
[3.1] Procedure Call in MIPS I (프로그램의 메모리 주소 공간 구조) (0) | 2022.10.02 |
댓글