CS/Operating System

[OS]Operating System의 전반적인 개념

kimyunseok 2021. 7. 15. 21:09

OS의 정의

OS는 일반적으로 정의하기 어렵다. 따라서 공통적인 역할로 정의한다.

  1. 하드웨어(리소스)를 관리한다. -> I/O 장치 접근, 파일 접근, Accounting(하드웨어 사용 통계), 에러 탐지
  2. 응용 프로그램의 수행을 제어한다. -> 스케줄링, 에러 리포팅

OS는 하드웨어 접근을 제한해야 하므로 응용 프로그램과 하드웨어 사이에 위치한다.

OS는 하드웨어 접근을 막기위해 응용 프로그램과 하드웨어 사이에 위치한다.

OS는 세 가지 목표가 있다.

  1. 응용 프로그램 쉽게 사용
  2. 컴퓨터 시스템 편하게 사용
  3. 하드웨어의 효율적 관리

OS는 또한 Kernel이라고도 불린다.

(Android OS는 Linux Kernel을 포함하고, Linux OS보다는 Linux Kernel이라고 많이 부른다.)

 

DMA / Interrupt

컴퓨터에서 CPU와 장치들은 메모리를 차지하기 위해 경쟁한다.

DMA란 I/O Transaction이 CPU의 간섭없이 수행하는 것을 의미한다. ( Direct Memory Access)

Interrupt는 DMA작업이 끝났음을 알려주는 것이다.

DMA와 Interrupt

따라서 지속적으로 I/O Transaction을 해도 CPU는 간섭하지 않으므로, CPU는 하던 작업을 계속 하는데 I/O 작업이 동시에 진행된다.

만일 DMA가 없다면 CPU가 계속해서 I/O 장치에 간섭하므로 다른 작업이 불가능할 것이다.

 

과정을 설명해 보자면

  1. CPU에 I/O 요청
  2. I/O 컨트롤러가 CPU의 간섭없이 I/O 작업 수행 (DMA)
  3. I/O 작업이 끝나면 Interrupt로 CPU에 I/O 작업이 끝났음을 알려줌
  4. CPU가 하던 일을 멈추고 Interrupt Handler가 Interrupt Vector에서 Interrupt Service Routine(ISR)을 확인하고 수행
  5. ISR이 종료되면 CPU가 멈췄던 작업을 다시 진행

 

trap과 Interrupt의 차이

Interrupt는 비동기적이고 H/W, 즉 외부 장치에 의해 발생한다.

trap은 동기적이고 S.W, 즉 소프트웨어에 의해 발생한다.

 

저장소 구조

  • 메인 메모리 : 휘발성, CPU가 바로 접근 가능 (DRAM)
  • 세컨더리 스토리지 : 비휘발성, 데이터 저장 목적 (Magnetic Disk - HDD, SSD)

 캐싱 기법 - 자주 접근하는 프로세스를 기억하는 것 (SRAM)

저장소 구조. 위로 올라갈수록 가격이 비싸고 속도가 빠르며 용량이 작다.

 

컴퓨터 시스템 구조

요즘엔 멀티프로세서 구조를 많이 사용한다. 멀티프로세서 구조의 장점은

  1. 처리량이 증가하므로 속도가 증가한다.
  2. 프로세서들이 메모리를 공유할 수 있으므로 경제적인 측면에서 좋다.
  3. CPU 한 개의 작업 실패가 영향이 없으므로 안정성이 증가된다.

※ 멀티 코어는 CPU 한 개에서 쓰는 용어이고, 멀티 프로세서는 CPU가 여러개를 뜻한다.

 

멀티 프로세서 시스템에는 두 가지의 종류가 있다.

 

  1. 비대칭 멀티 프로세싱 : 상하관계가 존재한다. 마스터 프로세서가 시스템을 통제한다.

 

  2. 대칭 멀티 프로세싱 : 상하관계가 없이 각 프로세서들이 메모리를 공유하며 상호작용한다.

 

OS 구조

CPU와 I/O 장치를 매 순간 바쁘게 유지하기 위해 멀티프로그래밍을 한다.

멀티 프로그래밍이란, 여러 프로세스가 동시에 수행되는 것을 의미한다. (멀티 태스킹)

job scheduling을 통해 한 개의 프로세스가 선택되고 OS는 context switch를 통해서 다른 작업을 불러온다.

※ job은 프로세스를 의미한다고 보면 된다.

 

연관된 개념으로는

  1. CPU 스케줄링 : CPU에 올라갈 준비가 된 Job을 결정한다. (레디 큐에 무엇을 넣을지 결정한다.)
  2. Job 스케줄링 : 실행 준비된 프로세스들이 여러 개 있을 때, 어떤 프로세스를 올릴 것인지 정하는 것. (메모리의 공간은 한정적이기 때문이다.)
  3. Swapping : 메모리 공간이 부족할 때, swap in/out을 통해서 프로세스를 이동시킨다.
  4. Virtual Memory : 프로그램을 수행할 공간을 더 크게 사용하기 위해 가상 메모리를 사용한다.
  5. Process : 수행중인 프로그램을 의미한다.

 

Dual-Mode Operation

현대 OS는 Dual-Mode Operation을 지원하는데, User Mode와 Kernel Mode를 지원한다. 이 때 Mode Bit가 존재하는데

  1. User Mode : Mode Bit가 1이고, User Program을 수행하는 상태.
  2. Kernel Mode : Mode Bit가 0이고, 하드웨어에 접근하는 상태. (System Call을 호출해서 trap이 발생하면 Kernel Mode로 진입한다.)

OS를 보호하기 위한 목적으로 Dual-Mode를 지원한다. 하드웨어 접근은 커널 모드 일때만 허용하는데 이를 Privileged instruction이라고 한다.

 

OS에서의 전반적인 개념

  1. Process : CPU가 아주 빠르기 때문에 컴퓨터에서의 프로그램들이 동시에 수행중인 것 처럼 보인다. 실제로 프로세스들은 번갈아 가면서(Context Switch) 수행된다. 
  2. Thread : 프로세스에서의 Context Switch는 Overhead가 심하므로 이를 방지하기 위한 목적.
  3. Scheduling : CPU 스케줄링에서는 다음에 어떤 프로세스가 수행될지 결정한다.
  4. Synchronization :  Semaphore를 사용, Critical Section에서 발생할 수 있는 문제를 해결한다. 한 프로세스가 수행 중에 다른 프로세스들에 의해 문제가 발생할 수 있다.
  5. DeadLock : 동기화가 잘못돼서 프로세스가 멈추는 현상이다.
  6. Memory Management : Virtual Address와 Physical Address가 있다. 제한된 Physical Address 공간을 더 넓게 쓰기 위해 Virtual Address를 사용한다. 이 때 Address Translation(V.A -> P.A)을 하게 되는데 이는 실행시간(Execution Time)에 하게 된다. 또한 Physical Memory에 어떤 프로세스를 올릴지 결정해야 한다. 이 때 어떤 프로세스를 Swap in / out할 지 결정해야 하는데, LRU(Least Recently Used) 알고리즘을 사용하게 된다.
  7. Disk Management : Disk 성능을 빠르게 하는 것에 초점. Free-space 관리, 저장소 구조, HDD와 SSD
  8. File System : 파일을 생성하고 삭제하는 것. Directory의 역할. 파일을 Secondary Storage에 연관시키는 것.