공부 학습

운영체제 1주차 - 3

Multitab 2021. 3. 4. 10:09

1.Computer-System Architecture

  • 대부분의 컴퓨터는 General-purpose processor를 가지며 필요에 따라  special-purpose processor를 가지기도 한다.
  • Multiprocessor는 하나의 컴퓨터에 여러개의 CPU를 가지는 것을 뜻한다.
  • 그래서 CPU들은 병렬적으로 구동될수 있으며 (parallel System), Bus를 통해 그들간에 데이터를 공유활수 있다.(tightly-coupled System) <-> (loosely-coupled System: 분산 네트워크 시스템)
  • 이러한 구조의 장점은  처리율과 경제성, 그리고 신뢰성을 높일수 있다.
  • 신뢰성이 높다: 복수의 장치중 하나가 고장나더라고 전체적인 구동에 문제가 생기지 않는 척도
  • Multiprocessor의 2가지 종류: Asymmetric Multiprocessing(비대칭형), Symmetric Multiprocessing(대칭형)
  • Asymmetric Multiprocessing: 각각의 프로세서가 서로 다른 일을 하는 것
  • Symmetric Multiprocessing: 모든 프로세서가 한번에 같은 일을 하는 것
  • Dual core의 경우 single chip내에 2개의 CPU가 포함된 형태이다. 이러한 형태를 "Multicore"라고 한다.
  • 각각의 CPU는 각자의 register과 L1 cache를 지닌다. 그리고 CPU간에 통신을 관할하는 L2 Cache로 이어진다.

Dual Core Design 

  • Multiprocessor 구조상 하나의 메모리에 여러개의 CPU가 경쟁적으로  Read하려는 경쟁구조를 보이게 되는데 이럴경우 CPU의 성능이 떨어지게 (stall)되게 된다. 그래서 각 CPU마나 독립된 영역의 메모리를 할당하고 각자의 메모리를 자유롭게 쓰게 하여 일을 처리하는데 이를 "NUMA System" 이라고 한다.
  • 이런 방식으로 하다보면 생기는 문제는 A CPU가 B CPU의 독립 메모링 영역의 값을 읽어 올때 interconnected된 BUS를 이용하여 건너건너 읽어 오다보니 비효율적인 접근을 해야하는 경우가 생길 수 있다.

Non-Uniform Memory Access System

  • Cluster System(분산 시스템)은 여러대의 시스템을 모아서 공유된 하나의 Storage를 사용하는 방식이다.
  • 여러대가 작업을 처리하다보니 하나가 고장나더라도 무리없이 하던일을 진행할 수 있으며 이를 High-availability를 가진다라고 한다.
  • Cluster System을 구현하는 방식은 Asymmetric clustering과 Symmetric clustering이 있다.
  • Asymmetric clustering은 하나의 머신이 이외 다수의 컴퓨터를 관리하는 중앙집중식 방식이고
  • Symmestric clustering은 다수의 컴퓨터들끼리 서로서로 모니터링하는 Clustering 방식이다.
  • 일부 Clusteing System의 경우 High-performance computing을 위해 다수의 컴퓨터를 parallelization하게(병렬적으로) 사용하는 경우도 있으며 
  • 하나의 저장공간을 다수의 컴퓨터가 사용하는 상황에서 생기는 Conflict를 피하기위해 distributed lock manager(DLM / 분산 락 매니저)를 사용한다.

 Clustered System

2. Operating-System Operation

컴퓨터가 부팅하기 위해서는 다음과 같은 과정을 거친다.

  1. Bootstrap program: 시스템을 초기화하고 커널을 로드하는 코드를 실행한다.
  2. Kernel 로드
  3. 시스템상에 상주하는 필수적인 프로그램인 System Deamon을 실행 시킨다.
  4. 이후 Kernel은 interrupt driven으로 구동을 시작한다.
  • Multiprogramming은 하나의 시스템에 여러개의 프로그램을 구동하는 것을 뜻한다.
  • Multitasking은 여러개의 프로그램을 "동시에" 구동하는 것을 뜻한다.
  • Multitasking은 여러개의 프로그램을 1초 이하의 응답속도(Response time)로 빠르게 돌아가며 마치 동시에 실행되는 것처럼 처리하는 방식이다. 여러개의 프로세스를 적절히 처리하기 위해 CPU scheduling을 처리해야 하며 Virtual memory에 Swap하는 것을 관장해야 한다. 

  • Dual mode는 OS에서 지원하는 2가지 모드를 말하며 "User mode"와 "kernel mode"로 나뉜다.
  • Kernel mode는 Priviliedge mode, supervised mode, system mode라고 하기도한다.
  • Kernel mode에서는 시스템의 민감한 부분도 수정가능 하게 된다. 
  • Mode bit을 통해 현재의 모드가 User mode인지 Kernel mode인지 확인 가능하다.
  • System에 수정을 하기 위해 User API 를 호출하게 되는데 이러한 경우를 System call이라고 하며 User mode에서 Kernel mode로 바뀌게 된다.
  • 최근에는 Virtual machine manager(VMM)이라는 모드도 지원하고 있다. User mode보다는 높은 권한을 가지지만 Kernel mode보다는 적은 권한을 가지는 특징이 있다.

Transition from User to Kernel mode

  • 만약 CPU가 무한루프나 Process hopping이 걸려버리면 어떻하나? "Timer"가 주기적으로 Interrupt를 발생시켜서 루프가 걸리더라도 제동을 걸어준다.
  • Systme 내에도 물리적인 Clock이 존재하여 Process의 유효시간을 측정하여 비정상적인 점유를 막아낸다.

3. Process management

  • Program이 실행되기전 Program 자체를 Passive entity라고 하며, 실행 중인 Process를 active entity라고 한다.
  • 프로세스가 구동되면서 할당해야할 CPU, I/O, memory, Files를 관리하고 
  • 프로세스가 실행되기전의 소스코드를 불러오고 실행시키며 종료후 자원 반납까지 관할한다.
  • 데이터를 초기화 시티는 등 각종 프로세스의 시작과 끝을 관리하는 부분을 Process management라고 한다.
  • single thread는 독립된 실행경로가 하나만을 가지며 한개의 Program Counter를 지니는 것을 말하며 Multi thread는 여러개의 독립 실행경로가 가지고 있어서 Process가 각각의 program Counter를 가지고 실행시키는 것이다.
  • 여러개의 Thread를 실행시키는 이유: 일반적으로 시스템이 여러가지 일을 동시에 실행 해야하기 때문에, 자원 을 동시에 쓸수 있기 때문에 
  • thread는 "Concurrency(병행)" by Multiplexing으로 여러 프로세스를 병행으로 수행하게 된다.
  • Process management의 의무: 프로세스의 생성(Creation), 중단(Suspending), 재실행(resuming), 동기화(synchronization), 통신(communication), 데드락 핸드링(Deadlock handling

'공부 학습' 카테고리의 다른 글

운영체제 2주차 - 2  (0) 2021.03.08
운영체제 2주차 - 1  (0) 2021.03.08
시스템 프로그래밍 1주차  (0) 2021.03.03
운영체제 1주차 - 2  (0) 2021.03.03
운영체제 1주차 - 1  (0) 2021.03.03