Computer Science Basics/운영체제 9

OS - 8. File System

RAM은 크기가 제한되고, 컴퓨터가 꺼지면 데이터가 사라진다.그러나 컴퓨터가 꺼져도 유지되고, 크기가 큰 데이터를 저장하면서, 여러 프로세스의 동시 접근 같은 CPU와 RAM의 작동을 감당할 수 있는 저장 방법이 필요하다.운영체제는 이런 데이터를 파일이라는 단위로 Secondary Storage에 저장해 관리한다.File파일은 연관된 정보의 묶음을 Secondary Storage에 기록한 것이다.사용자의 입장에서 파일은 Secondary Storage에서 가장 작은 할당 단위로, 파일에 데이터를 작성하는 방법 말고 Secondary Storage에 데이터를 기록할 수 없다.File Name & Extension우리가 파일 탐색기에서 흔히 보는 파일명은 이름 + 확장자의 구조이다.Lostark...

OS - 7. Virtual Memory

프로그램을 실행하면 프로그램 전체가 메모리에 로드되지만, 프로그램 전체가 사용되는 일은 드물고, 사용되더라도 동시에 필요한 경우는 더욱 없다. 이렇게 메모리에 일부만 있는 상태로도 프로그램을 구동할 수 있다는 점을 이용해 Virtual Memory를 구현할 수 있다. Virtual Memory란? 이전 단원에서 메모리 관리를 효율적으로 하기 위해 CPU는 Logical(Virtual) Memory Address라는 가상의 메모리 주소를 사용하고, 이 주소를 실제 RAM의 주소인 Physical Memory에 매핑시켜 사용한다고 했다. 프로그램의 일부만 Physical Memory에 로드되어도 구동할 수 있다면, Virtual Memory가 Physical Memory의 크기와 같을 필요가 없다. Virt..

OS - 6. Main Memory

메모리 기본 상식 Program Execution 프로그램은 하드 디스크에서 메모리에 로드되어야 CPU가 실행할 수 있다. 프로그램은 실행 전에 아래 절차를 거친다. 메모리에서 명령어 불러오기 명령어 해석 (Operand 불러오기) 명령어 실행 (메모리에 실행 결과 저장) Memory Access Speed CPU는 메모리와 레지스터만 직접 접근할 수 있다. 레지스터 접근은 1 CPU Clock Cycle 이내에 이루어진다. 메모리 접근은 몇 Cycle이 걸려, Stall을 일으킬 수 있다. Stall이 일어나면 CPU는 연산할 데이터가 없기 때문에 기다릴 수 밖에 없다. Stall을 줄이기 위해 CPU와 레지스터 사이에 Cache를 둔다. Memory Protection Hardware 프로세스는 메모..

OS - 5. Synchronization

Race Condition여러 프로세스가 공유하는 데이터에 동시에 접근하면 Data Inconsistency가 일어날 수 있다.공유된 변수 counter (= 5)가 있다고 하자.// P1{ ... counter++}// P2{ ... counter--}이렇게 두 프로세스가 동시에 count++과 count--를 실행하면P1은reg1 = counterreg1 = reg1 + 1counter = reg1을 실행하고, P2는reg1 = counterreg1 = reg1 - 1counter = reg1을 실행할 것이다.이 경우 counter는 5가 아니라 두 결과 중 나중에 적용된 4나 6일 것이다.이렇게 여러 프로세스가 공유된 데이터에 동시에 접근하..

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에서 필요한 파일을 불러오는 등의 동작을 ..