본문 바로가기

공부 기록/영상 후기

(184)
데드락(교착상태)은 프로그램에 치명적이죠 T^T 언제 발생하고 어떻게 해결하는지 살펴봅시다~! 간단한 자바 예제도 있어요~!! https://youtu.be/ESXCSNGFVto?si=2ueHZGkctbTEsUnK Deadlock(교착 상태) : 두 개 이상의 프로세스 혹은 스레드가 서로가 가진 리소스를 기다리는 상태 데드락을 만드는 네 가지 조건 1. Mutual exclusion : 리소스를 공유해서 사용할 수 없다. 2. Hold and wait : 프로세스가 이미 하나 이상의 리소스를 취득한(hold) 상태에서 다른 프로세스가 사용하고 있는 리소스를 추가로 기다린다.(wait) 3. No preemption : 리소스 반환은 오직 그 리소스를 취득한 프로세스만 할 수 있다. 4. Circular wait : 프로세스들이 순환 형태로 서로의 리소스를 기다린다. OS의 데드락 해결 방법 1. 데드락 방지 : 네 가지 조건 중..
OS 프로세스의 상태가 어떻게 변하는지 아시나요?? 자바 스레드 상태도 알려 드립니다! 상태를 왜 알아야 할까요? ... https://youtu.be/_dzRW48NB9M?si=Ipzg08LmKbcaBALn java thread의 상태 종류 - NEW : 자바 스레드가 아직 시작하지 않은 상태 - RUNNABLE : 실행 중인 상태, 다른 리소스를 기다리는 상태도 포함 - BLOCKED : (critical section으로 들어가려고) 모니터 락을 얻기 위해 기다리는 상태 - WAITING : 다른 스레드를 기다리는 상태 - TIMED_WAITING : 제한 시간을 두고 다른 스레드를 기다리는 상태 - TERMINATED : 실행을 마치고 종료된 상태 java thread dump : 실행 중인 자바 프로세스의 현재 상태를 담은 스냅샷
관계형 데이터 모델링 - 7.2. 역정규화 소개 https://youtu.be/qx0m1YXGel4?si=dLWRrf4jqGQsR7tH - 정규화 => 쓰기의 편리함을 위해 읽기의 성능을 희생 => 항상 성능을 크게 떨어뜨리는 것은 아님
관계형 데이터 모델링 - 7.1. 물리적 데이터 모델링 https://youtu.be/vJNEVsnY8K4?si=1QEeFVrhqmJRh17k - 물리적 데이터 모델링 : 이상적인 표를 현실적인 표로 만드는 과정 - 역정규화 전에 고려할 만한 것 : index, application 영역에서의 캐시 등
동기화(synchronization), 경쟁 조건(race condition), 임계 영역(critical section)을 자세하게 설명합니다! 헷갈리시는 분들 꼭 보세요! https://youtu.be/vp0Gckz3z64?si=DSCmsQhnxcZQjYIF 경쟁 조건(race condition) - 여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황 동기화(synchronization) - 여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것 임계 영역(critical section) - 공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행 가능한 영역 critical section problem의 해결책이 되기 위한 조건 1. mutual exclusion(상호 배제) 2. progress(진행) 3. bounded waiting(한정된 대기)
스레드 풀(thread pool)은 왜 쓰는 걸까요? 어떻게 쓰는게 잘 쓰는 걸까요? 지금 이 영상으로 스레드 풀! 깔끔하게 정리하시죠! https://youtu.be/B4Of4UgLfWc?si=wJERzcFBCPfa1ME4 만약 Thread per request model의 동작 방식이 서버에 들어오는 요청마다 스레드를 새로 만들어서 처리하고 처리가 끝난 스레드는 버리는 식으로 동작한다면 어떤 문제점이 있을까? => 스레드 생성에 소요되는 시간 때문에 요청 처리가 더 오래 걸림 => 처리 속도보다 더 빠르게 요청이 늘어나면 -> 스레드가 계속 생성(스레드 수 증가) -> 컨텍스트 스위칭이 더 자주 발생 -> CPU 오버헤드 증가로 CPU time 낭비 -> 어느 순간 서버 전체가 응답 불가능 상태에 빠짐 Thread pool - 미리 스레드를 여러 개 만들어 놓고 재사용 => 스레드 생성 시간 절약 - 제한된 개수의 스레드를 운용 => ..
cpu bound, io bound 의미를 설명합니다! 이에 따른 스레드 개수를 정하는 팁도 알려드립니다! https://youtu.be/qnVKEwjG_gM?si=1ZZhH-It9rEgZvDF CPU(Central Processing Unit) : 프로세스의 명령어를 해석하고 실행하는 장치 버스트(Burst) : 어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일 CPU 버스트 : 프로세스가 CPI에서 한 번에 연속적으로 실행되는 시간 IO 버스트 : 프로세스가 IO 작업을 요청하고 결과를 기다리는 시간 프로세스의 인생은 CPU 버스트와 IO 버스트의 연속 CPU bound 프로세스 : CPU burst가 많은 프로세스(예 : 동영상 편집 프로그램, 머신러닝 프로그램) IO bound 프로세스 : IO burst가 많은 프로세스(예 : (일반적인) 백엔드 API 서버) CPU bound 프로그램에서 적절한 ..
비동기 프로그래밍, 비동기 I/O, 비동기 커뮤니케이션.. 비동기(asynchronous)라는 .. 참 많이 사용하는데요~ 각 맥락에 따른 의미를 설명합니다~ https://youtu.be/EJNBLD3X2yg Synchronous programming - 여러 작업(task)들을 순차적으로 실행하도록 개발 Asynchronous(비동기) programming - 여러 작업들을 독립적으로 실행하도록 개발 asynchronous programming != multithreading - asynchronous programming : 어러 작업을 동시에 실행하는 프로그래밍 방법론 - multithreading : asynchronous programming의 한 종류 - Asynchronous programming을 가능하게 하는 것 => multi-threads, non-block I/O - 백엔드 프로그래밍의 추세는 스레드를 적게 쓰면서도 non-block I..