공룡책 Ch 1 요약 (원서를 읽고 요약하는 과정에서 잘못된 내용이 있을 수 있습니다.)

img

1. What Operating Systems Do

  • 운영체제의 간단한 정의 : 컴퓨터의 하드웨어를 매니징하는 소프트웨어
  • 컴퓨터 하드웨어와 사용자 간의 매개체로 기능
  • 운영체제에 대해 자세히 알기 전에, 컴퓨터 하드웨어의 구조에 대해서 살펴볼 필요가 있음
  • Hardware : CPU, 메모리, 입출력 장치로 크게 나뉘며 기본적인 컴퓨터 자원을 제공하는 역할을 수행
  • Application Programs : 프로세서, 스프레드시트, 컴파일러 등의 소프트웨어를 일컫으며 할당받은 컴퓨터 자원이 유저에 의해 어떻게 소비되는 지를 나타냄

1

1-1. User View

  • 사용자 관점에서 운영체제는 ease of use 의 목적을 위해 존재
  • 퍼포먼스 및 보안 향상, 자원의 활용 등의 관점에서 운영체제에 대해 고민해볼 수 있음

1-2. System View

  • 자원 할당자 측면에서의 운영체제를 이야기하는 것(Resource Allocator)
  • CPU time, 메모리 공간, 입출력장치 등이 자원에 해당하며 운영체제는 이들 자원을 적절히 분배하여 프로세스에 할당하는 역할을 수행하는 것
  • Control Program 관점에서의 운영체제를 생각할 경우, 운영체제가 프로그램의 수행 및 여러 에러 방지 등의 역할을 수행하는 것으로도 볼 수 있음

1-3. Defining Operating Systems

  • 여러 관점을 고려해야 하기 때문에 100% 완벽하게 운영체제에 대해서 무엇이다라고 정의하기는 힘듦
  • 여러 프로그램들이 실행을 위해 자원을 할당받아야 하는 공통점이 있기 때문에, 자원의 할당 및 컨트롤 측면에서 운영체제를 정의하는 것이 제일 보편적임
  • kernel (커널) 이라 불리는 프로그램으로 운영체제를 생각해볼 수 있으며, 이러한 관점에서 프로그램은 크게 System ProgramApplication Program 의 두 가지로 나눠볼 수 있음
  • System Program : 운영체제의 동작과 연관되있지만 커널의 일부는 아닌 프로그램을 말함
  • Application Program : 시스템 프로그램을 제외한 나머지 프로그램들을 말함

2. Computer-System Organization

2

  • 보편적인 컴퓨터 구조는 버스 구조 상에 여러 디바이스 컨트롤러와 CPU가 메모리와 연결된 구조를 띄고 있으며 이러한 시스템 버스는 메모리와 CPU, 하드웨어의 컨트롤러 간에 데이터가 이동하는 교통체계로 생각하면 됨

    • 굳이 버스라고 지칭한 이유는 데이터가 일정 시간 간격으로 이동하기 때문에 버스가 운행하는 원리와 비슷하기 때문

    System Bus : CPU와 디바이스 컨트롤러, 메모리를 Bus 구조로 연결하는 Subsystem을 일컫는 용어

  • 디바이스 컨트롤러(Device Controller)는 장치로부터 들어오가 나가는 데이터를 임시로 저장하기 위한 로컬 버퍼(Local Buffer)레지스터(Register) 를 각각 가지고 있음

    • 버퍼는 데이터를 전송할 때, 일시적으로 데이터를 보관하는 메모리 영역을 의미하며, 우리가 흔히 아는 버퍼링은 버퍼에 데이터를 채우는 행위를 의미함
    • 레지스터는 CPU가 처리하는 데이터를 임시로 저장하는 공간이며, CPU 자체는 데이터를 저장할 수 없기 때문에 레지스터를 통해 데이터를 보관하여 연산 처리 및 데이터의 주소 지정 등을 돕는 것
  • CPU는 각각의 디바이스 컨트롤러와 소통하기 위해, 각각에 대응하는 디바이스 드라이버(Device Driver) 를 가지고 있음

  • 디바이스 드라이버는 운영체제로 하여금 디바이스 컨트롤러의 동작을 이해할 수 있도록 하며, 운영 체제에 해당 장치에 대한 동일한 인터페이스(Uniform Interface)를 제공함

    (provides the rest of the operating system with a uniform interface to the device.)


