OS) Chapter1. Introduction

운영체제 (Operating Systems)

Chapter 1. 운영체제란 무엇인가?

컴퓨터 하드웨어와 컴퓨터 유저간에 중간체로써 작용하는 프로그램. 즉 컴퓨터 유저의 명령을 변환하여 하드웨어에 적용하거나 자원을 관리하는 등의 역할을 한다.
-       이는 유저 프로그램을 실행하고, 유저 문제를 보다 쉽게 해결하게 해준다.
-       컴퓨터 시스템을 편리하게 사용할 수 있게 해준다.
-       효과적인 방법을 통해 컴퓨터 하드웨어를 사용한다.

컴퓨터 시스템은 총 4가지의 component로 구성되어 있다.
1. 하드웨어 – computing resource를 제공한다. (CPU memory, I/O devices)
2. Operating System – 다양한 applicationuser 사이에서 하드웨어의 사용을 용이하게 해주고 제어한다.
3. Application program – 유저의 computing 문제를 해결하기 위해 시스템의 자원을 어떻게 사용할 것인지에 대해 방법을 정의한다.
(ex) Word processors, compliers, web browsers, database systems, …
4. Users – People, Machines, …




그렇다면 운영체제는 정확히 어떠한 역할을 하는가?
-       OSResource Allocator이다.
모든 컴퓨터 자원을 관리하고, conflicting request에서 효과적이고 공정한 자원 사용을 결정하게 한다. (유저가 컴퓨터 resource utilization에 대하여 걱정할 필요가 없다.)
-       OS는 제어 프로그램이다.
Computer의 잘못된 사용과 에러를 방지하기 위해 프로그램의 실행을 제어한다.
-       유저가 컴퓨터의 프로그램을 쉽고 효율적으로 실행할 수 있는 환경을 제공한다.
(운영체제 중 kernel이라는 것이 실질적으로 운영체제의 핵심이라고 볼 수 있다. Kernel은 사용자가 볼 수 없을 정도로 가장 낮은 단계면서 항시 running되는 프로그램을 말한다. Kernel은 컴퓨터의 자원을 관리하고, computer를 제어하는 프로그램이다.)

Computer System 측면에서의 Operating System?
하나 이상의 CPU, device controller들이 공유된 메모리로 접근하기 위해 공통된 bus를 통해 연결 된다. 이때, memory cycle을 위해 CPUdevice들이 경쟁하며 동시에 실행을 하게 된다.
-       I/O deviceCPU는 항상 동시에 실행될 수 있다.
-       각각의 device controllerlocal buffer를 가지고 있다.
-       Process에서 어떠한 연산이 I/O device로 전해져야 할 때, CPUmain memory로부터, local bufferdata를 보내는 역할을 한다. (물론 그 반대도 함.)
-       I/Odevice로부터 controllerlocal buffer로 보내는 역할을 한다.
-       Device controllerinterrupt가 발생했을 경우 그 operation을 끝내라고 CPU에게 알린다.
-       (InterruptCPU가 프로그램을 실행하고 있을 때, I/O device에서 혹은 예외상황이 발생하여 처리가 필요할 경우, CPU에게 알려 처리할 수 있도록 함. Polling은 대상을 주기적으로 감시하여 상황이 발생하면, 해당처리 루틴을 실행해 처리한다면, interruptCPU에게 해달라는 요청하는 수단이다.)
-       (CPU 주기적으로 장치들에게 " 할말 있냐? 원하는 것은?"등을 물어볼 있을 것이고, 주변장치가 "대빵아~ 이것 해주라..." 하고 먼저 요청할 있는 메카니즘을 생각해 있습니다.
전자를 폴링이라고 하고, 후자를 인터럽트라고 합니다.
폴링은 IO 아주 빈번한 또는 항상 특정 장치의 상태를 감지해야 하는 경우에 적절하고, 인터럽트는 비교적 빈번하지 않은 IO 수행하는 장치에 적합했습니다. 특히나, CPU 대한 연산 제어 대비하여 IO장치에 대한 응답속도는 매우 느려서, 가급적 CPU IO장치에 폴링하는 것을 배제하는 것이 CPU 효율을 높이는 것이었기도 합니다.)



CPU에서 Interrupt를 감지할 경우?

마이크로프로세서는 Interrupt를 감지하면, 실행중인 Machine code를 중단하고, 해당 인터럽트를 위한 처리 프로그램으로 점프하여 해당 일을 수행한다. 이 때, 인터럽트 처리를 위한 루틴을 인터럽트 서비스 루틴(ISR, Interrupt Service Routine)이라고 한다. 이 루틴은 일반적으로 interrupt vector에 의해 결정된다. 이는 service routine의 주소를 포함하는 vector를 말한다. 인터럽트는 주로 하드웨어적으로 CPU core에 입력되어, 현재 진행중인 기계어 코드가 종료되면 실행한다.



OSregister를 저장하고, PC를 저장하는 것을 통해서 CPU의 상태를 유지한다.

