profile
코딩연습
태그 목록
전체보기 (74)알고리즘(38)백준(35)파이썬(33)OS(21)OSTEP(20)운영체제(20)가상화(15)Union Find(8)병행성(6)DP(6)concurrency(6)그래프(5)BFS(5)db(5)프로그래머스(4)Spring(4)분할정복(4)scheduling(4)세그먼트트리(4)페이징(3)pypy(3)그리디(3)최소신장트리(3)lambda(3)MST(3)스케줄링(3)최적화된 union-find(3)Java(3)구현(3)python(3)DFS(3)pymysql(2)JPA(2)process(2)파이파이(2)Springboot(2)lock(2)mysql(2)Virtualization(2)sam(2)분리집합(2)우선순위큐(2)(2)Paging(2)Collection(2)프로세스(2)Multiprocessor(1)Thread API(1)entity(1)Deque(1)웹소켓(1)에라토스테네스의 체(1)Bellman Ford(1)벨만 포드(1)문자열(1)Branch & Bound(1)process api(1)메모리 API(1)브루트포스(1)주소공간(1)connection(1)누적합(1)수학(1)메모리초과(1)비트마스킹(1)메모리관리(1)Semaphores(1)나누기(1)N-Queen(1)String(1)cloud formation(1)cascade(1)세마포어(1)너비우선탐색(1)Pypy3(1)erd(1)API Gateway(1)후위표기법(1)다이나믹프로그래밍(1)소프트웨어마에스트로(1)C(1)정렬(1)Proportional Share(1)multi-level feedback(1)spring mvc(1)백트래킹(1)Translation Lookaside Buffer(1)토이프로젝트(1)멀티프로세서(1)condition variables(1)페이지테이블(1)segmentation(1)비례 배분(1)MOD(1)aws(1)요리고(1)VO(1)모듈로(1)외래키(1)스택(1)(1)중위표기법(1)동적계획법(1)컨디션 변수(1)패턴(1)스프링(1)DTO(1)설계(1)주소변환(1)멀티 레벨 피드백(1)웹 캐싱(1)tlb(1)제한적 직접 실행 원리(1)세그멘테이션(1)위상정렬(1)소마(1)선분 교차 판별(1)쓰레드(1)크루스칼 알고리즘(1)시뮬레이션(1)힙큐(1)실시간 채팅(1)Thread(1)stack(1)queue(1)Direct Execution(1)serverless(1)구간합(1)코딩테스트(1)메모이제이션(1)foreign key(1)나눗셈(1)외래키 제약(1)분기한정법(1)web socket(1)SWM(1)MVC(1)Conatraint(1)모듈로 연산(1)Locked Data Structures(1)Free Space Management(1)조합(1)MLFQ(1)(1)counter(1)
post-thumbnail

[OS] 세마포어

다양한 범주의 병행성 문제 해결을 위해서는 락과 조건 변수가 모두 필요하다. 이번 장에서는 세마포어(semaphore) 라는 동기화 기법에 대해 알아볼 것이다. 세마포어는 락과 컨디션 변수로 모두 사용할 수 있다.핵심 질문: 세마포어를 어떻게 사용하는가락과 컨디션 변수

2023년 9월 18일
·
0개의 댓글
·
post-thumbnail

[OS] 컨디션 변수

컨디션 변수 1. 정의와 루틴들 2. 생산자/소비자(유한버퍼) 문제 불완전한 해답 개선된, 하지만 아직도 불완전한: if문 대신 while문 단일 버퍼 생산자/소비자 해법 최종적인 생산자/소비자 해법 3. 컨디션 변수 사용 시 주의점 4. 요약

2023년 9월 17일
·
0개의 댓글
·
post-thumbnail

[OS] 락 기반의 병행 자료 구조

