코학다식

[OS] 운영체제의 구조와 운영체제 보호를 위한 작업들 본문

Fundamentals/OS

[OS] 운영체제의 구조와 운영체제 보호를 위한 작업들

copeng 2019. 9. 10. 19:24

Operating System

chapter 1-2 (2)

 

 

 

스토리지 계층


 

  • 스토리지 시스템은 계층적으로 정리되어 있다. (속도, 비용, 휘발성 등으로 구분될 수 있음)

https://429151971640327878.weebly.com/blog/12-computer-system-organization

 

 

Caching


 

  • 메인 메모리에 접근하는 데에는 시간이 소요되기 때문에, 최근 접근한 데이터를 가지고 있는 빠른 속도의 메모리를 CPU와 메인 메모리 사이에 둔다. 이것이 캐시(Cache)이다.

  • 주로 S램을 사용한다.

  • 스토리지 계층에 의해 같은 데이터가 여러 곳에 존재하는 등의 Consistency 문제가 발생할 수 있다. 특히 여러 사용자가 사용할 경우 이는 더 문제가 될 수 있다.

  • 이러한 문제를 예방하기 위해 Cache management policy를 필요로 한다.

 

 

디스크에서 레지스터로의 이동


 

  • 멀티태스킹(Multitasking) 환경은 가장 최신의 값이 스토리지 계층에 저장되어 있더라도 사용하는 데에 주의가 필요하다.

  • 멀티프로세서(Multiprocessor) 환경은 모든 CPU가 그들의 캐시에 가장 최근의 값을 가지고 있도록 하드웨어에서의 캐시 일관성을 제공해야 한다.

  • 분산 환경에서는 이러한 문제가 더 복잡해질 수 있다.

 

 

DMA(Direct Memory Access) 구조


 

이전 글에서 (I/O) device controller는 CPU에게 interrupt를 보낸다고 했는데, 만약 이 device의 처리 속도가 무척 빠르다면 어떤 일이 발생할까? 끊임없이 CPU에게 interrupt를 보내면서 CPU가 다른 일을 할 수 없도록 만들 것이다. 이런 문제를 DMA 구조가 해결할 수 있다.

 

  • DMA 구조는 메모리 스피드에 가깝게 정보를 전송하는 빠른 속도의 I/O device들을 위해 사용된다.
  • Device controller는 버퍼 스토리지에서 CPU의 중재 없이 데이터 블록을 바로 메인 메모리에 전송한다.
  • Byte마다 interrupt가 발생되는 게 아니라, 한 블록마다 interrupt가 발생된다.

 

https://429151971640327878.weebly.com/blog/12-computer-system-organization

 

 

운영체제의 구조 (1)


 

 과거의 운영체제는 한 사용자가 한 프로그램을 끝낸 후 다른 프로그램을 운영체제에 올린 뒤 명령을 수행하는 구조였는데, 이러한 구조는 비효율적이었다. 그래서 현재 대부분의 운영체제들은 효율성을 위해 멀티프로그래밍(Multiprogramming)이 가능한 구조로 되어 있다. 이 구조는 운영체제에 여러 개의 프로그램을 올려 두고 작업을 한다.

 

  • 하나의 사용자로는 CPU와 I/O device들을 바쁘게 동작하도록 할 수 없다.

  • 멀티프로그래밍은 작업들(코드와 데이터들)을 정리해서 CUP가 언제나 실행할 한 작업을 가지고 있도록 한다.

  • 시스템에 있는 모든 작업의 부분 집합은 메모리에 존재한다.

  • job scheduling을 통해 하나의 작업이 선택되고 실행된다.

  • 그 작업이 대기 중이어야 할 때 (가령, I/O) 운영체제는 다른 작업으로 바꾼다.

 

 

 

