일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 컨디션 변수
- synchronizeation
- io-bound
- 쓰레드 덤프
- os 쓰레드
- Java
- 커널모드
- 유저모드
- 스케줄링
- Webflux
- SRTF
- 컨텍스트 스위칭
- 바이너리 세마포
- 쓰레드
- Mutual exclusion
- 페이지 테이블
- cpu
- OS
- CPU 스케줄러
- 유저 쓰레드
- 하드웨어 쓰레드
- #list
- synchronous
- cpu-bound
- Lock
- 스핀락
- 논블로킹
- 자바
- non-blocking
- 레디스
목록java (24)
변수의 기록

📌 비동기(Asynchronous) 프로그래밍과 운영체제 관점의 이해 1. 비동기(Asynchronous)의 기본 개념비동기(Asynchronous)란 작업의 수행 순서가 반드시 직렬적일 필요가 없는 처리 방식이다. 요청을 보낸 후 그 결과가 도착할 때까지 대기하지 않고, 다른 작업을 수행하거나 나중에 콜백/이벤트로 결과를 받아 처리한다.즉, 비동기 프로그래밍은 독립적이다. 한 작업의 결과를 기다리지 않아도 다른 작업을 병렬로 진행할 수 있다.2. 비동기의 다양한 쓰레드 모델 예시아래는 비동기 프로그램이 어떻게 다양한 쓰레드 모델로 구현될 수 있는지를 설명한 사례다.(1) 쓰레드 1개에 1작업 (기본 싱글 스레드 모델)구조: 하나의 쓰레드가 하나의 작업을 수행대표 사례: JavaScript, Node...

회사 프로젝트에서 기존 이클립스 쓰다가 IntelliJ로 툴 변경함.환경 설정하면서 JSP 화면 반영이 안 되는 문제가 생김.🔍 문제 상황이클립스에선 JSP 수정하면 바로 반영됐음IntelliJ에선 서버는 잘 뜨는데 JSP 변경이 적용 안 됨심지어 jsp 파일이 호출은 되는데, 수정 내용이 안 보이는 상태였음처음엔 캐시 문제인가 싶어서 서버 재시작도 해보고, clean도 해봤지만 소용없었음🧩 원인Run > Edit Configurations... 들어가보니Environment 항목 아래 Working directory가 비어 있었음* 만약 Working directory 필드가 안보인다면 -> Modify options -> Working directory 체크 하면 필드 표시 됨.!!!!!!!..

Block I/O vs Non-block I/O (소켓 I/O 기반 설명)1. I/O란?I/O(Input/Output)는 데이터의 입출력을 의미합니다. 일반적으로 아래와 같은 형태가 있습니다:네트워크 I/O (소켓): 네트워크 통신은 소켓을 통해 데이터를 송수신합니다.파일 I/O: 디스크에서 파일을 읽거나 쓰는 작업.파이프 I/O: 프로세스 간 통신.디바이스 I/O: 키보드 입력, 화면 출력 등 하드웨어 장치와의 데이터 송수신.소켓 I/O는 네트워크 프로그램에서 가장 핵심적인 요소이며, 클라이언트-서버 간 통신에 사용됩니다.2. Block I/O vs Non-block I/O🔸 Block I/O (Blocking I/O)I/O 요청을 하면 작업이 완료될 때까지 쓰레드는 대기(블로킹) 상태가 됩니다.예:..

