![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/AagAH/btrATcp5S49/33scY0bH4GfJWvKbT5tb41/img.png)
트랜잭션 데이터베이스의 상태를 바꾸는 하나의 작업 단위이다. 트랜잭션은 여러개의 쿼리(명령 및 연산)으로 구성되어있다. 트랜잭션이 필요한 이유 상황 : A가 B에게 돈을 이체하는 상황이다. A의 계좌에서 출금, B의 계좌에 입금이 하나의 작업 단위가 아닌 각각 이루어지는 상황이라고 가정해보자. 1. A는 B에게 5만원을 계좌 이체 요청을 한다. 2. 은행 시스템은 A의 계좌에서 5만원을 출금을 진행한다. 3. 은행은 B의 계좌에 5만원 입금처리를 한다. 각각의 프로세스가 전부 성공적으로 실행된다면 이체에 성공하게된다. 그러나 1,2번 프로세스는 성공하지만 3번 과정을 실패하게 된다면 A의 계좌에서 돈만 빠져나가는 상황이 발생하게 된다. 이런 데이터의 일관성을 유지하지 못하는 상황을 방지하기 위해 트랜잭션..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cowkO2/btrsrVyCsiY/EWl04bM4QfEzVnrgQ2tQn0/img.jpg)
프로세스 단위의 관리의 문제점 프로세스 코드를 순서대로 실행하게 되면 원하는 기능의 코드를 찾기까지 (큰 프로그램이라면) 오버헤드가 있을 수 있다. 위의 이미지에서 보는 프로그램은 정말 간단하지만,, 프로세스를 기능단위로 쪼개어 별도로 실행시켜 오버헤드의 단점을 극복하고자 쓰레드(Thread) 라는 개념이 등장했다고 한다. 쓰레드(Thread) 쓰레드는 하나의 프로세스에서 코드를 기능별로 구분한 것이다. 그래서 쓰레드를 경량 프로세스라고도 부른다. 운영체제는 프로세스 단위가 아닌 쓰레드 단위로 스케줄링을 한다. 쓰레드의 장점은 다음과 같다. 자신의 기능만 수행하면 된다. 한 쓰레드가 블록되어도 다른 쓰레드는 실행 가능하다 동일한 프로세스에 포함되는 쓰레드를 각각 다른 CPU에서 실행할 수 있다. 동일한 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/6PNpC/btrswXhs2mw/spsXil5OmKSZMq9Koewj6k/img.jpg)
인터럽트 인터럽트는 CPU가 프로세스를 실행하고 있을 때 이벤트가 발생하여 처리가 필요한 경우 CPU에게 알리는 것을 의미한다. 프로세스 교환을 유발하는 인터럽트와 트랩 CPU에서 실행중인 프로세스가 교체되는 이유는 다음과 같다. Clock(Timer) 인터럽트 : CPU에서 프로세스당 최대 허용 실행 시간이 정해져있는데 해당 시간이 지나가게 되면 프로세스가 교체된다. 실행중이던 프로세스는 다시 준비 큐에 들어가게 된다. I/O 인터럽트 : 실행중인 프로세스가 입출력을 요청하면 프로세스는 블록상태가 된다. 입출력 요청이 끝나면 블록상태에 있던 프로세스는 다시 준비 큐로 들어가 실행될 준비를 한다. 메모리 폴트 (페이지 부재) : 실행중인 프로세스는 주기억장치에 로드되지 않은 주소를 요청할 경우 메모리 폴..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/boGMtu/btrshyjbo70/aLUvSqzOacZClk5z0pMabK/img.jpg)
CPU 스케줄링 CPU에 어떤 프로세스를 할당해야할 지 결정하는 방법이다. 프로세스 상태 프로세스 스케줄링을 하기 위해서는 프로세스 상태가 필요하다. 프로세스 상태를 고려하여 운영체제는 CPU 스케줄링을 하게된다. 프로세스의 일생은 생성에서 시작하여 종료로 끝난다. 프로세스의 생성 프로세스가 생성되면 메모리에 주소공간이 생성되고 PCB가 생성된다. 리눅스는 fork를 이용하여 프로세스 를 생성하고 윈도우는 CreateProcess API를 이용하여 프로세스를 생성한다. 프로세스가 생성되는 조건은 다음과 같다. 새로운 일괄처리 작업 대화형 로그온 : 사용자가 터미널에서 시스템에 로그인을 하는 경우 서비스를 제공하기 위해 운영체제가 생성 기존 프로세스에 의한 생성 : 병렬성을 활용하기 위해 사용자 프로그램가..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/c4jfSC/btrsfXP5Y4w/hZLeEXovZLhhZKkiKMDcNk/img.jpg)
운영체제 사용자에게 효율적이고 편리한 환경을 제공하는 것이 운영체제의 가장 큰 목표이다. 운영체제는 처리 능력이 빨라야 하고, 신뢰도가 높아야하며 응답시간이 빠른 환경을 제공할 수 있어야한다. 처리 능력 : 단위 시간당 사용자의 요청을 얼마나 빠르게 처리할 수 있는 능력이다. 신뢰도 : 하드웨어와 소프트웨어가 실패없이 사용자의 요청을 처리할 수 있는 능력이다. 응답 시간 : 사용자가 요청을 한 뒤 응답이 도착할 때 까지의 시간 프로그램 vs 프로세스 프로그램 : 파일시스템에 저장되어있는 실행 파일을 프로그램이라고 한다. 프로세스 : 프로그램이 실행되어 메모리에 할당된 상태를 프로세스라고 한다. 하나의 컴퓨터에서는 여러 프로세스가실행되기 때문에 운영체제는 프로세스를 효율적으로 관리해야한다. 프로세스 구조 ..
배포 전 상황설명 적절한 단어가 생각나지 않아 상황설명이라고 써놨습니다.. 볼 사람이 있는진 모르겠지만.. 개떡같이 말해도 찰떡같이 알아들으시겠지.. 현재 ver1.0 의 웹 어플리케이션은 8082번 포트에서 실행중입니다. github master 브랜치에 push된 것은 ver1.1 의 웹 어플리케이션입니다. ver1.1 의 웹 어플리케이션을 중단 없이 배포하는 것이 목표입니다. 배포 동작 과정 설명 전.. 알고있으면 좋은 것 너무나 당연한건데 왜 설명을 써놓을까 싶지만.. 자꾸 책에 있는 그대로 따라치기만해서 나중에 머리에 안남길래 기록해본다. IAM 에서 사용자와 역할의 차이점은? AWS 공식문서에서 사용자는 AWS와 상호 작용하기 위해 해당 엔티티를 사용하는 사람 또는 어플리케이션이라고 설명되어있..
.travis.yml Travis CI 의 설정파일로 build.gradle 과 같은 위치에 있어야 한다. .travis.yml 은 Travis CI가 해야할 일들을 알려준다. 1. language 빌드 환경을 식별하기 위한 설정 JAVA 11을 사용하는 Linux 운영체제에서 실행된다. language: java os: linux jdk: - openjdk11 2. Travis CI를 master branch에 push 될 때 수행 branches: only: - master 3. Travis CI 서버의 Home gradle을 통해 의존성을 받고 명시한 디렉토리에 보관한 뒤 다음 배포 때 다시 받지 않도록 설정 cache: directories: - '$HOME/.m2/repository..
모집 공고를 보면 우대조건에 CI/CD 구축 및 운영 경험이 있는걸 자주 볼 수 있다. 클라우드에 배포까지 했고 CI/CD 환경을 구축하여 배포 자동화를 해보려고 한다. 그 전에 CI/CD에 대해서 알아보자. CI(Continuous Integration) : 지속적 통합 GIT과 SVN 같은 코드 버전 관리 시스템에 PUSH가 되면 자동으로 테스트, 빌드를 수행하여 안정적인 배포 파일을 만든 과정을 CI라고 한다. CD(Continuous Deployment) : 지속적 배포 빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행되는 과정을 CD라고 한다. 스프링 부트와 CI 적용 전 스프링 부트를 도입하기 전 EC2에 웹 어플리케이션을 실행하기 위해 톰캣, mysql, java 를 설치했다. 어떤 방..
- Total
- Today
- Yesterday
- OS
- SpringGraphQL
- ORA-27125
- N+1
- spring
- Travis CI
- Oracle
- 기술면접
- ddl-auto
- 트랜잭션격리성
- Til
- SpringSecurity
- 운영체제
- CodeDeploy
- AWS
- ci/cd
- 트랜잭션
- level0
- 인덱스
- JPA
- 프로그래머스
- TCP
- db
- Java
- 파일업로드설정
- 네이버클라우드
- EC2
- nginx
- 람다식
- graphql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |