[OS] Computer System Overview
CS/Operating System

[OS] Computer System Overview

Processor(CPU)

program vs process vs processor

  • Program: 일반적으로 하드 디스크 등에 저장되어 있는 실행 코드
  • Process: program을 구동하여 program 자체와 program의 상태가 메모리 상에서 실행되는 작업 단위
  • Processor(CPU): 제어장치, 연산장치, 레지스터 그리고 데이터 버스로 구성된 디지털 시스템의 핵심 부분. 프로그램을 기억장치로부터 읽어 데이터를 처리하고 각종 장치를 구동. 
ex) 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리 상에서 실행됨
ex) 프로세서는 프로그램을 기억장치로부터 읽어와 구동시킴. 구동시킨 프로그램이 프로세스.
프로그램 실행 과정
1. 사용자가 단축 아이콘 혹은 명령행에서 프로그램을 실행한다.
2. 파일로 저장되어 있던 프로그램은 메모리(램)에 로더(Loader)에 의해 적재(load)되고 처음으로 실행해야 할 기계어 코드가 저장된 메모리의 주소를 CPU의 명령주소(IP : Instruction Pointer) 레지스터에 저장한다.
3. 프로세서(CPU)는 IP 레지스터가 가리키는 메모리의 주소에서 (처음으로) 실행할 명령어를 인출(메모리에서 CPU로 가져오는)하여 명령 레지스터(IR : Instruction Register)에 저장한다.
4. IR에 저장된 명령을 실행하고 IP에 다음번에 실행할 명령어가 있는 주소를 저장한다.
5. 3~4를 프로그램의 끝까지 반복한다.

Data I/O를 위한 내부 Register

  • Memory Address Register (MAR): 다음에 읽거나 쓸 주소를 저장함.
  • Memory Buffer Register (MBR): 메모리에 써질 데이터를 가지고 있거나 메모리에서 읽은 데이터를 저장함.
-> 메모리에 대한 접근이 MAR, MBR 두 레지스터의 작용에 의해 일어남
  • I/O address register
  • I/O buffer register
-> 모든 IO device는 장치 안에 buffer가 들어 있음

범용 Register (User-visible Registers)

  • 프로그래머가 접근할 수 있는 register
  • 종류: index, segment pointer, stack pointer...

제어를 위해 사용되는 Register (Control and Status Registers)

  • Program Counter (PC): 다음번에 수행할 명령어의 주소를 저장하는 register
  • Instruction Register (IR): PC를 읽어서 명령어를 가져와서 IR에 저장(Instruction Fetch)하게 됨. 대표적인 제어 register
  • Prgram Status Word (PSW): 상태정보를 나타내는 register. 에러를 최소화하고 시스템 전체에 영향을 안미치게 하기 위해 저장해둠. 상태 코드, 인터럽트 활성화 여부, supervisor/user mode 여부를 저장

Instruction 실행

  • 프로그램은 명령어들의 연속. 즉, 프로그램의 실행은 명령어를 가져오고 실행(fetch and execute)가 무한 루프.
  • 가져온(fetch된) 명령어는 IR에 저장. 이때 이 명령어는 CPU & OS에 따라 달라지기 때문에 CPU & OS가 같아야지 프로그램이 실행될 수 있는 환경이 구성됨. 
  • Fetch -> PC가 1씩 증가 -> execute(이미 1이 증가된 PC를 읽음. 즉, 다음 명령어를 읽는 것)

Interrupt

  • cpu가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요할 경우 마이크로프로세서에게 알려 처리할 수 잇도록 하는 것.
  • 주변 장치와 입출력 장치는 cpu나 메모리와 달리 interrupt라는 메커니즘을 통해 관리
  • 입출력 연산이 cpu 명령 수행속도보다 현저히 느린데 이런 느린 연산을 cpu가 매번 기다리게 되면 비효율 적임. 따라서 interrupt를 이용해 입출력 연산이 마무리가 되면 끝났다고 알림.
  • interrupt가 오면 interrupt handler(실제 interrupt를 처리하기 위한 루틴)로 가서 이를 수행 후 다시 원상복귀한다.
  • 하드웨어 interrupt: 하드웨어가 발생시키는 interrupt
  • 소프트웨어 interrupt: 소프트웨어(사용자 프로그램)가 발생시키는 interrupt. 예외상황이나 system call이 있음
  • Interrupt 과정
    1. process A는 system call을 통해 interrupt를 발생시킴
    2. CPU는 현재 진행 중인 기계어 코드를 완료
    3. 현재까지 수행중이었던 상태를 해당 process의 PCB(Process Control Block)에 저장
    4. PC에 다음에 실행할 명령의 주소를 저장
    5. interrupt vector(인터럽드 발생시 처리해야 할 인터럽트 핸들러의 주소를 인터럽트 별로 보관하고 있는 테이블)를 읽고 ISR(Interrupt Service Routine) 주소값을 얻어 해당 주소로 점프해서 루틴을 실행
    6. 해당 코드를 실행
    7. 일을 다 처리하면 대피시킨 register를 복원
    8. ISR 끝에 IRET 명령어에 의해 interrupt가 해제 되면서 대피시킨 PC값을 복원하여 이전 실행 위치로 복원

 


