Computer Science Basics 15

OS - 4. CPU Scheduling

CPU는 Multi Programming을 통해 효율을 극대화한다.Single Core CPU는 한 번에 하나의 프로세스만 실행할 수 있기 때문에 CPU Scheduling을 통해 CPU가 실행할 프로세스를 적절히 정해줘야 한다.프로세스의 실행은 CPU 실행과 I/O 대기의 사이클로 이루어져 있다.보통 I/O Bound Process는 CPU 실행이 짧고 잦으며, I/O 대기가 길고, CPU Bound Process는 CPU 실행이 길고 적다.컴퓨터가 실행하는 대부분의 작업은 I/O Bound Process이다.CPU SchedulerCPU Scheduler는 메모리에서 다음에 실행할 프로세스를 선택한 뒤, 프로세스가 준비되면 CPU에 프로세스를 할당한다.프로세스의 상태 변화 그림을 다시 ..

OS - 3. Thread and Concurrency

Process Model의 한계 CPU는 계속된 Context Switch를 통해 실행 중인 프로세스를 바꾸면서 여러 작업이 동시에 진행되는 것처럼 보이는 Concurrency를 달성했다. 그러나 이런 방식은 여러 개의 프로세스로 이루어진 작업에서 한계가 나타났는데, Context Switch 때마다 Text(Code), Data, Heap, Stack을 초기화하고 다시 로드해야 했고, 프로세스 통신을 통해 상태를 동기화해야 하는 자원 낭비가 일어났다. 그리고 여러 개의 CPU로 작동하는 Multi Processor 환경이 개발되었지만, 프로세스 하나를 돌릴 때는 Single Processor와 차이가 전혀 없었다. 이러한 문제를 해결하기 위해 Thread 개념이 도입되었다. Thread란? Thread..

OS - 2. Processes

프로세스란? 실행되고 있는 프로그램을 프로세스라고 한다. 프로그램은 디스크에 저장된 명령어의 집합이고, 프로세스는 프로그램을 RAM으로 올려 프로그램 카운터와 함께 실행 중인 상태이다. 프로그램을 실행할 때 OS가 CPU와 메모리를 어떻게 동작시키는지 알아보자. 프로세스와 메모리 프로그램이 메모리에 로드되면 메모리의 Stack, Heap, Data, Text 영역에 데이터가 저장된다. Text 영역에는 프로그램 코드가, Data 영역에는 전역 변수가, Stack 영역에는 임시 데이터(함수 인자, return address, 지역 변수 등), Heap 영역에는 동적으로 할당한 데이터가 저장된다. 프로세스의 상태 프로세스가 실행되면 5가지 중에 하나의 상태이며, 상황에 따라 상태가 바뀐다. new : 프로세..

OS - 1. Introduction

Introduction에서는 컴퓨터가 어떤 식으로 작동하는지 OS의 관점에서 살펴볼 것이다. 모든 1단원이 그렇듯 다양하고 중구난방인 정보가 나열된다. 컴퓨터 시스템의 구조 컴퓨터는 CPU 메모리(RAM/ROM) 각종 장치들 (SSD나 하드디스크 같은 저장장치와 모니터, 키보드, 마우스 같은 입출력장치) 로 구성된다. CPU와 메모리와 장치들은 버스라는 통로를 통해 서로 데이터와 신호를 주고받는다. 각 장치는 자신의 Device Controller를 통해 제어되고, Device Controller는 데이터를 주고받기 위한 Local Buffer를 가지고 있으며, Device Controller를 통해 CPU, 메모리와 소통한다. 컴퓨터 시스템의 작동 입출력 장치와 CPU는 동시에 실행된다. CPU는 메모..

OS - 0. Index

1. Introduction2. Processes3. Thread and Concurrency4. CPU Scheduling5. Synchronization6. Main Memory7. Virtual Memory8. File System운영체제란?흔히 Windows, MacOS, IOS, Android 등을 운영체제라고 부르지만 운영체제가 무엇인지 공식적인 정의는 없다.보통 "컴퓨터의 하드웨어와 사용자의 중개인 역할을 하는 프로그램"을 운영체제라고 부른다.컴퓨터의 CPU와 메인보드, RAM, 저장장치, 키보드, 마우스를 사용하려면 이 부품들을 작동하게 하는 프로그램이 필요하다. CPU가 연산을 해 프로그램을 실행시키고, RAM에 프로그램을 로드시키고, SSD에서 필요한 파일을 불러오는 등의 동작을 ..