[CS162 OS] Lecture1: What is an Operating System?

[CS162 OS] Lecture1: What is an Operating System?

CS 공부가 필요하다고 느낀 후, 창업한 회사에서 나와 CS 복수전공을 하며 Stanford 대학원 진학을 꿈꿨다. 개발자라면 누구나 CS 대학 1순위로 꼽는 Stanford가 어떻게 가르치고, 어떤 사람이 모이는지 궁금해서였다.

자대 Stanford 출신 교수님과 상담 후 대학원 진학에 대한 목적이 불분명하단 것을 깨닫고 취업을 하기로 결정했다. 하지만 Stanford는 어떻게 가르치는지 궁금했기에 언젠가 꼭 강의만이라도 들어보겠다는 다짐을 하고 있었다. 현재 취업을 준비하는 시기이다. 이만큼 기본을 다지기 좋은 시기가 없다고 생각했기에 [Stanford CS140 Operating System] 강의를 찾아봤으나, AI 쪽과 다르게 열려있는 강의가 없었다. 결국 차선책으로 [Berkeley CS162 Operating System]을 들어보기로 하고 진행한다.

What is Operating System?

인터넷이 보급된 후, 지금까지 40억이 넘는 수의 기기가 연결되어있다. 이 모든 기기들에서 운영체제는 다음과 같은 핵심 역할을 한다.

  1. User Program에 다음 기능들을 통해 추상화를 제공 (마술사와 같다.)

    • File Systems
    • Processes, threads
    • VM, Containers
    • Naming System
    • Drivers
    • etc..
  2. 리소스 관리

    • Memory, CPU, Storage, etc..
  3. 보안 및 인증 등등 이외의 기능들

  4. 위의 역할을 위한 알고리즘 및 기술들을 구현

    • Scheduling
    • Concurrency
    • Transacations
    • Security
    • etc..

결국, 운영체제는 우리가 물리 자원들을 쉽게 사용하고 관리할 수 있도록 한 층의 Virtual Machine Layer를 제공한다는 것이다.

What makes Operating Systems Exciting and Challenging?

무엇이 운영체제를 흥미롭게 할까? 무어의 법칙에 의하면 반도체의 집적도가 18개월마다 2배 증가해야했다.

그러나 실제로 2016년 이후에 무어의 법칙이 성립하지 않음이 증명됐다. 그 이유는 반도체가 복잡해짐에 따라 단순히 프로세스와 아키텍처만 고려할 것이 아닌 최적화를 진행해야 했고, 이에따라 반도체의 개발 속도도 줄어들었기 때문이다.

왜 갑자기 반도체에 대한 이야기를 할까? 그 이유는 반도체의 성장 속도는 감소했지만, 디바이스와 스토리지, 네트워크는 여전히 기하급수적으로 증가하고 있기 때문이다. 이들이 증가함에 따라 시스템과 프로그램들은 복잡해진다. 그러나 반도체의 성장 속도를 봤을때 이러한 복잡함을 감당할 수 없다.

결국 최적화 작업이 필요하고, 이 최적화 작업은 Operating System을 통해 이루어진다!!

Challenge of Operating System

운영체제가 고려해야할 것은 결국 복잡성을 해결하는 것이다. 여기서 교수님이 강조한 내용이 있는데, 이 내용이 가장 인상 깊었다.

The question is not whether there are bugs but how serious are the bugs!

우리는 프로그램을 만들며 버그가 없는 프로그램을 만들려 한다. 그러나 완벽한 프로그램은 없고, 버그의 숫자보다 얼마나 심각한 버그를 가지고 있는 것이 중요하다는 것이다. 가끔 완벽한 프로그램을 만들기 위해 우선순위가 높은 작업보다 우선순위가 낮은 작업에 몰두하는 상황이 생긴다. 이러한 상황에서 이 문구가 기억나면 더 효율적이게 일을 할 수 있지 않을까.

Others

이 수업에서 다룰 내용은 다음과 같다.

  1. OS Concepts: How to Navigate as a Systems Programmer! – Process, I/O, Networks and Virtual Machines
  2. Concurrency
    • Threads, scheduling, locks, deadlock, scalability, fairness
  3. Address Space
    • Virtual memory, address translation, protection, sharing
  4. File Systems
    • I/O devices, file objects, storage, naming, caching, performance, paging, transactions, databases
  5. Distributed Systems
    • Protocols, N-Tiers, RPC, NFS, DHTs, Consistency, Scalability, multicast
  6. Reliability & Security
    • Fault tolerance, protection, security
  7. Cloud Infrastructur

이외에는 수업 운영에 대한 내용만 나와 생략한다.

comments powered by Disqus