Data Engineer31 교착상태 필요조건과 해결방법 교착상태는 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태를 말한다. 교착상태는 시스템 자원, 공유 변수, 데이터베이스와 같은 응용프로그램에서 발생할 수 있다. 자원 할당 그래프는 프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현한 것이다. 💡 교착상태 필요조건 상호 배제, 비선점, 점유와 대기, 원형 대기 이 4가지 모두를 충족해야 교착상태가 발생 자원이 어떤 특징을 가지는가 ❓ 1️⃣ 상호배제: 배타적인 자원은 임계 구역으로 보호되기 때문에 다른 프로세스가 동시에 사용할 수 없다. 배타적인 자원을 사용하면 교착상태 발생 2️⃣ 비선점: 한 프로세스가 사용 중인 자원은 중간에 다른 프로세스가 빼앗을 수 없.. 2021. 6. 3. CPU 스케줄링 💡 스케줄링 단계 레벨 1 - 고수준 스케줄링: 시스템에서 전체 프로세스의 수를 결정 레벨 2 - 중간 수준 스케줄링: 프로세스가 활성화 상태일 때 문제가 발생한 경우 이미 활성화된 프로세스의 일부를 보류 상태로 보낸다. 레벨 3 - 저수준 스케줄링: 준비 상태에 있는 프로세스를 실행 상태로 보내거나, 실행 상태를 대기 상태로 보내거나 가장 작은 단위의 스케줄링 CPU 스케줄링을 할 때 고려사항들이 무엇이 있을까 ❓ 우선순위가 높은 프로세스는 중요도가 높기에 더 자주 많이 사용된다. 커널 프로세스, 전면 프로세스, 대화형 프로세스, 입출력 프로세스는 우선순위가 높고 일반 프로세스, 후면 프로세스, 일괄처리 프로세스, CPU 집중 프로세스는 우선순위가 낮다. 입출력 프로세스가 CPU 집중 프로세스보다 먼저.. 2021. 5. 24. 스레드의 공유자원 관리(동기화) 운영체제로부터 시스템 자원을 할 장 받는 작업의 단위를 프로세스라고 한다. 시스템 자원의 예로는 무엇이 있을까 ❓ 1. CPU 시간 2. 운영되기 위해 필요한 주소 공간 3. Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역 프로세스는 각각 독립된 메모리 영역을 가지고 있는데 프로세스 내에 실행되는 여러 흐름의 단위인 스레드와 메모리 영역을 공유한다. 하나의 프로세스 안에 여러 스레드가 존재(기본적으로 하나의 스레드를 가지고 있음)할 수 있으며 같은 프로세스 내에 있는 스레드들은 각각의 Stack 영역을 가지고 있고 Code, Data, Heap 영역은 공유한다. 스택 안에는 지역변수, 리턴 주소, 값 파라미터, 리턴 값이 들어가며 이것은 각각의 스레드가 가지고 있다. 힙.. 2021. 5. 9. 인증 방법인 Cookie와 Session에 대해 알아보자 HTTP 프로토콜은 무상태 프로토콜로써 어떠한 상태도 유지하지 않고 비연결성이다. (Stateless + Connectionless) 따라서 로그인을 하면 테이터 요청에 대해 일시적으로 이루어진다. 그러면 서버에게 정보를 요청한 사용자가 이전의 사용자와 같은 사용자인지 확인하는 것이 필요하다. 즉 인증이 필요한 것이다. 인증이란 무엇일까 ❓ ✌ 인증 API 요청에 대해 사용가능한 사용자인지 확인하는 절차로 클라이언트가 주장하는 사용자와 같은 사용자인지 확인한다. ✌ 인가 사용자가 특정 자원에 대한 접근 권한이 있는지 권한을 체크하는 것으로 클라이언트가 하고자 하는 작업이 해당 클라이언트에게 허가된 작업인지 확인한다. 따라서 사용자의 권한 레벨에 따라 접근할 수 있는 부분을 제한할 수 있다. 인증 방법에 .. 2021. 3. 24. Spring AOP 알아보기 AOP(Aspect Oriented Programming)는 관점 지향 프로그래밍으로 하나의 비즈니스 로직은 관심사와 핵심적인 로직으로 이루어져 있다. 여기서 관심사란 소스 코드상에서 계속 반복되는 부분으로 예외처리, 인증 등이 해당된다. 즉 주변 로직, 부가기능으로 볼 수 있다. 💡 관심사의 예 1. 파라미터가 올바르게 들어왔을까?? 2. 사용자의 인증을 적절히 받아왔을까?? 3. 이 작업에서 발생할 수 있는 예외 처리는 어떻게 해야 할까?? 즉 AOP의 목표는 핵심적인 로직에서 관심사를 분리하여 재사용하겠다는 것이다. 이것을 관심사의 분리(=Separate concerns)라고 부른다. 관심사를 분리하면 코드의 반복을 줄일 수 있기 때문이다. AOP 개발방식에서 개발자가 주의해야 하는 것은 무엇일까 .. 2021. 3. 21. Async와 Await로 흐름 제어하기 Promise을 사용하여 흐름을 제어할 경우 callback hell에 빠질 수 있고 코드도 복잡해진다. 따라서 코드의 가독성을 높이고 Promise의 단점을 보환 하고자 async와 await가 나왔다. Async Promise를 사용하지 않고 효과적으로 callback hell 해결, 암묵적으로 promise를 반환 Await Promise를 기다림(성공 혹은 실패), async로 정의된 내부에서만 사용 가능 💡 Async와 Await 기본 형태 💡 Async와 Await 활용해보기 함수명은 Signup으로 회원가입을 할 때 사용하는 컨트롤러이다. checkUser 비동기 처리 메서드는 데이터베이스에 접근하여 데이터를 가지고 오는 것이기에 데이터를 가지고 온 후에 코드가 실행되어 예외처리를 하여야 한.. 2021. 3. 16. 이전 1 2 3 4 5 6 다음