컴퓨터는 크게 software와 hardware로 구분할 수 있고, 사용의 편의성을 위해서 Computer Architecture라는 개념이 등장하였다. 즉 Software 측면에서는 Hardware가 어떻게 생겼는지를 이해할 필요 없이 그 사이의 Interface만을 이해하면 된다.
이때 OS는 Hardware와 상단의 Software 사이에 존재하는 software라고 생각하면 되겠다. 즉 컴퓨터 내부의 System이다.
시스템 프로그래밍 시간에는 System call들을 어떻게 사용하는지, 무엇이 있는지를 배웠다.
운영체제 수업에서는 System Call이 어떻게 동작하는지 내부 Kernel에 대해서 자세히 이해할 수 있도록 한다.
Process
CPU scheduling
Virtual memory
CPU가 실제로는 한 개지만 여러개인 것처럼 동작할 수 있고, 실제 physical memory보다 더 큰 용량의 메모리가 존재하는 것처럼 memory space를 활용할 수 있다. (즉 메모리보다 큰 크기의 application도 돌아갈 수 있게 한다.)
Threads
Synchronization
컴퓨터를 병렬로 동작시키는 방법은 multi-thread와 multi-Cpu가 있다. 이때 thread를 여러개 사용할 때는 결국 하나의 CPU를 가지고 동작하는 것이고, Synchronization이 매우 중요하다.
Storage
File Systems
당연히 컴퓨터에 저장된 데이터를 보존하는 것도 매우 중요