>- 운영체제의 주요 기능 >- 논리 주소와 물리 주소(실제 주소) 간의 관계 >- CPU 스케쥴링 <br> ## OS 개요 - OS의 정의 = **컴퓨터 리소스(메모리, 입출력 장치 등)를 관리하는 System Software** 실생활 문제를 해결하기 위한 응용 소프트웨어(Application Software)와는 구분됨 <br> - OS의 역할 - 응용 프로그램들이 생성되고 실행되기 위한 환경 제공 - 메모리 관리 (어떤 프로그램이 메모리에 적재되어 있고, 어디에 적재되어있는지 파악) - 프로세스 관리 (프로세스 진행 상황과 상태 파악, **CPU 스케쥴링**) - 하드웨어와 직접적으로 상호작용 - 사용자를 위한 인터페이스 제공 ![w80|center](operating_system_interaction.png) - OS의 목표 = 컴퓨터 리소스를 실행중인 프로그램들에 잘 분배하기 다양한 프로그램들이 ==**concurrent(병행, 동시에)**== 하게 실행되며 메인 메모리를 공유할 때 운영체제는 모든 프로그램이 CPU와 입출력장치를 이용할 수 있도록 공평하게 순서를 정해줌 <br> #### Booting(bootstrapping) 1. ROM에서 OS 실행 명령 몇줄(==**boot loader**==)을 가지고 와서 RAM에 적재 2. 이 명령을 실행해서 HDD로부터 system software 명령을 가져와 RAM에 적재 3. OS 실행, 시작 프로그램이 실행되고 유저 인터페이스가 활성화됨 > 모든 프로그램과 데이터는 실행되고, 접근될 때 메인 메모리에 저장되어 있어야 함. <br> ## **CPU 스케쥴링(CPU Scheduling)** ✨ - CPU 스케쥴링이란 메모리에 있는 프로세스 중 **어떤 프로세스를 CPU가 실행할 것인지** 결정하는 과정 - CPU 스케쥴링의 목표 - **평균 Turnaround time 최소화하기** - Turnaround time : 프로세스 완료 시간(시작 상태와 종료 상태 사이의 시간) <br> #### 예시로 보는 CPU 스케쥴링 알고리즘 ![|w70|center](CPU_scheduling_example.png) - Batch Processing - **FCFS**: First Come, First Served - n1 + (n1+n2) + (n1+n2+n3) + (n1+n2+n3+n4) + (n1+n2+n3+n4+n5) ![w80|center](CPU_scheduling_FCFS.png) - 평균 시간은 (140+215+535+815+940) / 5 = **529** - **SJN**: Shortest Job Next - 가장 서비스 타임이 적은 프로세스부터 실행 ![w80|center0](CPU_scheduling_SJN.png) - 평균 시간은 (75+200+340+620+940) / 5 = **435** - **RR**: Round Robin - time slice(time quantum)을 정해서 각 프로세스를 time slice만큼씩 실행하고 전환함 - 아래 예시에서는 time slice를 50이라고 가정 ![center](CPU_scheduling_RR.png) - 평균 시간은 (515+325+940+920+640) / 5 = **668** - **conqurrent하게 동시에 여러 개의 프로세스를 실행할 수 있어서 RR이 주로 사용됨** <br> ## 논리 주소와 물리 주소 간의 관계 - 논리 주소 : 실제 메인 메모리가 아니라 프로그램에 따라 달라지는 위치의 구체적인 값 - 물리 주소 : 메인 메모리의 실제 주소 ![|w80|center](partition_memory_management.png) > paged memory management : 프로그램을 쪼개서 메모리에 올려서 실행하는 메모리 관리 방법 <br> ## OS를 이해하기 위한 다양한 용어 - **멀티프로그래밍(Multiprogramming)** - 메인메모리에 여러개의 프로그램을 동시에 상주시키는 것을 멀티프로그래밍이라고 함 <br> - **프로세스(Process)** - 프로세스 = 실행중인 프로그램 (프로그램은 명령어 집합에 불과함) - 실행중이기 때문에 동적인 특성을 가지고 있음 - 멀티프로그래밍을 통해 컴퓨터 시스템은 한번에 여러개의 액티브한 프로세스를 가지고 있을 수 있음 - **Process States** enter, ready, executing, waiting, finished ![|w80|center](process_life_cycle.png) - **Process Control Block(PCB)** 운영체제가 프로세스 정보를 관리하기 위한 자료구조 e.g. 마지막으로 실행한 명령 <br> - **Timesharing(시 분할)** - 시분할 시스템 = 동시에 다수의 사용자가 컴퓨터와 상호 작용할 수 있는 시스템 - ~~(원래는 메인프레임이라 불리는 하나의 컴퓨터와 거기에 연결된 단순 터미널로 이루어진 형태였음)~~ - 시분할 운영 체제는 CPU 스케줄링과 멀티프로그래밍을 이용해서 각 사용자들에게 컴퓨터 자원을 시간적으로 분할하여 사용할 수 있게 해줌 <br> - **Context Switch** 실행중인 프로세스 변환 e.g. 실행 중이던 프로세스의 명령어를 저장하고, PCB에서 실행할 명령 불러오고 <br> ## 퀴즈 - 컴퓨터는 하나 이상의 운영체제를 가질 수 있지만, 어느 순간이든 오직 하나의 OS만이 동작한다. = T - 멀티프로그래밍 환경에선느 많은 프로세스가 활성화될 수 있다. 운영체제가 활성 프로세스의 메모리 요구 사항을 관리하기 위해 달성해야 하는 작업은 무엇인가? - 프로그램이 메모리 어디에 적재되어 있는지 파악하고 논리 주소를 물리 주소로 변환해야 함. <br> <br> <br> <br>