728x90 전체 글435 OSTEP: 10. Multiprocessor Scheduling (Advanced) 이 글은 OSTEP(Operating Systems: Three Easy Pieces)의 ‘Multiprocessor Scheduling (Advanced)’ 문서를 직접 읽고 정리한 내용이다.1) 배경과 핵심 문제문제 정의: “여러 개의 CPU에서 작업을 어떻게 배치·이동·실행할 것인가?”단일 CPU 대비 차이: 코어마다 캐시가 있어 스레드가 코어를 자주 바꾸면 캐시가 비워져 성능 저하.캐시 일관성(Coherence): 하드웨어(예: 버스 스누핑/디렉터리)가 공유 메모리의 일관성을 유지하지만, 스케줄링 자유도를 제약.동기화 필요: 공유 자료구조에 접근할 때 락/원자적 연산이 필수. 코어 수가 늘수록 락 경합·캐시 라인 바운스 비용 증가.캐시 친화성(Cache affinity): 한 번 코어에 올려 캐시.. 프로그래밍공부(Programming Study)/운영체제(OS) 2025. 10. 10. OSTEP: 6. Mechanism: Limited Direct Execution 이 글은 OSTEP(Operating Systems: Three Easy Pieces)의 ‘Mechanism: Limited Direct Execution’ 문서를 직접 읽고 정리한 내용이다.DevOps 관점(왜 중요한가/적용 방식)은 글 맨 마지막에 의견(Opinion) 으로 분리했다. 1) 문제 설정: “빠르게” + “통제” 둘 다 잡기목표는 단일 CPU를 여러 프로세스가 시간 분할로 나눠 쓰게 해 가상화(virtualization) 를 달성하는 것. 이때 성능(오버헤드 최소화) 과 통제(악의적/버그 있는 프로그램 제어) 를 동시에 만족해야 한다.2) 기본 해법: Limited Direct Execution (LDE)아이디어: 대부분의 시간은 사용자 프로그램을 하드웨어에서 직접 돌린다.단, 특정 시점.. 프로그래밍공부(Programming Study)/운영체제(OS) 2025. 10. 9. OSTEP: 5. Interlude: Process API 이 글은 OSTEP(Operating Systems: Three Easy Pieces)의 ‘Interlude: Process API’ 문서를 직접 읽고 정리한 내용이다. Opinion(의견) 은 명시적으로 표시하고, 나머지는 설명 위주로 구성했다.DevOps 관점(왜 중요한가/적용 방식)은 글 맨 마지막 별도 섹션에 모았다. 1) 프로세스 API가 다루는 것프로그램을 프로세스로 실행·중단·종료하고, 자식 프로세스를 만들고 관리하는 시스템 콜 집합.핵심 호출군: fork(), exec*(), wait()/waitpid(), exit(), getpid()/getppid(), sleep(), kill(), signal() 등.표준 입출력/파일 서술자와 결합해 리다이렉션·파이프라인까지 구성.2) 프로세스 기본 .. 프로그래밍공부(Programming Study)/운영체제(OS) 2025. 10. 8. OSTEP: 4. The Abstraction: The Process 이 글은 OSTEP(Operating Systems: Three Easy Pieces)의 ‘The Abstraction: The Process’ 문서를 직접 읽고 정리한 내용이다. 1) CPU 스케줄링이 풀 문제다수의 프로그램(프로세스/스레드)이 동시에 CPU를 원한다.운영체제(OS)의 스케줄러는 “다음에 누구를 실행할지”를 결정해 성능과 체감 반응성을 좌우한다.핵심은 정책(policy) 와 메커니즘(mechanism):정책: 어떤 기준으로 순서를 정할까?메커니즘: 선점/타이머/큐 등 어떤 도구로 실행·중단을 구현할까?2) 워크로드 모델과 기초 용어작업(Job / Process / Thread): 실행 단위. CPU 버스트(계산)와 I/O 대기 시간이 번갈아 나타난다.선점(Preemption): 타이머.. 프로그래밍공부(Programming Study)/운영체제(OS) 2025. 10. 7. 20251007 오늘의 영어 표현 정리 영어 표현 및 단어 정리makes little sense발음: /meɪks ˈlɪt̬əl sɛns/의미: 말이 잘 안 된다, 이치에 맞지 않는다, 이해하기 어렵다예문:His explanation makes little sense to me.It makes little sense to invest in that company right now.The instructions make little sense without the diagram.traverse발음: /trəˈvɝːs/의미: 가로지르다, 횡단하다, 샅샅이 살피다예문:The hikers traversed the mountain in two days.We traversed the forest carefully.The laser beam travers.. 끄적끄적(Memo) 2025. 10. 7. OSTEP: 9. Scheduling: Proportional Share 이 글은 OSTEP(Operating Systems: Three Easy Pieces)의 ‘Scheduling: Proportional Share’ 문서를 직접 읽고 정리한 내용이다.DevOps 관점(왜 중요한가/적용 방식)은 글 맨 마지막에 의견(Opinion) 으로 분리했다.1) Proportional-Share 스케줄링 개요목표: 각 작업(프로세스/태스크)이 CPU를 비율대로 나누어 갖도록 설계한다.핵심 아이디어: 각 작업에 티켓(ticket) 또는 가중치(weight) 를 부여하고, 그 비율이 기대 자원 점유율이 되도록 스케줄링한다.2) 핵심 개념 정리2.1 Ticket(티켓)작업이 가져갈 지분을 수치화한 토큰.예: A=75장, B=25장 → 장기적으로 A≈75%, B≈25%의 CPU 획득 기대... 프로그래밍공부(Programming Study)/운영체제(OS) 2025. 10. 7. OSTEP: 8. Scheduling:The Multi-Level Feedback Queue 이 글은 OSTEP(Operating Systems: Three Easy Pieces)의 ‘Scheduling: MLFQ’ 문서를 직접 읽고 정리한 내용이다.이론적 알고리즘의 원리와 실제 운영체제에서의 변형·적용 사례를 비교해 이해하는 데 초점을 맞췄다.1. MLFQ의 기본 아이디어스케줄링의 궁극적 목표는 두 가지다.대화형(interactive) 환경 → 사용자 응답성을 높이는 것배치(batch) 환경 → 전체 처리율을 높이는 것하지만 현실의 작업(job)은 CPU 사용 패턴이 제각각이라, 미리 “짧은 작업인지 긴 작업인지” 알 수 없다.MLFQ(Multi-Level Feedback Queue)는 바로 이 문제를 해결하기 위해 등장했다.핵심은 다음과 같다.여러 개의 우선순위 큐를 둔다.CPU 사용 패턴을.. 프로그래밍공부(Programming Study)/운영체제(OS) 2025. 9. 23. OSTEP: 7. Scheduling: Introduction 이 글은 OSTEP(Operating Systems: Three Easy Pieces)의 ‘Scheduling: Introduction’ 문서를 직접 읽고 정리한 내용이다.이론적 가정과 실제 운영체제의 현실을 비교해 이해하는 데 초점을 맞췄다.1. Turnaround Time vs Response TimeTurnaround Time (완료 지연 시간)정의: 작업이 도착(arrival)한 시점부터 완료(completion)될 때까지의 시간.사용처: 배치(batch) 시스템. 전체 처리량(throughput) 극대화.특징: 평균 실행시간 단축에 초점.Response Time (응답 시간)정의: 작업이 도착한 후 처음으로 CPU를 할당받아 실행되기까지 걸린 시간.사용처: 대화형(interactive) 환경. .. 프로그래밍공부(Programming Study)/운영체제(OS) 2025. 9. 22. jstack과 jcmd의 차이 – JVM 진단 도구 완전 정리 Java 애플리케이션을 운영하다 보면 CPU 점유율이 갑자기 치솟거나, 특정 스레드가 응답하지 않는 문제가 발생할 때가 있습니다.이럴 때 JVM 내부 상태를 진단하는 가장 대표적인 도구가 jstack과 jcmd입니다.이번 글에서는 두 명령어의 차이와 활용법을 정리해보겠습니다.1. jstack이란?jstack은 JVM 프로세스의 스레드 덤프(Thread Dump)를 찍는 전용 도구입니다.즉, 특정 시점에 모든 스레드가 어떤 코드를 실행 중인지 스냅샷을 남기는 데 사용합니다.주요 특징스레드 상태 분석 전용Deadlock, 무한 루프, GC Block 현상 진단에 유용출력 포맷이 단순하고 가벼움사용 예시# 는 대상 JVM 프로세스 IDjstack > threaddump.txt2. jcmd란?jcmd는 JVM.. 프로그래밍공부(Programming Study)/자바(JAVA) 2025. 9. 21. Hello World MCP 서버 – Python & Node.js 구현과 Amazon Q Developer 연결 이번 글에서는 가장 간단한 Hello World MCP 서버를 직접 구현해보고,Amazon Q Developer CLI에서 실제로 동작시키는 과정을 정리합니다.1. Python 버전 Hello World MCP 서버(1) 프로젝트 초기화mkdir hello-mcp-servercd hello-mcp-server(2) Python 코드 작성hello_mcp_server.py#!/usr/bin/env python3import asynciofrom mcp.server import Serverfrom mcp.server.stdio import stdio_serverfrom mcp.types import Tool, TextContentserver = Server("hello-mcp-server")@server.li.. 프로그래밍공부(Programming Study)/Agent AI 2025. 9. 19. Amazon Q Developer MCP 서버 설정 – command와 args 완전 이해 지난 글에서는 MCP 서버 개발에서 헷갈리는 uv, uvx, npm, npx 개념을 정리했습니다.이번 글에서는 Amazon Q Developer에서 MCP 서버를 연결할 때 꼭 필요한 설정 파일인 mcp.json의 command와 args를 어떻게 작성해야 하는지 구체적으로 알아봅니다.1. MCP 서버 설정 개요Amazon Q Developer는 MCP 서버를 실행할 때,command: 어떤 실행기를 쓸지 (python, uv, uvx, node, npm, npx 등)args: 그 실행기에 넘길 인자들을 지정해야 합니다.즉, 로컬 환경인지 / 배포 환경인지 / Python 기반인지 / Node.js 기반인지에 따라 설정이 달라집니다.2. Python MCP 서버 설정 패턴(1) 로컬 개발 – uv run.. 프로그래밍공부(Programming Study)/Agent AI 2025. 9. 18. MCP 서버 개발에서 헷갈리기 쉬운 uv, uvx, npm, npx 완전 정리 최근 MCP 서버 개발을 하다 보면 uv, uvx, npm, npx 같은 명령어를 자주 쓰게 됩니다.문제는 네 가지가 서로 비슷한 역할을 하다 보니 직관적으로 잘 안 와닿는다는 점이죠.저도 DevOps 엔지니어로 프로젝트를 하다 보니,“이건 pip이랑 뭐가 다르지?”, “uvx랑 npx은 같은 거 맞지?” 같은 고민을 많이 했습니다.이번 글에서는 DevOps 관점에서 uv/uvx와 npm/npx을 어떻게 이해하면 되는지 정리해보겠습니다.1. 한눈에 보는 큰 그림npm ↔ uv→ 프로젝트 단위 패키지/환경 관리자npx ↔ uvx→ 전역 설치 없이 패키지를 바로 실행하는 실행기즉, 두 쌍이 서로 대응합니다.2. npm / uv (프로젝트 패키지 관리자)npmNode.js의 표준 패키지 매니저node_modu.. 프로그래밍공부(Programming Study)/Agent AI 2025. 9. 18. 이전 1 2 3 4 ··· 37 다음 728x90