자료구조에 락을 추가하여 쓰레드가 사용할 수 있도록 만들면, 그 구조는 쓰레드 사용에 안전(thread safe)하다고 할 수 있다.핵심 질문: 자료구조에 락을 추가하는 방법자료구조에 어떤 방식으로 락을 추가해야 정확하게 동작하게 만들 수 있을까?자료구조에 락을 추가하

2023년 8월 29일
·
0개의 댓글
·
post-thumbnail

[OS] 락 (Lock)

병행 프로그램의 근본적인 문제여러 개의 명령어들을 원자적으로 실행하고 싶지만, 단일 프로세서의 인터럽트로 인해 불가능이 장에서는 앞서 다룬 락(Lock)을 이용하여 임계 영역을 하나의 원자 단위 명령어인 것처럼 실행되도록 해볼 것이다.락을 사용하여 임계 영역(balan

2023년 8월 28일
·
0개의 댓글
·
post-thumbnail

[OS] 쓰레드 API

쓰레드 API의 주요 부분을 간략하게 알아보자.핵심 질문: 쓰레드를 생성하고 제어하는 방법운영체제가 쓰레드를 생성하고 제어하는데 어떤 인터페이스를 제공해야 할까?어떻게 이 인터페이스를 설계해야 쉽고 유용하게 사용할 수 있을까?첫번째 인자 thread: pthread_t

2023년 8월 21일
·
0개의 댓글
·
post-thumbnail

[OS] 병행성: 개요

쓰레드(thread): 프로세스 내에서 실제로 작업을 수행하는 주체멀티 쓰레드 프로그램은 하나 이상의 실행 지점을 가지고있다.멀티 쓰레드 프로그램은 단일 PC값을 사용하는 고전적인 관점에서 벗어나 독립적으로 Load/Execute 될 수 있는 여러 PC 값을 갖는다.

2023년 8월 20일
·
0개의 댓글
·
post-thumbnail

[OS] 페이징: 더 작은 테이블

페이징: 더 작은 테이블

2023년 8월 20일
·
0개의 댓글
·
post-thumbnail

[OS] 페이징: 더 빠른 변환 (TLB)

페이징은 잘못 설계하면 상당한 성능 저하를 가져올 수 있다.페이징은 프로세스 주소공간을 고정 크기의 페이지로 나누고, 각 페이지의 실제 위치(매핑 정보)를 메모리에 저장매핑 정보를 저장하는 자료구조를 페이지 테이블이라고 함근데 이 페이지 테이블이 잡아먹는 메모리 공간이

2023년 7월 31일
·
0개의 댓글
·
post-thumbnail

[OS] 페이징: 개요

운영체제는 공간 관리 문제를 해결할 때 크게 두 가지 방법으로 세그멘테이션이나 페이징을 사용한다.세그멘테이션: 가상 메모리를 "가변 크기"의 조각들로 분할공간을 다양한 크기의 청크로 분할할 때 공간 자체가 단편화 되는 단점단편화로 인해 할당이 점점 어려워짐페이징: 공간

2023년 7월 30일
·
0개의 댓글
·

[OS] 빈 공간 관리

빈 공간 관리 (Free Space Management) > 핵심 질문: 빈 공간을 어떻게 관리하는가 관리하고 있는 공간이 고정 크기의 단위로 나뉜 경우엔 관리 쉬움 하지만 가변 크기의 요구를 충족시키긴 어려움 세그멘테이션으로 물리 메모리를 관리하는 운영체제에서는 필

2023년 7월 28일
·
1개의 댓글
·

[OS] 세그멘테이션

세그멘테이션 프로세스를 물리 메모리에 재배치하는 방법으로는 베이스/바운드 레지스터를 사용하는 방법이 있다. 이 방법에는 단점이 있는데, 스택과 힙 사이에 사용되지 않는 공간이 크다는 것이다. 즉, 메모리 낭비가 심하고, 유연성이 없다는 단점이 존재한다. > 핵심질문

2023년 7월 18일
·
1개의 댓글
·

[OS] 주소 변환의 원리

주소 변환의 원리 제한적 직접 실행 (LDE) 사용자 모드와 커널 모드로 구분하여 명령어 실행 커널 모드에서만 특권 명령어(privilege command) 실행 가능 프로세스가 시스템 콜을 호출하거나 타이머 인터럽트가 발생할 때 등의 특정 순간에는 운영체제가 개입하

2023년 7월 10일
·
0개의 댓글
·

[OS] 메모리 관리 API

메모리 관리 API 이번 장에서는 UNIX/C의 메모리 관리 인터페이스에 대해 논의한다. (여기서의 메모리는 "사용자 주소 공간"을 의미함) > 핵심 질문: 어떻게 메모리를 할당하고 관리해야 하는가 일반적으로 어떤 인터페이스가 사용되는가? 어떤 실수를 해서는 안 되

2023년 7월 9일
·
0개의 댓글
·

[OS] 주소 공간의 개념

초기에는 컴퓨터 시스템을 구현하는 것이 쉬웠다.사용자가 많은 것을 기대하지 않았기 때문이다.하지만 이후 "사용자 편이", "고성능", "신뢰성" 등을 기대한 사용자들이 등장하였고, 그때부터 시스템을 구축하는 것이 복잡해졌다.메모리 관점에서 초기 컴퓨터는 비교적 단순하게

2023년 7월 2일
·
0개의 댓글
·
post-thumbnail

[Spring] 웹소켓으로 실시간 채팅 구현

현재 만들고 있는 토이 프로젝트에서 채팅 기능을 구현하고자 하였다. 채팅 기능을 구현하기 위해서는 웹소켓에 대해서 알아야 했다. 웹소켓이란? 처음에 채팅 기능을 구현할 때 HTTP를 이용해서 구현하려고 했다. 하지만 HTTP는 요청과 응답이라는 구조로 통신이 이

2023년 7월 1일
·
1개의 댓글
·

[OS] 멀티프로세서 스케줄링

멀티프로세서 스케줄링(multiprocessor scheduling)은 어려운 주제이므로 기본적인 내용만 다룰 것이다. 병행성(concurrency)에 대해 어느정도 공부를 한 후에 다루는 것이 가장 좋다.멀티프로세서 시스템: 두 개 이상의 CPU를 가진 컴퓨터 시스템

2023년 6월 30일
·
0개의 댓글
·

[OS] 스케줄링: 비례 배분 (Proportional Share)

이번 장에서는 시간을 최적화 하는 것보다는, 작업의 비율 배분에 초점을 맞춘 스케줄러를 알아볼 것이다.비례 배분 (공정 배분, fair share): 반환시간이나 응답시간을 최적화하는 대신 스케줄러가 각 작업에게 CPU의 일정 비율을 보장하는 것추첨 스케줄링 (lott

2023년 6월 29일
·
0개의 댓글
·

[OS] 스케줄링: Multi-level Feedback Queue

Multi-level Feedback Queue (MLFQ)Compatible Time-Sharing System에 사용됨MLFQ가 해결하고자 하는 문제짧은 작업을 먼저 실행시켜 "반환시간" 최적화SJF, STCF 알고리즘은 실생시간 정보를 필요로 하지만, 실제론 실행

2023년 6월 27일
·
0개의 댓글
·

[OS] CPU 스케줄링

스케줄링: 다중 프로그래밍을 가능하게 하는 운영체제의 동작 기법.즉, 어떤 프로세스를 실행시키거나 중단할지 결정하는 것다양한 스케줄링 정책이 있고, 이는 discipline이라고도 볼림핵심질문: 스케줄링 정책은 어떻게 개발하는가?스케줄링 정책의 핵심 가정은?어떠한 평가

2023년 6월 23일
·
0개의 댓글
·

[Spring] could not execute statement; SQL [n/a]; constraint [null]

org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL \[n/a]; constraint \[null] 게시글을 삭제하려고 하면 오류 발생게시글 삭제 DB에서 ch

2023년 6월 22일
·
0개의 댓글
·