전체 글(173)
-
Pintos Project 1 | 스케줄링 기반 개념 정리
1. CPU는 하나, 스레드는 여럿: 스케줄러가 순서, 시간, 회수 방법을 정한다CPU(코어 1개 기준)는 한 번에 한 스레드만 실행하므로, OS는 세 가지를 정해야 한다.누구에게 줄까? (순서)얼마나 쓰게 할까? (한 번에 쓰는 시간)어떻게 뺏을까? (도중에 강제로 뺏을 수 있나, 스레드가 양보할 때까지 기다려야 하나)이 결정을 하는 커널 코드가 스케줄러이고, 그 규칙이 스케줄링 알고리즘(정책)이다. 스케줄러도 평범한 커널 코드이다. 타이머 인터럽트 덕분에 필요할 때 CPU를 강제로 회수할 수 있어서 이런 결정이 가능하다. 스케줄러가 고르는 대상은 준비 줄(READY)에 서 있는 스레드뿐이다.2. 선점과 타이머 인터럽트: 정책이 시간을 정하고, 인터럽트는 확인할 기회를 준다비선점: 스레드가 끝나거나 스..
2026.10.12 -
운영체제 | 3. 동기화
예시 상황게임 하나가 프로세스 하나이고, 그 안에 몬스터 처치 스레드, 아이템 획득 스레드, 로딩 스레드, 그리기 스레드가 있다. 이 스레드들은 메모리를 공유한다. 1편에서 스레드가 메모리를 공유하는 대가로 동기화라는 숙제를 떠안았다고 했는데, 이 글은 그 숙제를 푸는 이야기다.1. 문제: 같은 변수를 두 스레드가 동시에 건드리면?게임에 점수 변수 score가 있고 두 스레드가 점수를 더한다.몬스터 처치 스레드: score = score + 10아이템 획득 스레드: score = score + 5score가 100일 때 한 번씩 실행되면 115가 되어야 한다. 그런데 가끔 110이나 105가 나온다.원인: 코드 한 줄이 CPU에게는 세 단계다score = score + 10은 CPU에게 다음 세 단계다...
2026.10.10 -
운영체제 | 2. CPU 스케줄링
1. 문제: 준비 줄에 여럿이 서 있는데, 누구에게 CPU를 줄까?예를 들어 준비 줄에 이런 스레드들이 서 있다고 하자.준비 줄: [크롬의 영상 스레드] [게임의 그리기 스레드] [메모장 스레드] [메신저 스레드] ... CPU는 한 번에 하나(코어 하나 기준)만 실행할 수 있으므로, OS는 다음을 정해야 한다.누구에게 줄까? (순서)얼마나 쓰게 할까? (한 번에 쓰는 시간)언제 뺏을까? (도중에 뺏을 수 있나?)이를 정하는 커널 코드가 스케줄러이고, 그 규칙이 스케줄링 알고리즘이다. 스케줄러도 평범한 커널 코드이며, 타이머 인터럽트 덕분에 필요하면 CPU를 강제로 회수할 수 있어서 이런 결정이 가능하다. 스케줄러가 고르는 대상은 준비 줄에 서 있는 스레드들뿐이다.2. "잘 나눴다"의 기준CPU 이용률:..
2026.10.10 -
운영체제 | 1. 프로세스와 스레드
예시 상황내 컴퓨터에서 크롬으로 유튜브를 보면서, 메모장에 필기하고, 메신저로 대화하고, 게임도 켜 둔 상황을 계속 떠올리면서 읽는다. 눈에는 전부 동시에 돌아가는 것처럼 보이지만, CPU는 한 번에 하나만 실행할 수 있다. OS는 이 프로그램들을 어떻게 구분하고 관리할까?1. 프로그램과 프로세스문제: 크롬, 메모장, 메신저, 게임을 동시에 켜면 OS는 이들을 서로 구분하고, CPU를 넘겼다가 돌려받을 때 어디까지 실행했는지 기억하고, 메모리도 따로 관리해야 한다. 크롬 창을 두 개 켜면 더 곤란하다. 파일은 하나인데 각자 다른 사이트를 보고 있기 때문이다. 디스크의 프로그램 파일만으로는 이 일을 할 수 없다. 파일은 가만히 있는 설계도일 뿐이다. 해결책: 실행 중인 프로그램을 하나의 단위로 만든다. 이..
2026.10.09 -
운영체제 | 0. OS는 무엇이고, 왜 있고, 어떻게 존재하는가
1. 컴퓨터는 원래 어떻게 프로그램을 실행할까프로그램은 기계어 명령어의 나열이고, 메모리에 올라가 있다. CPU는 명령어를 가져오고(fetch), 해석하고(decode), 실행하는(execute) 일을 계속 반복한다. CPU 안의 프로그램 카운터가 "다음 명령어가 메모리 몇 번지에 있는지"를 가리킨다. 그래서 운영체제가 없어도 프로그램은 돈다. 임베디드 시스템(전자레인지, 세탁기 제어기 등)이 그렇다. 화면이나 키보드 같은 장치도 특정 주소에 값을 쓰면 반응하도록 만들어져 있어서, 프로그램이 하드웨어를 직접 조작할 수 있다.2. 왜 운영체제가 필요해졌나CPU와 메모리는 비싼 자원인데, 하나의 프로그램만 돌리면 낭비다. 그래서 여러 프로그램이 한정된 자원을 나눠 쓰게 하자는 요구가 생겼다. 그런데 프로그램..
2026.10.09 -
Pintos 4주 여정을 시작하며 목표와 공부방식 생각해보기
왜 하는가? Pintos의 목적은 테스트를 통과하는 게 아니라, "한정된 CPU와 메모리를 여러 프로그램이 어떻게 나눠 쓰는가"라는 질문에 직접 구현으로 답해 보는 것이다. 구현 자체보다 중요한 건, 자원이 제한된 상황에서 어떤 문제가 생기고, 어떤 해결책이 있고, 각각 무엇을 얻고 포기하는지 판단해 보는 경험이다. 이 경험과 지식은 개발 중 동시성 버그, 메모리, 성능 문제를 만났을 때 원인을 추론하는 힘이 된다. 따라서 4주 뒤 "스레드를 구현했다, 시스템 콜을 구현했다, 가상 메모리를 구현했다"가 아니라, "CPU와 메모리를 여러 프로그램이 쓸 수 있는 기계로 만들기 위해 어떤 문제를 만났고, 어떤 판단을 했는지"를 내 말로 설명할 수 있는 상태가 목표다.마음가짐테스트 하나에 시야가 좁아질 때마다 ..
2026.10.08