분류 전체보기 478

[OS] 6. OS 교착상태 - 데드락,데드락 조건, 데드락 해결 방법 (쉽게 배우는 운영체제 6장)

쉽게배우는 운영체제, 한빛미디어 - 요약 및 공부한 내용입니다. 1. 교착 상태의 정의 1) 교착상태란 - 2개 이상의 프로세스가 다른 프로세스의 작업이 끝기만을 기다리는 것을 말한다. - 시스템이 작동하다가 자연스럽게 발생하므로 운영체제가 강제로 해결해 주어야 한다. ​ 2) 교착상태의 발생 1. 시스템 자원 2. 공유자원 3. 응용프로그램 ⇒ 위 3가지를 사용할 때 발생한다. ​ 1. 시스템 자원 - 교착상태는 공유할 수 없는 자원을 사용할 때 발생한다. - 이는 동시에 같이 사용할 수 없는 시스템 자원을 할당받은 후 양보하지 않는 경우를 의미한다. ex) 스캐너, 프린터, CD레코드 ​ 2. 공유 변수 - 임계구역에서 교착상태가 발생하기도 한다. ​ 3. 응용 프로그램 - 데이터 베이스같은 응용프로..

[OS] 5. 프로세스 동기화 (쉽게 배우는 운영체제 5장)

쉽게배우는 운영체제, 한빛미디어 - 요약 및 공부한 내용입니다. 1. 프로세스간 통신 프로세스 통신 개념 - 프로세스 통신이란, 동시에 실행되는 프로세스끼리 데이터를 주고받는 작업 ​ 1) 프로세스 간 통신의 종류 1. 프로세스 내부 데이터 통신 : 하나의 프로세스 내에 2개이상의 스레드가 존재하는 경우 ⇒ 내부스레드는 "전역변수"나 "파일"을 이용하여 통신함 ​ 2. 프로세스간 통신 : 여러 프로세스끼리 통신 ⇒ 운영체제가 제공하는 파이프를 이용하여 통신 ​ 3. 네트워크를 이용한 데이터 통신 (컴퓨터) : 소캣을 이용하여 통신한다. 2) 프로세스간 통신의 분류 통신 방향에 따른 분류 1. 양방향 통신: 데이터를 동시에 양방향으로 전송할 수 있는 구조 2. 반양방향 통신: 양방향으로 전송할 수 있지만 ..

[OS] 4. CPU 스케줄링 알고리즘 (쉽게 배우는 운영체제 4장)

쉽게배우는 운영체제, 한빛미디어 - 요약 및 공부한 내용입니다. 1. 스케줄링의 분류 스케줄러란 - CPU 스케줄러 또는 프로세스 스케줄러라 하며, - 프로세스가 생성된 후 종류될 때 까지 모든 상태변화를 조정하는 것 ​ 1) 고수준 스케줄링 - 가장 "큰 틀" 에서 이루어지는 CPU 스케줄링 ( = 장기 스케줄링, 작업 스케줄링, 승인 스케줄링) ​ - 시스템 내의 "전체 작업 수" 를 조절하는 것 ​ 2) 저수준 스케줄링 - 가장 "작은 단위"의 스케줄링 - 프로세스의 상태를 관리 ​ 3) 중간수준 스케줄링 - "중지" 와 "활성화" 로 전체 시스템의 활성된 프로세스 수를 조절하여 시스템의 과부화를 방지한다. ​ 스케줄링 목적 ⇨ 6가지 : 공평성, 효율성, 안정성, 확장성, 반응시간의 보장, 무한 ..

[OS] 3. 프로세스와 스레드 (쉽게 배우는 운영체제 3장)

쉽게배우는 운영체제, 한빛미디어 - 요약 및 공부한 내용입니다. 1. 프로세스의 개요 1)프로세스 개념 * 프로세스 : 실행중인 프로그램 - 프로그램이 메모리위에 올라가면 프로세스가 된다. (실행) ​ ⇒ 프로그램 -> 프로세스 ​ 2) 프로그램에서 프로세스로의 전환 - 프로세스 : 컴퓨터 시스템의 작업 단위, 태스크(Task) 라고도 함 ​ 프로그램이 프로세스가 되는 과정 가. OS가 프로그램을 메모리에서 가져온다. 나. 동시에 작업지시서를 작성한다. (프로세스 제어블럭) ->필수 ​ 다. 프로세스 제어블럭에는 다양한 정보가 들어있다. ​ 프로세스 제어블럭( in 정보 ) 가. 프로세스 구분자 : 프로세스 ID ​ 나. 메모리 관련 정보 - 프로세스가 원래 메모리의 어디에 저장되어있는지를 알아야 한다...

[OS] 2. 컴퓨터의 구조와 성능향상 기술 (쉽게배우는 운영체제 2장)

