Operating System(운영 체제)은 Window, MacOS, Andriod, Linux 등과 같이 주변에서 흔히 접할 수 있다.
이러한 Operating System이란 무엇인지, 역할은 무엇인지 알아보자.
Whats Operating System Do
Computer System은 H/W, S/W(Operating System, Application), Users로 구성된다.
운영체제는 Application과 H/W 사이의 중계자 역할을 담당하며,
컴퓨터 H/W resources를 관리하여 Application들이 수행할 수 있는 환경을 제공한다.
운영체제의 역할을 사용자(user) 관점, 시스템 관점에서 살펴볼 수 있다.
User View
우리는 흔히, 키보드와 마우스를 이용하여 컴퓨터를 사용하지만, 컴퓨터의 resource에 대해서는 신경 쓰지 않는다.
이렇듯 운영체제는 컴퓨터를 쉽게 사용할 수 있도록 도와준다.
System View
시스템에게 운영체제란 resource allocator(자원 할당자)이다.
운영체제는 CPU, memory, I/O 장치, 파일 저장 공간 등 여러 자원들을 할당하며,
이들을 관리하는 제어 프로그램(control program)으로 동작한다.
Definition of Operating System
운영체제의 완벽한 정의는 없다.
컴퓨터는 사용자의 문제 해결을 돕기 위해 만들어 졌지만,
H/W만으로는 충분하지 않아 Application이 개발이 되었다.
하지만, Application들간의 자원관리가 필요한데 이를 운명체제가 담당한다.
일반적으로, 운영체제는 항상 돌아가는 프로그램으로 "kernel"이라 부른다.
Computer-System Organization
computer system은 여러개의 CPU와 I/O device를 관리하는 Device controller로 구성되어 있다.
이들은 common bus를 통해 memory를 공유한다.
Device controller는 특정 device를 담당하며, local buffer가 존재한다.
Interrupt
I/O Device와 CPU는 operation들을 독립적으로 수행할 수 있기에,
Device controller는 이벤트의 발생을 "Interrupt"를 통해 CPU에 알려야 한다.
CPU가 I/O Device에 request를 요청하면, I/O Device는 수행가능한 상태가 되면 이를 수행한다.
I/O Device에서 수행을 완료하면, CPU로 interrupt 신호를 보내어 끝났음을 알린다.
해당 신호를 받은 CPU는 하던 일을 중단하고,
interrupt신호에 의한 instruction들을 수행하고 기존의 작업을 재게 한다.
interrupt신호를 처리하는 instruction들을 "interrupt service routine(ISR)"이라 부르는데
이들의 시작 주소는 interrupt vector table에 저장되어 있다.
따라서, intterupt가 발생하면 CPU는 수행하고 있던 작업을 멈추고
interrupt vector table로 이동하여, ISR의 시작위치를 가져온다.
CPU는 ISR을 수행을 마치고 돌아와서 기존에 수행하던 작업을 재게 하게 된다.
Storage Structure
Main Memory는 CPU가 직접 접근할 수 있는 메모리이기에,
프로그램이 실행되기 위해서는 Main Memory에 있어야 한다.
하지만, Main Memory는 DRAM(Dynamic Random Access Memory)을 사용하는데,
용량이 적고 휘발성이다.
따라서, Secondary Memory를 사용하며,
이는 Main Memory보다 용량이 크며, 휘발성이 아니다.
Caching
아래의 그림과 같이 메모리는 계층 구조를 갖는다.
위로 갈수록 비싸지지만, 데이터에 대한 접근 속도가 빨라진다.
캐시 메모리는 Main Memory와 Register사이에 존재하는 메모리로,
데이터를 더 빠르게 접근할 수 있게 해 준다.
CPU는 Cache에 데이터가 있는 경우, "cache hit" 이라 하며,
없는 경우 "cache miss"라 한다.
cache miss의 경우, Locality라는 개념을 사용하여 Main Memory로부터 데이터를 가져온다.
Locality는 크게 2가지로 나뉜다.
- Spatial Locality : 배열과 같이 최근에 접근한 데이터와 가까운 메모리 주소의 데이터도 함께 가져온다.
- Temporal Locality : 반목문과 같이 최근에 접근한 데이터를 캐시에 저장한다.
데이터 A의 복사본이 여러 개의 Cache에 존재하는 경우,
한 CPU에서 A의 값이 변경된 경우, 모든 Cache에 이를 반영해야 한다.
이를 Cache Coherency라 한다.
Operating System Structure
Multi-Programming
보통 프로그램은 I/O 작업과 CPU에서의 작업으로 나뉘어 진다.
Multi-Programming이란,
보통 Main memory에 여러 program들이 로드하여,
한 process가 I/O Request와 같이 CPU를 사용하지 않는 동안
다른 프로세스의 작업을 CPU에서 수행하는 것을 의미한다.
이를 통해, CPU Utilization(사용 효율)을 높일 수 있다.
Timesharing
Multi-Tasking이라고도 불리는 Timsharing은
Multi-Programming의 확장된 개념이다.
Multi-Programming은
Process가 I/O작업과 같이 CPU를 사용할 필요가 없을 때,
다른 Process를 Memory로부터 Load하여 수행한다.
반면, Time-Sharing은
Process마다 짧은 시간을 할당하여,
Process가 CPU를 사용하고 있던 I/O 작업을 수행하고 있던 주어진 시간이 끝나면,
CPU 제어권을 다른 Process로 넘겨준다.
CPU가 프로그램을 빠르게 번갈아가며 작업하는데,
사용자 입장에선 동시에 작동하는 것처럼 보인다.
Operating System Operations
운영 체게는 Interrupt와 같은 이벤트를 기다린다.
H/W적으로 발생하는 Event를 interrupt라고 부르며,
S/W적으로 발생하는 Event는 Trap(exceptions)라고 부른다.
Dual Mode
운영체제는 사용자 프로그램이 시스템에 접근할 수 없도록 모드를 User mode, Kernel mode로 나눈다.
H/W의 Mode bit가 1인 경우 User mode,
0인 경우 Kernerl Model를 의미한다.
Previleged Instruction은 Kernel mode에서만 수행된다.
만약 User mode에서 Kernel mode를 수행하고 싶으면, System call을 사용한다.
이러한 User mode, Kernel mode를 통해
잘못된 사용으로부터, 운영체제와 사용자를 보호할 수 있다.
Process Management
Program이란 Passive(수동적) 존재로,
디스크에 존재하는 실행 가능한 파일이다.
(pdf, data file과 같이 실행 불가능한 것은 program이 아니다.)
반면, Process는 Active(능동적) 존재로,
디스크에 존재하는 Program이 Main memory로 load 되어 실행 중인 것을 의미한다.
이러한 Process는 System에서 작업의 단위이다.
Process를 수행하기 위해선 여러 Resource(CPU, Memory, I/O. device ..)가 필요한데,
OS는 이를 관리한다.
- CPU의 process 스케쥴링
- Process 생성 및 제거
- Process Synchronization Mechanisms
- Deadlock handling
- Process Communication Mechanisms
Memory Management
운영체제는 메모리 관리를 담당한다.
- 메모리의 어느 파트가 사용 중이며, 어떤 process에 의해 사용되는지 tracking 한다.
- 어떤 process와 데이터가 memory에 load 되어야 할지 혹은 제거할지 결정한다.
- 필요에 따라, 메모리의 공간을 Allocating 혹은 DeAllocating 해야 한다.
Storage Management
"File"은 관련된 data들의 집합의 논리적 저장 단위이며,
OS는 File System으로 파일을 관리한다.
- File과 directory는 생성 및 삭제
- File과 diectory를 조작하기 위한 primitive 제공
- File을 secondary memory로 매핑
Mass-Storage Management
Secondary Memory 중
데이터 저장을 위해 보통 Disk가 사용된다.
운영체제는 Disk 관리를 위해 특정 기능을 담당한다.
- Free-Space (자유 공간) 관리
- 저장 공간 할당
- Disk Scheduling
Reference
https://parksb.github.io/article/5.html#process-management
Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 9th』
https://younggyun.tistory.com/42
'CS > Operating System' 카테고리의 다른 글
[OS] Synchronization (0) | 2023.04.06 |
---|---|
[OS] CPU Scheduling (0) | 2023.04.05 |
[OS] Threads (0) | 2023.04.02 |
[OS] Processes (1) | 2023.03.29 |
[OS] Operating System Structures (1) | 2023.03.20 |