이런 걸
배워요!
운영체제의 개념
프로그램, 프로세스, 쓰레드
동기화
메모리
개발자의 필수 지식 운영체제를 배워서
뿌리 깊은 나무가 되어 봐요 🌳
주위에 기본기가 부족한 개발자가 어떤 것을 학습할지 몰라서 방황하는 것을 보면 항상 안타깝다고 생각했습니다. 시간의 여유도 없어 최신 기술을 따라가는 것도 벅차 보입니다. 최신 기술도 중요하지만, 컴퓨터 과학 분야에서는 기본기가 훨씬 더 중요합니다. 기본기만 잘 다져놓으면 화려하고 인기 있는 기술들은 손쉽게 배울 수 있거든요.
뿌리가 튼튼하면 어떠한 풍파도 버텨내는 나무처럼,
기본기가 튼실하다면 최신 유행이나 남들의 말에 흔들리지 않는 실력 있는 개발자가 될 수 있습니다!
이 강의의 특징 💡
✔️ 비전공자도 운영체제를 쉽게 배울 수 있도록 그림 중심의 설명이 많습니다.
✔️ 바쁜 직장인도 접근하기 쉽도록 핵심만 간결하게 설명합니다.
✔️ 예시 코드 설명을 이해하시려면 하나 이상의 프로그래밍에 대한 기초를 알고 있는 게 좋습니다.
대학생
제 프로그램이 컴퓨터에서 동작하는 원리가 궁금해요.
어려운 최신기술
최신 기술을 따라가기 힘들고, 배워도 뭔가 부족한 느낌이예요.
취준생/비전공자
입사 면접에서 프로세스, 스레드, 동기화, 메모리를 물어봐요.
호기심 왕
프로그램 성능을 어떻게 높이죠? 문제 해결 소스는 어떻게 생기나요?
모든 문제의 해결을 위해선 운영체제의 원리를 알아야 합니다. 운영체제의 원리를 알면 여러분이 만든 프로그램의 실행 과정을 알 수 있습니다. 복잡한 문제나 버그와 마주했을 때 해결할 힘이 생기고, 프로그래밍을 할 때 어떻게 해야 성능이 좋아지는지 알게 됩니다. 또 프로그래밍에 대한 확실한 주관이 생겨서 스스로의 로드맵도 그릴 수 있습니다. 기본기가 탄탄하다면 면접에서 관련 질문을 받았을 때도 잘 대답할 수 있겠죠? 개발자로서 큰 내공이 생기는 셈입니다.
✔️운영체제 들어가기
운영체제를 배우기 전에 운영체제가 왜 필요한지, 현대 운영체제가 이토록 복잡해진 이유는 무엇인지를 알아봅니다.
✔️프로세스와 스레드
프로그램과 프로세스의 차이가 무엇인지, 프로세스가 운영체제에서 어떻게 생성되고 종료되는지, 프로세스와 스레드의 차이는 무엇인지를 알아봅니다.
✔️CPU 스케줄링
운영체제가 어떻게 수많은 프로세스들을 관리하는지, 그러한 알고리즘 중에 어떠한 것들이 있는지 알아봅니다. 운영체제 개발자들이 굉장히 인간적이라는 것도 느낄 수 있습니다. 처음부터 굉장한 알고리즘은 없었거든요!
✔️프로세스 동기화
운영체제 개발자들이 심심해서 동기화라는 주제를 만들었을까요? 왜 동기화라는 문제가 발생했는지 알아보고 이를 해결하는 방법을 알아봅니다.
✔️데드락
에휴.. 데드락이란 것은 또 왜 생겼을까요? 운영체제 개발자들은 매번 문제에 직면했었습니다. 어떤 문제를 해결하면 전에 없던 또 다른 문제가 발생했었죠. 데드락도 이 중 하나인데요! 데드락이 발생하는 원인과 해결 방법을 알아봅니다.
✔️쉬어가기
지금까지 배운 내용의 정보 블록들이 정리가 안 될 수도 있으니까 한번 같이 조립을 해봅니다. 컴퓨터과학의 정보를 배울 때 여러 정보 블록을 하나씩 중요하게 아는 것도 중요하지만 전체적으로 어떻게 흘러가는지도 파악하는 것도 중요합니다!
✔️메모리
컴퓨터에는 여러 종류의 메모리가 있습니다. 왜 이렇게 많은 메모리가 필요한지, 그중에 물리 메모리(RAM)에 대해서 알아봅니다.
✔️가상 메모리
단순한 메모리로는 프로그램을 효율적으로 실행시키기 힘듭니다. 운영체제 개발자들이 왜 가상 메모리를 만들었는지, 가상 메모리를 만들면서 생긴 문제가 무엇인지 알아봅니다.
✔️입출력장치
수많은 입출력장치를 운영체제가 어떻게 다루는지 알아봅니다.
✔️파일 시스템
파일 시스템이 왜 필요하게 됐는지, 디렉토리는 또 왜 필요하게 됐는지를 알아보고 구조를 알아봅니다.
Q. 강의를 듣기 전 준비해야 할 것이 있나요?
적어도 1개 이상의 프로그래밍 언어를 할 줄 아셔야 합니다. 예시 코드는 C언어로 설명하지만 보통 10줄 이내 짧은 코드이고 설명도 자세히 해드리기 때문에 다른 어떠한 언어를 알고 계셔도 이해할 수 있습니다.
Q. 비전공자도 들을 수 있는 강의인가요?
비전공자를 위해 만든 강의입니다. 운영체제는 필수전공 과목이지만 많은 비전공자 개발자분들이 중요성과 시간을 투자하고 있지 않습니다. 그래서 비전공자도 이해하기 쉽게, 짧고 간결하게 만든 강의입니다.
Q. 왜 운영체제를 배워야 하나요?
운동선수가 운동을 잘하기 위한 조건은 무엇이 있을까요? 축구면 슈팅과 패스, 드리블 능력이 필요할 것이고 종합격투기 선수라면 타격, 그라운드 능력이 필요할 것입니다.
하지만 모든 운동선수는 기본 체력을 가지고 있어야 합니다. 기본 체력은 힘, 유연성, 심폐지구력 등 여러 가지가 있습니다.
개발자를 운동선수로 예를 들었는데 운동선수의 기본 체력은 개발자의 기본기와 같습니다. 개발자의 기본기라고 하면 여러 가지가 있을 수 있는데 운영체제가 그중 하나입니다. 모든 개발자가 갖추고 있어야 할 기본입니다.
학습 대상은
누구일까요?
운영체제의 원리를 알고 싶으신 분
실력있는 개발자가 되고 싶으신 분
선수 지식,
필요할까요?
1개 이상의 프로그래밍 언어
전체
44개 ∙ (3시간 22분)