Memory

Main Memory

  • volatile (휘발성)
  • real memory, primary memory라고도 불림

Secondary Memory

  • Nonvolatile (비휘발성)
  • 프로그램이나 데이터 파일들 저장에 사용

Cache Memory

  • CPU가 실행할 수 있는 instruction의 수가 메모리 cycle time에 의해 제한됨 -> 해결: cache 메모리를 활용
  • main memory의 부분을 복사해서 가짐
  • CPU는 cache를 제일 먼저 체크함 -> 없으면 해당 데이터를 찾아서 cache에 이동시켜서 CPU에 전달
  • 고려해야할 문제
    • Main memory에서 데이터를 가져올 때 한번에 Block 사이즈를 어떻게 해서 가져와야할지
    • 가져온 block을 cache의 어느 위치에 넣을 지(대표적 replacement algorithm: Least-Recently-Used)
    • Write policy: cache와 메인 메모리 사이 값의 동기화 안되었을 때 언제 동기화 시킬지
Memory Hierarchy 메모리 계층 구조
-> 위로 갈수록 접근시간 감소, 수용량 감소, bit당 비용 증가
-> 아래로 갈수록 접근시간 증가, 수용량 증가, bit당 비용 감소, cpu가 접근하는 빈도 감소

참고) Locality of reference 참조 지역성
자주 실행되는 명령어만 캐시에 넣어 놓음. 그렇게 되면 대부분의 데이터 접근이 캐시에서 일어남. 캐시 스피드에 의해 프로그램의 실행 속도가 결정됨.

 


Programmed I/O VS Interrupt-Driven I/O (입출력 모듈을 이용해 입출력하는 방법 2가지)

  • Programmed I/O: CPU가 아닌 I/O 모듈이 수행함. 즉, interrupt가 발생하지 않음. CPU는 명령이 끝날때까지 계속 상태 체크함(Busy Wait)
  • Interrupt-Driven I/O: I/O 모듈이 데이터 교환 준비가 되었을 때 CPU는 interrupt 당함. 따라서 Programmed I/O와는 달리 busy wait이 없어짐

Computer System 구조

  • 크게 4가지로 나눌 수 있음: Hardware(CPU, memory, I/O devices), OS, Application Program, Users
  • I/O 디바이스와 CPU는 동시에 실행될 수 있음
  • 각 device controller는 각각의 device type을 담당함
  • 각 device controller는 local buffer가 있음
  • CPU는 main memory <-> local buffers 로 데이터를 옮김
  • I/O는 device에서 contoller의 local buffer로 데이터가 이동하는 과정이다.
  • Device contoller는 interrupt를 이용해 CPU에게 작업이 끝났다고 알림

Multiprocessors system

  • 하나의 컴퓨터안에 CPU가 여러개 있는 시스템
  • 장점
    • Throughput 증가
    • 신뢰성 증가
  • 종류
    • Asymmetric Multiprocessing: CPU당 메모리 하나. 각각의 OS 커널이 올라갈 수 있음. 여러개의 컴퓨터가 붙어 있는 것과 유사
    • Symmetric Multiprocessing: CPU가 여러개고 메모리는 하나. 즉, OS가 하나

Clustered Systems

  • 일반적으로 하나의 컴퓨터를 node라고 하는데 그 node들을 엄청 많이 연결시켜서 전체를 하나의 시스템으로 관리하는 것을 말함
  • 웹서버 같이 throughput을 높이는 용도로도 사용함. 여러대를 두고 지속가능한 시스템을 사용하기 위해 클러스터 사용.

Computer Startup

  • 부팅 과정: 전원킴 -> ROM(Read Only Memory)안에 부팅의 전반적인 과정을 담당하는 프로그램이 들어 있음(Bootstrap Program). 전원키면 그 프로그램이 무조건 실행됨.

Operating System 구조

  • Multiprogramming: 여러 개의 프로그램들이 단일 프로세서 상에서 동시에 실행되는 것. Job Scheduling으로 실행될 작업이 선택됨. 작업을 기다려야하면(I/O 등의 이유로 인해), OS는 다른 작업을 수행함.
  • Multitasking(Timesharing): CPU가 매우 빈번하게 작업을 변경해서 유저가 각 작업과 상호작용을 원할히 할 수 있게 하는 것
  • Interrupt는 Hardware에 의해 발생하는 것
  • Exception & Trap은 Software에 의해 발생하는 것
  • Dual-mode는 OS가 다른 시스템으로부터 스스로를 보호하게 해줌
    • User Mode
    • Kernel Mode

System Calls

  • 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 해줌

 

728x90
반응형

'CS > Operating System' 카테고리의 다른 글

[OS] CPU Scheduling  (0) 2021.09.22
[OS] Process and Thread  (0) 2021.09.22
[OS] Process 동기화 (3) Deadlock  (0) 2021.02.11
[OS] Process 동기화(2)  (0) 2021.02.11
[OS] Process 동기화(1)  (0) 2021.01.28