컴퓨터 시스템 동작 원리
공유 메모리에 접근하는 공용 버스를 통해 여러 장치 제어기, 1개 이상 CPU 로 구성된 범용 컴퓨터 시스템
위와 같은 컴퓨터 시스템 구동을 위해서는 초기 프로그램(Init Process) 가 필요하다.
이는 BootStrap 프로그램을 ROM 에 저장하고, CPU 레지스터로부터 장치 제어기, 메모리 내용 포함 시스템 모두 초기화
BootStrap Program : 운영체제를 적재하는 방법 및 실행하는 방법(Init Process 실행 및 Event Waiting)
시스템 동작 과정에서 Event 와 Interrupt 가 발생한다.
각 경우는 아래와 같다.
Event 발생시
- Interrupt or Trap에 의해 신호가 보내지게 된다.
- Hardware : 어느 순간이든 시스템 버스를 통해 CPU에 신호를 보내 인터럽트 발생 가능
- Software : System Call 연산을 실행해서 인터럽트 발생
Interrupt 발생시
- CPU Interrupt 될 때, 하던 일을 중단하고 고정된 위치로 실행을 옮긴다.
- 고정된 위치 -> ISR 시작 주소
- ISR 실행됨 -> 실행 완료 시 CPU는 인터럽트된 다음부터 연산을 재개
운영체제 정의
- 컴퓨터 하드웨어를 관리하는 프로그램
- 실행중인 프로그램들을 Control하는 프로그램
운영체제 역할
첫 번째로, 하드웨어를 제어한다.
예를 들어 I/O Device or File 접근, Accounting(프로세스 메모리, 리소스 사용량 계산), Error 탐지 등이 있다.
두 번째로 프로세스를 실행한다.
예를 들어 테스크 스케줄링, 에러 리포트 등이 있다.
운영체제 목표
유저 프로그램을 적절한 리소스에 맞게 실행하고, 유저드르이 문제를 더 쉽게 해결할 수 있는 환경을 제공하는 것.
유저들이 컴퓨터 시스템을 더 사용하기 쉽도록 하는 것.
하드웨어 자원을 효율적인 방식으로 사용하는 것.
운영체제의 다른 명칭으로 아래와 같은 것이 있다.
- Resource 할당자(모든 리소스들을 관리함. 모든 리소스에는 CPU time, memory 공간, file 저장 공간, i/o 장치들이 포함됨)
- Control Program(컴퓨터 시스템 적절치 않은 사용과 에러를 방지하는 프로그램을 제어한다)
- Kernel(컴퓨터 상에서 항상 동작하는 프로그램)
컴퓨터 I/O 동작 원리
하나 혹은 여러개의 CPU와 디바이스 컨트롤러들은 공유 메모리접근을 위해 버스를 통해 연결되어 있다
- I/O Device와 CPU는 동시에 동작한다 -> DMA(Direct Memory Access)
각각 Device Controller는 다음과 같다.
- Device Controller는 각각 로컬 버퍼를 가지고 있다
- CPU는 데이터를 메인 메모리에서 로컬 버퍼로 혹은 로컬 버퍼에서 메인 메모리로 옮긴다.
- I/O : Device 로부터 Controller의 Local buffer에 데이터를 옮기는 것
- Device Controller는 Operation이 모두 끝나게 되면, CPU에게 interrupt를 발생시켜서 작업이 모두 종료됨을 알린다.
컴퓨터 I/O 구조
I/O Transaction이 버스를 통해서 이뤄진다.
bus의 종류로는 아래와 같다.
- 시스템 버스 - CPU와 I/O Bridge를 연결하는 버스
- 메모리 버스 - I/O Bridge와 Memory를 연결하는 버스
- I/O Buses - 다양한 장치에 의해 공유된다.
DMA(Direct Memory Access)
CPU의 간섭없이 I/O 연산을 수행하는 프로세스
DMA를 통해서 CPU는 다른 작업을 수행할 수 있다.
- I/O Device가 CPU를 거치지 않고, Memory에 접근이 가능하다.
- 이 과정에서 CPU의 상태를 저장할 필요가 없고, 상태 레지스터 또한 저장할 필요가 없다.
- DMA가 없다면, I/O 장치와 CPU는 동시에 동작하지 않는다.
Interrupt
- interrupt 발생 시, interrupt vector를 통해서 isr 로 제어권을 넘긴다.
- interrupt vector는 isr 시작 주소값들을 담아놓은 벡터이다.
- os는 interrupt driven 방식이다.
Interrupt vs Trap
- (하드웨어에 의해 발생한 event) -> interrupt
- (소프트웨어에 의해 발생한 event) -> trap(ex. system call, segmentation fault)
Storage Structure
처리 속도와 휘발성에 따라서 Storage Structure를 만들 수 있다.
왼쪽으로 갈 수록, 가격이 비싸고, 입출력 속도가 빠르고, 휘발성이 있다.
- register <- cache <- main memory <- magnetic disk
Caching
- OS에서 가장 중요한 원리
(Utilization[이용률]이 높은 정보를 가져와서 Cache에 담는다)
Multiprocessor의 중요성
Advantage
- 처리율 증가 -> CPU core 수가 많다.
- 경제적 -> 메모리, 드라이버 공유 가능
- 증가된 신뢰성 -> CPU 하나 고장나도 다른 CPU에 크게 문제없다.
MultiProcessor Systems
-
Asymmetric MultiProcessing(비대칭적 다중처리기)
- CPU 간 Master/Slave 관계가 존재한다.
- CPU 마다 Private Memory를 가질 수 있다.
-
Symmetric MultiProcessing(대칭적 다중처리기)
- CPU 간 수평적 관계
- 메모리는 CPU 간 모두 공유
MultiProcessor Memory Model
- UMA (Uniform Memory Access) : 메모리 접근 시간 동일
- NUMA (Not-Uniform Memory Access) : 메모리 접근 시간 동일 x, 메모리 위치에 따라 다르다.
MultiCore System
- 하나의 CPU 내에 계산 코어를 여러 개 둔다.
- 병렬 처리 프로그래밍의 필요성 증대
Clustered Systems
SAN(Storage Area Network) 이란?
특수 목적용 고속 네트워크, 대규모 네트워크 사용자들을 위해 서로 다른 종류 데이터 저장장치들을 서버와 함께 연결한 network 방식
Multiprogramming
- Job Scheduling을 통해서 하나의 Process가 선택되고, 해당 Process에 CPU를 할당하는 과정
- 하나의 프로세스가 I/O를 하기 위해서 Waiting 상태에 있으면, OS는 다른 프로세스에게 CPU를 할당한다.
Time Sharing vs Multiprogramming
- 시분할에서는 CPU가 다수 작업을 서로 교대 수행하지만, 매우 빈번히 교대가 일어나기 때문에, User들은 각자 프로그램과 상호작용 가능
- 시분할은 MultiProgramming의 논리적 확장
OS Operation
OS 기본 동작 원리? : OS와 사용자는 하드웨어와 소프트웨어 자원을 공유하므로 User Program의 오류가 단순히 Program 내에만 영향을 끼치도록 보장해야 한다.
Dual Mode
- OS 동작 과정에서 User Mode 와 Kernel Mode 로 나뉜다.
- User와 Kernel Mode를 Bit Mode를 통해서 구분한다. (User Mode : 1, Kernel Mode : 0)
- 시스템 부팅 시 Hardware는 커널 모드에서 시작.
- 메모리에 OS가 적재되고, User 모드에서 사용자 프로세스 시작.
Privileged Instruction
커널 모드에서만 실행되야 하는 명령어
예시는 아래와 같음
- ex. Kernel Mode에서 User Mode로 바꾸는 명령어
- ex. I/O Control 명령어
- ex. Interrupt 명령어
System Call
- OS Service를 사용하기 위해 User Program이 OS에 요청하는 방법
- OS의 동작을 User Process가 요청 가능하다.
- Interrupt Vector의 특정 위치에 Software Interrupt(Trap)을 거는 형태로 취함