Thread Per Request vs Thread Pool 모델 정리1. Thread Per Request 모델서버에 요청이 들어올 때마다 새로운 스레드를 생성해 처리하고, 요청 처리가 끝나면 해당 스레드를 버리는 방식입니다. ⚠️ 문제점스레드 생성 비용: 스레드 생성과 소멸은 커널 개입이 필요한 작업으로 비용이 큽니다. (컨텍스트 구조 초기화, 스택 메모리 확보 등)요청 폭주 시 병목: 요청이 처리 속도보다 빠르게 들어올 경우, 새로운 스레드가 계속 생성되고 이로 인해 스레드 수 급증.컨텍스트 스위칭 빈도 증가 → CPU 오버헤드 발생메모리 고갈 가능성 → OutOfMemoryError 또는 서버 응답 불능예측 불가능성: 자원 소모가 요청 수에 비례하여 늘어나므로, 대량 요청에 대한 대비가 어렵다.2..
1. 커널이란 무엇인가?OS 안에 존재하는 놈이다. OS의 심장이자 가장 권한이 센 놈.우리가 흔히 말하는 "Linux", "Windows" 같은 건 운영체제 전체고,그 안에 있는 가장 중요한 핵심 부분이 커널(Kernel).즉, --> 커널 ⊂ OS 2. 커널은 어디서 돌아가나?→ 커널 모드(Kernel Mode)CPU에는 모드가 두 개 있음:유저 모드(User Mode): 우리가 평소 실행하는 애플리케이션 (브라우저, 게임 등)커널 모드(Kernel Mode): 운영체제 커널, 드라이버, 시스템 콜 처리 등유저 모드에서는 메모리, 하드웨어, CPU 자원에 직접 접근 불가커널 모드에서만 직접 명령어 실행, 메모리 조작, I/O 제어 가능 3.커널이 하는 일 (진짜 중요함) 영역 역할프로세스/스레드 관..

운영체제와 스레드 - 하드웨어부터 유저 스레드까지1. 하드웨어 스레드 (Hardware Thread)문제의 출발점코어는 연산 능력이 빠르지만, 메모리에서 데이터를 가져오는 속도는 상대적으로 느림.메모리 I/O 대기 시간 동안 CPU가 놀고 있다면 자원 낭비!해결책하드웨어 스레드(예: 인텔 하이퍼 스레딩)하나의 물리 코어에 둘 이상의 하드웨어 스레드를 넣어 동시에 여러 스레드를 실행할 수 있게 함즉, 하나의 코어가 여러 작업을 병렬처럼 수행 ( os는 이 cpu 를 듀얼코어로 인식, 듀얼 코어에 맞춰서 os 레벨의 스레드들을 스케줄링 한다.)예시💡 듀얼 코어(Intel Dual-Core)에 하이퍼스레딩이 적용되면?→ 하드웨어 스레드는 총 4개→ OS는 이를 4개의 CPU처럼 인식하고 스케줄링 2. OS ..

유저 모드와 커널 모드, 그리고 인터럽트와 시스템 콜1. 유저 모드 vs 커널 모드모던 운영체제는 CPU의 실행 권한을 **유저 모드(User Mode)**와 **커널 모드(Kernel Mode)**로 나눔.이유는 운영체제와 시스템 자원을 보호하기 위함임.유저 모드애플리케이션(사용자 프로그램)이 실행되는 환경CPU는 제한된 명령어만 사용 가능직접 하드웨어 접근 불가 (예: 디스크, 메모리 제어, 네트워크 등)문제가 발생하더라도 시스템 전체에는 영향을 미치지 않음커널 모드운영체제의 핵심인 커널이 실행되는 환경CPU는 모든 명령어 실행 가능 (하드웨어 제어 포함)시스템 자원 관리 (메모리, CPU 스케줄링, 파일 시스템 등)모든 프로세스의 보호와 보안을 책임짐2. 모드 전환 (유저 모드 → 커널 모드)유저 ..

CPU 스케줄러와 디스패처, 그리고 스케줄링 알고리즘 총정리 CPU 스케줄러란?역할: CPU를 어떤 프로세스가 사용할지 선택동작: Ready 상태에 있는 프로세스들 중 하나를 선택하여 CPU에 할당대상: Ready Queue에 있는 프로세스들예: Ready Queue: P1, P2, P3 스케줄러가 P2를 선택 → 실행 준비 완료 디스패처(Dispatcher)란?역할: 스케줄러가 선택한 프로세스를 실제 CPU에 할당하고 실행세부 기능:컨텍스트 스위칭 수행사용자 모드로 전환 (커널 → 유저 모드)프로그램 카운터와 레지스터 설정예: P2를 스케줄러가 선택함 → 디스패처가 CPU에 할당 → P2 실행 시작 선점(Preemptive) vs 비선점(Non-Preemptive) 비선점 (Non-Preemp..