12장 프로세스 동기화

12-1 동기화란 동기화의 의미 동기화(synchronization): 작업들 사이의 수행 시기를 맞추는 것 실행의 흐름을 갖는 모든 것(프로세스, 스레드 등)은 동기화의 대상 실행 순서 제어: 프로세스를 올바른 순서대로 실행하기 상호 배제: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 생산자와 소비자 문제 생산자와 소비자가 동시에 접근해서는 안 되는 자원에 동시에 접근하면 결과값이 매번 달라지거나 이상해진다. 공유 자원과 임계 구역 공유 자원(shared resource): 동시에 실행되는 프로세스가 사용하는 공동의 자원(전역 변수, 파일, 입출력장치 등) ...

2026년 6월 30일 · 4 분 · 배준수

단단한 삶은 보통의 날들로 이루어진다

단단한 삶은 보통의 날들로 이루어진다 지은이: 펄 카츠 옮긴이: 정영은 출판사: 북다 감상 나는 얇고 길게 지속되는 노력이 정말 가치있는 덕목이라고 생각한다. 내가 정글에서 느꼈던 몰입은 삶에 끼치는 영향은 더 클지 모르겠지만 살면서 무언가에 몰입할 수 있는 시기는 그리 많지 않다. 우리는 동시에 많은 것을 신경쓰면서 살아야 한다. 매일 일을 하며, 사랑하는 사람과 무언가를 같이 추억을 쌓아나아야 하고, 가족을 신경쓰며, 재테크도 한다. 친구 관계, 이사 준비, 질병 등 나의 집중을 갉아 먹는 존재는 무궁무진 하다. ...

2026년 6월 19일 · 2 분 · 배준수

11장 CPU 스케줄링

11-1 CPU 스케줄링 개요 CPU 스케줄링(CPU scheduling): 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 프로세스 우선 순위 프로세스의 CPU 사용을 우선순위에 맞추어 처리 입출력 집중 프로세스(I/O bound process) **입출력 작업(입출력 버스트, I/O burst)**이 많은 프로세스 실행 상태보다는 입출력을 위한 대기 상태에 많이 머무름 CPU 집중 프로세스(CPU bound process) **CPU 작업(CPU 버스트, CPU burst)**이 많은 프로세스 대기 상태보다는 실행 상태에 더 많이 머무름 입출력 집중 프로세스 먼저, CPU 집중 프로세스를 그 다음 ...

2026년 6월 15일 · 3 분 · 배준수

고객 테이블에 적립금 컬럼을 추가할까, 테이블을 분리할까?

뭘 고민하고 있는 건지 고객 데이터에 적립금(포인트) 정보를 추가해야 합니다. 선택지는 세 가지예요. 방안 A: 기존 고객 테이블에 INTEGER 컬럼 3개를 추가한다 방안 B-1: 적립금 전용 테이블을 별도로 만들고, 모든 고객과 1:1로 연결한다 방안 B-2: 적립금 전용 테이블을 별도로 만들되, 포인트가 있는 고객만 행을 생성한다 “관심사에 따라 테이블을 분리하는 게 좋은 설계 아닌가?”라는 질문이 자연스럽게 나오는데, 실제로 우리 환경에서 그게 맞는지 수치로 따져보려고 합니다. 아래 그림으로 방안 A와 B의 차이를 먼저 보시면 이해가 쉽습니다. ...

2026년 6월 5일 · 8 분 · 배준수

10장 프로세스와 스레드

10-1 프로세스 개요 프로세스(process): 실행중인 프로그램 프로세스 직접 확인하기 ps 명령어를 통해 확인 가능 포그라운드 프로세스(foreground process): 사용자가 보는 앞에서 실행 백그라운드 프로세스(background process): 사용자가 보지 못하는 뒤에서 실행 데몬(daemon): 유닉스 체계의 운영체제의 백그라운드 프로세스 서비스(service): 우니도우 운영체제에서의 백그라운드 프로세스 프로세스 제어 블록 PCB(Process Control Block, 프로세스 제어 블록) 프로세스와 관련된 정보를 저장하는 자료 구조 해당 프로세스를 식별하기 위해 꼭 필요한 정보들이 저장 메모리에 있는 커널 영역에서 생성 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기 PCB에 담기는 정보 PID(프로세스 ID, Process ID) 특정 프로세스를 식별하기 위해 부여되는 고유한 번호 레지스터 값 이전까지 사용했던 레지스터의 중간값 프로그램 카운터 등의 레지스터 값 프로세스 상태 입출력장치를 사용하기 위해 기다리는지, CPU를 기다리는지, CPU를 이용하는지 등 CPU 스케줄링 정보 프로세스가 언제, 어떤 순서로 CPU를 할당받았는지 메모리 관리 정보 프로세스가 어느 주소에 저장되어 있는지 베이스 레지스터, 한계 레지스터 값 등 페이지 테이블 정보 사용한 파일과 입출력장치 목록 실행과정에서 특정 입출력장치나 파일을 사용하는지 문맥 교환 프로세스 실행에 대한 중간 정보를 저장해야, 다음 차례가 왔을 때 이전까찌 실행했던 내용에 이어 다시 실행을 재개할 수 있음 문맥(context) 해당 프로세스의 PCB에 표현 문맥 교환(context switching) 기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로 복구하여 새로운 프로세스를 실행하는 것 프로세스 A 실행 → A 문맥 저장 → B 문맥 로드 → 프로세스 B 실행 → B 문맥 저장 → … 너무 자주 하면 오버헤드가 발생하여 부정적인 효과 프로세스의 메모리 영역 PCB는 커널 영역에 생성 ...