2-1. Interrupts

3

  • 단순한 컴퓨터에서의 입출력 과정을 살펴보도록 하자

    • 어떤 프로그램이 입출력을 수행한다고 할 경우, 디바이스 드라이버는 우선 디바이스 컨트롤러에 입출력을 위해 적절한 레지스터(Register)를 적재(load)하게 될 것임

    • 디바이스 컨트롤러는 데이터를 읽어들여 로컬 버퍼로 데이터를 다시 이동시킨 후 디바디스 드라이버에 데이터의 이동이 끝났음을 알림

    • 이후 디바이스 드라이버는 운영체제의 다른 부분에 읽어들인 데이터 혹은 데이터의 포인터값이나 상태 정보(status information) 등을 리턴하여 운영체제가 이후의 행위를 수행하도록 함

      (Device driver gives control to other parts of the operating system, possibly returning the data or a pointer to the data. For other operations, the device driver returns status information …)

  • 여기서 인터럽트(Interrupt) 는 CPU가 프로그램을 실행하고 있을 때 시스템 버스 경로를 따라 CPU에 특정 신호(Signal)를 보내 하드웨어 장치에 특정 수행을 완료했거나 예외 상황의 발생 혹은 특정 처리가 필요한 상황 등을 알리는 역할을 수행함

    엄밀히는, 하드웨어와 소프트웨어 측면의 인터럽트로 나뉘지만 여기서는 주로 하드웨어 측면의 인터럽트에 대해 언급하도록 함

  • 인터럽트가 수행중이면 CPU는 수행중이던 동작을 멈추고, 수행중이던 프로세스 정보를 PCB(프로세스 제어블록)에 저장하게 됨

    (When CPU is interrupted, it stops what it’s doing and immediately transfers execution to a fixed location.)

  • 인터럽트 핸들러(Interrupt Hnadler) 는 실제 인터럽트를 처리하기 위한 일종의 루틴(Routine)으로, 운영체제의 코드 영역에는 여러 인터럽트 유형별로 어떻게 처리해야 할 지를 프로그램화해서 저장하고 있음

    • Routine 이라는 단어의 뜻에서 알 수 있듯, 인터럽트 요청에 따른 주기적인 수행이 정해져 있으며 다른 말로 인터럽트 서비스 루틴(Interrupt Service Routine) 이라고도 부름
  • 여기서 각각의 인터럽트 핸들러들의 주소를 인터럽트별로 보관하게 되는데, 이를 저장하는 자료 구조를 인터럽트 벡터(Interrupt Vector) 라고 부름

  • 문제는, 인터럽트 벡터가 수용할 수 있는 범위 이상으로 컴퓨터에 연결된 디바이스가 많기 때문에 너무 많은 인터럽트가 동시에 발생하게 될 경우에는 골치아파짐

    • 인터럽트 체이닝(Interrupt Chaining) 이 이를 위한 대표적인 방안으로, 인터럽트 벡터의 각 요소가 인터럽트 핸들러 리스트를 가리키도록 하는 방식임

    • 인터럽트가 발생하면 해당 인터럽트에 대한 벡터 내 요소가 가리키는 리스트가 호출되고, 리스트의 각 인터럽트 핸들러를 하나씩 보면서 적절한 핸들러를 찾게되는 것

      (…interrupt chaining, in which each element in the interrupt vector points to the head of a list of interrupt handlers. When an interrupt is raised, the handlers on the corresponding list are called one by one, until one is found tha can service the request.)


  • 인터럽트 우선순위(Interrupt Priority Levels) 를 정해놓기도 하는데, 이는 동시다발적인 인터럽트 발생 시 CPU로 하여금 전원공급 이상이나 CPU의 기계적 오류 등의 높은 우선순위를 가지는 인터럽트를 먼저 처리할 수 있도록 하기 위함


