윈도우에서 프로그램 설치 절차 1. 홈페이지 접속 후 설치 파일 또는 실행 파일 다운로드 2. 설치 파일(실행 파일) 실행 후 설치 - 프로그램이 하드디스크에 특정 위치에 복사 - 윈도우 시작 프로그램에 등록 - 해당 프로그램이 사용할 네트워크 포트 설정(방화벽 open 등) - OS 시작 시 자동으로 시작되도록 설정 - 필요한 환경변수 설정 우분투(wget)에서 프로그램 설치 절차 1) 홈페이지 접속 후 실행파일 다운로드 (wget) 2) tar 아카이브 해제 또는 압축파일 해제 3) .deb 확장자 파일 설치 (설치 명령어 필요) 4) 필요한 환경변수 설정 우분투에서는 이러한 설치 파일을 wget으로 다운로드할 수도 있지만 우분투 repository라는 저장소를 제공하기도 한다. 대부분의 프로그램이 ..
ForkJoinPool은 기본 개념은 큰 업무를 작은 업무 단위로 쪼개고, 그것을 각기 다른 CPU에서 병렬로 실행한 후 결과를 취합하는 방식으로 분할정복 알고리즘과 유사하다. 대표적으로 Java에서는 병렬스트림을 사용할 때 사용된다. ForkJoinPool 동작 방식 1) 큰 task를 작은 단위로 쪼갠다. 2) 부모 쓰레드로 부터 로직을 복사해서 새로운 쓰레드에 쪼개진 업무를 수행한다. - Fork 과정 3) 2번 과정을 수행하다가 특정 쓰레드에서 더 이상 Fork가 발생하지 않고(IDLE CPU의 개수와 작업량에 따라 어디까지 분할할지 내부적으로 결정됨) task 처리가 완료되었다면 그 결과를 부모 쓰레드에서 Join 하여 값을 '취합'한다. - Join 과정 4) 3번 과정을 반복하다가 최초의 F..
PCB(Process Control Block) 운영체제가 프로세스들을 관리하기 위해 사용하는 자료구조이다. 운영체제는 PCB 자료구조를 통해 프로세스 제어 및 관리(스케줄링, 종료, fork 등)를 한다. 아래 사진은 PCB가 갖는 데이터 구조이다. - process state : 프로세스의 상태(new ready waiting, running, terminated) - process number : PID - program counter : PC 레지스터 값(다음에 실행시킬 Instruction의 주소) - registers : 프로세스가 스케줄링되어 있던 CPU의 레지스터의 값(Context Switching시 사용됨) - memory-limits : 프로세스에 할당된 메모리 제한 정보(페이지 테이..
데몬이란 - 사용자와 직접적으로 대화하지 않고, 백그라운드에서 오랫동안 돌면서 여러 작업을 하는 프로세스 - 데몬은 대개 부모 프로세스를 갖지 않으며, 즉 PPID(부모 프로세스 ID)가 1이며, 따라서 프로세스 트리에서 init 바로 아래에 위치함 - 데몬이 되는 방법은 일반적으로 자식 프로세스를 포크하고 자신을 죽이면서 init(PID=1)이 고아가 된 자식 프로세스를 자기 밑으로 데려가도록 하는 방식(fork off and die 방식) - 부모 프로세스는 fork호출 후 exit호출함으로써 자식 프로세스가 백그라운드에 남게 함 - 데몬 프로세스는 보통 네트워크 요청, 하드웨어 동작을 위한 용도로 사용되며 시스템이 시작될 때 데몬을 생성하는 경우가 많음 - 보통 프로세스 이름에 d가 붙는다 (htt..
데드락이 발생하기 위한 조건 1. Mutual Exclusion : 한 resource에 대해 한 번에 하나의 task만 사용할 수 있다. 2. Hold and Wait : 어떤 task가 multiple resource를 필요로 하는데, 하나의 resource를 잡는 데는 성공했지만, 또 다른 resource를 잡는 데에는 실패했을 때, "첫 번째로 잡은 resource를 잡고 있는 채로, 두 번째 resource를 기다리는 상태" 3. No preemption : resource를 잡고 있는 task를 강제로 resource를 빼앗을 수 없음. 4. Circular wait : taskA는 taskB가 잡고 있는 resource를 기다리고, taskB는 taskC가 잡고 있는 resource를 기다리..
인터럽트(interrupt) 인터럽트란 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것을 말한다. 인터럽트가 발생하면 OS는 현재 CPU에 실행중인 기계어 코드를 중단하고 CPU가 해당 인터럽트 처리를 위한 프로그램(ISR; Interrupt Service Routine)으로 점프하여 해당 일을 수행 할 수 있도록 한다. 인터럽트의 의미는 생각보다 큰데, SW(instruction)에 의해서도 인터럽트가 발생할 수 있다. 예를 들어 DIV instruction을 실행할 때 0으로 나누어지거나, 주소 버스에서 할당되지 않는 주소공간을 액세스 한다든지 하는 경우를 예외(exception)..
- Total
- Today
- Yesterday
- 쿠버네티스
- spring
- K8s
- db
- Stream
- GitOps
- Linux
- Controller
- Kubernetes
- ubuntu
- CICD
- container
- LFCS
- rolling update
- Kotlin
- jvm
- argocd
- 컨트롤러
- go
- kafka
- Non-Blocking
- golang
- ci/cd
- 우분투
- RDB
- 코틀린
- docker
- github actions
- Java
- 카프카
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |