오퍼레이팅 시스템 [0] - OS preview

‘오퍼레이팅 시스템’ 공부를 시작하는 글입니다.


오퍼레이팅 시스템(OS)

오퍼레이팅 시스템 즉, 운영체제는 간단하게 말하면, 소프트웨어를 위한 소프트웨어로 컴퓨터 자원을 관리하고 사용자가 프로그램들과 어플리케이션, 시스템 소프트웨어를 간편하게 실행할 수 있는 환경을 제공합니다. 이때 관리하는 자원에는 우리가 잘 아는 메모리, 저장디스크 공간, CPU time, I/O 등이 포함됩니다.

운영체제는 개발에 있어 필수적인 지식이 아닐수 없습니다. 대학에서 다른 강의를 수강할때, 교수님을 통해 현직에서 일하고 계시는 개발자분의 이런 이야기를 들은적이 있습니다.

“현직에서 개발을 하다보면 예전에 공부했던 cs지식들을 활용할 일이 그렇게 자주 발생하지는 않는다. 하지만 만약 문제가 발생하게 된다면, 디버그에 가장 필수적인 지식은 운영체제라고 생각한다.”

물론 이 이야기가 모든 분야에 적용되는게 아니겠지만, 그만큼 OS라는 분야의 중요성을 확인할 수 있었습니다.

사용교재

이번 공부의 주 교재는 아래 교재를 사용합니다.

원제 : Operating System : Internals and Design Principles (English) by william stallings

Chapter별 학습과정

Computer system overview

기본적인 컴퓨터 구조에 대해 학습합니다.

Operating System overview

OS의 목적과 그 진화 과정에 대해 학습합니다.

Process Description and Control

프로세스의 정의와 작동방식에 대해 학습합니다.

Uniprocessor Scheduling

유니프로세서 환경에서 다양한 스케쥴링 방식을 다룹니다.

Multiprocessor, Multicore, and Real-Time Scheduling

실제로 자주 사용되는 멀티프로세서, 멀티코어, 리얼타임에서의 스케쥴링 방식을 다룹니다.

Thread

스레드의 개념과 멀티스레딩에 대해 학습합니다.

Multiprocessor, Multicore, and Real-Time Scheduling

실제로 자주 사용되는 멀티프로세서, 멀티코어, 리얼타임에서의 스케쥴링 방식을 다룹니다.

Concurrency: Mutual Exclusion and Synchronization

동시성 작업에서 발생할 수 있는 문제와 상호배제, 동기화의 필요성을 다룹니다.

Concurrency: Deadlock and Starvation

동시성 작업시 발생할 수 있는 deadlock 과 starvation 상태와 그 해결방법을 다룹니다.

Memory Management

메모리의 효율을 최대화 시키기 위해 사용되는 방법들에 대해 학습합니다.

I/O Management and Disk Scheduling

I/O 장치들과 작동방식에 대해 배웁니다.


  • 차후 내용들을 추가할때마다 해당 Chapter에 대한 링크를 추가하도록 하겠습니다.

  • 위에서 Chapter를 순서대로가 아닌 chapter 9, 10 의 내용을 우선해서 편성한것은, 스레드와 Concurrency 파트를 학습할때 스케줄링의 개념을 익혀둔다면 더 이해가 쉬울 것이라 판단했기 때문입니다.

  • 개인 공부를 정리해놓은 것이므로 사실과 틀린부분이 있을 수 있습니다. 해당 부분에 대해 댓글로 알려주시면 빠르게 수정하도록 하겠습니다. 감사합니다!