2-2. Storage Structure

4

  • 여기서는 저장 장치의 구조를 크게 Primary, Secondary, Tertiary 의 세 가지로 나눠서 살펴볼 것이며, 각각의 구조는 속도와 크기, 휘발성 여부에 차이가 있음

    (The main differences among the various storage systems lie in speed, size, and volatility.)

  • CPU가 특정 작업을 수행하기 위해서는, 작업 수행 정보를 반드시 메모리에 적재해야 함

  • 또한, 컴퓨터에서 프로그램이 돌아가기 위해서는 프로그램 코드가 메모리에 적재되어 있어야 함

  • 컴퓨터는 대부분의 프로그램을 메인 메모리( RAM, Random-Access Memory )상에서 실행하는데 이러한 메인 메모리의 특성은 휘발성(Volatile)이 존재하기 때문에 컴퓨터가 종료되면 데이터를 모두 잃게 됨

  • 이를 극복하기 위해서 사용되는 것이 EEPROM(Electrically Erasable Programmable Read-Only Memory) 이며, 데이터를 바이트 단위로 읽고(Read) 쓸 수 있는(Write) 비휘발성 메모리란 특징이 있음

    • EEPROM은 RAM에 비해 상대적으로 속도가 느리기 때문에 주로 자주 쓰이지 않는 정적인 프로그램이나 데이터를 저장하는 용도로 쓰임
    • 예를들어 아이폰의 경우 EEPROM에 시리얼 넘버나 하드웨어 정보와 같은 것들을 저장해놓고 있음
  • 모든 종류의 메모리는 바이트의 배열 형식의 데이터를 담고 있으며, 각각의 바이트는 고유의 주소값을 가짐

    • 여기서 메모리에의 적재(loading) 과정은, 메인 메모리에서 바이트 기반 데이터들을 CPU 내부의 레지스터(Register)로 옮기는 것을 말하며, 반대로 저장(storing) 과정은 적재와 반대로 데이터를 레지스터에서 메인 메모리로 옮기는 과정을 의미함

      (The load instruction moves a byte or word from main memory to an internal register within the CPU, whereas the store instruction moves the content of a register to main memory.)

  • 명령 주기(Execution Cycle) 는 CPU가 메모리로부터 특정 명령을 가져와 이를 통해 어떤 동작을 요구할 지 결정하고, 이를 수행하는 과정을 의미함

    • 맨 처음 명령(instruction) 을 메모리로부터 가져온 후, CPU 내부의 레지스터(instruction register)에 저장함

    • 저장된 명령은 복호화되어 수행(execution)을 위한 피연산자(operand)를 메모리에서 가져오도록 함

    • 피연산자에 의한 명령 수행이 완료되고 나면, 수행의 결과 역시 다시 메모리에 저장됨

      (…first fetches an instruction from memory and stores that instruction in the instruction register. The instruction is then decoded and may cause operands to be fetched from memory and stored in some internal register. After the instruction on the operands has been executed, the result may be stored back in memory.)

  • 하지만 앞서 언급한대로, 메인 메모리는 휘발성 이라는 한계와 더불어, 많은 양의 프로그램이나 데이터를 저장하기에는 공간 사이즈가 너무 작다는 문제가 있음

  • 따라서, EEPROM의 언급과 비슷한 맥락으로 대부분의 컴퓨터는 비휘발성의 Secondary-Storage 를 갖추고 있음

    • 이것의 대표적인 예가 하드 디스크 드라이브( HDD )와 비휘발성 메모리 디바이스( Nonvolatile Memory Devices )이며 휘발성 메모리에 미해 상대적으로 느리지만 많은 양의 데이터를 저장할 수 있기 때문에 서로 보완관계에 있음
  • 비휘발성 메모리는 Secondary 레벨 외에도, 더욱 하위 개념인 Tertiary Storage 로도 나눠볼 수 있는데, CD-ROM이나 블루레이 등과 같은 특수 목적의 메모리 디바이스가 여기에 속함


2-3. I/O Structure

5

  • 위의 그림은 일반적인 인터럽트에 의한 I/O 처리 장치의 구조로 큰 규모의 데이터를 옮길 경우에는 높은 오버헤드를 유발하게 되며, 이를 해결하기 위해 Direct Memory Access(DMA) 가 사용됨
  • CPU에 독립적으로 메모리에 접근할 수 있도록 하는 시스템 기능으로, CPU를 거치지 않고 디바이스 컨트롤러가 큰 규모의 데이터를 직접 디바이스에서 메인 메모리로 옮기는 것
  • 이 경우에는 디바이스 드라이버에 해당 연산이 완료되었음을 알리기 위한 하나의 인터럽트만이 발생하게 됨
  • 따라서 디바이스 컨트롤러가 연산을 수행하는 동안 CPU는 다른 작업을 수행할 수 있게 되는 것

3. Computer-System Architecture

주요 개념을 아래와 같이 다시 정의해볼 수 있음

  • CPU : 명령을 수행하는 하드웨어 개념(중앙처리 장치)
  • Processor : 물리적인 칩으로, 하나 이상의 CPU를 포함하고 있음
  • Core : CPU의 기본적인 단위를 일컫음
  • Multicore : 복수의 CPU 단위를 가지고 있음을 의미
  • Multiprocessor : 복수의 프로세서를 가지고 있는 형태를 의미

3-1. Single-Processor Systems

  • 원시적인 컴퓨터의 경우 하나의 CPU와 하나의 코어(Single Core)만을 가진 Single-Processor System 형태였음

  • core : 명령을 수행하는 단위로 데이터를 로컬에 저장하기 위한 레지스터이기도 함

    (The core is the component that executes instructions and registers for storing data locally.)


3-2. Multiprocessor Systems

  • 오늘날 모바일 기기를 포함한 대부분의 컴퓨터는 멀티 프로세서 구조를 보임

  • 일반적인 정의는 2개 이상의 프로세서를 가진 시스템을 말하며, 각각의 프로세스는 하나의 코어 단위의 CPU를 가지게 됨

    (Traditionally, such systems have two or more processors, each with a single-core CPU.)

  • 프로세서들은 버스 구조와 클록, 메모리, 기타 주변기기 등을 공유함

  • 멀티 프로세스의 제일 큰 장점은 싱글에 비해 더욱 높은 처리량 을 보인다는 것으로, 더 많은 작업을 짧은 시간에 끝낼 수 있음

    • 하지만 N개의 프로세서가 있다고 해서, N개에 비례하는 퍼포먼스 증가량을 보이지는 않음
    • 프로세서가 증가하는 만큼, 전체 멀티 프로세서 구조를 유지하기 위한 작업의 부하가 올라가기 때문

    (The speed-up ratio with N processors is not N, however; it is less than N. When multiple processors cooperate on a task, a certain amount of overhead is incurred in keeping all the parts working correctly. This overhead, plus contention for shared resources, lowers the expected gain from additional processors)

    6

  • Symmetric Multiprocessing(SMP) : 제일 흔한 형태의 멀티 프로세서 형태로, 프로세서들이 각각의 CPU를 가지고 있으며, CPU는 다시 각각의 레지스터와 캐시를 가지고 있음

    • 또한 시스템 버스 구조를 따라 프로세서들은 메인 메모리를 공유함
    • 이러한 모델은 여러 프로세스를 안정적으로 병렬로 처리 가능하게 함을 의미하지만 CPU가 각각 독립적인 프로세스에 위치하기 때문에 하나가 유휴상태이면서 다른 하나는 과부하된 상태가 발생할 수 있음
    • 프로세서들이 특정 자료 구조를 공유하도록 함으로써 프로세스와 자원들이 여러 프로세스들에 의해 공유됨으로써 특정 프로세서에의 과부하를 방지하도록 하는 것

7

  • 한편, 멀티 코어(Multicore) 개념으로도 멀티 프로세서 시스템을 확장시켜 이해할 수 있는데, 이는 하나의 칩(프로세서)에 여러 개의 코어가 존재하는 것을 의미함

    • 이러한 멀티 코어 시스템은 여러 프로세서를 가지고 있는 것보다 더욱 효율적인데, 여러 프로세서들 간의 커뮤니케이션 비용이 발생하지 않을 뿐더러 더 적은 에너지를 소비하기 때문

      (Multicore systems can be more efficient than multiple chips with single cores because on-chip communication is faster than between-chip communication.)

    • 위의 그림은 듀얼 코어 시스템 구조를 나타낸 것으로, 하나의 프로세서에 2개의 CPU가 존재하며 각각의 CPU가 다시 레지스터와 캐시(Level 1)를 가지고 있는 형태임

    • 캐시의 경우 Level 1 캐시가 독립적인 CPU가 가지고 있게 되며, Level 2 캐시를 CPU들이 공유하게 되며, 더 작은 규모의 Level 1 캐시가 더욱 빠른 처리 속도롤 보임

8

  • 하지만 이러한 멀티 코어도, CPU를 늘리는 것만이 능사는 아님

    • 너무 많은 CPU를 보유하게 되면 시스템 버스에 가해지는 부하도 그만큼 커지기 때문에 나중에 성능 저하나 병목 현상을 유발할 수 있음
  • 이럴 경우에는 각각의 CPU(혹은 일련의 CPU 집단)에 개별 로컬 메모리를 부여하여 작고 빠른 로컬 버스 구조를 통해 접근할 수 있는 방식을 적용할 수 있음

    (An alternative approach is instead to provide each CPU with its own local memory that is accessed via a small, fast local bus.)

  • 또한 CPU들은 Shared system interconnect 에 의해 서로 연결되어 하나의 물리적인 공간을 공유하게 되는데, 이를 Non-Uniform Memory access(NUMA) 라고 부름

    • 위의 그림을 보면 각각의 CPU들이 각자의 메모리를 가지고 있으면서 서로 연결되어 있는 것을 확인할 수 있음
    • 로컬 메모리 접근에 따른 속도 향상 뿐만 아니라 전체 시스템 버스와 달리 이러한 CPU 간의 국지적인 연결에는 큰 부하가 없기 때문에 프로세서의 확장에 있어 더욱 유연하다 할 수 있음
    • 하지만 이러한 NUMA의 장점에도 불구하고 CPU가 늘어날 때마다 CPU 간의 상호 연결을 따라 메모리에 접근(Remote Memory Acess)할 경우 발생하는 지연 시간이 그만큼 늘어난다는 잠재적인 결함이 있음
    • 따라서 운영체제는 이를 방지하기 위해 CPU Scheduling과 Memory Management에 더욱 신중을 기해야 할 것
  • 마지막으로 Blade Servers 라 불리는, 멀티 프로세서 보드와 입출력 보드, 네트워킹 보드 등을 한 데 모아놓은 시스템 구조가 있음

    • 이것이 멀티프로세서 구조와 다른 점은, 각각의 블레이드 프로세서가 독립적으로 돌아가면서 고유의 운영체제를 가지고 있다는 점임
    • 하지만 본질적으로 이러한 서버 역시 여러 개의 독립적인 멀티 프로세서 시스템을 합쳐놓은 것으로 이해함으로써 어떤 의미에서는 멀티 프로세서가 좀 더 확장된 개념으로도 볼 수 있음

3-3. Clustered System

9

  • 여러개의 CPU가 모여있는 멀티프로세서 시스템이지만, 2개 이상의 독립적인 시스템(혹은 노드)가 모여있는 구조라는 차이가 있음

    • 개별 시스템이 멀티코어 시스템이 되는 것
  • Clustered Computer 들은 LAN(Local Area Network)을 통해 서로 연결되어 있으며 저장소를 공유하고 있음

  • 이런 식의 군집화는 결국 더욱 높은 수준의 서비스를 제공하기 위한 것인데, 군집 내의 한두개의 시스템에 오류가 발생하더라도 나머지 시스템이 제대로 돌아가면 서비스가 제대로 제공될 수 있다는 것을 의미함

  • Asymmetric Clustering : 다른 기기가 어플리케이션을 실행시킬 동안, 어느 한 기기는 hot-standby mode 상태로 있는 비대칭 클러스터링 방식을 의미

    • hot-standby mode 상태의 기기는 active 상태의 서버를 모니터링하는 역할을 수행함
    • 만일 실행중인 서버에 오류가 발생하게 되면, 모니터링 하던 서버가 active 상태로 전환되는 것
  • Symmetric Clustering : 비대칭적 방식과 달리, 2개 이상의 호스트가 어플리케이션을 실행시키면서 서로를 모니터링하는 방식임

    • 모든 사용가능한 하드웨어를 사용한다는 점에서 더욱 효율적이지만 동시에 적어도 하나 이상의 어플리케이션이 실행 가능해야 한다는 조건을 충족해야 함
  • 한편, 클러스터링은 모든 컴퓨터가 어플리케이션을 동시에 실행할 수 있도록 병렬처리를 가능하게 하기 때문에 높은 성능의 컴퓨팅을 가능하게 함

    (… they can run an application concurrently on all computers in the cluster.)

    • 이 경우 병렬 처리되는 어플리케이션은 군집화의 장점을 살릴 수 있도록 설계되야 하는데, 이를 위해 사용되는 기술중 하나가 평행화(Parallelization) 임.
    • 이는 프로그램을 여러 요소로 나눈 후, 각 요소가 군집에 속하는 개별 코어들에 의해 병렬적으로 처리되도록 하는 방식을 말함
    • 일반적인 병렬 프로그래밍을 떠올리면 되듯, 개별 코어들에 의해 수행된 결과가 최종적으로 모여 최종 솔루션이 되는 것
  • d여기서 더 나아가 여러 군집을 다시 군집화(forms of clusters include paralell clusters) 클러스터링을 LAN이 아닌 WAN(Wide Area Network) 범위에서 이루어지도록 하는 방식도 생각해볼 수 있음

    • 평행적으로 존재하게 될 군집들(Paralell Clusters)은 여러 호스트로 하여금 공유되는 저장소나 데이터 영역에 접근할 수 있도록 함
    • 하지만 대부분의 운영체제들은 여러 호스트들에 의한 동시적인 데이터 접근을 100% 처리하기에는 성능상의 한계가 있기 때문에, 이러한 방식은 보통 특수한 소프트웨어를 부가적으로 요구하는 경우가 많음
    • 대표적인 것이 Oracle Real Application Cluster

4. Operating-System Operations

  • 운영체제의 정의와 기능을 아래와 같이 전제하도록 함
An operating system provides the environment within which programs are executed.

