* Critical Section = Critical Region (임계구역) 여러 스레드가 같은 메모리에 접근하여 값을 변경할 때 의도된 대로 동작하지 않는 문제가 발생한다. 이렇게 여러 스레드가 동시에 접근했을 때 문제가 발생하는 코드 부분을 "Critical Section" 또는 "Critical Region" 이라 부른다. [0이 할당되는 과정, "Critical Section"이 발생되는 과정] 예를 들어, 두 개의 스레드가 동시에 add 메서드에 접근한다고 가정해보자. 첫 번째 스레드가 values 배열에 값을 할당하기 전에 CPU 제어권을 잃어버리고, 두 번째 스레드가 접근하여 값을 할당한다. 그리고 첫 번째 스레드가 다시 CPU 제어권을 얻게 되면 이미 두 번째 스레드에 의해 할당된 값이 ..
* 멀티태스킹 App 중에서 현재 실행 중인 프로그램이 프로세스이다. 멀티태스킹이란 여러 프로세스를 동시에 돌아가면서 명령문을 실행하여 동시에 여러개의 App을 실행하는 것이다. CPU의 속도가 빠르기 때문에 가능하며 실제로는 빠르게 순차적으로 실행하는 것이다. 어떤 방법으로 순서를 주어서 실행하는 것이 효과적일까 ? Process Scheduling Cpu sheduling * CPU 스케쥴링 CPU 스케쥴링이란 ? 여러 프로세스를 돌아가면서 실행하는 알고리즘 ① Round-Robin vs ② Priority Aging ① 일정한 단위로 시간을 쪼개서 프로세스를 순차적으로 실행 ② 우선순위가 높은 프로세스를 먼저 실행 * context-switching 명령어 로드: CPU는 주 메모리에서 실행 중인 ..
* try-catch 문법 try-catch 안에 try-catch가 존재하더라도 당황할 것 없다 ! ① 첫번째 try 문법에서 오류가 발생하는 것은 socket 오류이기때문에 서버통신오류이고, ② 두번째 try 문법에서 오류가 발생하는 것은 연산에서 발생한 오류이기때문에 계산식이 옳지 않다는 오류를 도출한다. 어느 과정에서 오류가 발생했는지 알려주기 위해서 Exception을 상속받은 ExpressionParseExcepiton을 사용한다. * stateful vs stateless * stateful 클라이언트-서버 관계에서 서버가 클라이언트의 상태에 대해 추적하고 저장함. * stateful - 서버 및 클라이언트 실행 순서 [서버 실행 순서] 서버 소켓 생성 및 대기: 서버는 ServerSocke..
* 41. 여러 클라이언트 요청을 순차적으로 처리하기 항상 변수명은 공식문서 참고하기 !! * 41. 여러 클라이언트 요청을 순차적으로 처리하기 - stateful 방식 stateful 방식은 접속 후 연결된 상태를 유지하며 요청과 응답이 반복수행된다. Client로 부터 실행이 종료가 되면 클라이언트와의 연결이 끊어진다. 따라서 동시에 많은 클라이언트 접속을 유지할 수 없다. 예) 상담전화 * 42. 여러 클라이언트 요청을 순차적으로 처리하기 - stateless 방식 stateless 방식은 접속 후 요청 할 때마다 매번 연결된다. 이때 연결 시간 시간이 포함되기 때문에 요청 시간이 길어진다. 응답 후 클라이언트와 연결을 끊는다. 서버에 클라이언트 정보를 유지하지 않는다. ㄴ 서버 자원을 덜 사용하게..