I/O가 시작한 후에는 I/O completion에 따라 user program으로 return한다.
-       Wait instruction은 다음 interrupt때까지 idle시킨다.
-       최대 하나의 I/O request만 동시간에 outstanding된다.

또는 I/O가 시작한 후에 I/O completionwaiting없이 controluser program으로 return한다.
-       System call: OS에게 userI/O completion을 위해 기다리는 것을 허락하는 것을 요청함.


How a Modern Computer Works – A von Neumann architecture



폰 노이만 구조는 데이터 메모리와 프로그램 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있는 구조. -> 현재와 같은 CPU, memory, 프로그램 구조를 갖는 범용 컴퓨터 구조의 확립.

대부분의 시스템은 single general-purpose processor를 사용한다.
그러나 Multiprocessor system이 사용과 중요도에 있어 점점 더 커지고 있다. 이는 알다시피, parallel systems, tightly-coupled systems이다.
Multiprocessor systems의 장점은
-       Increased throughput
-       Economy of Scale
-       Increased reliability – graceful degradation or fault tolerance



Multi-  ?

1. Multi-programming
초기 컴퓨터 시스템은 하나의 프로그램을 처리한 후에 다음 프로그램을 처리해야 했다. 하지만 프로세서의 처리속도와 입출력 속도간의 차이가 크기 때문에 입출력 작업 완료될 때까지 프로세서는 대기해야 한다. 이는 프로세서의 자원을 낭비하는 결과를 가져온다.
따라서, 프로세서가 입출력 작업의 응답을 대기할 동안 다른 프로그램(프로세스)를 수행시킬 수 있도록 하는 것이 멀티 프로그래밍이라고 한다.

2. Multi-processing
하나의 프로세서가 아닌 하나 이상의 프로세서가 서로 협력하여 병렬적으로 일을 처리해야 하는 것을 가르킨다.

3. Multi-tasking
정해진 시간 동안 교대로 Task를 수행하는 것이다. (인터넷을 하면서 음악을 들을 수 있는 것)

4. Multi-threading
Thread는 프로세스내에서 생성되는 하나의 실행 주체이다. 생성된 여러 스레드는 하나의 공유메모리를 가진다. 멀티태스킹은 자원이 공유되지 못하기 때문에 IPC를 구현해야하며, 이는 멀티스레딩에 비해 OS에 부담을 줄 수 있다. 하지만 서로 간의 독립된 메모리를 가지고 있기 때문에 독립된 수행이 가능하므로 그 용도를 다르게 사용할 수 있다.


Operating-Systems Operations

1. Interrupt driven (hardware and software)
 - 디바이스에 의한 hardware interrupt (ex) I/O device
 - software interrupt (exception or trap) :
           - software error (like division by zero)
           - OS 서비스 요청
           - 무한 루프, OS 또는 서로를 수정하는 processes 같은 문제를 포함한 process problem

2. Dual mode : OS 자신을 보호하고 시스템 구성 요소들을 보호하도록 함.
 - User modekernel mode
 - Mode bit provided by hardware
           - system이 현재 user mode인지 kernel mode인지 구별하는 능력
           - 오직 kernel mode에서 실행 가능한 instruction 권리를 넘겨줌
           - system call을 통해 modekernel로 전환하고 call reset으로부터 user로 값을 반환함
 - multi-mode operation에 대한 support

Transition from User to Kernel Mode
-       Infinite loop을 예방하기 위한 Timer / 자원을 먹는 process
Timer는 일정 시간 구간을 지난 후에 computer에서 interrupt하도록 설정되어 있다.
물리적인 clock에 의해 counterdecrement되도록 설정되어 있다.
OS가 그 counter를 설정한다.
Counter0이 되었을 때 interrupt를 시행한다.
할당 받은 시간을 초과한 프로그램을 종료하거나 제어 권한을 얻기 위해 scheduling process전에 set up한다.
                                   

                                         
Process Management
-       Process? Process란 실행 중인 program을 뜻한다. 이는 시스템에서 일을 하는 한 단위이며, 컴퓨터 시스템에 올려져 있는 상태를 말한다. Programpassive entity이며, processactive entity이다.
-       Process는 자신이 맡은 task를 이루기 위해 CPU, memory, I/O, files와 같은 resources들을 요구한다.
-       Single-threaded process는 보통 다음 instruction을 실행하는 장소인 Program Counter를 하나 가진다.
-       Multi-threaded processthread마다 program counter를 하나 갖는다.
-       OS
n  Usersystemprocess를 만들고 삭제한다
n  Process synchronizationcommunication, deadlock handling을 위한 mechanism을 제공한다

Memory Management
-       Memory상에 들어가야만 하는 instruction의 전부, 혹은 그 일부분을 실행시킨다.
-       프로그램에 의해 필요한 모든, 혹은 일부분의 데이터는 메모리 상에 들어가야만 한다.
-       Memory management는 메모리에 무엇이 들어가야 하는지, 언제 들어가야 하는지 결정한다. (CPU Utilization, user에 대한 computer response를 최적화)


댓글

가장 많이 본 글