4-1. Multiprogramming and Multitasking

  • 운영체제의 중요한 기능 중 하나로 멀티 프로그래밍을 들 수 있음

  • 멀티프로그래밍을 통해 CPU의 가용성을 높일 수 있으며, 여기서 실행중인 프로그램을 프로세스(process) 라고 부름

  • 운영체제는 여러 프로세스를 동시에 메모리에 적재하며, 이들 중 어떤 것을 골라 실행시킬 지를 결정함

    • 이는 결과적으로 어떤 프로세스가 실행되는 동안, 다른 프로세스는 대기중인 상태로 있어야 함을 의미

      (Eventually, the process mya have to wait for some task, such as an I/O operation, to complete.)

  • 멀티태스킹(Multitasking) : 멀티 프로그래밍을 논리적으로 확장시킨 개념으로, 멀티태스킹 환경에서 CPU는 여러 개의 프로세스를 서로 바꿔가면서 동시에 실행시킴

  • 여기서 어떤 프로세스를 현재 시점에서 선택해서 실행시키고, 다음에 또 어떤 프로세스를 선택할 지를 선택하는 과정을 CPU 스케쥴링 이라고 함

    • CPU 스케쥴링이 필요한 상황은 곧, 메모리에 여러 프로세스들이 적재된 상황이기 때문에 이에 맞는 메모리 관리가 필요함을 의미

    • 하지만, 한정된 메모리 용량이 주어진 환경에서 효율적인 응답 시간을 계속 담보해야 하는 문제가 발생

    • 이 경우 흔히 쓰이는 것이 가상 메모리(Virtual Memory) 로, 한정된 물리적 메모리 용량을 넘어서는 규모의 프로그램을 실행시킬 수 있도록 하는 이점이 있음

    • 또한, 가상메모리의 사용은 메인 메모리 구조를 하나의 큰 저장소 배열 형태로 추상화함으로써, 물리적인 메모리와 논리적인 메모리가 사용자 관점에서 서로 분리되도록 함

      Further, it abstracts main memory into a large, uniform array of storage, separating logical memory as viewed by the user from physical memory. This arrangement frees programmers from concern over memory-storage limitations


4-2. Dual-Mode and Multimode Operation

스크린샷 2021-10-11 오후 3 50 13

  • 운영체제의 실행 모드를 크게 커널 모드(Kernel Mode) 와, 사용자 모드(User Mode) 로 나눠볼 수 있음
    • 용어 그대로 하드웨어를 제어하는 운영체제 자체의 실행을 위한 것이 커널 모드이며, 이를 제외하고 단순히 사용자 어플리케이션의 실행을 위한 것은 사용자 모드임
    • 실행 모드의 구분은 하드웨어에 mode bit 이라고 부르는, 비트신호를 추가함으로써 구분하며 0이 커널 모드이고 1이 사용자 모드가 됨
  • 만일 사용자 어플리케이션을 실행시키는 상황이면, 사용자 모드에 진입하게 되며 실행이 종료되고 나면 인터럽트나 시스템 호출 등을 통해 제어권을 운영체제로 넘겨 커널 모드로 전환시키는 것
  • 이런 식으로 굳이 모드를 구분하는 것은 I/O 장치 관리, 인터럽트 혹은 타이머의 관리 등과 같이 컴퓨터에 직접적인 위협을 가할 수 있는 민감한 제어명령을, 일반 사용자가 마음대로 접근하지 못하게 하고자 하기 위함
  • 만일 가상화를 지원하는 CPU라면, 커널 모드와 사용자 모드 외에 Virtual Machine Manager(VMM) 을 제어할 수 있는 별도의 모드를 제공함
    • 이는 사용자모드 이상, 커널모드 이하의 권한을 가지면서 가상화 관련 기기를 제어하는 모드임

4-3. Timer

  • 운영체제가 CPU에 대한 제어를 안정적으로 유지시키는 것은 당연하지만 매우 중요함
  • 만일 사용자 프로그램이 알 수 없는 오류에 빠졌을 때, 사용자 모드에서 커널 모드로 전환되지 못해서 운영체제가 이를 제어하지 못한다면 큰 문제가 되기 때문
  • 이를 위해 사용하는 것이 타이머로, 일정 시간을 정해놓고 시간이 지나면 인터럽트 신호를 날리는 원리임
    • 사용자 모드로 전환되기 전에 운영체제는 일정 시간을 정해놓고 타이머를 세팅함
    • 이후 시간이 지나 인터럽트가 발생하게 되면 제어권이 자동으로 운영체제로 넘어오게 되는 것

5. Resource Management

5-1. Process Management

5-2. Memory Management

5-3. File-System Management

5-4. Mass-Storage Management

5-5. Cache Management

5-6. I/O System Management


Reference