쉽게배우는 운영체제, 한빛미디어 - 요약 및 공부한 내용입니다. 하드웨어의 구성 폰노이만 구조 CPU와 메모리 CPU 구성 레지스터의 종류 운영체제 버스 메모리 보안 컴퓨터 성능 향상 기술 인터럽트 운영체제 병렬 처리 컴퓨터의 기본구성 1.하드웨어의 구성 - 필수장치 : 중앙처리장치(CPU), 메인메모리(RAM) - 주변장치 : 입력장치, 출력장치, 저장장치 ​ 1) CPU와 메모리 CPU : 명령어를 해석하여 실행하는 장치(두뇌) 메모리 : 작업에 필요한 프로그램과 데이터를 저장하는 장소 ​ 2) 입출력 장치 : 외부의 데이터를 컴퓨터에 입력하는 장치 ​ 3) 저장장치 : 속도가 느리지만 가격이 저렴 ​ 4) 메인보드 - cpu와 메모리등 다양한 부품을 연결하는 커다란 판 - 각 부품은 버스로 데이터를..

[OS] 1. 운영체제와 컴퓨터 (쉽게배우는 운영체제 1장)

쉽게배우는 운영체제, 한빛미디어 - 요약 및 공부한 내용입니다. 운영체제란 운영체제의 필요성 운영체제의 역할 운영체제 분류 운영체제 구조 커널의 구성 1. 운영체제 - Operating System : 일반 컴퓨터나 노트북의 전원을 켜면 가장 먼저 만나게되는 소프트웨어 (컴퓨터 HW 바로 윗단에 설치되는 SW) 운영체제란 사용자에게 편리한 인터페이스를 제공하고 컴퓨터 시스템의 자원을 효울적으로 관리하는 소프트웨어입니다. 임베디스 시스템 or 임베디스 운영체제 CPU의 성능이 낮고, 메모리 크기도 작은 시스템에 내장하도록 만든 운영체제를 임베디드 시스템 혹은, 임베디드 운영체제 입니다. 2. 운영체제의 필요성 운영체제는 크게 프로그램의 성능 향상 및 자원관리를 담당합니다. [질문] 1) 컴퓨터는 운영체제가..

[Spring] 스프링 순환 참조, 무한 재귀 해결하기 (DTO, JsonIgnore)

jpa 엔티티 일대다 : 다대일 관계 생성시 흔하게 일어나는 순환 참조문제, 이전 프로젝트에서는 뭣도 모르고 @jsonignore로 처리했었는데, 이게 왜 일어나는지 공부해보니, 좋지 않은 방법이였다는 걸 깨달았다,.. JPA에서 순환참조 문제는 이제 알고보니까는, 엔티티를 조회할 떄 발생하는 게 아니라 entity를 json으로 변환할 떄, 즉, Entity To Json serialize할 때 (보통 controller 단)에서 일어나는 문제였다. Entity를 Json으로 변환하면서, 연관된 객체를 다시 Json으로 변환하고, 이 변환 과정에서, 다시 연관된 객체의 연관된 객체를 참조... 참조 지옥,,, 무한 참조,,, 크기가 펑펑펑,, 스프링 무한 순환 참조 문제 해결 방법 @jsonignore..

Spring/Spring Boot 2022.04.20

[Spring] 스프링 엔티티 삭제 시점 히스토리 기록하기 (Soft Delete)

생성시간과, 삭제시간은 jpaAuditing으로 기록이 가능했는데, 삭제시점을 자동을 체크해주고 싶어서 찾아보니 jpaAuditing에는 없었다 흨,,ㅠ 그러다 하이버네이트에서, delete 시점을 체크할 수 있는 @SqlDelete 와 default 조건절을 붙히는 @where 를 발견했다..! Soft Delete ex) `UPDATE table SET delete = 1 WHERE id = 2` 형태로 ROW가 삭제 되지 않고 flag를 통한 제어 하는 방식 delete가 되더라도, 데이터를 지우는게 아닌, column 값을 변경하여, 데이터를 제어하는 방법이다, @SQLDelete Annotation @SQLDelete 어노테이션을 통해, 실제 삭제가 이루어질때 수행 할 쿼리를 적으면 된다. ex..

Spring/Spring Boot 2022.04.20

[Spring err] 스프링 시큐리티 - Consider defining a bean of type 'org.springframework.security.crypto.password.PasswordEncoder' in your configuration.

Parameter 1 of constructor in com.example.zaritalk.service.UserService required a bean of type 'org.springframework.security.crypto.password.PasswordEncoder' that could not be found. package com.example.zaritalk.service; import com.example.zaritalk.domain.user.User; import com.example.zaritalk.domain.user.UserRole; import com.example.zaritalk.dto.SignupRequestDto; import com.example.zaritalk.rep..

Spring/Spring err 2022.04.20

[JPA] Fetch join 과 Join 차이점

fetch join은 불러온 데이터까지 영속성 컨텍스트에 저장하지만 join은 불러온 데이터를 영속성 컨텍스트에 저장하지 않는다...! Fetch Join 조회 주체가 되는 엔티티와 연관 관계의 엔티티(JOIN) 까지 모두 조회하여 영속화한다. 즉, 2개의 엔티티 모두 영속성 컨텍스트로 관리되어진다. 일반 Join 조회 주체가 되는 엔티티만 조회하고 영속화한다. 만약 연관 관계의 엔티티 데이터를 사용해야 할 경우 별도의 조회 쿼리문을 실행 해야 함. FetchType.EAGER 일 경우, 연관 관계의 엔티티를 영속화하기 위해 N번의 쿼리를 발생시킴. FetchType.LAZY 일 경우, 최초 조회시 획득한 id 로 조회를 N번해야함. [참고] https://velog.io/@heoseungyeon/Fet..

Spring/Spring Boot 2022.04.20