본 게시글은 PC버전에 최적화 되어 있습니다.
Operating Systems, Internals and Design Principles (9th Ed.), William Stallings, Pearson, 2017
충남대학교 컴퓨터공학과 최훈 교수님의 '운영체제 및 실습'을 참고하였습니다.
1. Operating System
운영체제는 프로그램의 실행을 컨트롤(?) 하는 소프트웨어이다.
독립적인 실행이 불가능하므로 프로그램이라고 부르지 않고 소프트웨어라 부른다.
프로그램은 독립실행이 가능해야한다.
따라서 OS는 프로그램이 아니라 소프트웨어로 보는 게 맞고, 라이브러리 개념으로 보는 게 맞다.
프로그램과 하드웨어 사이의 인터페이스 역할을 수행한다. (자원 관리)
운영체제의 목적은 효율성과 편리성이다. (하드웨어를 Efficiency하게 프로그램을 Convenience하게.)
1) 운영체제에 의해 제공되는 서비스
(서비스란 아래 계층이 위 계층에게 제공하는 기능)
1. 프로그램 실행
2. 컴퓨터 자원 접근 (데이터 뿐만 아니라 하드웨어도 포함)
3. 오류 탐지 및 응답
4. 자원 사용량 조회
2) 컴퓨터 작동 방식
부팅 -> 하드에서 데이터를 가져와 메모리에 올려놓음(복사) -> I/O -> 하드에 데이터 저장
이 과정에서 운영체제가 사용된다.
커널 = 운영체제 (라고 봐도 무방하다. 운영체제의 핵심 기능이 존재)
2. Evolution of Operating Systems
1) 초창기 운영체제 : batch system
비슷한 프로그램으로 구성되어 있음. (프로그램 묶음이라 생각하면 될 듯?)
Monitor에 의해 통제되며 한번에 하나의 batch 프로그램을 메모리에 올려서 실행하고 순차적으로 진행. (Uniprogramming)
2) Uni-Programming
한번에 하나의 프로그램만 실행 가능. 프로그램이 실행되고 I/O가 종료되면 다음 프로그램을 진행.
퍼포먼스가 매우 안좋음 -> I/O가 발생할 경우 종료될 때까지 기다려야 하는데 I/O 자체가 상당히 느림.
3) Multi-Programming
프로그램이 실행되고 I/O로 넘어가 대기 중(Block)인 경우 다른 프로그램을 실행.
멀티 프로그래밍에서는 실행 시간이 다를 수도 있음 -> 프로그램마다 실행 시간(executing time)이 다르기 때문.
(아직 타임슬라이스가 적용되지 않은 시기)
큰 메모리 공간을 요구한다. Why? 하나의 프로그램을 실행하고 있는 도중에 다른 프로그램을 추가로 실행해야 하므로.
(프로그램을 실행하려면 메인 메모리에 있어야한다. 위에 컴퓨터 작동방식 참고.)
Q. 3개 이상의 프로그램이 Mutil-Programming으로 작동할 때 우선순위는 어떻게 되지?
A. Process Scheduling에 의해 우선순위가 정해진다. (아래에서 설명)
4) Time Sharing System
일정한 시간 간격(time slice)마다 프로그램이 돌아가면서 실행.
장점? Response time을 줄여준다. Response time이란 프로그램이 실행되기까지의 시간이다.
Multi-Programming과 다르게 이전 프로그램이 종료되지 않아도 일정한 시간 간격에 따라 전환되기 때문에 프로그램이 바로 바로 실행된다.
But, 이런 이유로 프로그램이 종료되기 까지는 오랜 시간이 걸린다. -> Throughput가 낮다.
5) Multi-Programming VS Time-Sharing
Multi-Programming
1. batch system 사용.
2. background processing에 사용.
3. overhead가 낮다. Why? 처리하기까지 시간이 짧아서,
4. 즉, throughput이 좋다.
Time-Sharing
1. interactive processing 사용.
2. foreground processing에 사용.
3. overhead가 높다. Why? 처리하기까지 시간이 길어서. (종료하지 않고 넘기기 때문에)
4. 즉, throughput이 나쁘다. 하지만 response time은 좋다.
6) Process Scheduling
운영체제에 의해 수행되며 다음 실행될 프로그램(프로세스)를 정해준다.
CPU Scheduling이라고도 부르며 혹은 Job Scheduling이라고도 부름.
Waiting time과 Priority에 기반하여 작업을 수행.
(+ Waiting time이 더 길다고 무조건 우선순위가 높은 것은 아님! 뒤에서 설명하겠음.)
3. Major Components of OS
Process Management, Main Memory Management, File Management, I/O system Management,
Secondary Storage Management ... 으로 구성.
1) Command-Interpreter System
사용자 또는 프로세스가 운영체제에게 무엇을 할지 명령을 내리는 것.
사용자가 명령을 내리기 위해서는 GUI를 사용.
프로세스가 명령을 내리는 위해서는 System Call 사용.
2) System Call
프로그램(프로세스)가 운영체제에게 명령을 내리는 것.
실행 중인 프로그램(프로세스)와 운영체제와의 Interface 역할을 수행.
3) Modern Operating System
SMP : Symmetric multiprocessing
여러 개의 프로세서로 구성되며 모든 프로세서는 같은 동작(기능)을 수행한다.
4) Multi-Programming Vs Multi-Processing
위 그림을 보면 프로세스가 엇갈리게 실행되는 것을 볼 수 있는데 One Processor이기 때문이다.
Concurrent Programming이라고도 부른다.
아래 그림은 동시에 두 개의 프로세스가 같은 시간에 실행되는 것을 볼 수 있는데 프로세서가 여러 개이기에 가능하다.
Parallel Programming이라고도 부른다.
4. Operating System Architecture
monolithic과 micro, 두 가지 형태로 존재.
(2주 전에 다른 과목에서 monolithic service와 micro service에 배웠는데 비슷한 느낌이였다.)
1) Monolithic
그냥 다 가지고 있음 -> 빠름
2) Micro
내부적으로 최소한의 기능만 담고 있다. -> Process Management, Basic Memory Management
외부적으로(External Subsystem) 다른 요소들을 분리.
단점? Mode change를 통해 반복적으로 접근해야하므로 실행 시간이 길다.
'📚 CS > Operating System' 카테고리의 다른 글
[OS] 6. I/O Management andDisk Scheduling (0) | 2021.04.20 |
---|---|
[OS] 5. Concurrency : Deadlock and Starvation (0) | 2021.04.20 |
[OS] 4. Concurrency : Mutual Exlusion and Synchronization (0) | 2021.04.19 |
[OS] 3. Threads (0) | 2021.04.19 |
[OS] 2. Process Description and Control (0) | 2021.04.19 |