운영체제의 구조 (2)


 

  • Timesharing(multitasking)은 사용자가 각각의 작업들이 수행되는 동안에 interact할 수 있도록 CPU가 자주 작업을 바꾸는 논리적 확장이다. 이로 인해 interactive computing이 가능해진다.

    • 각각의 사용자는 메모리에서 실행되는 적어도 하나의 프로그램을 가진다. → Process

    • 만약 여러 작업이 수행될 준비가 동시에 된 경우 → CPU scheduling

    • 만약 프로세스들이 메모리에 맞지 않으면, swapping이 그들을 이동시키며 동작한다.

      Swapping이란 메인 메모리와 디스크 사이에서 프로그램이 이동하는 걸 말한다.

  • Virtual memory는 완전히 메모리에 있지는 않은 프로세스들의 실행을 가능하게 한다.

    Virtual memory의 컨셉은 디스크를 메모리로 보는 것이다. 모든 프로그램이 메모리 상에 있어야 할 이유는 없다.

 

 

운영체제 보호 작업


 

 

  1. 이중 모드 작업
  • 이중 모드(Dual-mode) 작업은 다른 시스템 구성요소와 운영체제를 분리하여 운영체제를 보호하게 한다.

    • 사용자 모드(User mode)커널 모드(kernel mode)가 있다.

      커널 모드는 supervisor mode, system mode, privileged mode라고도 불린다.

    • mode bit는 시스템이 사용자 모드 또는 커널 모드로 작동될 때 둘을 구별할 수 있게 한다.
    • 어떤 명령어들은 privileged로 지정되어, 오직 커널 모드에서만 실행 가능하다.
    • 가령, 시스템 콜(system call)은 모드를 커널로 바꾸고, 리턴하면서 사용자 모드로 전환된다.

      하드웨어에 의해 Mode bit가 제공된다.

https://www.geeksforgeeks.org/dual-mode-operations-os/

 

 

  1. I/O 보호

 

  • 모든 I/O 명령은 privileged 명령이다.
  • 명령이 수행되면서, interrupt가 발생하고 interrupt에 의해 interrupt vector table에 접근할 때, 사용자 프로그램이 vector의 해당 주소를 사용자 프로그램으로 변경하여 컴퓨터의 컨트롤을 얻을 위험이 있다.
  • 따라서 사용자 프로그램이 컴퓨터의 컨트롤을 절대 얻을 수 없도록 해야 한다.

 

 

  1. 메모리 보호

 

  • 적어도 interrupt vector나 interrupt service routine에 메모리 보호가 제공되어야 한다.
  • 이는 다른 프로그램의 영역에 접근하지 못하게 하는 것이다. (메모리가 보호되지 못했을 때 일어나는 대표적인 현상이 segmentation fault이다.)
  • 메모리 보호를 위해, 프로그램이 접근할 수 있는 주소의 범위를 결정하는 두 레지스터를 추가한다.
    • Base register - 접근 가능한 가장 작은 물리적 메모리 주소를 가진다.
    • Limit register - 범위의 크기를 저장한다.
  • 정해진 범위 너머의 메모리는 보호된다.

https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/8_MainMemory.html
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/8_MainMemory.html

 

 

  1. Timer

 

  • 멀티태스킹(timesharing) 관리를 위함

  • 타이머는 운영체제가 컨트롤을 유지하고 있음을 보장하기 위해 정해진 시간이 지나면 interrupt를 건다.

    • 매 clock tick마다 타이머는 줄어든다.
    • 타이머가 0이 되면, interrupt가 발생한다.
    • 타이머와 관련된 table에 도달하면 프로그램 컨트롤을 가져올 수 있다.
  • 타이머는 현재 시각을 계산하기 위해 사용되기도 한다.

  • load-timer는 privileged 명령이다.

    c.f) watchdog timer for reliability; 무한 루프 등의 에러를 방지하기 위해 주기적으로 interrupt를 발생시켜 문제가 감지되면 reset을 실행한다.

 

'Fundamentals > OS' 카테고리의 다른 글

[OS] 프로세스 생성과 종료  (0) 2019.09.26
[OS] 프로세스와 프로세스 스케줄링  (0) 2019.09.24
[OS] Boot, 운영체제의 구조, VM  (0) 2019.09.19
[OS] System Call  (0) 2019.09.17
[OS] 운영체제의 정의와 Interrupt  (0) 2019.09.08
Comments