2026년 2월 10일 · 6 분 · 배준수

나는 나를 파괴할 권리가 있다

나는 나를 파괴할 권리가 있다 지은이: 김영하 출판사: 복복서가 감상 자살 조력을 업으로 삼은 주인공의 이야기다. 주인공이 자살을 도왔던 사람들에 대해 회고하고 주인공의 생각이 묻어있는 소설이었다. 확실히 깨달았다. 이 책을 읽기엔 나의 문학적 감수성은 현격히 부족하다는 것을.

2026년 1월 19일 · 1 분 · 배준수

9장 운영체제 시작하기

09-1 운영체제를 알아야 하는 이유 운영체제란 자원(시스템 자원): 프로그램 실행에 마땅히 필요한 요소. CPU, 메모리 등 운영체제(operating system): 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 운영체제는 메모리 내 적당한 공간에 프로그램들을 적제하고, 더 이상 실행되지 않는 프로그램을 삭제 누가 어떤 순서로 얼마나 CPU를 사용하게 할지도 운영체제가 처리 입출력장치나 자원등을 관리 응용 프로그램과 하드웨어 사이에서 필요한 자원을 할당하고, 올바르게 실행되도록 관리하는 역할 커널 영역(kernel space): 운영체제가 메모리 내에서 적재되는 특별한 공간 ...

2026년 1월 14일 · 3 분 · 배준수

우리의 낙원에서 만나자

이기적 유전자 지은이: 하태완 출판사: 북로망스 감상 평소에 책의 내용을 잘 보고 사지 않는다. 제목과 표지가 주는 느낌으로만 산다. 저번 <죽음이 물었다 어떻게 살거냐고>를 읽은 이후에도 느꼈는데 이제 장르나 내부 형식쯤은 알고 사는게 좋지 않을까 싶다. 난 소설인 줄 알고 샀는데… 감성이 필요한 사람에게 생각하고 느낄만한 문구들이 한가득한 책이었다. 내가 조금만 더 감성적인 사람이었다면 이 책에서 많은 것을 느꼈을텐데 그러지 못해 아쉽다. 그럼에도 마음이 느껴지는 글귀들이 참 많으니, 필요에 따라 추천해줄 수 있는 책이었다. ...

2025년 12월 24일 · 1 분 · 배준수

8장 입출력장치

08-1 장치 컨트롤러와 장치 드라이버 키보드, 마우스 등 입출력장치에 보조기억장치도 포함 장치 컨트롤러 입출력장치는 CPU, 메모리보다 다루기 더 까다롭다. 많은 종류 키보드, 모니터, USB 메모리, SSD 등 다양하며 장치마다 속도, 데이터 전송 형식도 다양하여 규격화하기 어렵다. 낮은 데이터 전송률 전송률(transfer rate): 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표 전송률이 낮은 데이터는 같은 시간 동안 상대적으로 적은 데이터를 주고 받을 수 있음 장치 컨트롤러(device controller) 입출력 제어기(I/O controller), 입출력 모듈(I/O module) 입출력장치가 연결되는 하드웨어 모든 입출력장치는 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고 받음 CPU와 입출력장치 간의 통신 중개, 오류 검출, 데이터 버퍼링 버퍼링(buffering): 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법 버퍼(buffer): 임시 저장 공간 내부 구조 데이터 레지스터(data register) CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터. 버퍼링을 위한 버퍼 역할 상태 레지스터(status register) 입출력장치가 입출력 작업 상태, 오류 여부 등의 상태 정보 저장 제어 레지스터(control register) 입출력장치가 수행할 내용에 대한 제어 정보와 명령 저장 장치 드라이버 장치 드라이버(device driver) ...

2025년 12월 22일 · 4 분 · 배준수

LocalStack을 이용해 로컬에서 AWS 구동시키기

로컬 웹훅 테스트 환경 로컬 개발 환경에서 AWS를 이용하는 전체 웹훅 플로우를 테스트할 수 있는 환경을 구축함 개요 배경 운영 환경의 웹훅 처리 플로우: 1 Cafe24 → Django → SQS → EventBridge Pipes → Step Functions → Lambda → ElastiCache 이 플로우를 로컬에서 테스트하기 어려웠던 이유: Lambda 함수가 ElastiCache(AWS)에만 접근 가능 LocalStack Free에서 EventBridge Pipes 미지원 해결 방법 LocalStack을 활용한 하이브리드 아키텍처: 웹훅 처리 → LocalStack (Step Functions + Lambda) 기타 AWS 서비스 (SQS, S3) → 실제 AWS 유지 💡 핵심 개념: LocalStack과 Endpoint URL 이 프로젝트는 하이브리드 클라우드 환경을 구성하기 위해 LocalStack과 endpoint_url 개념을 적극적으로 사용합니다. ...

2025년 12월 19일 · 5 분 · 배준수