본문 바로가기

전체 글

(472)
7장 스케쥴링 7장 스케쥴링7.1 워크로드에 대한 가정7.2 스케줄링 평가 항목7.3 선입선출7.4 최단 작업 우선7.5 최소 잔여시간 우선7.6 새로운 평가 기준: 응답 시간7.7 라운드 로빈7.8 입출력 연산 고려7.9 no more oracle7.10 요약 8장 MLFQ: 멀티 레벨 피드백 큐8.1 MLFQ 기본 규칙8.2 우선순위 변경8.3 우선순위 상향 조정8.4 더 나은 시간 측정8.5 MLFQ 조정, 다른 쟁점들8.6 요약 9장 비례 배분9.1 추첨권이 당신이 몫9.2 추첨 기법9.3 구현9.4 예제9.5 추첨권 배분 방식9.6 왜 결정론 방법을 사용을 하지 않는가?9.7 요약 10장 멀티프로세서 스케쥴링10.1 멀티프로세서 구조10.2 동기화를 잊지마라10.3 캐시 친화성10.4 단일 큐 스케줄링10.5..
스케줄링(6,7,8,9,10) 6장 제한적 직접 실행 원리6.1 제한적 직접 실행6.2 문제점: 제한된 연산6.3 문제점: 프로세서 간 전환6.4 병행성 걱정6.5 요약 7장 스케쥴링7.1 워크로드에 대한 가정7.2 스케줄링 평가 항목7.3 선입선출7.4 최단 작업 우선7.5 최소 잔여시간 우선7.6 새로운 평가 기준: 응답 시간7.7 라운드 로빈7.8 입출력 연산 고려7.9 no more oracle7.10 요약 8장 MLFQ: 멀티 레벨 피드백 큐8.1 MLFQ 기본 규칙8.2 우선순위 변경8.3 우선순위 상향 조정8.4 더 나은 시간 측정8.5 MLFQ 조정, 다른 쟁점들8.6 요약 9장 비례 배분9.1 추첨권이 당신이 몫9.2 추첨 기법9.3 구현9.4 예제9.5 추첨권 배분 방식9.6 왜 결정론 방법을 사용을 하지 않는가?9..
개인 채팅, 단체 채팅 : 테이블 설계와 Kafka 토픽 설계 1:1 대화 vs 단체방에서의 테이블 설계와 Kafka 토픽 설계1:1 채팅과 그룹 채팅 모두 처리해야 함Kafka 토픽 설계는 순서 보장 + 확장성 고려데이터베이스 테이블은 채팅방, 메시지, 참여자를 명확히 분리해야 함    📌 1. 데이터베이스 테이블 설계p_chat_rooms (채팅방)@Entity@Table(name = "p_chat_rooms")@NoArgsConstructor(access = AccessLevel.PROTECTED)@EntityListeners(AuditingEntityListener.class)@Getterpublic class ChatRoomsEntity extends BaseEntity { @Id @GeneratedValue(generator = "UUID")..
정렬 String[][] book_time; Arrays.sort(book_time, Comparator.comparing(o -> o[0]));  Arrays.sort(book_time, (o1, o2) -> {            if (o1[0].equals(o2[0])) {                return o1[1].compareTo(o2[1]);            }            return o1[0].compareTo(o2[0]);        });   ✅ 1. 단일 배열 (1차원)🔹 기본형 배열 (int[], double[], char[] 등) 기본형은 Comparator 쓸 수 없음 (기본 오름차순만 가능)내림차순 하고 싶다면 Integer[]로 박싱해야 함  int[] ar..
원자성 원자성(Atomicity)트랜잭션의 핵심 속성 중 하나로,"모든 작업이 전부 수행되거나, 전혀 수행되지 않아야 한다"는 원칙입니다.즉, 조회 → 검증 → 저장이 하나의 불가분한 단위로 실행되어야중간에 다른 스레드나 사용자에게 "틈"을 주지 않습니다.    https://cutewonny.tistory.com/entry/transaction transaction공통 질문   출처:https://www.youtube.com/watch?v=sLJ8ypeHGlMtransaction?- 단일한 논리적인 작업 단위(a single logical unit of work)- 논리적인 이유로 여러 sql문을 단일 작업으로 묶어서, 나눠질 수 없도록 만듦- tcutewonny.tistory.com  하나의 코드에조회, 예..
비관적락, 낙관적락 같이 스터디하는 사람이 예약시스템을 만든다.좌석 예약 시스템(가게id, 년월일, 시작시간~종료시간, 좌석번호)1. 동시에 같은 자리에 예약 경쟁하는 경우2. 동시간에 같은 좌석인데 시작시간이랑 종료시간이 묘하게 다른데 예약이 겹치는 경우 동시성 문제가 발생할 것 같으니 고려해야한다고 했다.❌ 좌석 예약은 충돌 가능성 높아서 대부분 비관적 락이 적합다고 말했는데    스터디원은 동시성 문제에 대한 해결책으로redis로 앞에서 예약을 확인하고DB에서는 where절로 update, insert를 하기떄문에 비관적락이 필요없다고 말하는 것이었다.그래서 비관적 락이 필요없다고 하는 것에 대해서 설명 해주기 위해, 정리하는 글이다.   ✅ 전제: 좌석 예약 시스템 (멀티 서버 + 멀티 스레드 환경)주요 키: 가게I..
레디스 pub/sub 1. 도커 컨테이로 redis-test 를 만든다docker run -d --name redis-test -p 6379:6379 redis d819dab48c79ac486cba7351ece464566e2f2e42c47867b37db1d023031930b3  devwonny@devwonnyui-MacBookAir Documents % docker logs d819dab48c79 -> 결과1:C 24 Mar 2025 08:20:16.830 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo1:C 24 Mar 2025 08:20:16.830 * Redis version=7.4.2, bits=64, commit=00000000, modified=0, pid=1, just sta..
✨ Operating Systems: Three Easy Pieces ✨ - 개요 운영체제 개요1. CPU 가상화2. 메모리 가상화3. 병행성4. 영속성프로그램이 실행될 때 어떤 일이 일어날까? 프로세서는 다음 명령어로, 또 그 다음 명령어로 프로그램이 완전히 종료될 때까지 실행을 계속한다명령어를 실행(execute)한다. 프로세서는 명령어를 초당 수백만 번 (요즘은 수십억 번) 반입(fetch)명령어를 해석(decode)하고 (즉, 무슨 명령어인지 파악하고), 명령어를 실행(execute)한다(즉, 두 수를 더하고, 메모리에 접근하고, 조건을 검사하고, 함수로 분기하는 등의 정해진 일을 한다).  운영체제(operating system, OS)시스템을 사용하기 편리하면서 정확하고 올바르게 동작시킬 책임 CPU, 메모리, 디스크와 같은 물리 자원을 가상화(virtualize)한다. 운..